@universityofmaryland/web-elements-library 1.6.17 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +1 -1
  2. package/dist/atomic/animations/brand/card-stack.js +2 -3
  3. package/dist/atomic/animations/brand/card-stack.js.map +1 -1
  4. package/dist/atomic/animations/brand/chevron-flow.d.ts +1 -7
  5. package/dist/atomic/animations/brand/chevron-flow.d.ts.map +1 -1
  6. package/dist/atomic/animations/brand/chevron-flow.js +82 -159
  7. package/dist/atomic/animations/brand/chevron-flow.js.map +1 -1
  8. package/dist/atomic/animations/brand/chevron-scroll.d.ts +1 -4
  9. package/dist/atomic/animations/brand/chevron-scroll.d.ts.map +1 -1
  10. package/dist/atomic/animations/brand/chevron-scroll.js +89 -143
  11. package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
  12. package/dist/atomic/assets/image/caption.d.ts +9 -0
  13. package/dist/atomic/assets/image/caption.d.ts.map +1 -0
  14. package/dist/atomic/assets/image/caption.js +166 -0
  15. package/dist/atomic/assets/image/caption.js.map +1 -0
  16. package/dist/atomic/assets/image/gif.d.ts.map +1 -1
  17. package/dist/atomic/assets/image/gif.js +6 -1
  18. package/dist/atomic/assets/image/gif.js.map +1 -1
  19. package/dist/atomic/assets/image/index.d.ts +1 -0
  20. package/dist/atomic/assets/image/index.d.ts.map +1 -1
  21. package/dist/atomic/assets/image/index.js +2 -0
  22. package/dist/atomic/assets/image/index.js.map +1 -1
  23. package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
  24. package/dist/atomic/assets/video/toggle.js +9 -2
  25. package/dist/atomic/assets/video/toggle.js.map +1 -1
  26. package/dist/atomic/buttons/fullscreen.d.ts +1 -0
  27. package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
  28. package/dist/atomic/buttons/fullscreen.js +35 -3
  29. package/dist/atomic/buttons/fullscreen.js.map +1 -1
  30. package/dist/atomic/layout/overlay/modal.d.ts +1 -10
  31. package/dist/atomic/layout/overlay/modal.d.ts.map +1 -1
  32. package/dist/atomic/layout/overlay/modal.js +28 -44
  33. package/dist/atomic/layout/overlay/modal.js.map +1 -1
  34. package/dist/atomic/layout/person/columns.js +2 -3
  35. package/dist/atomic/layout/person/columns.js.map +1 -1
  36. package/dist/atomic/text-lockup/date.d.ts +1 -4
  37. package/dist/atomic/text-lockup/date.d.ts.map +1 -1
  38. package/dist/atomic/text-lockup/date.js +42 -75
  39. package/dist/atomic/text-lockup/date.js.map +1 -1
  40. package/dist/composite/accordion/item.d.ts +3 -16
  41. package/dist/composite/accordion/item.d.ts.map +1 -1
  42. package/dist/composite/accordion/item.js +152 -245
  43. package/dist/composite/accordion/item.js.map +1 -1
  44. package/dist/composite/card/block.js +2 -3
  45. package/dist/composite/card/block.js.map +1 -1
  46. package/dist/composite/card/event-time.js +2 -3
  47. package/dist/composite/card/event-time.js.map +1 -1
  48. package/dist/composite/card/list.js +2 -3
  49. package/dist/composite/card/list.js.map +1 -1
  50. package/dist/composite/card/overlay/color.js +3 -3
  51. package/dist/composite/card/overlay/icon.js +3 -3
  52. package/dist/composite/card/overlay/image.d.ts.map +1 -1
  53. package/dist/composite/card/overlay/image.js +9 -12
  54. package/dist/composite/card/overlay/image.js.map +1 -1
  55. package/dist/composite/card/video/block.js +4 -3
  56. package/dist/composite/card/video/block.js.map +1 -1
  57. package/dist/composite/carousel/cards/index.d.ts +1 -8
  58. package/dist/composite/carousel/cards/index.d.ts.map +1 -1
  59. package/dist/composite/carousel/cards/index.js +163 -282
  60. package/dist/composite/carousel/cards/index.js.map +1 -1
  61. package/dist/composite/carousel/default/index.d.ts +9 -15
  62. package/dist/composite/carousel/default/index.d.ts.map +1 -1
  63. package/dist/composite/carousel/default/index.js +78 -129
  64. package/dist/composite/carousel/default/index.js.map +1 -1
  65. package/dist/composite/carousel/elements/equal-width-items.d.ts +37 -0
  66. package/dist/composite/carousel/elements/equal-width-items.d.ts.map +1 -0
  67. package/dist/composite/carousel/elements/{blocks.js → equal-width-items.js} +157 -227
  68. package/dist/composite/carousel/elements/equal-width-items.js.map +1 -0
  69. package/dist/composite/carousel/elements/full-screen.d.ts +3 -2
  70. package/dist/composite/carousel/elements/full-screen.d.ts.map +1 -1
  71. package/dist/composite/carousel/elements/full-screen.js +34 -41
  72. package/dist/composite/carousel/elements/full-screen.js.map +1 -1
  73. package/dist/composite/carousel/elements/image.d.ts +15 -2
  74. package/dist/composite/carousel/elements/image.d.ts.map +1 -1
  75. package/dist/composite/carousel/elements/image.js +176 -151
  76. package/dist/composite/carousel/elements/image.js.map +1 -1
  77. package/dist/composite/carousel/elements/index.d.ts +4 -1
  78. package/dist/composite/carousel/elements/index.d.ts.map +1 -1
  79. package/dist/composite/carousel/elements/indicator-wrapper.d.ts +13 -0
  80. package/dist/composite/carousel/elements/indicator-wrapper.d.ts.map +1 -0
  81. package/dist/composite/carousel/elements/indicator-wrapper.js +67 -0
  82. package/dist/composite/carousel/elements/indicator-wrapper.js.map +1 -0
  83. package/dist/composite/carousel/elements/nav-button.d.ts +82 -0
  84. package/dist/composite/carousel/elements/nav-button.d.ts.map +1 -0
  85. package/dist/composite/carousel/elements/nav-button.js +164 -0
  86. package/dist/composite/carousel/elements/nav-button.js.map +1 -0
  87. package/dist/composite/carousel/elements/overlay.d.ts +3 -2
  88. package/dist/composite/carousel/elements/overlay.d.ts.map +1 -1
  89. package/dist/composite/carousel/elements/overlay.js +85 -55
  90. package/dist/composite/carousel/elements/overlay.js.map +1 -1
  91. package/dist/composite/carousel/image/multiple.d.ts +2 -7
  92. package/dist/composite/carousel/image/multiple.d.ts.map +1 -1
  93. package/dist/composite/carousel/image/multiple.js +85 -150
  94. package/dist/composite/carousel/image/multiple.js.map +1 -1
  95. package/dist/composite/carousel/image/standard.d.ts +2 -7
  96. package/dist/composite/carousel/image/standard.d.ts.map +1 -1
  97. package/dist/composite/carousel/image/standard.js +148 -262
  98. package/dist/composite/carousel/image/standard.js.map +1 -1
  99. package/dist/composite/carousel/thumbnail/index.d.ts +1 -8
  100. package/dist/composite/carousel/thumbnail/index.d.ts.map +1 -1
  101. package/dist/composite/carousel/thumbnail/index.js +72 -113
  102. package/dist/composite/carousel/thumbnail/index.js.map +1 -1
  103. package/dist/composite/carousel/wide/container.d.ts +21 -20
  104. package/dist/composite/carousel/wide/container.d.ts.map +1 -1
  105. package/dist/composite/carousel/wide/container.js +37 -12
  106. package/dist/composite/carousel/wide/container.js.map +1 -1
  107. package/dist/composite/carousel/wide/controls.d.ts +5 -10
  108. package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
  109. package/dist/composite/carousel/wide/controls.js +24 -94
  110. package/dist/composite/carousel/wide/controls.js.map +1 -1
  111. package/dist/composite/carousel/wide/frames.d.ts +18 -10
  112. package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
  113. package/dist/composite/carousel/wide/frames.js +60 -78
  114. package/dist/composite/carousel/wide/frames.js.map +1 -1
  115. package/dist/composite/carousel/wide/index.d.ts.map +1 -1
  116. package/dist/composite/carousel/wide/index.js +11 -19
  117. package/dist/composite/carousel/wide/index.js.map +1 -1
  118. package/dist/composite/hero/custom/expand.js +3 -4
  119. package/dist/composite/hero/custom/expand.js.map +1 -1
  120. package/dist/composite/hero/custom/grid.js +2 -3
  121. package/dist/composite/hero/custom/grid.js.map +1 -1
  122. package/dist/composite/hero/custom/video-arrow.js +4 -3
  123. package/dist/composite/hero/custom/video-arrow.js.map +1 -1
  124. package/dist/composite/hero/logo.js +3 -3
  125. package/dist/composite/hero/minimal.js +3 -3
  126. package/dist/composite/hero/overlay.js +5 -4
  127. package/dist/composite/hero/overlay.js.map +1 -1
  128. package/dist/composite/hero/stacked.js +3 -3
  129. package/dist/composite/hero/standard.js +4 -3
  130. package/dist/composite/hero/standard.js.map +1 -1
  131. package/dist/composite/layout/box/logo.d.ts +1 -4
  132. package/dist/composite/layout/box/logo.d.ts.map +1 -1
  133. package/dist/composite/layout/box/logo.js +55 -103
  134. package/dist/composite/layout/box/logo.js.map +1 -1
  135. package/dist/composite/layout/image/expand.d.ts +1 -4
  136. package/dist/composite/layout/image/expand.d.ts.map +1 -1
  137. package/dist/composite/layout/image/expand.js +136 -243
  138. package/dist/composite/layout/image/expand.js.map +1 -1
  139. package/dist/composite/layout/scroll-top/index.d.ts +1 -7
  140. package/dist/composite/layout/scroll-top/index.d.ts.map +1 -1
  141. package/dist/composite/layout/scroll-top/index.js +65 -77
  142. package/dist/composite/layout/scroll-top/index.js.map +1 -1
  143. package/dist/composite/layout/sticky-columns/index.d.ts +2 -2
  144. package/dist/composite/layout/sticky-columns/index.d.ts.map +1 -1
  145. package/dist/composite/layout/sticky-columns/index.js +42 -70
  146. package/dist/composite/layout/sticky-columns/index.js.map +1 -1
  147. package/dist/composite/media/elements/gif.js +3 -3
  148. package/dist/composite/media/inline/caption.d.ts +4 -2
  149. package/dist/composite/media/inline/caption.d.ts.map +1 -1
  150. package/dist/composite/media/inline/caption.js +56 -67
  151. package/dist/composite/media/inline/caption.js.map +1 -1
  152. package/dist/composite/media/inline/index.d.ts +9 -8
  153. package/dist/composite/media/inline/index.d.ts.map +1 -1
  154. package/dist/composite/media/inline/standard.d.ts +1 -4
  155. package/dist/composite/media/inline/standard.d.ts.map +1 -1
  156. package/dist/composite/media/inline/standard.js +16 -24
  157. package/dist/composite/media/inline/standard.js.map +1 -1
  158. package/dist/composite/media/inline/wrapped.d.ts +4 -2
  159. package/dist/composite/media/inline/wrapped.d.ts.map +1 -1
  160. package/dist/composite/media/inline/wrapped.js +80 -83
  161. package/dist/composite/media/inline/wrapped.js.map +1 -1
  162. package/dist/composite/navigation/utility/alert.js +3 -4
  163. package/dist/composite/navigation/utility/alert.js.map +1 -1
  164. package/dist/composite/pathway/_common.js +4 -3
  165. package/dist/composite/pathway/_common.js.map +1 -1
  166. package/dist/composite/pathway/hero.js +3 -3
  167. package/dist/composite/person/bio/full.js +3 -3
  168. package/dist/composite/person/bio/small.js +2 -3
  169. package/dist/composite/person/bio/small.js.map +1 -1
  170. package/dist/composite/person/block.js +2 -3
  171. package/dist/composite/person/block.js.map +1 -1
  172. package/dist/composite/person/hero.js +3 -3
  173. package/dist/composite/person/list.js +2 -3
  174. package/dist/composite/person/list.js.map +1 -1
  175. package/dist/composite/person/tabular.js +2 -3
  176. package/dist/composite/person/tabular.js.map +1 -1
  177. package/dist/composite/slider/events.d.ts +6 -12
  178. package/dist/composite/slider/events.d.ts.map +1 -1
  179. package/dist/composite/slider/events.js +304 -428
  180. package/dist/composite/slider/events.js.map +1 -1
  181. package/dist/layout/image.d.ts +5 -10
  182. package/dist/layout/image.d.ts.map +1 -1
  183. package/dist/layout/image.js +27 -88
  184. package/dist/layout/image.js.map +1 -1
  185. package/dist/layout/index.d.ts +1 -1
  186. package/dist/layout/index.d.ts.map +1 -1
  187. package/dist/layout.js +2 -2
  188. package/package.json +6 -6
  189. package/dist/composite/carousel/elements/blocks.d.ts +0 -42
  190. package/dist/composite/carousel/elements/blocks.d.ts.map +0 -1
  191. package/dist/composite/carousel/elements/blocks.js.map +0 -1
  192. package/dist/composite/carousel/wide/_elementModel.d.ts +0 -18
  193. package/dist/composite/carousel/wide/_elementModel.d.ts.map +0 -1
  194. package/dist/composite/carousel/wide/_elementModel.js +0 -29
  195. package/dist/composite/carousel/wide/_elementModel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n\n ${CTA} svg {\n max-width: 20px;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["element","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES"],"mappings":"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"}
1
+ {"version":3,"file":"alert.js","sources":["../../../../source/composite/navigation/utility/alert.ts"],"sourcesContent":["import {\n element,\n layout,\n token,\n typography,\n} from '@universityofmaryland/web-styles-library';\nimport { fetchGraphQL } from '@universityofmaryland/web-utilities-library/network';\nimport { jssToCSS } from '@universityofmaryland/web-utilities-library/styles';\nimport { close_large as iconCloseLarge } from '@universityofmaryland/web-icons-library/controls';\nimport { actions } from 'atomic';\n\ntype AlertData = {\n id: string;\n type: string;\n title: string;\n headline?: string;\n text: string;\n ctaUrl: string;\n ctaText?: string;\n hidden?: boolean;\n};\n\ntype AlertResponse = {\n data: {\n entries: AlertData[];\n };\n};\n\ntype AlertProps = {\n alertUrl?: string | null;\n};\n\nexport type TypeAlertProps = {\n alertUrl?: string | null;\n};\n\ntype ElementAttributes = Record<string, string>;\n\ntype CacheCheckResult = {\n shouldCheck: boolean;\n cachedData: AlertData | null;\n};\n\nconst QUERY = `\n query CampusAlertsQuery {\n entries: entries(\n limit: 1\n type: \"mainElementsCampusAlert\"\n ) {\n id: uid\n type: optionsType\n headline\n title\n text\n ctaUrl: cta\n ctaText\n }\n }\n`;\n\nconst ELEMENT_NAME = 'umd-element-nav-alert';\nexport const ALERT_CONSTANTS = {\n URLS: {\n DEFAULT: 'https://umd.edu/api/v2',\n },\n STORAGE_KEYS: {\n ALERT_TIME: 'umd-utility-alert-time',\n ALERT: 'umd-utility-alert',\n ALERT_ID: 'umd-utility-alert-id',\n },\n ELEMENTS: {\n ALERT_ID: 'umd-global-alert',\n DECLARATION: 'umd-element-nav-alert-declaration',\n CONTAINER: 'umd-element-nav-alert-container',\n LOCK: 'umd-element-nav-alert-lock',\n WRAPPER: 'umd-element-nav-alert-wrapper',\n TITLE: 'umd-element-nav-alert-title',\n TEXT: 'umd-element-nav-alert-text',\n CTA: 'umd-element-nav-alert-cta',\n CLOSE_BUTTON: 'umd-element-nav-alert-close',\n },\n ATTRIBUTES: {\n TYPE: 'type',\n },\n TYPES: {\n GENERAL: 'general',\n CLOSED: 'closed',\n OPEN: 'open',\n },\n ANIMATION: {\n SPEED: 800,\n },\n BREAKPOINTS: {\n MEDIUM: 768,\n LARGE: 1024,\n },\n CACHE: {\n DURATION: 60 * 1000, // One minute in milliseconds\n },\n} as const;\n\nconst { ATTRIBUTES, ANIMATION, BREAKPOINTS, ELEMENTS, TYPES } = ALERT_CONSTANTS;\nconst IS_TYPE_GENERAL = `[${ATTRIBUTES.TYPE}=${TYPES.GENERAL}]`;\nconst IS_TYPE_CLOSED = `[${ATTRIBUTES.TYPE}=${TYPES.CLOSED}]`;\n\nconst DECLARATION = `.${ELEMENTS.DECLARATION}`;\nconst CONTAINER = `.${ELEMENTS.CONTAINER}`;\nconst WRAPPER = `.${ELEMENTS.WRAPPER}`;\nconst LOCK = `.${ELEMENTS.LOCK}`;\nconst ALERT_TITLE = `.${ELEMENTS.TITLE}`;\nconst ALERT_TEXT = `.${ELEMENTS.TEXT}`;\nconst CLOSE_BUTTON = `.${ELEMENTS.CLOSE_BUTTON}`;\nconst CTA = `.${ELEMENTS.CTA}`;\n\nconst OVERWRITE_CONTAINER_TYPE_GENERAL = `${CONTAINER}${IS_TYPE_GENERAL}`;\nconst OVERWRITE_CONTAINER_TYPE_CLOSED = `${CONTAINER}${IS_TYPE_CLOSED}`;\n\n// prettier-ignore\nconst OverwriteTypeGeneral = `\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} {\n background-color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} * {\n color: ${token.color.white};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:hover,\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} a:focus {\n color: ${token.color.white} !important;\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${ALERT_TITLE} {\n color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_GENERAL} ${CLOSE_BUTTON} > svg {\n fill: ${token.color.white};\n }\n`\n\n// prettier-ignore\nconst OverwriteTypeClosed = `\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} {\n background-color: ${token.color.gold};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} * {\n color: ${token.color.black};\n }\n\n ${OVERWRITE_CONTAINER_TYPE_CLOSED} .${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n }\n`\n\n// prettier-ignore\nconst CloseButtonStyles = `\n ${CLOSE_BUTTON} {\n position: absolute;\n top: 30px;\n right: 10px;\n }\n \n @container (max-width: ${BREAKPOINTS.MEDIUM - 1}px) {\n ${CLOSE_BUTTON} {\n top: 25px;\n right: 5px;\n }\n }\n\n ${CLOSE_BUTTON} > svg {\n fill: ${token.color.black};\n width: 24px;\n height: 24px;\n }\n`\n\n// prettier-ignore\nconst TextStyles = `\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TITLE}`]: typography.sans.large,\n },\n })}\n\n ${ALERT_TITLE} {\n text-transform: uppercase;\n }\n\n ${ALERT_TITLE} + * {\n margin-top: ${token.spacing.sm};\n }\n\n ${jssToCSS({\n styleObj: {\n [`${ALERT_TEXT}`]: element.text.rich.advanced,\n },\n })}\n\n ${ALERT_TEXT},\n ${ALERT_TEXT} * {\n font-size: 16px;;\n }\n\n ${ALERT_TEXT} + * {\n margin-top: ${token.spacing.lg};\n }\n\n ${CTA} {\n text-decoration: none;\n }\n\n ${CTA} svg {\n max-width: 20px;\n }\n`\n\n// prettier-ignore\nconst WrapperStyles = `\n ${WRAPPER} {\n position: relative;\n padding-top: ${token.spacing.md};\n padding-bottom: ${token.spacing.md};\n padding-right: ${token.spacing.lg};\n }\n\n @container (min-width: ${BREAKPOINTS.MEDIUM}px) {\n ${WRAPPER} {\n padding-top: ${token.spacing.lg};\n padding-bottom: ${token.spacing.lg};\n }\n }\n`\n\n// prettier-ignore\nconst LockStyles = `\n ${jssToCSS({\n styleObj: {\n [`${LOCK}`]: layout.space.horizontal.full,\n },\n })}\n`\n\n// prettier-ignore\nconst ContainerStyles = `\n ${CONTAINER} {\n container: ${ELEMENT_NAME} / inline-size;\n background-color: ${token.color.gray.lighter};\n border-left: 4px solid ${token.color.red};\n transition: height ${ANIMATION.SPEED}ms;\n overflow: hidden;\n position: relative;\n }\n\n @container (min-width: ${BREAKPOINTS.LARGE}px) {\n ${CONTAINER} {\n border-left: 8px solid ${token.color.red};\n }\n }\n`\n\n// prettier-ignore\nexport const STYLES_NAV_ALERT = `\n ${DECLARATION} {\n container: ${ELEMENT_NAME} / inline-size;\n }\n\n ${ContainerStyles}\n ${LockStyles}\n ${WrapperStyles}\n ${TextStyles}\n ${CloseButtonStyles}\n ${OverwriteTypeGeneral}\n ${OverwriteTypeClosed}\n`;\n\n// storage.ts\nconst logStorageError = (operation: string, error: Error): void => {\n console.error(`UMD Component - Alert Storage: ${operation} failed:`, error);\n};\n\nconst getStoredValue = <T>(key: string): T | null => {\n try {\n const value = window.localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } catch (error) {\n logStorageError(`Reading ${key}`, error as Error);\n return null;\n }\n};\n\nconst setStoredValue = (key: string, value: unknown): void => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logStorageError('Saving value', error as Error);\n }\n};\n\nconst clearAlertStorage = (): void => {\n const { STORAGE_KEYS } = ALERT_CONSTANTS;\n window.localStorage.removeItem(STORAGE_KEYS.ALERT_TIME);\n window.localStorage.removeItem(STORAGE_KEYS.ALERT);\n};\n\nconst checkAlertCache = (): CacheCheckResult => {\n const currentTime = new Date().getTime();\n const { STORAGE_KEYS, CACHE } = ALERT_CONSTANTS;\n\n try {\n const alertTimeStr = getStoredValue<string>(STORAGE_KEYS.ALERT_TIME);\n const cachedResponse = getStoredValue<AlertData>(STORAGE_KEYS.ALERT);\n\n if (!alertTimeStr) {\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n }\n\n const alertTime = parseInt(alertTimeStr, 10);\n const timeElapsed = currentTime - alertTime;\n\n if (timeElapsed < CACHE.DURATION && cachedResponse) {\n return { shouldCheck: false, cachedData: cachedResponse };\n }\n\n setStoredValue(STORAGE_KEYS.ALERT_TIME, currentTime.toString());\n return { shouldCheck: true, cachedData: null };\n } catch (error) {\n console.error('Cache check failed:', error);\n return { shouldCheck: true, cachedData: null };\n }\n};\n\nconst updateAlertCache = (alert: AlertData): void => {\n setStoredValue(ALERT_CONSTANTS.STORAGE_KEYS.ALERT, alert);\n};\n\nconst createElement = (\n tag: string,\n className?: string,\n attributes?: ElementAttributes,\n): HTMLElement => {\n const element = document.createElement(tag);\n if (className) element.classList.add(className);\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n }\n return element;\n};\n\nconst createCloseButton = (container: HTMLElement): HTMLButtonElement => {\n const { ELEMENTS, ANIMATION } = ALERT_CONSTANTS;\n const button = createElement('button', ELEMENTS.CLOSE_BUTTON, {\n 'aria-label': 'remove alert',\n }) as HTMLButtonElement;\n\n button.innerHTML = iconCloseLarge;\n button.addEventListener('click', () => {\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n if (cachedAlert) {\n // Animate close\n container.style.height = `${container.offsetHeight}px`;\n container.style.transition = `height ${ANIMATION.SPEED}ms`;\n\n updateAlertCache({ ...cachedAlert, hidden: true });\n\n setTimeout(() => {\n container.style.height = '0px';\n }, 100);\n\n setTimeout(() => {\n container.remove();\n }, ANIMATION.SPEED + 100);\n }\n });\n\n return button;\n};\n\nconst createCTAElement = ({\n ctaText,\n ctaUrl,\n}: {\n ctaText: string;\n ctaUrl: string;\n}) => {\n const link = createElement('a', ALERT_CONSTANTS.ELEMENTS.CTA, {\n href: ctaUrl,\n rel: 'noopener noreferrer',\n target: '_blank',\n });\n link.innerHTML = ctaText;\n\n return actions.options({\n element: link,\n isTypeSecondary: true,\n });\n};\n\nconst createAlertContent = (\n alert: AlertData,\n container: HTMLElement,\n): HTMLElement => {\n const { ELEMENTS } = ALERT_CONSTANTS;\n const wrapper = createElement('div', ELEMENTS.WRAPPER);\n const lock = createElement('div', ELEMENTS.LOCK);\n const headlineText = alert.headline || alert.title;\n\n // Create elements\n const title = createElement('p', ELEMENTS.TITLE);\n title.innerHTML = headlineText;\n\n const closeButton = createCloseButton(container);\n\n wrapper.append(closeButton, title);\n\n if (alert.text) {\n const message = createElement('div', ELEMENTS.TEXT);\n message.innerHTML = alert.text;\n wrapper.append(closeButton, title, message);\n }\n\n // Add CTA if exists\n if (alert.ctaUrl) {\n const cta = createCTAElement({\n ctaText: alert.ctaText || headlineText,\n ctaUrl: alert.ctaUrl,\n });\n\n wrapper.appendChild(cta.element);\n }\n\n lock.appendChild(wrapper);\n return lock;\n};\n\nconst createAlertComponent = (alert: AlertData): HTMLElement => {\n const { ELEMENTS, ATTRIBUTES } = ALERT_CONSTANTS;\n\n const declaration = createElement('div', ELEMENTS.DECLARATION);\n const container = createElement('div', ELEMENTS.CONTAINER, {\n id: ELEMENTS.ALERT_ID,\n [ATTRIBUTES.TYPE]: alert.type,\n });\n\n const content = createAlertContent(alert, container);\n container.appendChild(content);\n declaration.appendChild(container);\n\n return declaration;\n};\n\nconst fetchAlerts = async ({\n alertUrl,\n}: AlertProps): Promise<AlertResponse | null> => {\n try {\n const url = alertUrl || ALERT_CONSTANTS.URLS.DEFAULT;\n\n return await fetchGraphQL({\n query: QUERY,\n url,\n token: 'VIDnMeNYHTrLvWPtPpK5MNpjuv5WmmhU',\n });\n } catch (error) {\n console.error('Failed to fetch alerts:', error);\n return null;\n }\n};\n\nexport const createNavAlert = async ({ alertUrl }: AlertProps) => {\n const alertCache = checkAlertCache();\n\n // Show cached alert if valid\n if (\n !alertCache.shouldCheck &&\n alertCache.cachedData &&\n !alertCache.cachedData.hidden\n ) {\n return { element: createAlertComponent(alertCache.cachedData) };\n }\n\n // Fetch new alerts\n const response = await fetchAlerts({ alertUrl });\n if (!response?.data?.entries[0]) {\n clearAlertStorage();\n return null;\n }\n\n const alert = response.data?.entries[0];\n const cachedAlert = getStoredValue<AlertData>(\n ALERT_CONSTANTS.STORAGE_KEYS.ALERT,\n );\n\n // Handle alert updates\n if (cachedAlert?.id === alert.id) {\n if (!cachedAlert.hidden && alertCache.shouldCheck) {\n return { element: createAlertComponent(cachedAlert) };\n }\n } else {\n clearAlertStorage();\n updateAlertCache(alert);\n return { element: createAlertComponent(alert) };\n }\n\n return null;\n};\n"],"names":["element","ELEMENTS","ANIMATION","iconCloseLarge","actions.options","ATTRIBUTES"],"mappings":"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"}
@@ -13,18 +13,19 @@ import "@universityofmaryland/web-icons-library/files";
13
13
  import "@universityofmaryland/web-icons-library/brand";
14
14
  import "@universityofmaryland/web-icons-library/arrows";
15
15
  import "@universityofmaryland/web-utilities-library/performance";
16
- import "../../atomic/animations/brand/chevron-scroll.js";
16
+ import "@universityofmaryland/web-utilities-library/styles";
17
17
  import "../../atomic/animations/brand/card-stack.js";
18
18
  import { createImageBackground } from "../../atomic/assets/image/background.js";
19
19
  import "@universityofmaryland/web-styles-library";
20
+ import "@universityofmaryland/web-utilities-library/accessibility";
20
21
  import { createVideoObservedAutoPlay } from "../../atomic/assets/video/observed-auto-play.js";
21
22
  import "@universityofmaryland/web-icons-library/location";
22
23
  import "@universityofmaryland/web-icons-library/calendar";
23
24
  import "../../atomic/layout/block/stacked.js";
24
- import "../../atomic/layout/overlay/modal.js";
25
25
  import "../../atomic/layout/person/columns.js";
26
26
  import "@universityofmaryland/web-icons-library/social";
27
- import "../../atomic/text-lockup/date.js";
27
+ import "@universityofmaryland/web-utilities-library/string";
28
+ import "@universityofmaryland/web-utilities-library/animation";
28
29
  import { createTextLockupMedium as createTextLockupMedium$1 } from "../../atomic/text-lockup/medium.js";
29
30
  import "../../atomic/text-lockup/small.js";
30
31
  const createCompositeHeadline = ({
@@ -1 +1 @@
1
- {"version":3,"file":"_common.js","sources":["../../../source/composite/pathway/_common.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as animationStyles from '@universityofmaryland/web-styles-library/animation';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { wrapTextNodeInSpan } from '@universityofmaryland/web-utilities-library/dom';\nimport * as Atomic from 'atomic';\nimport { type PathwayTextLockupProps, type PathwayAssetProps } from './_types';\n\nexport const createCompositeHeadline = ({\n headline,\n isThemeDark,\n isThemeMaryland,\n}: Pick<\n PathwayTextLockupProps,\n 'headline' | 'isThemeDark' | 'isThemeMaryland'\n>) => {\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount > 30;\n const finalIsThemeDark = isThemeDark || isThemeMaryland;\n\n if (!headline) return null;\n\n const headlineStyles = {\n ...typography.sans.compose('largest', {\n theme: theme.fontColor(finalIsThemeDark),\n }),\n ...animationStyles.line.composeSlideUnder({\n color: theme.foreground(finalIsThemeDark),\n }),\n };\n\n return new ElementBuilder(headline)\n .styled(headlineStyles)\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n textWrap: 'balance',\n\n [`@container (${token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '40px',\n }),\n },\n },\n siblingAfter: {\n marginTop: token.spacing.md,\n },\n })\n .withModifier((el) => wrapTextNodeInSpan(el))\n .build();\n};\n\nexport const createCompositeStat = ({\n stats,\n}: Pick<PathwayTextLockupProps, 'stats'>) => {\n const mediumSize = 800;\n\n if (!stats) return null;\n\n const statWrapper = new ElementBuilder()\n .withClassName('text-lockup-medium-stats')\n .withStyles({\n element: {\n marginTop: token.spacing.lg,\n\n [`&:has(> *:nth-child(2))`]: {\n display: `grid`,\n gridGap: `${token.spacing.md}`,\n },\n\n [`@container (max-width: ${mediumSize - 1}px)`]: {\n marginTop: token.spacing.lg,\n paddingTop: token.spacing.md,\n borderTop: `1px solid ${token.color.gray.light}`,\n },\n\n [`@container (min-width: ${mediumSize}px)`]: {\n marginTop: token.spacing['2xl'],\n\n [`&:has(> *:nth-child(2))`]: {\n gridGap: `${token.spacing.lg}`,\n gridTemplateColumns: `repeat(2, 1fr)`,\n },\n },\n },\n })\n .build();\n\n statWrapper.element.innerHTML = stats.innerHTML;\n\n return statWrapper;\n};\n\nexport const createTextLockupMedium = (\n props: Pick<\n PathwayTextLockupProps,\n | 'stats'\n | 'actions'\n | 'eventDetails'\n | 'eyebrow'\n | 'headline'\n | 'stats'\n | 'text'\n | 'isThemeDark'\n | 'isThemeMaryland'\n >,\n) =>\n Atomic.textLockup.medium({\n ...props,\n ribbon: props.eyebrow,\n compositeHeadline: createCompositeHeadline(props),\n compositeStats: createCompositeStat(props),\n });\n\nexport const createAssetContent = (\n props: Pick<\n PathwayAssetProps,\n 'dateSign' | 'image' | 'video' | 'isImageScaled'\n >,\n) => {\n const { dateSign, image, video, isImageScaled = true } = props;\n const children = [];\n\n if (video) {\n children.push(\n Atomic.assets.video.observedAutoPlay({\n video,\n isScaled: isImageScaled,\n additionalElementStyles: {\n [`& video`]: {\n objectFit: 'cover',\n width: '100%',\n height: '100%',\n },\n },\n }),\n );\n }\n\n if (!video && image) {\n children.push(\n Atomic.assets.image.background({\n element: image,\n isScaled: isImageScaled,\n isShowCaption: true,\n isGifAllowed: true,\n imageLoading: 'lazy',\n dateSign,\n }),\n );\n }\n\n return new ElementBuilder()\n .withClassName('pathway-image-container-wrapper')\n .withChildren(...children)\n .withStyles({\n element: {\n position: 'relative',\n overflow: 'hidden',\n height: '100%',\n width: '100%',\n display: 'grid',\n\n [`&:has(.image-container)`]: {\n alignItems: 'center',\n },\n },\n })\n .build();\n};\n"],"names":["animationStyles","Atomic.textLockup.medium","Atomic.assets.video.observedAutoPlay","Atomic.assets.image.background"],"mappings":"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"}
1
+ {"version":3,"file":"_common.js","sources":["../../../source/composite/pathway/_common.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as animationStyles from '@universityofmaryland/web-styles-library/animation';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { wrapTextNodeInSpan } from '@universityofmaryland/web-utilities-library/dom';\nimport * as Atomic from 'atomic';\nimport { type PathwayTextLockupProps, type PathwayAssetProps } from './_types';\n\nexport const createCompositeHeadline = ({\n headline,\n isThemeDark,\n isThemeMaryland,\n}: Pick<\n PathwayTextLockupProps,\n 'headline' | 'isThemeDark' | 'isThemeMaryland'\n>) => {\n const characterCount = headline?.textContent?.trim().length || 0;\n const isOverwriteHeadline = characterCount > 30;\n const finalIsThemeDark = isThemeDark || isThemeMaryland;\n\n if (!headline) return null;\n\n const headlineStyles = {\n ...typography.sans.compose('largest', {\n theme: theme.fontColor(finalIsThemeDark),\n }),\n ...animationStyles.line.composeSlideUnder({\n color: theme.foreground(finalIsThemeDark),\n }),\n };\n\n return new ElementBuilder(headline)\n .styled(headlineStyles)\n .withStyles({\n element: {\n fontWeight: 800,\n textTransform: 'uppercase',\n textWrap: 'balance',\n\n [`@container (${token.media.queries.desktop.min})`]: {\n ...(isOverwriteHeadline && {\n fontSize: '40px',\n }),\n },\n },\n siblingAfter: {\n marginTop: token.spacing.md,\n },\n })\n .withModifier((el) => wrapTextNodeInSpan(el))\n .build();\n};\n\nexport const createCompositeStat = ({\n stats,\n}: Pick<PathwayTextLockupProps, 'stats'>) => {\n const mediumSize = 800;\n\n if (!stats) return null;\n\n const statWrapper = new ElementBuilder()\n .withClassName('text-lockup-medium-stats')\n .withStyles({\n element: {\n marginTop: token.spacing.lg,\n\n [`&:has(> *:nth-child(2))`]: {\n display: `grid`,\n gridGap: `${token.spacing.md}`,\n },\n\n [`@container (max-width: ${mediumSize - 1}px)`]: {\n marginTop: token.spacing.lg,\n paddingTop: token.spacing.md,\n borderTop: `1px solid ${token.color.gray.light}`,\n },\n\n [`@container (min-width: ${mediumSize}px)`]: {\n marginTop: token.spacing['2xl'],\n\n [`&:has(> *:nth-child(2))`]: {\n gridGap: `${token.spacing.lg}`,\n gridTemplateColumns: `repeat(2, 1fr)`,\n },\n },\n },\n })\n .build();\n\n statWrapper.element.innerHTML = stats.innerHTML;\n\n return statWrapper;\n};\n\nexport const createTextLockupMedium = (\n props: Pick<\n PathwayTextLockupProps,\n | 'stats'\n | 'actions'\n | 'eventDetails'\n | 'eyebrow'\n | 'headline'\n | 'stats'\n | 'text'\n | 'isThemeDark'\n | 'isThemeMaryland'\n >,\n) =>\n Atomic.textLockup.medium({\n ...props,\n ribbon: props.eyebrow,\n compositeHeadline: createCompositeHeadline(props),\n compositeStats: createCompositeStat(props),\n });\n\nexport const createAssetContent = (\n props: Pick<\n PathwayAssetProps,\n 'dateSign' | 'image' | 'video' | 'isImageScaled'\n >,\n) => {\n const { dateSign, image, video, isImageScaled = true } = props;\n const children = [];\n\n if (video) {\n children.push(\n Atomic.assets.video.observedAutoPlay({\n video,\n isScaled: isImageScaled,\n additionalElementStyles: {\n [`& video`]: {\n objectFit: 'cover',\n width: '100%',\n height: '100%',\n },\n },\n }),\n );\n }\n\n if (!video && image) {\n children.push(\n Atomic.assets.image.background({\n element: image,\n isScaled: isImageScaled,\n isShowCaption: true,\n isGifAllowed: true,\n imageLoading: 'lazy',\n dateSign,\n }),\n );\n }\n\n return new ElementBuilder()\n .withClassName('pathway-image-container-wrapper')\n .withChildren(...children)\n .withStyles({\n element: {\n position: 'relative',\n overflow: 'hidden',\n height: '100%',\n width: '100%',\n display: 'grid',\n\n [`&:has(.image-container)`]: {\n alignItems: 'center',\n },\n },\n })\n .build();\n};\n"],"names":["animationStyles","Atomic.textLockup.medium","Atomic.assets.video.observedAutoPlay","Atomic.assets.image.background"],"mappings":"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"}
@@ -14,18 +14,18 @@ import "@universityofmaryland/web-icons-library/files";
14
14
  import "@universityofmaryland/web-icons-library/brand";
15
15
  import "@universityofmaryland/web-icons-library/arrows";
16
16
  import "@universityofmaryland/web-utilities-library/performance";
17
- import "../../atomic/animations/brand/chevron-scroll.js";
18
17
  import "../../atomic/animations/brand/card-stack.js";
19
18
  import { createImageBackground } from "../../atomic/assets/image/background.js";
19
+ import "@universityofmaryland/web-utilities-library/accessibility";
20
20
  import { createVideoObservedAutoPlay } from "../../atomic/assets/video/observed-auto-play.js";
21
21
  import "@universityofmaryland/web-icons-library/location";
22
22
  import "@universityofmaryland/web-icons-library/calendar";
23
23
  import "@universityofmaryland/web-utilities-library/theme";
24
24
  import "../../atomic/layout/block/stacked.js";
25
- import "../../atomic/layout/overlay/modal.js";
26
25
  import "../../atomic/layout/person/columns.js";
27
26
  import "@universityofmaryland/web-icons-library/social";
28
- import "../../atomic/text-lockup/date.js";
27
+ import "@universityofmaryland/web-utilities-library/string";
28
+ import "@universityofmaryland/web-utilities-library/animation";
29
29
  import { createTextLockupLarge } from "../../atomic/text-lockup/large.js";
30
30
  import "../../atomic/text-lockup/small.js";
31
31
  const BREAK_SMALL = 999;
@@ -14,17 +14,17 @@ import "@universityofmaryland/web-icons-library/files";
14
14
  import "@universityofmaryland/web-icons-library/brand";
15
15
  import "@universityofmaryland/web-icons-library/arrows";
16
16
  import "@universityofmaryland/web-utilities-library/performance";
17
- import "../../../atomic/animations/brand/chevron-scroll.js";
17
+ import "@universityofmaryland/web-utilities-library/styles";
18
18
  import "../../../atomic/animations/brand/card-stack.js";
19
19
  import { createImageBackground } from "../../../atomic/assets/image/background.js";
20
20
  import "@universityofmaryland/web-utilities-library/accessibility";
21
21
  import "@universityofmaryland/web-icons-library/location";
22
22
  import "@universityofmaryland/web-icons-library/calendar";
23
23
  import "../../../atomic/layout/block/stacked.js";
24
- import "../../../atomic/layout/overlay/modal.js";
25
24
  import "../../../atomic/layout/person/columns.js";
26
25
  import { createTextLockupContact } from "../../../atomic/text-lockup/contact.js";
27
- import "../../../atomic/text-lockup/date.js";
26
+ import "@universityofmaryland/web-utilities-library/string";
27
+ import "@universityofmaryland/web-utilities-library/animation";
28
28
  import { createTextLockupPerson } from "../../../atomic/text-lockup/person.js";
29
29
  import "../../../atomic/text-lockup/small.js";
30
30
  const CreatePersonBioFullElement = (props) => {
@@ -15,17 +15,16 @@ import "@universityofmaryland/web-icons-library/files";
15
15
  import "@universityofmaryland/web-icons-library/brand";
16
16
  import "@universityofmaryland/web-icons-library/arrows";
17
17
  import "@universityofmaryland/web-utilities-library/performance";
18
- import "../../../atomic/animations/brand/chevron-scroll.js";
19
18
  import "../../../atomic/animations/brand/card-stack.js";
20
19
  import { createImageBackground } from "../../../atomic/assets/image/background.js";
21
20
  import "@universityofmaryland/web-utilities-library/accessibility";
22
21
  import "@universityofmaryland/web-icons-library/location";
23
22
  import "@universityofmaryland/web-icons-library/calendar";
24
23
  import "../../../atomic/layout/block/stacked.js";
25
- import "../../../atomic/layout/overlay/modal.js";
26
24
  import "../../../atomic/layout/person/columns.js";
27
25
  import { createTextLockupContact } from "../../../atomic/text-lockup/contact.js";
28
- import "../../../atomic/text-lockup/date.js";
26
+ import "@universityofmaryland/web-utilities-library/string";
27
+ import "@universityofmaryland/web-utilities-library/animation";
29
28
  import { createTextLockupPerson } from "../../../atomic/text-lockup/person.js";
30
29
  import "../../../atomic/text-lockup/small.js";
31
30
  const createTextContainer = (props) => {
@@ -1 +1 @@
1
- {"version":3,"file":"small.js","sources":["../../../../source/composite/person/bio/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { assets, textLockup } from 'atomic';\nimport { PersonBio } from '../_types';\nimport { type ElementModel } from '../../../_types';\n\nconst createTextContainer = (props: PersonBio): ElementModel<HTMLElement> => {\n const { isThemeDark, name, ...textProps } = props;\n\n const builder = new ElementBuilder().styled(\n Styles.element.text.line.adjustentInset,\n );\n\n if (name) {\n builder.withChild(\n new ElementBuilder(name)\n .styled(\n Styles.typography.sans.compose('extralarge', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n textTransform: 'uppercase',\n fontWeight: '800',\n display: 'block',\n ...(!isThemeDark && { color: `${token.color.black}` }),\n },\n siblingAfter: {\n marginTop: token.spacing.sm,\n },\n })\n .build(),\n );\n }\n\n builder.withChild(\n textLockup.person({\n isThemeDark,\n slotOne: textProps.slotOne,\n slotTwo: textProps.slotTwo,\n slotThreeItalic: textProps.slotThreeItalic,\n slotFour: textProps.slotFour,\n }),\n );\n\n return builder.build();\n};\n\nconst createTextColumn = (props: PersonBio): ElementModel<HTMLElement> => {\n const { actions } = props;\n const textContainer = createTextContainer(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-text-column')\n .withChild(textContainer)\n .withChild(textLockup.contact(props));\n\n if (actions) {\n builder.withChild(\n new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n marginTop: token.spacing.sm,\n },\n })\n .build(),\n );\n }\n\n return builder.build();\n};\n\nconst makeContainer = (props: PersonBio): ElementModel<HTMLElement> => {\n const { image } = props;\n const textColumn = createTextColumn(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-container')\n .withStyles({\n element: {\n display: 'grid',\n gridGap: `${token.spacing.md}`,\n\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridTemplateColumns: `repeat(8, 1fr)`,\n gridGap: `${token.spacing.lg}`,\n alignItems: `center`,\n },\n ),\n\n [`& > *`]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridColumn: `span 5`,\n },\n ),\n },\n\n [`&:has(> :nth-child(2)) > *:first-child `]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridColumn: `span 3`,\n alignSelf: `flex-start`,\n },\n ),\n },\n },\n });\n\n if (image) {\n builder.withChild(\n assets.image.background({\n element: image,\n isScaled: false,\n imageLoading: 'lazy',\n customStyles: {\n element: {\n ...createMediaQuery(\n 'max-width',\n token.media.breakpointValues.medium.max,\n {\n display: 'flex',\n },\n ),\n\n [`& img`]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n width: `100%`,\n height: `auto !important`,\n },\n ),\n },\n },\n },\n }),\n );\n }\n\n builder.withChild(textColumn);\n\n return builder.build();\n};\n\nconst CreatePersonBioSmallElement = (\n props: PersonBio,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, description } = props;\n const container = makeContainer(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-composite')\n .withChild(container);\n\n if (description) {\n builder.withChild(\n new ElementBuilder(description)\n .styled(\n Styles.element.text.rich.composeSimple({\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n marginTop: token.spacing.lg,\n maxWidth: token.spacing.maxWidth.smallest,\n },\n })\n .build(),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonBioSmall = CreatePersonBioSmallElement;\n"],"names":["textLockup.person","textLockup.contact","assets.image.background"],"mappings":"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"}
1
+ {"version":3,"file":"small.js","sources":["../../../../source/composite/person/bio/small.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { assets, textLockup } from 'atomic';\nimport { PersonBio } from '../_types';\nimport { type ElementModel } from '../../../_types';\n\nconst createTextContainer = (props: PersonBio): ElementModel<HTMLElement> => {\n const { isThemeDark, name, ...textProps } = props;\n\n const builder = new ElementBuilder().styled(\n Styles.element.text.line.adjustentInset,\n );\n\n if (name) {\n builder.withChild(\n new ElementBuilder(name)\n .styled(\n Styles.typography.sans.compose('extralarge', {\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n textTransform: 'uppercase',\n fontWeight: '800',\n display: 'block',\n ...(!isThemeDark && { color: `${token.color.black}` }),\n },\n siblingAfter: {\n marginTop: token.spacing.sm,\n },\n })\n .build(),\n );\n }\n\n builder.withChild(\n textLockup.person({\n isThemeDark,\n slotOne: textProps.slotOne,\n slotTwo: textProps.slotTwo,\n slotThreeItalic: textProps.slotThreeItalic,\n slotFour: textProps.slotFour,\n }),\n );\n\n return builder.build();\n};\n\nconst createTextColumn = (props: PersonBio): ElementModel<HTMLElement> => {\n const { actions } = props;\n const textContainer = createTextContainer(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-text-column')\n .withChild(textContainer)\n .withChild(textLockup.contact(props));\n\n if (actions) {\n builder.withChild(\n new ElementBuilder(actions)\n .styled(Styles.layout.grid.inline.tabletRows)\n .withStyles({\n element: {\n marginTop: token.spacing.sm,\n },\n })\n .build(),\n );\n }\n\n return builder.build();\n};\n\nconst makeContainer = (props: PersonBio): ElementModel<HTMLElement> => {\n const { image } = props;\n const textColumn = createTextColumn(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-container')\n .withStyles({\n element: {\n display: 'grid',\n gridGap: `${token.spacing.md}`,\n\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridTemplateColumns: `repeat(8, 1fr)`,\n gridGap: `${token.spacing.lg}`,\n alignItems: `center`,\n },\n ),\n\n [`& > *`]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridColumn: `span 5`,\n },\n ),\n },\n\n [`&:has(> :nth-child(2)) > *:first-child `]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n gridColumn: `span 3`,\n alignSelf: `flex-start`,\n },\n ),\n },\n },\n });\n\n if (image) {\n builder.withChild(\n assets.image.background({\n element: image,\n isScaled: false,\n imageLoading: 'lazy',\n customStyles: {\n element: {\n ...createMediaQuery(\n 'max-width',\n token.media.breakpointValues.medium.max,\n {\n display: 'flex',\n },\n ),\n\n [`& img`]: {\n ...createMediaQuery(\n 'min-width',\n token.media.breakpointValues.large.min,\n {\n width: `100%`,\n height: `auto !important`,\n },\n ),\n },\n },\n },\n }),\n );\n }\n\n builder.withChild(textColumn);\n\n return builder.build();\n};\n\nconst CreatePersonBioSmallElement = (\n props: PersonBio,\n): ElementModel<HTMLElement> => {\n const { isThemeDark, description } = props;\n const container = makeContainer(props);\n\n const builder = new ElementBuilder()\n .withClassName('person-bio-summary-composite')\n .withChild(container);\n\n if (description) {\n builder.withChild(\n new ElementBuilder(description)\n .styled(\n Styles.element.text.rich.composeSimple({\n size: 'large',\n theme: theme.fontColor(isThemeDark),\n }),\n )\n .withStyles({\n element: {\n marginTop: token.spacing.lg,\n maxWidth: token.spacing.maxWidth.smallest,\n },\n })\n .build(),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonBioSmall = CreatePersonBioSmallElement;\n"],"names":["textLockup.person","textLockup.contact","assets.image.background"],"mappings":"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"}
@@ -14,7 +14,6 @@ import "@universityofmaryland/web-icons-library/files";
14
14
  import "@universityofmaryland/web-icons-library/brand";
15
15
  import "@universityofmaryland/web-icons-library/arrows";
16
16
  import "@universityofmaryland/web-utilities-library/performance";
17
- import "../../atomic/animations/brand/chevron-scroll.js";
18
17
  import "../../atomic/animations/brand/card-stack.js";
19
18
  import { createImageBackground } from "../../atomic/assets/image/background.js";
20
19
  import "@universityofmaryland/web-styles-library";
@@ -23,10 +22,10 @@ import "@universityofmaryland/web-icons-library/location";
23
22
  import "@universityofmaryland/web-icons-library/calendar";
24
23
  import "@universityofmaryland/web-utilities-library/theme";
25
24
  import "../../atomic/layout/block/stacked.js";
26
- import "../../atomic/layout/overlay/modal.js";
27
25
  import "../../atomic/layout/person/columns.js";
28
26
  import { createTextLockupContact } from "../../atomic/text-lockup/contact.js";
29
- import "../../atomic/text-lockup/date.js";
27
+ import "@universityofmaryland/web-utilities-library/string";
28
+ import "@universityofmaryland/web-utilities-library/animation";
30
29
  import { createTextLockupPerson } from "../../atomic/text-lockup/person.js";
31
30
  import "../../atomic/text-lockup/small.js";
32
31
  const mediumBreakpointStart = token.media.breakpointValues.medium.min;
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","sources":["../../../source/composite/person/block.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { person as iconPerson } from '@universityofmaryland/web-icons-library/people';\nimport { assets, textLockup } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type ElementModel } from '../../_types';\n\nconst mediumBreakpointStart = token.media.breakpointValues.medium.min;\n\nconst CreatePersonBlockElement = (\n props: PersonCard,\n): ElementModel<HTMLElement> => {\n const { image: personImage, isThemeDark } = props;\n const textLockupElement = textLockup.person({\n ...props,\n });\n const contactLockupElement = textLockup.contact(props);\n\n let image = personImage;\n\n if (!image) {\n image = imageFromSvg({\n SVG: iconPerson,\n });\n }\n\n const imageContainer = new ElementBuilder()\n .withClassName('person-block-image')\n .withChild(\n assets.image.background({\n element: image,\n isScaled: false,\n imageLoading: 'lazy',\n customStyles: {\n height: 'auto',\n },\n }),\n )\n .withStyles({\n element: {\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: `${token.color.gray.lighter}`,\n marginBottom: `${token.spacing.md}`,\n\n ...(isThemeDark && {\n backgroundColor: `${token.color.gray.darker}`,\n }),\n\n ['& img, & svg']: {\n display: 'block',\n width: '100%',\n objectFit: 'contain',\n height: '140px !important',\n transform: `none !important`,\n\n ...createMediaQuery('min-width', mediumBreakpointStart, {\n height: '200px !important',\n }),\n },\n },\n })\n .build();\n\n return new ElementBuilder()\n .withClassName('person-block')\n .withChildren(imageContainer, textLockupElement, contactLockupElement)\n .build();\n};\n\nexport const createCompositePersonBlock = CreatePersonBlockElement;\n"],"names":["textLockup.person","textLockup.contact","iconPerson","assets.image.background"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,wBAAwB,MAAM,MAAM,iBAAiB,OAAO;AAElE,MAAM,2BAA2B,CAC/B,UAC8B;AAC9B,QAAM,EAAE,OAAO,aAAa,YAAA,IAAgB;AAC5C,QAAM,oBAAoBA,uBAAkB;AAAA,IAC1C,GAAG;AAAA,EAAA,CACJ;AACD,QAAM,uBAAuBC,wBAAmB,KAAK;AAErD,MAAI,QAAQ;AAEZ,MAAI,CAAC,OAAO;AACV,YAAQ,aAAa;AAAA,MACnB,KAAKC;AAAAA,IAAA,CACN;AAAA,EACH;AAEA,QAAM,iBAAiB,IAAI,eAAA,EACxB,cAAc,oBAAoB,EAClC;AAAA,IACCC,sBAAwB;AAAA,MACtB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,QACZ,QAAQ;AAAA,MAAA;AAAA,IACV,CACD;AAAA,EAAA,EAEF,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,iBAAiB,GAAG,MAAM,MAAM,KAAK,OAAO;AAAA,MAC5C,cAAc,GAAG,MAAM,QAAQ,EAAE;AAAA,MAEjC,GAAI,eAAe;AAAA,QACjB,iBAAiB,GAAG,MAAM,MAAM,KAAK,MAAM;AAAA,MAAA;AAAA,MAG7C,CAAC,cAAc,GAAG;AAAA,QAChB,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,WAAW;AAAA,QAEX,GAAG,iBAAiB,aAAa,uBAAuB;AAAA,UACtD,QAAQ;AAAA,QAAA,CACT;AAAA,MAAA;AAAA,IACH;AAAA,EACF,CACD,EACA,MAAA;AAEH,SAAO,IAAI,eAAA,EACR,cAAc,cAAc,EAC5B,aAAa,gBAAgB,mBAAmB,oBAAoB,EACpE,MAAA;AACL;AAEO,MAAM,6BAA6B;"}
1
+ {"version":3,"file":"block.js","sources":["../../../source/composite/person/block.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { person as iconPerson } from '@universityofmaryland/web-icons-library/people';\nimport { assets, textLockup } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type ElementModel } from '../../_types';\n\nconst mediumBreakpointStart = token.media.breakpointValues.medium.min;\n\nconst CreatePersonBlockElement = (\n props: PersonCard,\n): ElementModel<HTMLElement> => {\n const { image: personImage, isThemeDark } = props;\n const textLockupElement = textLockup.person({\n ...props,\n });\n const contactLockupElement = textLockup.contact(props);\n\n let image = personImage;\n\n if (!image) {\n image = imageFromSvg({\n SVG: iconPerson,\n });\n }\n\n const imageContainer = new ElementBuilder()\n .withClassName('person-block-image')\n .withChild(\n assets.image.background({\n element: image,\n isScaled: false,\n imageLoading: 'lazy',\n customStyles: {\n height: 'auto',\n },\n }),\n )\n .withStyles({\n element: {\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: `${token.color.gray.lighter}`,\n marginBottom: `${token.spacing.md}`,\n\n ...(isThemeDark && {\n backgroundColor: `${token.color.gray.darker}`,\n }),\n\n ['& img, & svg']: {\n display: 'block',\n width: '100%',\n objectFit: 'contain',\n height: '140px !important',\n transform: `none !important`,\n\n ...createMediaQuery('min-width', mediumBreakpointStart, {\n height: '200px !important',\n }),\n },\n },\n })\n .build();\n\n return new ElementBuilder()\n .withClassName('person-block')\n .withChildren(imageContainer, textLockupElement, contactLockupElement)\n .build();\n};\n\nexport const createCompositePersonBlock = CreatePersonBlockElement;\n"],"names":["textLockup.person","textLockup.contact","iconPerson","assets.image.background"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,wBAAwB,MAAM,MAAM,iBAAiB,OAAO;AAElE,MAAM,2BAA2B,CAC/B,UAC8B;AAC9B,QAAM,EAAE,OAAO,aAAa,YAAA,IAAgB;AAC5C,QAAM,oBAAoBA,uBAAkB;AAAA,IAC1C,GAAG;AAAA,EAAA,CACJ;AACD,QAAM,uBAAuBC,wBAAmB,KAAK;AAErD,MAAI,QAAQ;AAEZ,MAAI,CAAC,OAAO;AACV,YAAQ,aAAa;AAAA,MACnB,KAAKC;AAAAA,IAAA,CACN;AAAA,EACH;AAEA,QAAM,iBAAiB,IAAI,eAAA,EACxB,cAAc,oBAAoB,EAClC;AAAA,IACCC,sBAAwB;AAAA,MACtB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,QACZ,QAAQ;AAAA,MAAA;AAAA,IACV,CACD;AAAA,EAAA,EAEF,WAAW;AAAA,IACV,SAAS;AAAA,MACP,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,iBAAiB,GAAG,MAAM,MAAM,KAAK,OAAO;AAAA,MAC5C,cAAc,GAAG,MAAM,QAAQ,EAAE;AAAA,MAEjC,GAAI,eAAe;AAAA,QACjB,iBAAiB,GAAG,MAAM,MAAM,KAAK,MAAM;AAAA,MAAA;AAAA,MAG7C,CAAC,cAAc,GAAG;AAAA,QAChB,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,WAAW;AAAA,QAEX,GAAG,iBAAiB,aAAa,uBAAuB;AAAA,UACtD,QAAQ;AAAA,QAAA,CACT;AAAA,MAAA;AAAA,IACH;AAAA,EACF,CACD,EACA,MAAA;AAEH,SAAO,IAAI,eAAA,EACR,cAAc,cAAc,EAC5B,aAAa,gBAAgB,mBAAmB,oBAAoB,EACpE,MAAA;AACL;AAEO,MAAM,6BAA6B;"}
@@ -14,17 +14,17 @@ import "@universityofmaryland/web-icons-library/files";
14
14
  import "@universityofmaryland/web-icons-library/brand";
15
15
  import "@universityofmaryland/web-icons-library/arrows";
16
16
  import "@universityofmaryland/web-utilities-library/performance";
17
- import "../../atomic/animations/brand/chevron-scroll.js";
17
+ import "@universityofmaryland/web-utilities-library/styles";
18
18
  import "../../atomic/animations/brand/card-stack.js";
19
19
  import { createImageBackground } from "../../atomic/assets/image/background.js";
20
20
  import "@universityofmaryland/web-utilities-library/accessibility";
21
21
  import "@universityofmaryland/web-icons-library/location";
22
22
  import "@universityofmaryland/web-icons-library/calendar";
23
23
  import "../../atomic/layout/block/stacked.js";
24
- import "../../atomic/layout/overlay/modal.js";
25
24
  import "../../atomic/layout/person/columns.js";
26
25
  import { createTextLockupContact } from "../../atomic/text-lockup/contact.js";
27
- import "../../atomic/text-lockup/date.js";
26
+ import "@universityofmaryland/web-utilities-library/string";
27
+ import "@universityofmaryland/web-utilities-library/animation";
28
28
  import "../../atomic/text-lockup/small.js";
29
29
  const CreateImageBlock = (props) => {
30
30
  const { image, association, pronouns, isThemeDark } = props;
@@ -13,7 +13,6 @@ import "@universityofmaryland/web-icons-library/files";
13
13
  import "@universityofmaryland/web-icons-library/brand";
14
14
  import "@universityofmaryland/web-icons-library/arrows";
15
15
  import "@universityofmaryland/web-utilities-library/performance";
16
- import "../../atomic/animations/brand/chevron-scroll.js";
17
16
  import "../../atomic/animations/brand/card-stack.js";
18
17
  import "@universityofmaryland/web-styles-library";
19
18
  import "@universityofmaryland/web-utilities-library/accessibility";
@@ -21,10 +20,10 @@ import "@universityofmaryland/web-icons-library/location";
21
20
  import "@universityofmaryland/web-icons-library/calendar";
22
21
  import "@universityofmaryland/web-utilities-library/theme";
23
22
  import "../../atomic/layout/block/stacked.js";
24
- import "../../atomic/layout/overlay/modal.js";
25
23
  import { image, information } from "../../atomic/layout/person/columns.js";
26
24
  import "@universityofmaryland/web-icons-library/social";
27
- import "../../atomic/text-lockup/date.js";
25
+ import "@universityofmaryland/web-utilities-library/string";
26
+ import "@universityofmaryland/web-utilities-library/animation";
28
27
  import "../../atomic/text-lockup/small.js";
29
28
  const smallBreakpoint = token.media.breakpointValues.small.max;
30
29
  const mediumBreakpointStart = token.media.breakpointValues.medium.min;
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../../source/composite/person/list.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { layout } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type ElementModel } from '../../_types';\n\nconst smallBreakpoint = token.media.breakpointValues.small.max;\nconst mediumBreakpointStart = token.media.breakpointValues.medium.min;\nconst mediumBreakpoint = token.media.breakpointValues.large.min;\n\nconst CreatePersonListElement = ({\n actions,\n address,\n slotOne,\n email,\n image,\n isThemeDark,\n slotTwo,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n}: PersonCard): ElementModel<HTMLElement> => {\n const builder = new ElementBuilder()\n .withClassName('person-list-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n display: 'flex',\n\n ...createMediaQuery('max-width', smallBreakpoint, {\n flexDirection: 'column',\n }),\n },\n });\n\n if (image) {\n builder.withChild(\n layout.person.columns.image({\n customStyles: {\n ...createMediaQuery('min-width', mediumBreakpointStart, {\n display: 'block',\n width: '160px',\n minWidth: '160px',\n paddingRight: `${token.spacing.md}`,\n alignSelf: 'flex-start',\n }),\n\n ...createMediaQuery('min-width', mediumBreakpoint, {\n width: '208px',\n minWidth: '208px',\n }),\n },\n image,\n isThemeDark,\n }),\n );\n }\n\n if (name) {\n builder.withChild(\n layout.person.columns.information({\n actions,\n address,\n slotTwo,\n customStyles: {},\n email,\n isThemeDark,\n slotOne,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n }),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonList = CreatePersonListElement;\n"],"names":["image","layout.person.columns.image","layout.person.columns.information"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,kBAAkB,MAAM,MAAM,iBAAiB,MAAM;AAC3D,MAAM,wBAAwB,MAAM,MAAM,iBAAiB,OAAO;AAClE,MAAM,mBAAmB,MAAM,MAAM,iBAAiB,MAAM;AAE5D,MAAM,0BAA0B,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAA,OACAA;AAAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;AAC3C,QAAM,UAAU,IAAI,eAAA,EACjB,cAAc,uBAAuB,EACrC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MAET,GAAG,iBAAiB,aAAa,iBAAiB;AAAA,QAChD,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAAA,EACH,CACD;AAEH,MAAIA,SAAO;AACT,YAAQ;AAAA,MACNC,MAA4B;AAAA,QAC1B,cAAc;AAAA,UACZ,GAAG,iBAAiB,aAAa,uBAAuB;AAAA,YACtD,SAAS;AAAA,YACT,OAAO;AAAA,YACP,UAAU;AAAA,YACV,cAAc,GAAG,MAAM,QAAQ,EAAE;AAAA,YACjC,WAAW;AAAA,UAAA,CACZ;AAAA,UAED,GAAG,iBAAiB,aAAa,kBAAkB;AAAA,YACjD,OAAO;AAAA,YACP,UAAU;AAAA,UAAA,CACX;AAAA,QAAA;AAAA,QACH,OACAD;AAAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,MAAM;AACR,YAAQ;AAAA,MACNE,YAAkC;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,SAAO,QAAQ,MAAA;AACjB;AAEO,MAAM,4BAA4B;"}
1
+ {"version":3,"file":"list.js","sources":["../../../source/composite/person/list.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { layout } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type ElementModel } from '../../_types';\n\nconst smallBreakpoint = token.media.breakpointValues.small.max;\nconst mediumBreakpointStart = token.media.breakpointValues.medium.min;\nconst mediumBreakpoint = token.media.breakpointValues.large.min;\n\nconst CreatePersonListElement = ({\n actions,\n address,\n slotOne,\n email,\n image,\n isThemeDark,\n slotTwo,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n}: PersonCard): ElementModel<HTMLElement> => {\n const builder = new ElementBuilder()\n .withClassName('person-list-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n display: 'flex',\n\n ...createMediaQuery('max-width', smallBreakpoint, {\n flexDirection: 'column',\n }),\n },\n });\n\n if (image) {\n builder.withChild(\n layout.person.columns.image({\n customStyles: {\n ...createMediaQuery('min-width', mediumBreakpointStart, {\n display: 'block',\n width: '160px',\n minWidth: '160px',\n paddingRight: `${token.spacing.md}`,\n alignSelf: 'flex-start',\n }),\n\n ...createMediaQuery('min-width', mediumBreakpoint, {\n width: '208px',\n minWidth: '208px',\n }),\n },\n image,\n isThemeDark,\n }),\n );\n }\n\n if (name) {\n builder.withChild(\n layout.person.columns.information({\n actions,\n address,\n slotTwo,\n customStyles: {},\n email,\n isThemeDark,\n slotOne,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n }),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonList = CreatePersonListElement;\n"],"names":["image","layout.person.columns.image","layout.person.columns.information"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,kBAAkB,MAAM,MAAM,iBAAiB,MAAM;AAC3D,MAAM,wBAAwB,MAAM,MAAM,iBAAiB,OAAO;AAClE,MAAM,mBAAmB,MAAM,MAAM,iBAAiB,MAAM;AAE5D,MAAM,0BAA0B,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAA,OACAA;AAAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6C;AAC3C,QAAM,UAAU,IAAI,eAAA,EACjB,cAAc,uBAAuB,EACrC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MAET,GAAG,iBAAiB,aAAa,iBAAiB;AAAA,QAChD,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAAA,EACH,CACD;AAEH,MAAIA,SAAO;AACT,YAAQ;AAAA,MACNC,MAA4B;AAAA,QAC1B,cAAc;AAAA,UACZ,GAAG,iBAAiB,aAAa,uBAAuB;AAAA,YACtD,SAAS;AAAA,YACT,OAAO;AAAA,YACP,UAAU;AAAA,YACV,cAAc,GAAG,MAAM,QAAQ,EAAE;AAAA,YACjC,WAAW;AAAA,UAAA,CACZ;AAAA,UAED,GAAG,iBAAiB,aAAa,kBAAkB;AAAA,YACjD,OAAO;AAAA,YACP,UAAU;AAAA,UAAA,CACX;AAAA,QAAA;AAAA,QACH,OACAD;AAAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,MAAM;AACR,YAAQ;AAAA,MACNE,YAAkC;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,SAAO,QAAQ,MAAA;AACjB;AAEO,MAAM,4BAA4B;"}
@@ -14,17 +14,16 @@ import "@universityofmaryland/web-icons-library/files";
14
14
  import "@universityofmaryland/web-icons-library/brand";
15
15
  import "@universityofmaryland/web-icons-library/arrows";
16
16
  import "@universityofmaryland/web-utilities-library/performance";
17
- import "../../atomic/animations/brand/chevron-scroll.js";
18
17
  import "../../atomic/animations/brand/card-stack.js";
19
18
  import "@universityofmaryland/web-styles-library";
20
19
  import "@universityofmaryland/web-utilities-library/accessibility";
21
20
  import "@universityofmaryland/web-icons-library/location";
22
21
  import "@universityofmaryland/web-icons-library/calendar";
23
22
  import "../../atomic/layout/block/stacked.js";
24
- import "../../atomic/layout/overlay/modal.js";
25
23
  import { image, details, contact } from "../../atomic/layout/person/columns.js";
26
24
  import "@universityofmaryland/web-icons-library/social";
27
- import "../../atomic/text-lockup/date.js";
25
+ import "@universityofmaryland/web-utilities-library/string";
26
+ import "@universityofmaryland/web-utilities-library/animation";
28
27
  import "../../atomic/text-lockup/small.js";
29
28
  const smallBreakpoint = token.media.breakpointValues.small.max;
30
29
  const CreatePersonTabularElement = ({
@@ -1 +1 @@
1
- {"version":3,"file":"tabular.js","sources":["../../../source/composite/person/tabular.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as animationStyles from '@universityofmaryland/web-styles-library/animation';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { wrapTextNodeInSpan } from '@universityofmaryland/web-utilities-library/dom';\nimport { layout } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type UMDElement } from '../../_types';\n\nconst smallBreakpoint = token.media.breakpointValues.small.max;\n\nconst CreatePersonTabularElement = ({\n actions,\n additionalContact,\n address,\n slotTwo,\n email,\n image,\n isThemeDark,\n slotOne,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n}: PersonCard): UMDElement => {\n const builder = new ElementBuilder()\n .withClassName('person-tabular-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n display: 'flex',\n\n ...createMediaQuery('max-width', smallBreakpoint, {\n flexDirection: 'column',\n }),\n },\n });\n\n if (image) {\n builder.withChild(\n layout.person.columns.image({\n image,\n isThemeDark,\n }),\n );\n }\n\n if (name) {\n const nameStyles = {\n ...animationStyles.line.composeSlideUnder({\n color: theme.foreground(isThemeDark),\n }),\n ...typography.sans.compose('large', {\n theme: theme.fontColor(isThemeDark),\n }),\n };\n\n const nameComposite = new ElementBuilder(name)\n .withClassName('person-tabular-name')\n .styled(nameStyles)\n .withStyles({\n element: {\n fontWeight: `${token.font.weight.bold}`,\n\n [`& + *`]: {\n marginTop: token.spacing.min,\n },\n },\n subElement: {\n color: 'currentColor',\n },\n })\n .withModifier((el) => wrapTextNodeInSpan(el))\n .build();\n\n builder.withChild(\n layout.person.columns.details({\n actions,\n slotTwo,\n isThemeDark,\n customStyles: {},\n slotOne,\n nameComposite,\n slotThreeItalic,\n slotFour,\n }),\n );\n }\n\n if (additionalContact || address || email || linkedin || phone) {\n builder.withChild(\n layout.person.columns.contact({\n additionalContact,\n address,\n customStyles: {},\n email,\n isThemeDark,\n linkedin,\n phone,\n }),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonTabular = CreatePersonTabularElement;\n"],"names":["image","layout.person.columns.image","animationStyles","layout.person.columns.details","layout.person.columns.contact"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,kBAAkB,MAAM,MAAM,iBAAiB,MAAM;AAE3D,MAAM,6BAA6B,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAA,OACAA;AAAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,UAAU,IAAI,eAAA,EACjB,cAAc,0BAA0B,EACxC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MAET,GAAG,iBAAiB,aAAa,iBAAiB;AAAA,QAChD,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAAA,EACH,CACD;AAEH,MAAIA,SAAO;AACT,YAAQ;AAAA,MACNC,MAA4B;AAAA,QAAA,OAC1BD;AAAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,MAAM;AACR,UAAM,aAAa;AAAA,MACjB,GAAGE,UAAgB,KAAK,kBAAkB;AAAA,QACxC,OAAO,MAAM,WAAW,WAAW;AAAA,MAAA,CACpC;AAAA,MACD,GAAG,WAAW,KAAK,QAAQ,SAAS;AAAA,QAClC,OAAO,MAAM,UAAU,WAAW;AAAA,MAAA,CACnC;AAAA,IAAA;AAGH,UAAM,gBAAgB,IAAI,eAAe,IAAI,EAC1C,cAAc,qBAAqB,EACnC,OAAO,UAAU,EACjB,WAAW;AAAA,MACV,SAAS;AAAA,QACP,YAAY,GAAG,MAAM,KAAK,OAAO,IAAI;AAAA,QAErC,CAAC,OAAO,GAAG;AAAA,UACT,WAAW,MAAM,QAAQ;AAAA,QAAA;AAAA,MAC3B;AAAA,MAEF,YAAY;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IACT,CACD,EACA,aAAa,CAAC,OAAO,mBAAmB,EAAE,CAAC,EAC3C,MAAA;AAEH,YAAQ;AAAA,MACNC,QAA8B;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,qBAAqB,WAAW,SAAS,YAAY,OAAO;AAC9D,YAAQ;AAAA,MACNC,QAA8B;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,SAAO,QAAQ,MAAA;AACjB;AAEO,MAAM,+BAA+B;"}
1
+ {"version":3,"file":"tabular.js","sources":["../../../source/composite/person/tabular.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport * as animationStyles from '@universityofmaryland/web-styles-library/animation';\nimport { createMediaQuery } from '@universityofmaryland/web-utilities-library/styles';\nimport { theme } from '@universityofmaryland/web-utilities-library/theme';\nimport { wrapTextNodeInSpan } from '@universityofmaryland/web-utilities-library/dom';\nimport { layout } from 'atomic';\nimport { PersonCard } from './_types';\nimport { type UMDElement } from '../../_types';\n\nconst smallBreakpoint = token.media.breakpointValues.small.max;\n\nconst CreatePersonTabularElement = ({\n actions,\n additionalContact,\n address,\n slotTwo,\n email,\n image,\n isThemeDark,\n slotOne,\n linkedin,\n name,\n phone,\n slotThreeItalic,\n slotFour,\n}: PersonCard): UMDElement => {\n const builder = new ElementBuilder()\n .withClassName('person-tabular-container')\n .withStyles({\n element: {\n overflow: 'hidden',\n display: 'flex',\n\n ...createMediaQuery('max-width', smallBreakpoint, {\n flexDirection: 'column',\n }),\n },\n });\n\n if (image) {\n builder.withChild(\n layout.person.columns.image({\n image,\n isThemeDark,\n }),\n );\n }\n\n if (name) {\n const nameStyles = {\n ...animationStyles.line.composeSlideUnder({\n color: theme.foreground(isThemeDark),\n }),\n ...typography.sans.compose('large', {\n theme: theme.fontColor(isThemeDark),\n }),\n };\n\n const nameComposite = new ElementBuilder(name)\n .withClassName('person-tabular-name')\n .styled(nameStyles)\n .withStyles({\n element: {\n fontWeight: `${token.font.weight.bold}`,\n\n [`& + *`]: {\n marginTop: token.spacing.min,\n },\n },\n subElement: {\n color: 'currentColor',\n },\n })\n .withModifier((el) => wrapTextNodeInSpan(el))\n .build();\n\n builder.withChild(\n layout.person.columns.details({\n actions,\n slotTwo,\n isThemeDark,\n customStyles: {},\n slotOne,\n nameComposite,\n slotThreeItalic,\n slotFour,\n }),\n );\n }\n\n if (additionalContact || address || email || linkedin || phone) {\n builder.withChild(\n layout.person.columns.contact({\n additionalContact,\n address,\n customStyles: {},\n email,\n isThemeDark,\n linkedin,\n phone,\n }),\n );\n }\n\n return builder.build();\n};\n\nexport const createCompositePersonTabular = CreatePersonTabularElement;\n"],"names":["image","layout.person.columns.image","animationStyles","layout.person.columns.details","layout.person.columns.contact"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,kBAAkB,MAAM,MAAM,iBAAiB,MAAM;AAE3D,MAAM,6BAA6B,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAA,OACAA;AAAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,UAAU,IAAI,eAAA,EACjB,cAAc,0BAA0B,EACxC,WAAW;AAAA,IACV,SAAS;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MAET,GAAG,iBAAiB,aAAa,iBAAiB;AAAA,QAChD,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAAA,EACH,CACD;AAEH,MAAIA,SAAO;AACT,YAAQ;AAAA,MACNC,MAA4B;AAAA,QAAA,OAC1BD;AAAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,MAAM;AACR,UAAM,aAAa;AAAA,MACjB,GAAGE,UAAgB,KAAK,kBAAkB;AAAA,QACxC,OAAO,MAAM,WAAW,WAAW;AAAA,MAAA,CACpC;AAAA,MACD,GAAG,WAAW,KAAK,QAAQ,SAAS;AAAA,QAClC,OAAO,MAAM,UAAU,WAAW;AAAA,MAAA,CACnC;AAAA,IAAA;AAGH,UAAM,gBAAgB,IAAI,eAAe,IAAI,EAC1C,cAAc,qBAAqB,EACnC,OAAO,UAAU,EACjB,WAAW;AAAA,MACV,SAAS;AAAA,QACP,YAAY,GAAG,MAAM,KAAK,OAAO,IAAI;AAAA,QAErC,CAAC,OAAO,GAAG;AAAA,UACT,WAAW,MAAM,QAAQ;AAAA,QAAA;AAAA,MAC3B;AAAA,MAEF,YAAY;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IACT,CACD,EACA,aAAa,CAAC,OAAO,mBAAmB,EAAE,CAAC,EAC3C,MAAA;AAEH,YAAQ;AAAA,MACNC,QAA8B;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,MAAI,qBAAqB,WAAW,SAAS,YAAY,OAAO;AAC9D,YAAQ;AAAA,MACNC,QAA8B;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,cAAc,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,SAAO,QAAQ,MAAA;AACjB;AAEO,MAAM,+BAA+B;"}
@@ -1,20 +1,14 @@
1
- type TypeSliderEventIntroProps = {
1
+ type TypeThemeProps = {
2
+ isThemeDark?: boolean;
3
+ };
4
+ type TypeSliderEventIntroProps = TypeThemeProps & {
2
5
  headline?: HTMLElement | null;
3
6
  actions?: HTMLElement | null;
4
7
  };
5
8
  type TypeSliderEventSlideContentProps = {
6
9
  dataSlider: HTMLDivElement;
7
10
  };
8
- type TypeSliderEventProps = TypeSliderEventSlideContentProps & TypeSliderEventIntroProps & {
9
- isThemeDark?: boolean;
10
- };
11
- export declare const createCompositeSliderEvents: (props: TypeSliderEventProps) => {
12
- element: HTMLDivElement;
13
- styles: string;
14
- events: {
15
- load: () => void;
16
- size: () => void;
17
- };
18
- };
11
+ type TypeSliderEventProps = TypeSliderEventSlideContentProps & TypeSliderEventIntroProps;
12
+ export declare const createCompositeSliderEvents: (props: TypeSliderEventProps) => import('../../../builder/dist/index.d.ts').ElementModel<HTMLElement>;
19
13
  export {};
20
14
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../source/composite/slider/events.ts"],"names":[],"mappings":"AAmBA,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAQF,KAAK,oBAAoB,GAAG,gCAAgC,GAC1D,yBAAyB,GAAG;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA4nBJ,eAAO,MAAM,2BAA2B,GAAI,OAAO,oBAAoB;;;;;;;CAsFjE,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../source/composite/slider/events.ts"],"names":[],"mappings":"AAWA,KAAK,cAAc,GAAG;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAUF,KAAK,yBAAyB,GAAG,cAAc,GAAG;IAChD,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AASF,KAAK,oBAAoB,GAAG,gCAAgC,GAC1D,yBAAyB,CAAC;AA6f5B,eAAO,MAAM,2BAA2B,GAAI,OAAO,oBAAoB,kFAwHjE,CAAC"}