@universityofmaryland/web-elements-library 1.5.0-beta.0 → 1.5.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 (53) hide show
  1. package/README.md +1 -1
  2. package/dist/composite/banner/promo.d.ts.map +1 -1
  3. package/dist/composite/banner/promo.js +6 -3
  4. package/dist/composite/banner/promo.js.map +1 -1
  5. package/dist/composite/banner/promo.mjs +6 -3
  6. package/dist/composite/banner/promo.mjs.map +1 -1
  7. package/dist/composite/quote/elements/icon.d.ts +3 -2
  8. package/dist/composite/quote/elements/icon.d.ts.map +1 -1
  9. package/dist/composite/quote/elements/icon.js +23 -16
  10. package/dist/composite/quote/elements/icon.js.map +1 -1
  11. package/dist/composite/quote/elements/icon.mjs +23 -16
  12. package/dist/composite/quote/elements/icon.mjs.map +1 -1
  13. package/dist/composite/quote/elements/image.d.ts.map +1 -1
  14. package/dist/composite/quote/elements/image.js +6 -6
  15. package/dist/composite/quote/elements/image.js.map +1 -1
  16. package/dist/composite/quote/elements/image.mjs +6 -6
  17. package/dist/composite/quote/elements/image.mjs.map +1 -1
  18. package/dist/composite/quote/elements/index.d.ts +1 -0
  19. package/dist/composite/quote/elements/index.d.ts.map +1 -1
  20. package/dist/composite/quote/elements/index.js +2 -0
  21. package/dist/composite/quote/elements/index.js.map +1 -1
  22. package/dist/composite/quote/elements/index.mjs +2 -0
  23. package/dist/composite/quote/elements/index.mjs.map +1 -1
  24. package/dist/composite/quote/elements/quote.d.ts +13 -0
  25. package/dist/composite/quote/elements/quote.d.ts.map +1 -0
  26. package/dist/composite/quote/elements/quote.js +114 -0
  27. package/dist/composite/quote/elements/quote.js.map +1 -0
  28. package/dist/composite/quote/elements/quote.mjs +97 -0
  29. package/dist/composite/quote/elements/quote.mjs.map +1 -0
  30. package/dist/composite/quote/elements/text.d.ts +1 -1
  31. package/dist/composite/quote/elements/text.d.ts.map +1 -1
  32. package/dist/composite/quote/elements/text.js +103 -172
  33. package/dist/composite/quote/elements/text.js.map +1 -1
  34. package/dist/composite/quote/elements/text.mjs +103 -172
  35. package/dist/composite/quote/elements/text.mjs.map +1 -1
  36. package/dist/composite/quote/featured.d.ts +3 -0
  37. package/dist/composite/quote/featured.d.ts.map +1 -1
  38. package/dist/composite/quote/featured.js +14 -7
  39. package/dist/composite/quote/featured.js.map +1 -1
  40. package/dist/composite/quote/featured.mjs +14 -7
  41. package/dist/composite/quote/featured.mjs.map +1 -1
  42. package/dist/composite/quote/helper/animation.d.ts.map +1 -1
  43. package/dist/composite/quote/helper/animation.js +67 -36
  44. package/dist/composite/quote/helper/animation.js.map +1 -1
  45. package/dist/composite/quote/helper/animation.mjs +67 -36
  46. package/dist/composite/quote/helper/animation.mjs.map +1 -1
  47. package/dist/composite/quote/inline.d.ts +3 -0
  48. package/dist/composite/quote/inline.d.ts.map +1 -1
  49. package/dist/composite/quote/inline.js +15 -7
  50. package/dist/composite/quote/inline.js.map +1 -1
  51. package/dist/composite/quote/inline.mjs +15 -7
  52. package/dist/composite/quote/inline.mjs.map +1 -1
  53. package/package.json +1 -1
@@ -1,201 +1,132 @@
1
1
  import * as token from "@universityofmaryland/web-styles-library/token";
2
2
  import * as typography from "@universityofmaryland/web-styles-library/typography";
3
3
  import { createDiv, create } from "../../../model/elements/index.mjs";
4
- import elementIcon from "./icon.mjs";
5
4
  import elementAction from "./action.mjs";
5
+ import elementQuote from "./quote.mjs";
6
6
  import { SMALL } from "../_constants.mjs";
7
- const elementText = (props) => {
7
+ const createChildren = (props) => {
8
8
  const {
9
- isThemeDark,
10
- isThemeMaryland,
11
- isSizeLarge = false,
12
- isTypeFeatured = false,
13
- image,
14
- quote,
9
+ action,
15
10
  attribution,
16
11
  attributionSubText,
17
- action,
18
- includesAnimation
12
+ hasImage,
13
+ includesAnimation,
14
+ isThemeDark,
15
+ quote,
16
+ shouldHaveWhiteText
19
17
  } = props;
20
- const createQuoteText = (quote2, quoteChildren) => {
21
- let quoteTextElement = quote2;
22
- const wordsList = splitWords(quote2);
23
- if (includesAnimation) {
24
- quoteTextElement = document.createElement("div");
25
- wordsList.map((word) => {
26
- quoteTextElement.appendChild(word);
27
- });
28
- }
29
- const quoteElement = create({
30
- element: quoteTextElement,
31
- className: "quote-container-quote",
32
- children: quoteChildren,
18
+ const wrapperChildren = [];
19
+ if (quote) {
20
+ wrapperChildren.push(
21
+ elementQuote({ ...props, shouldHaveWhiteText, quote, hasImage })
22
+ );
23
+ }
24
+ if (attribution) {
25
+ const attributionElement = create({
26
+ element: attribution,
27
+ className: "quote-container-attribution",
33
28
  elementStyles: {
34
29
  element: {
35
- position: "relative",
36
- fontWeight: "700",
37
- color: token.color.black,
38
- ...typography.sans.larger,
39
- ...isSizeLarge && { ...typography.sans.extraLarge },
40
- ...(isThemeDark || isThemeMaryland) && {
41
- color: token.color.white
30
+ marginTop: token.spacing.sm,
31
+ ...includesAnimation && {
32
+ opacity: "0",
33
+ transform: "translateY(20px)",
34
+ transition: "opacity 1s ease, transform 0.5s ease"
42
35
  },
43
- [`&::before`]: {
44
- content: '""',
45
- position: "absolute",
46
- left: `-${token.spacing.md}`,
47
- top: "7px",
48
- height: "calc(100% - 14px)",
49
- width: "2px",
50
- display: "block",
51
- backgroundColor: token.color.red,
52
- ...isThemeMaryland && { backgroundColor: token.color.gold },
53
- ...image && !isTypeFeatured && {
54
- display: "none"
55
- },
56
- [`@container (min-width: ${SMALL}px)`]: {
57
- left: `-${token.spacing.md}`
58
- },
59
- [`@container (max-width: ${SMALL - 1}px)`]: {
60
- ...!isTypeFeatured && {
61
- display: "block"
62
- }
63
- }
36
+ ...isThemeDark && {
37
+ color: token.color.white
64
38
  },
65
- ["& *"]: {
39
+ [`& *`]: {
66
40
  color: "currentColor",
67
- ...typography.sans.larger,
68
- ...isSizeLarge && { ...typography.sans.extraLarge }
41
+ ...typography.sans.medium
69
42
  }
70
43
  }
71
44
  }
72
45
  });
73
- return quoteElement;
74
- };
75
- const getQuoteTextContainerChildren = (props2) => {
76
- const wrapperChildren = [];
77
- if (quote) {
78
- const quoteChildren = [];
79
- const iconSpan = elementIcon(props2);
80
- if (!image) {
81
- quoteChildren.push(iconSpan);
82
- }
83
- const quoteElement = createQuoteText(quote, quoteChildren);
84
- wrapperChildren.push(quoteElement);
85
- }
86
- if (attribution) {
87
- const attributionElement = create({
88
- element: attribution,
89
- className: "quote-container-attribution",
90
- elementStyles: {
91
- element: {
92
- marginTop: token.spacing.sm,
93
- ...includesAnimation && {
94
- opacity: "0",
95
- transform: "translateY(20px)",
96
- transition: "opacity 1s ease, transform 0.5s ease"
97
- },
98
- ...isThemeDark && {
99
- color: token.color.white
100
- },
101
- [`& *`]: {
102
- color: "currentColor",
103
- ...typography.sans.medium
104
- }
105
- }
106
- }
107
- });
108
- wrapperChildren.push(attributionElement);
109
- }
110
- if (attributionSubText) {
111
- const attributionSubTextElement = create({
112
- element: attributionSubText,
113
- className: "quote-container-text-attribution-sub-text",
114
- elementStyles: {
115
- element: {
116
- color: token.color.gray.dark,
117
- fontStyle: "italic",
118
- ...typography.sans.small,
119
- ...includesAnimation && {
120
- opacity: "0",
121
- transform: "translateY(20px)",
122
- transition: "opacity 1s ease, transform 0.5s ease"
123
- },
124
- ...(isThemeDark || isThemeMaryland) && {
125
- color: token.color.white
126
- }
46
+ wrapperChildren.push(attributionElement);
47
+ }
48
+ if (attributionSubText) {
49
+ const attributionSubTextElement = create({
50
+ element: attributionSubText,
51
+ className: "quote-container-text-attribution-sub-text",
52
+ elementStyles: {
53
+ element: {
54
+ color: token.color.gray.dark,
55
+ fontStyle: "italic",
56
+ ...typography.sans.small,
57
+ ...includesAnimation && {
58
+ opacity: "0",
59
+ transform: "translateY(20px)",
60
+ transition: "opacity 1s ease, transform 0.5s ease"
61
+ },
62
+ ...shouldHaveWhiteText && {
63
+ color: token.color.white
127
64
  }
128
65
  }
129
- });
130
- wrapperChildren.push(attributionSubTextElement);
131
- }
132
- if (action) {
133
- const actionElement = elementAction({
134
- ...props2,
135
- action
136
- });
137
- wrapperChildren.push(actionElement);
138
- }
139
- return wrapperChildren;
140
- };
141
- const splitWords = (quote2) => {
142
- const text = quote2.textContent ?? "";
143
- const words = text.trim().split(/\s+/);
144
- const wordElements = words.map((word, index) => {
145
- const wordElement = document.createElement("div");
146
- wordElement.classList.add("quote-text-split-word");
147
- Object.assign(wordElement.style, {
148
- display: "inline-block",
149
- whiteSpace: "pre-wrap",
150
- opacity: "0",
151
- transform: "translateY(20px)",
152
- transition: "opacity 1s ease, transform 0.5s ease"
153
- });
154
- wordElement.textContent = word + (index < words.length - 1 ? " " : "");
155
- return wordElement;
66
+ }
156
67
  });
157
- return wordElements;
158
- };
159
- const CreateQuoteTextContainer = (props2) => {
160
- const wrapperChildren = getQuoteTextContainerChildren(props2);
161
- const wrapper = createDiv({
162
- className: "quote-text-container-wrapper",
163
- children: wrapperChildren
68
+ wrapperChildren.push(attributionSubTextElement);
69
+ }
70
+ if (action) {
71
+ const actionElement = elementAction({
72
+ ...props,
73
+ action
164
74
  });
165
- return createDiv({
166
- className: "quote-text-container",
167
- children: [wrapper],
168
- elementStyles: {
169
- element: {
170
- width: "100%",
171
- ...typography.sans.medium,
172
- [`@container (max-width: ${SMALL - 1}px)`]: {
173
- paddingTop: token.spacing.lg,
174
- paddingLeft: token.spacing.md,
175
- ...!isTypeFeatured && {
176
- ...isSizeLarge && { paddingTop: token.spacing["2xl"] }
177
- }
178
- },
179
- [`@container (min-width: ${SMALL}px)`]: {
180
- paddingLeft: token.spacing["4xl"],
181
- ...!isTypeFeatured && {
182
- ...image && { paddingLeft: "0" }
183
- }
75
+ wrapperChildren.push(actionElement);
76
+ }
77
+ return wrapperChildren;
78
+ };
79
+ const elementText = (props) => {
80
+ const {
81
+ image,
82
+ isSizeLarge = false,
83
+ isThemeDark,
84
+ isThemeMaryland,
85
+ isTypeFeatured = false
86
+ } = props;
87
+ const shouldHaveWhiteText = isThemeDark || isThemeMaryland;
88
+ const isSizeLargeAndNotFeatured = isSizeLarge && !isTypeFeatured;
89
+ const hasImage = image != null;
90
+ const isHasImageAndNotFeatured = hasImage && !isTypeFeatured;
91
+ const wrapper = createDiv({
92
+ className: "quote-text-container-wrapper",
93
+ children: [
94
+ ...createChildren({
95
+ ...props,
96
+ shouldHaveWhiteText,
97
+ hasImage
98
+ })
99
+ ]
100
+ });
101
+ return createDiv({
102
+ className: "quote-text-container",
103
+ children: [wrapper],
104
+ elementStyles: {
105
+ element: {
106
+ width: "100%",
107
+ ...typography.sans.medium,
108
+ [`@container (max-width: ${SMALL - 1}px)`]: {
109
+ paddingLeft: token.spacing.md,
110
+ ...!hasImage && {
111
+ paddingTop: token.spacing.lg
184
112
  },
185
- [`& *`]: {
186
- ...typography.sans.medium,
187
- ...isThemeDark && {
188
- color: token.color.white
189
- },
190
- ...isThemeMaryland && {
191
- color: token.color.white
192
- }
113
+ ...isSizeLargeAndNotFeatured && {
114
+ paddingTop: token.spacing["2xl"]
115
+ }
116
+ },
117
+ [`@container (min-width: ${SMALL}px)`]: {
118
+ paddingLeft: token.spacing["4xl"],
119
+ ...isHasImageAndNotFeatured && { paddingLeft: "0" }
120
+ },
121
+ [`& *`]: {
122
+ ...typography.sans.medium,
123
+ ...shouldHaveWhiteText && {
124
+ color: token.color.white
193
125
  }
194
126
  }
195
127
  }
196
- });
197
- };
198
- return CreateQuoteTextContainer(props);
128
+ }
129
+ });
199
130
  };
200
131
  export {
201
132
  elementText as default
@@ -1 +1 @@
1
- {"version":3,"file":"text.mjs","sources":["../../../../source/composite/quote/elements/text.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { ElementModel } from 'model';\nimport { default as elementIcon } from './icon';\nimport { default as elementAction } from './action';\nimport { SMALL } from '../_constants';\nimport { type QuoteTextProps } from '../_types';\nimport { type ElementVisual } from '../../../_types';\n\nexport default (props: QuoteTextProps) => {\n const {\n isThemeDark,\n isThemeMaryland,\n isSizeLarge = false,\n isTypeFeatured = false,\n image,\n quote,\n attribution,\n attributionSubText,\n action,\n includesAnimation,\n } = props;\n\n const createQuoteText = (\n quote: HTMLElement,\n quoteChildren: ElementVisual[],\n ) => {\n let quoteTextElement: HTMLElement = quote;\n const wordsList = splitWords(quote);\n\n if (includesAnimation) {\n quoteTextElement = document.createElement('div');\n\n wordsList.map((word) => {\n quoteTextElement.appendChild(word);\n });\n }\n\n const quoteElement = ElementModel.create({\n element: quoteTextElement,\n className: 'quote-container-quote',\n children: quoteChildren,\n elementStyles: {\n element: {\n position: 'relative',\n fontWeight: '700',\n color: token.color.black,\n ...typography.sans.larger,\n\n ...(isSizeLarge && { ...typography.sans.extraLarge }),\n\n ...((isThemeDark || isThemeMaryland) && {\n color: token.color.white,\n }),\n\n [`&::before`]: {\n content: '\"\"',\n position: 'absolute',\n left: `-${token.spacing.md}`,\n top: '7px',\n height: 'calc(100% - 14px)',\n width: '2px',\n display: 'block',\n backgroundColor: token.color.red,\n ...(isThemeMaryland && { backgroundColor: token.color.gold }),\n\n ...(image &&\n !isTypeFeatured && {\n display: 'none',\n }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n left: `-${token.spacing.md}`,\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n ...(!isTypeFeatured && {\n display: 'block',\n }),\n },\n },\n\n ['& *']: {\n color: 'currentColor',\n ...typography.sans.larger,\n ...(isSizeLarge && { ...typography.sans.extraLarge }),\n },\n },\n },\n });\n\n return quoteElement;\n };\n\n const getQuoteTextContainerChildren = (props: QuoteTextProps) => {\n const wrapperChildren: ElementVisual[] = [];\n\n if (quote) {\n const quoteChildren: ElementVisual[] = [];\n const iconSpan = elementIcon(props);\n\n if (!image) {\n quoteChildren.push(iconSpan);\n }\n\n const quoteElement = createQuoteText(quote, quoteChildren);\n\n wrapperChildren.push(quoteElement);\n }\n\n if (attribution) {\n const attributionElement = ElementModel.create({\n element: attribution,\n className: 'quote-container-attribution',\n elementStyles: {\n element: {\n marginTop: token.spacing.sm,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n [`& *`]: {\n color: 'currentColor',\n ...typography.sans.medium,\n },\n },\n },\n });\n\n wrapperChildren.push(attributionElement);\n }\n\n if (attributionSubText) {\n const attributionSubTextElement = ElementModel.create({\n element: attributionSubText,\n className: 'quote-container-text-attribution-sub-text',\n elementStyles: {\n element: {\n color: token.color.gray.dark,\n fontStyle: 'italic',\n ...typography.sans.small,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...((isThemeDark || isThemeMaryland) && {\n color: token.color.white,\n }),\n },\n },\n });\n\n wrapperChildren.push(attributionSubTextElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n ...props,\n action,\n });\n\n wrapperChildren.push(actionElement);\n }\n\n return wrapperChildren;\n };\n\n const splitWords = (quote: HTMLElement) => {\n const text = quote.textContent ?? '';\n const words = text.trim().split(/\\s+/);\n\n const wordElements = words.map((word, index) => {\n const wordElement = document.createElement('div');\n wordElement.classList.add('quote-text-split-word');\n\n Object.assign(wordElement.style, {\n display: 'inline-block',\n whiteSpace: 'pre-wrap',\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n });\n\n wordElement.textContent = word + (index < words.length - 1 ? ' ' : '');\n\n return wordElement;\n });\n\n return wordElements;\n };\n\n const CreateQuoteTextContainer = (props: QuoteTextProps) => {\n const wrapperChildren = getQuoteTextContainerChildren(props);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-text-container-wrapper',\n children: wrapperChildren,\n });\n\n return ElementModel.createDiv({\n className: 'quote-text-container',\n children: [wrapper],\n elementStyles: {\n element: {\n width: '100%',\n ...typography.sans.medium,\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n paddingTop: token.spacing.lg,\n paddingLeft: token.spacing.md,\n\n ...(!isTypeFeatured && {\n ...(isSizeLarge && { paddingTop: token.spacing['2xl'] }),\n }),\n },\n\n [`@container (min-width: ${SMALL}px)`]: {\n paddingLeft: token.spacing['4xl'],\n\n ...(!isTypeFeatured && {\n ...(image && { paddingLeft: '0' }),\n }),\n },\n\n [`& *`]: {\n ...typography.sans.medium,\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n ...(isThemeMaryland && {\n color: token.color.white,\n }),\n },\n },\n },\n });\n };\n\n return CreateQuoteTextContainer(props);\n};\n"],"names":["quote","ElementModel.create","props","ElementModel.createDiv"],"mappings":"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"}
1
+ {"version":3,"file":"text.mjs","sources":["../../../../source/composite/quote/elements/text.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport * as typography from '@universityofmaryland/web-styles-library/typography';\nimport { ElementModel } from 'model';\nimport { default as elementAction } from './action';\nimport { default as elementQuote } from './quote';\nimport { SMALL } from '../_constants';\nimport { type QuoteTextProps } from '../_types';\nimport { type ElementVisual } from '../../../_types';\n\ninterface ChildrenProps\n extends Pick<\n QuoteTextProps,\n | 'quote'\n | 'image'\n | 'attribution'\n | 'attributionSubText'\n | 'action'\n | 'isThemeDark'\n | 'isSizeLarge'\n | 'isTypeFeatured'\n | 'includesAnimation'\n > {\n shouldHaveWhiteText?: boolean;\n hasImage: boolean;\n}\n\nconst createChildren = (props: ChildrenProps) => {\n const {\n action,\n attribution,\n attributionSubText,\n hasImage,\n includesAnimation,\n isThemeDark,\n quote,\n shouldHaveWhiteText,\n } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n if (quote) {\n wrapperChildren.push(\n elementQuote({ ...props, shouldHaveWhiteText, quote, hasImage }),\n );\n }\n\n if (attribution) {\n const attributionElement = ElementModel.create({\n element: attribution,\n className: 'quote-container-attribution',\n elementStyles: {\n element: {\n marginTop: token.spacing.sm,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(isThemeDark && {\n color: token.color.white,\n }),\n\n [`& *`]: {\n color: 'currentColor',\n ...typography.sans.medium,\n },\n },\n },\n });\n\n wrapperChildren.push(attributionElement);\n }\n\n if (attributionSubText) {\n const attributionSubTextElement = ElementModel.create({\n element: attributionSubText,\n className: 'quote-container-text-attribution-sub-text',\n elementStyles: {\n element: {\n color: token.color.gray.dark,\n fontStyle: 'italic',\n ...typography.sans.small,\n\n ...(includesAnimation && {\n opacity: '0',\n transform: 'translateY(20px)',\n transition: 'opacity 1s ease, transform 0.5s ease',\n }),\n\n ...(shouldHaveWhiteText && {\n color: token.color.white,\n }),\n },\n },\n });\n\n wrapperChildren.push(attributionSubTextElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n ...props,\n action,\n });\n\n wrapperChildren.push(actionElement);\n }\n\n return wrapperChildren;\n};\n\nexport default (\n props: Pick<\n QuoteTextProps,\n | 'isThemeDark'\n | 'isThemeMaryland'\n | 'isSizeLarge'\n | 'isTypeFeatured'\n | 'image'\n | 'quote'\n | 'attribution'\n | 'attributionSubText'\n | 'action'\n | 'includesAnimation'\n >,\n) => {\n const {\n image,\n isSizeLarge = false,\n isThemeDark,\n isThemeMaryland,\n isTypeFeatured = false,\n } = props;\n const shouldHaveWhiteText = isThemeDark || isThemeMaryland;\n const isSizeLargeAndNotFeatured = isSizeLarge && !isTypeFeatured;\n const hasImage = image != null;\n const isHasImageAndNotFeatured = hasImage && !isTypeFeatured;\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-text-container-wrapper',\n children: [\n ...createChildren({\n ...props,\n shouldHaveWhiteText,\n hasImage,\n }),\n ],\n });\n\n return ElementModel.createDiv({\n className: 'quote-text-container',\n children: [wrapper],\n elementStyles: {\n element: {\n width: '100%',\n ...typography.sans.medium,\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n paddingLeft: token.spacing.md,\n\n ...(!hasImage && {\n paddingTop: token.spacing.lg,\n }),\n\n ...(isSizeLargeAndNotFeatured && {\n paddingTop: token.spacing['2xl'],\n }),\n },\n\n [`@container (min-width: ${SMALL}px)`]: {\n paddingLeft: token.spacing['4xl'],\n\n ...(isHasImageAndNotFeatured && { paddingLeft: '0' }),\n },\n\n [`& *`]: {\n ...typography.sans.medium,\n\n ...(shouldHaveWhiteText && {\n color: token.color.white,\n }),\n },\n },\n },\n });\n};\n"],"names":["ElementModel.create","ElementModel.createDiv"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { QuoteFeaturedProps } from './_types';
2
2
  declare const _default: (props: QuoteFeaturedProps) => {
3
+ events: {
4
+ loadAnimation: () => void;
5
+ };
3
6
  element: HTMLElement;
4
7
  className: string;
5
8
  styles: string;
@@ -1 +1 @@
1
- {"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/quote/featured.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;yBAsInC,OAAO,kBAAkB;;;;;AAAzC,wBAiGE"}
1
+ {"version":3,"file":"featured.d.ts","sourceRoot":"","sources":["../../../source/composite/quote/featured.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;yBAsInC,OAAO,kBAAkB;;;;;;;;AAAzC,wBAwGE"}
@@ -5,9 +5,9 @@ const index = require("../../model/elements/index.js");
5
5
  const inline = require("./inline.js");
6
6
  const image = require("./elements/image.js");
7
7
  require("@universityofmaryland/web-styles-library/typography");
8
+ const action = require("./elements/action.js");
8
9
  require("@universityofmaryland/web-icons-library/brand");
9
10
  const _constants = require("./_constants.js");
10
- const action = require("./elements/action.js");
11
11
  const animation = require("./helper/animation.js");
12
12
  function _interopNamespaceDefault(e) {
13
13
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -136,7 +136,7 @@ const createTextureContainer = ({
136
136
  const featured = (props) => {
137
137
  const { isThemeDark, isThemeMaryland, image: image2, isTransparent } = props;
138
138
  const wrapperChildren = [];
139
- const inlineQuote = inline(props);
139
+ const inlineQuote = inline({ ...props, isTypeFeatured: true });
140
140
  const textContainer = index.createDiv({
141
141
  className: "quote-featured-text",
142
142
  children: [inlineQuote],
@@ -207,11 +207,18 @@ const featured = (props) => {
207
207
  }
208
208
  }
209
209
  });
210
- animation.quoteAnimation({
211
- ...props,
212
- quoteElement: container
213
- });
214
- return container;
210
+ const loadAnimation = () => {
211
+ animation.quoteAnimation({
212
+ ...props,
213
+ quoteElement: container
214
+ });
215
+ };
216
+ return {
217
+ ...container,
218
+ events: {
219
+ loadAnimation
220
+ }
221
+ };
215
222
  };
216
223
  module.exports = featured;
217
224
  //# sourceMappingURL=featured.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"featured.js","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote(props);\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n\n return container;\n};\n"],"names":["image","action","containerChildren","elementImage","elementAction","ElementModel.createDiv","token","SMALL","MEDIUM","imageFromSvg","ElementModel.create","InlineQuote","quoteAnimation"],"mappings":"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"}
1
+ {"version":3,"file":"featured.js","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n const loadAnimation = () => {\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n };\n\n return {\n ...container,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["image","action","containerChildren","elementImage","elementAction","ElementModel.createDiv","token","SMALL","MEDIUM","imageFromSvg","ElementModel.create","InlineQuote","quoteAnimation"],"mappings":"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"}
@@ -4,9 +4,9 @@ import { createDiv, create } from "../../model/elements/index.mjs";
4
4
  import InlineQuote from "./inline.mjs";
5
5
  import elementImage from "./elements/image.mjs";
6
6
  import "@universityofmaryland/web-styles-library/typography";
7
+ import elementAction from "./elements/action.mjs";
7
8
  import "@universityofmaryland/web-icons-library/brand";
8
9
  import { MEDIUM, SMALL } from "./_constants.mjs";
9
- import elementAction from "./elements/action.mjs";
10
10
  import { quoteAnimation } from "./helper/animation.mjs";
11
11
  const BACKGROUND_TEXTURE_LIGHT = `<svg id="quote_background_light" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 850.5 532.1"><path d="M.3,0h332.7L.3,326.6V0Z" fill="#757575" fill-rule="evenodd" isolation="isolate" opacity=".04" stroke-width="0"/><path d="M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z" fill="#000" fill-rule="evenodd" isolation="isolate" opacity=".04" stroke-width="0"/></svg>`;
12
12
  const BACKGROUND_TEXTURE_DARK = `<svg id="quote_background_dark" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 614.86 300.65"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class="cls-2" d="m.27,0h332.67L27.46,299.93H.27V0Z"/><path class="cls-1" d="m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z"/></svg>`;
@@ -118,7 +118,7 @@ const createTextureContainer = ({
118
118
  const featured = (props) => {
119
119
  const { isThemeDark, isThemeMaryland, image, isTransparent } = props;
120
120
  const wrapperChildren = [];
121
- const inlineQuote = InlineQuote(props);
121
+ const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });
122
122
  const textContainer = createDiv({
123
123
  className: "quote-featured-text",
124
124
  children: [inlineQuote],
@@ -189,11 +189,18 @@ const featured = (props) => {
189
189
  }
190
190
  }
191
191
  });
192
- quoteAnimation({
193
- ...props,
194
- quoteElement: container
195
- });
196
- return container;
192
+ const loadAnimation = () => {
193
+ quoteAnimation({
194
+ ...props,
195
+ quoteElement: container
196
+ });
197
+ };
198
+ return {
199
+ ...container,
200
+ events: {
201
+ loadAnimation
202
+ }
203
+ };
197
204
  };
198
205
  export {
199
206
  featured as default
@@ -1 +1 @@
1
- {"version":3,"file":"featured.mjs","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote(props);\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n\n return container;\n};\n"],"names":["containerChildren","ElementModel.createDiv","ElementModel.create"],"mappings":"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"}
1
+ {"version":3,"file":"featured.mjs","sources":["../../../source/composite/quote/featured.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { imageFromSvg } from '@universityofmaryland/web-utilities-library/media';\nimport { ElementModel } from 'model';\nimport InlineQuote from './inline';\nimport { image as elementImage, action as elementAction } from './elements';\nimport { quoteAnimation } from './helper/animation';\nimport { MEDIUM, SMALL } from './_constants';\nimport { type QuoteFeaturedProps } from './_types';\nimport { type ElementVisual } from '../../_types';\n\nconst BACKGROUND_TEXTURE_LIGHT = `<svg id=\"quote_background_light\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 850.5 532.1\"><path d=\"M.3,0h332.7L.3,326.6V0Z\" fill=\"#757575\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/><path d=\"M517.9,532.1h332.7L308.6,0H0v23.6l517.9,508.5Z\" fill=\"#000\" fill-rule=\"evenodd\" isolation=\"isolate\" opacity=\".04\" stroke-width=\"0\"/></svg>`;\nconst BACKGROUND_TEXTURE_DARK = `<svg id=\"quote_background_dark\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 614.86 300.65\"><defs><style>.cls-1{opacity:.25;}.cls-1,.cls-2{fill:#757575;fill-rule:evenodd;isolation:isolate;}.cls-2{opacity:.1;}</style></defs><path class=\"cls-2\" d=\"m.27,0h332.67L27.46,299.93H.27V0Z\"/><path class=\"cls-1\" d=\"m0,0h308.65l306.21,300.65h-332.67L0,23.59V0Z\"/></svg>`;\n\nconst createImageContainer = (props: QuoteFeaturedProps) => {\n const { image, action } = props;\n\n const getContainerChildren = () => {\n const containerChildren: ElementVisual[] = [];\n\n if (image) {\n const imageElement = elementImage({\n ...props,\n isTypeFeatured: true,\n image,\n });\n containerChildren.push(imageElement);\n }\n\n if (action) {\n const actionElement = elementAction({\n isTypeFeatured: true,\n action,\n });\n containerChildren.push(actionElement);\n }\n\n return containerChildren;\n };\n\n const createImageContainerElement = () => {\n return ElementModel.createDiv({\n className: 'quote-featured-image',\n children: containerChildren,\n elementStyles: {\n element: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: `-${token.spacing.lg}`,\n\n ['&[align-center=true]']: {\n marginTop: '0',\n justifyContent: 'center',\n },\n\n [`@container (max-width: ${SMALL - 1}px)`]: {\n padding: `0 ${token.spacing.lg}`,\n },\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${\n MEDIUM - 1\n }px)`]: {\n margin: '0 auto',\n marginTop: `-${token.spacing['8xl']}`,\n maxWidth: '300px',\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n paddingLeft: token.spacing['6xl'],\n width: `calc(300px + ${token.spacing['6xl']})`,\n },\n },\n },\n });\n };\n\n const containerChildren = getContainerChildren();\n const container = createImageContainerElement();\n\n if (window.innerWidth >= MEDIUM && image instanceof HTMLImageElement) {\n image.addEventListener('load', () => {\n const parent = container;\n\n if (!parent) return;\n\n const aspectRatio = image.offsetHeight / parent.element.offsetHeight;\n\n if (aspectRatio < 0.5) {\n container.element.setAttribute('align-center', 'true');\n }\n });\n }\n\n return container;\n};\n\nconst createTextureContainer = ({\n isThemeDark,\n isThemeMaryland,\n}: QuoteFeaturedProps) => {\n const isDarkText = isThemeDark || isThemeMaryland;\n const backgroundTexture = imageFromSvg({\n SVG: isDarkText ? BACKGROUND_TEXTURE_DARK : BACKGROUND_TEXTURE_LIGHT,\n });\n\n const backgroundTextureElement = ElementModel.create({\n element: backgroundTexture,\n className: 'quote-background-texture',\n });\n const container = ElementModel.createDiv({\n className: 'quote-featured-texture',\n children: [backgroundTextureElement],\n elementStyles: {\n element: {\n overflow: 'hidden',\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n\n [`& > img`]: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '70%',\n height: '120%',\n objectFit: 'cover',\n },\n\n [`@container (max-width: ${MEDIUM - 1}px)`]: {\n display: 'none',\n },\n },\n },\n });\n\n return container;\n};\n\nexport default (props: QuoteFeaturedProps) => {\n const { isThemeDark, isThemeMaryland, image, isTransparent } = props;\n const wrapperChildren: ElementVisual[] = [];\n\n const inlineQuote = InlineQuote({ ...props, isTypeFeatured: true });\n\n const textContainer = ElementModel.createDiv({\n className: 'quote-featured-text',\n children: [inlineQuote],\n elementStyles: {\n element: {\n padding: token.spacing.lg,\n position: 'relative',\n width: '100%',\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px)`]: {\n padding: `${token.spacing['2xl']}`,\n },\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n padding: `${token.spacing['4xl']}`,\n },\n },\n },\n });\n\n if (!isTransparent) {\n wrapperChildren.push(createTextureContainer(props));\n }\n\n if (image) {\n wrapperChildren.push(createImageContainer(props));\n }\n\n wrapperChildren.push(textContainer);\n\n const wrapper = ElementModel.createDiv({\n className: 'quote-featured-container-wrapper',\n children: wrapperChildren,\n elementStyles: {\n element: {\n backgroundColor: token.color.gray.lightest,\n position: 'relative',\n ...(isThemeDark && { backgroundColor: token.color.black }),\n ...(isThemeMaryland && { backgroundColor: token.color.red }),\n ...(isTransparent && { backgroundColor: 'transparent' }),\n\n ...(image && {\n display: 'flex',\n flexDirection: 'column',\n\n [`@container (min-width: ${MEDIUM}px)`]: {\n display: 'flex',\n flexDirection: 'row',\n },\n }),\n },\n },\n });\n\n const spacer = ElementModel.createDiv({\n className: 'quote-featured-container-spacer',\n children: [wrapper],\n elementStyles: {\n element: {\n paddingTop: token.spacing.lg,\n\n ...(isTransparent && { padding: '0' }),\n\n [`@container (min-width: ${SMALL}px) and (max-width: ${MEDIUM - 1}px)`]:\n {\n ...(image && {\n paddingTop: token.spacing['8xl'],\n }),\n },\n },\n },\n });\n\n const container = ElementModel.createDiv({\n className: 'quote-featured-container',\n children: [spacer],\n elementStyles: {\n element: {\n containerType: 'inline-size',\n },\n },\n });\n\n const loadAnimation = () => {\n quoteAnimation({\n ...props,\n quoteElement: container,\n });\n };\n\n return {\n ...container,\n events: {\n loadAnimation,\n },\n };\n};\n"],"names":["containerChildren","ElementModel.createDiv","ElementModel.create"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../source/composite/quote/helper/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,mBACR,SAAQ,iBAAiB,EACvB,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,mBAAmB,GAAG,OAAO,CAAC;IAC/D,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,oEAM5B,mBAAmB,SAwErB,CAAC"}
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../source/composite/quote/helper/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,UAAU,mBACR,SAAQ,iBAAiB,EACvB,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,mBAAmB,GAAG,OAAO,CAAC;IAC/D,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,oEAM5B,mBAAmB,SAgHrB,CAAC"}