@qhealth-design-system/core 1.18.4 → 1.19.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.
- package/.storybook/assets/accordion-js.js +344 -0
- package/.storybook/assets/animate-js.js +247 -0
- package/.storybook/assets/index.js +15 -0
- package/.storybook/globals.js +39 -41
- package/.storybook/main.js +4 -3
- package/.storybook/preview.js +11 -13
- package/CHANGELOG.md +2 -0
- package/README.md +1 -1
- package/package.json +10 -15
- package/src/component-loader.js +23 -0
- package/src/components/_global/css/body/component.scss +3 -3
- package/src/components/_global/css/btn/component.scss +1 -1
- package/src/components/_global/css/cta_links/component.scss +2 -2
- package/src/components/_global/css/example/component.scss +11 -19
- package/src/components/_global/css/forms/control_inputs/component.scss +2 -2
- package/src/components/_global/css/forms/general/component.scss +5 -5
- package/src/components/_global/css/headings/component.scss +42 -44
- package/src/components/_global/css/img/images.scss +20 -36
- package/src/components/_global/css/link_columns/component.scss +2 -2
- package/src/components/_global/css/modal/component.scss +20 -26
- package/src/components/_global/css/table/component.scss +14 -21
- package/src/components/_global/css/tabs/component.scss +2 -2
- package/src/components/_global/css/tags/component.scss +1 -1
- package/src/components/_global/css/toggle_and_tool_tip/component.scss +3 -3
- package/src/components/_global/js/global.js +1 -1
- package/src/components/_global/js/select_boxes/global.js +26 -35
- package/src/components/accordion/css/component.scss +289 -326
- package/src/components/banner/css/component.scss +77 -173
- package/src/components/banner/html/component.hbs +2 -4
- package/src/components/banner_advanced/html/component.hbs +2 -2
- package/src/components/banner_advanced/js/manifest.json +1422 -1386
- package/src/components/basic_search/css/component.scss +13 -14
- package/src/components/basic_search/html/component.hbs +11 -20
- package/src/components/breadcrumbs/js/global.js +6 -1
- package/src/components/callout/css/component.scss +37 -40
- package/src/components/card_feature/css/component.scss +28 -167
- package/src/components/card_multi_action/css/component.scss +46 -58
- package/src/components/code/css/component.scss +3 -3
- package/src/components/code/html/component.hbs +12 -12
- package/src/components/code/js/global.js +6 -1
- package/src/components/file_upload/css/component.scss +5 -5
- package/src/components/file_upload/js/global.js +46 -43
- package/src/components/footer/css/component.scss +3 -3
- package/src/components/global_alert/css/component.scss +8 -14
- package/src/components/global_alert/html/component.hbs +3 -3
- package/src/components/header/css/component.scss +16 -4
- package/src/components/header/html/component.hbs +3 -2
- package/src/components/in_page_navigation/css/component.scss +14 -16
- package/src/components/in_page_navigation/js/global.js +48 -58
- package/src/components/internal_navigation/css/component.scss +3 -3
- package/src/components/internal_navigation/js/global.js +27 -35
- package/src/components/left_hand_navigation/css/component.scss +8 -2
- package/src/components/main_navigation/css/component.scss +16 -7
- package/src/components/main_navigation/html/component.hbs +1 -0
- package/src/components/mega_main_navigation/css/component.scss +5 -5
- package/src/components/mega_main_navigation/html/component.hbs +1 -0
- package/src/components/pagination/css/component.scss +32 -28
- package/src/components/pagination/html/component.hbs +37 -40
- package/src/components/promo_panel/css/component.scss +1 -4
- package/src/components/promo_panel/html/component.hbs +11 -5
- package/src/components/promo_panel/js/global.js +24 -39
- package/src/components/promo_panel/js/manifest.json +8 -0
- package/src/components/tab/css/component.scss +3 -3
- package/src/components/toggle_tip/css/component.scss +1 -1
- package/src/components/tool_tip/css/component.scss +1 -1
- package/src/components/video_player/js/global.js +16 -13
- package/src/data/current.json +33 -1
- package/src/helpers/global-helpers.js +56 -0
- package/src/html/component-in_page_navigation.html +2 -2
- package/src/index.js +4 -8
- package/src/stories/BackToTop/BackToTop.mdx +3 -21
- package/src/stories/CTALink/CTALink.mdx +1 -4
- package/src/stories/Checkboxes/Checkboxes.mdx +1 -4
- package/src/stories/DirectionLinks/DirectionLinks.mdx +1 -4
- package/src/stories/InPageAlert/InPageAlert.mdx +1 -4
- package/src/stories/Introduction.mdx +9 -5
- package/src/stories/LinkColumns/LinkColumns.mdx +1 -4
- package/src/stories/Pagination/Pagination.mdx +26 -0
- package/src/stories/Pagination/Pagination.stories.js +257 -0
- package/src/stories/PromoPanel/PromoPanel.mdx +26 -0
- package/src/stories/PromoPanel/PromoPanel.stories.js +219 -0
- package/src/stories/RadioButtons/RadioButtons.mdx +1 -4
- package/src/stories/SelectBox/SelectBox.mdx +1 -4
- package/src/stories/Tags/Tags.js +3 -3
- package/src/stories/Tags/Tags.mdx +1 -4
- package/src/stories/VideoPlayer/VideoPlayer.mdx +3 -28
- package/src/stories/VideoPlayer/VideoPlayer.stories.js +19 -46
- package/src/styles/imports/utilities.scss +3 -3
- package/src/styles/imports/variables.scss +5 -0
- package/src/stories/VideoPlayer/VideoPlayer.js +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import Handlebars from "handlebars";
|
|
2
|
+
import Template from "../../components/promo_panel/html/component.hbs?raw";
|
|
3
|
+
import { figmaLinks, themes } from "../../../.storybook/globals";
|
|
4
|
+
|
|
5
|
+
const renderPromoPanel = ({ id, type, title, abstract, body, promoImage, bodyBackground, imageAlignment, promoPanelIcon, linkType, ctaLinkTitle, ctaLink, primaryLinkTitle, primaryLink, secondaryLinkTitle, secondaryLink, ...args }) => {
|
|
6
|
+
const html = Handlebars.compile(Template)({
|
|
7
|
+
component: {
|
|
8
|
+
data: {
|
|
9
|
+
metadata: {
|
|
10
|
+
id_field: { value: id },
|
|
11
|
+
type: { value: type },
|
|
12
|
+
title: { value: title },
|
|
13
|
+
abstract: { value: abstract },
|
|
14
|
+
body: { value: body },
|
|
15
|
+
promo_image: { value: promoImage },
|
|
16
|
+
body_background: { value: bodyBackground },
|
|
17
|
+
image_alignment: { value: imageAlignment },
|
|
18
|
+
promo_panel_icon: { value: promoPanelIcon },
|
|
19
|
+
link_type: { value: linkType },
|
|
20
|
+
cta_link_title: { value: ctaLinkTitle },
|
|
21
|
+
cta_link: { value: ctaLink },
|
|
22
|
+
primary_link_title: { value: primaryLinkTitle },
|
|
23
|
+
primary_link: { value: primaryLink },
|
|
24
|
+
secondary_link_title: { value: secondaryLinkTitle },
|
|
25
|
+
secondary_link: { value: secondaryLink },
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
...args,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Custom code that is NOT part of the component template. Only used so that promo image can be displayed.
|
|
33
|
+
const container = document.createElement("div");
|
|
34
|
+
container.innerHTML = html;
|
|
35
|
+
|
|
36
|
+
const imgElement = type === "qld__body--full-image" ? container.querySelector(".qld__promo-panel__container") : container.querySelector(".qld__promo-panel__image");
|
|
37
|
+
if (imgElement && imgElement.style.backgroundImage) {
|
|
38
|
+
imgElement.style.backgroundImage = `url(${promoImage})`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return container;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const promoPanelArgs = {
|
|
45
|
+
id: "promo-panel-1",
|
|
46
|
+
type: "",
|
|
47
|
+
title: "Promotional Panel Title",
|
|
48
|
+
abstract: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.",
|
|
49
|
+
body: "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur",
|
|
50
|
+
promoImage: "https://www.cq.health.qld.gov.au/__data/assets/image/0025/139534/Woorabinda.jpg",
|
|
51
|
+
bodyBackground: "qld__body--light",
|
|
52
|
+
imageAlignment: "qld__promo-panel--image-left",
|
|
53
|
+
promoPanelIcon: "zoom",
|
|
54
|
+
linkType: "cta",
|
|
55
|
+
ctaLinkTitle: "Call to Action Link",
|
|
56
|
+
ctaLink: "#",
|
|
57
|
+
primaryLinkTitle: "Primary Link",
|
|
58
|
+
primaryLink: "#",
|
|
59
|
+
secondaryLinkTitle: "Secondary Link",
|
|
60
|
+
secondaryLink: "#",
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default {
|
|
64
|
+
title: "Components/Promo Panel",
|
|
65
|
+
render: renderPromoPanel,
|
|
66
|
+
argTypes: {
|
|
67
|
+
id: { description: "The unique identifier of the component.", control: "text" },
|
|
68
|
+
type: {
|
|
69
|
+
description: "The style of the component.",
|
|
70
|
+
control: {
|
|
71
|
+
type: "radio",
|
|
72
|
+
labels: {
|
|
73
|
+
"": "Large image",
|
|
74
|
+
"qld__body--large-text": "Large text",
|
|
75
|
+
"qld__body--contained": "Contained",
|
|
76
|
+
"qld__body--full-image": "Full image",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
options: ["", "qld__body--large-text", "qld__body--contained", "qld__body--full-image"],
|
|
80
|
+
default: "",
|
|
81
|
+
},
|
|
82
|
+
title: { description: "The title of the component", control: "text" },
|
|
83
|
+
abstract: { description: "The abstract of the component.", control: "text" },
|
|
84
|
+
body: { description: "The body text.", control: "text" },
|
|
85
|
+
promoImage: { description: "The image on this component.", control: "text" },
|
|
86
|
+
bodyBackground: {
|
|
87
|
+
description: "The colour theme of the component.",
|
|
88
|
+
control: {
|
|
89
|
+
type: "radio",
|
|
90
|
+
labels: {
|
|
91
|
+
"": "White",
|
|
92
|
+
"qld__body--light": "Light",
|
|
93
|
+
"qld__body--alt": "Alternate",
|
|
94
|
+
"qld__body--dark": "Dark",
|
|
95
|
+
"qld__body--dark-alt": "Dark Alternate",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
options: ["", "qld__body--light", "qld__body--alt", "qld__body--dark", "qld__body--dark-alt"],
|
|
99
|
+
default: "",
|
|
100
|
+
},
|
|
101
|
+
imageAlignment: {
|
|
102
|
+
description: "The alignment of the image relative to the text.",
|
|
103
|
+
control: {
|
|
104
|
+
type: "radio",
|
|
105
|
+
labels: {
|
|
106
|
+
"qld__promo-panel--image-left": "Left",
|
|
107
|
+
"qld__promo-panel--image-right": "Right",
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
options: ["qld__promo-panel--image-left", "qld__promo-panel--image-right"],
|
|
111
|
+
default: "qld__promo-panel--image-left",
|
|
112
|
+
},
|
|
113
|
+
promoPanelIcon: { description: "The icon displayed", control: "text" },
|
|
114
|
+
linkType: {
|
|
115
|
+
description: "Whether the link should be of type CTA or Button.",
|
|
116
|
+
control: {
|
|
117
|
+
type: "radio",
|
|
118
|
+
labels: {
|
|
119
|
+
cta: "CTA",
|
|
120
|
+
button: "Button",
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
options: ["cta", "button"],
|
|
124
|
+
default: "cta",
|
|
125
|
+
},
|
|
126
|
+
ctaLinkTitle: { description: "CTA link title.", control: "text" },
|
|
127
|
+
ctaLink: { description: "CTA link link.", control: "text" },
|
|
128
|
+
primaryLinkTitle: { description: "Primary button title.", control: "text" },
|
|
129
|
+
primaryLink: { description: "Primary button link.", control: "text" },
|
|
130
|
+
secondaryLinkTitle: { description: "Secondary button title.", control: "text" },
|
|
131
|
+
secondaryLink: { description: "Secondary button link.", control: "text" },
|
|
132
|
+
},
|
|
133
|
+
args: { ...promoPanelArgs },
|
|
134
|
+
parameters: {
|
|
135
|
+
design: {
|
|
136
|
+
type: "figma",
|
|
137
|
+
url: figmaLinks.promoPanel.design,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export const Default = {
|
|
143
|
+
args: {
|
|
144
|
+
...promoPanelArgs,
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export const defaultVariant = (promoPanelArgs) => renderPromoPanel({ ...promoPanelArgs, bodyBackground: "" });
|
|
149
|
+
defaultVariant.tags = ["!dev"];
|
|
150
|
+
|
|
151
|
+
export const largeText = {
|
|
152
|
+
args: {
|
|
153
|
+
...promoPanelArgs,
|
|
154
|
+
type: "qld__body--large-text",
|
|
155
|
+
},
|
|
156
|
+
render: (args) => {
|
|
157
|
+
return renderPromoPanel(args);
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export const contained = {
|
|
162
|
+
args: {
|
|
163
|
+
...promoPanelArgs,
|
|
164
|
+
type: "qld__body--contained",
|
|
165
|
+
},
|
|
166
|
+
render: (args) => {
|
|
167
|
+
return renderPromoPanel(args);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export const fullImage = {
|
|
172
|
+
args: {
|
|
173
|
+
...promoPanelArgs,
|
|
174
|
+
type: "qld__body--full-image",
|
|
175
|
+
},
|
|
176
|
+
render: (args) => {
|
|
177
|
+
return renderPromoPanel(args);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
export const light = {
|
|
182
|
+
args: {
|
|
183
|
+
...promoPanelArgs,
|
|
184
|
+
bodyBackground: "qld__body--light",
|
|
185
|
+
},
|
|
186
|
+
render: (args) => {
|
|
187
|
+
return renderPromoPanel(args);
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export const lightAlt = {
|
|
192
|
+
args: {
|
|
193
|
+
...promoPanelArgs,
|
|
194
|
+
bodyBackground: "qld__body--alt",
|
|
195
|
+
},
|
|
196
|
+
render: (args) => {
|
|
197
|
+
return renderPromoPanel(args);
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
export const dark = {
|
|
202
|
+
args: {
|
|
203
|
+
...promoPanelArgs,
|
|
204
|
+
bodyBackground: "qld__body--dark",
|
|
205
|
+
},
|
|
206
|
+
render: (args) => {
|
|
207
|
+
return renderPromoPanel(args, themes["dark"]);
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
export const darkAlt = {
|
|
212
|
+
args: {
|
|
213
|
+
...promoPanelArgs,
|
|
214
|
+
bodyBackground: "qld__body--dark-alt",
|
|
215
|
+
},
|
|
216
|
+
render: (args) => {
|
|
217
|
+
return renderPromoPanel(args);
|
|
218
|
+
},
|
|
219
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Primary, Controls, Story, Source } from "@storybook/blocks";
|
|
1
|
+
import { Meta, Primary, Controls, Story, Source } from "@storybook/addon-docs/blocks";
|
|
2
2
|
import * as radioButtonsStories from "./RadioButtons.stories";
|
|
3
3
|
import { figmaLinks } from "../../../.storybook/globals";
|
|
4
4
|
|
|
@@ -37,9 +37,6 @@ Disabled control inputs can be used to indicate inputs that are no longer valid
|
|
|
37
37
|
- <a className="figma-link" href={figmaLinks.radioButtons.design} target="_blank" rel="noopener noreferrer">
|
|
38
38
|
Component design view (Figma)
|
|
39
39
|
</a>
|
|
40
|
-
- <a className="figma-link" href={figmaLinks.radioButtons.file} target="_blank" rel="noopener noreferrer">
|
|
41
|
-
Component file (Figma)
|
|
42
|
-
</a>
|
|
43
40
|
- <a className="figma-link" href={figmaLinks.radioButtons.ds} target="_blank" rel="noopener noreferrer">
|
|
44
41
|
Design System website
|
|
45
42
|
</a>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Primary, Controls, Story, Source } from "@storybook/blocks";
|
|
1
|
+
import { Meta, Primary, Controls, Story, Source } from "@storybook/addon-docs/blocks";
|
|
2
2
|
import * as selectBoxStories from "./SelectBox.stories";
|
|
3
3
|
import { figmaLinks } from "../../../.storybook/globals";
|
|
4
4
|
|
|
@@ -113,9 +113,6 @@ We currently only have one style of select box but like other forms components i
|
|
|
113
113
|
- <a className="figma-link" href={figmaLinks.selectBox.design} target="_blank" rel="noopener noreferrer">
|
|
114
114
|
Component design view (Figma)
|
|
115
115
|
</a>
|
|
116
|
-
- <a className="figma-link" href={figmaLinks.selectBox.file} target="_blank" rel="noopener noreferrer">
|
|
117
|
-
Component file (Figma)
|
|
118
|
-
</a>
|
|
119
116
|
- <a className="figma-link" href={figmaLinks.selectBox.ds} target="_blank" rel="noopener noreferrer">
|
|
120
117
|
Design System website
|
|
121
118
|
</a>
|
package/src/stories/Tags/Tags.js
CHANGED
|
@@ -21,7 +21,7 @@ export const Tags = ({ type, leadingText, text, isLargeTag, action }) => {
|
|
|
21
21
|
case "filter":
|
|
22
22
|
tagListContent = `
|
|
23
23
|
<li>
|
|
24
|
-
<div class="qld__tag qld__tag--filter"
|
|
24
|
+
<div class="qld__tag qld__tag--filter">
|
|
25
25
|
${text}
|
|
26
26
|
<button class="qld__tag--filter-close" data-toggleUrl="{{toggleUrl}}">
|
|
27
27
|
<svg class="qld__icon qld__icon--sm" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><use href="/QLD-icons.svg#close"></use></svg>
|
|
@@ -30,7 +30,7 @@ export const Tags = ({ type, leadingText, text, isLargeTag, action }) => {
|
|
|
30
30
|
</div>
|
|
31
31
|
</li>
|
|
32
32
|
<li>
|
|
33
|
-
<div class="qld__tag qld__tag--filter"
|
|
33
|
+
<div class="qld__tag qld__tag--filter">
|
|
34
34
|
${text}
|
|
35
35
|
<button class="qld__tag--filter-close" data-toggleUrl="{{toggleUrl}}">
|
|
36
36
|
<svg class="qld__icon qld__icon--sm" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><use href="/QLD-icons.svg#close"></use></svg>
|
|
@@ -39,7 +39,7 @@ export const Tags = ({ type, leadingText, text, isLargeTag, action }) => {
|
|
|
39
39
|
</div>
|
|
40
40
|
</li>
|
|
41
41
|
<li>
|
|
42
|
-
<div class="qld__tag qld__tag--filter"
|
|
42
|
+
<div class="qld__tag qld__tag--filter">
|
|
43
43
|
${text}
|
|
44
44
|
<button class="qld__tag--filter-close" data-toggleUrl="{{toggleUrl}}">
|
|
45
45
|
<svg class="qld__icon qld__icon--sm" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><use href="/QLD-icons.svg#close"></use></svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Primary, Controls, Story, Source } from "@storybook/blocks";
|
|
1
|
+
import { Meta, Primary, Controls, Story, Source } from "@storybook/addon-docs/blocks";
|
|
2
2
|
import * as TagsStories from "./Tags.stories";
|
|
3
3
|
import { figmaLinks } from "../../../.storybook/globals";
|
|
4
4
|
|
|
@@ -58,9 +58,6 @@ Applied filter tags are a unique variant of large clickable tags that are used t
|
|
|
58
58
|
- <a className="figma-link" href={figmaLinks.tags.design} target="_blank" rel="noopener noreferrer">
|
|
59
59
|
Component design view (Figma)
|
|
60
60
|
</a>
|
|
61
|
-
- <a className="figma-link" href={figmaLinks.tags.file} target="_blank" rel="noopener noreferrer">
|
|
62
|
-
Component file (Figma)
|
|
63
|
-
</a>
|
|
64
61
|
- <a className="figma-link" href={figmaLinks.tags.ds} target="_blank" rel="noopener noreferrer">
|
|
65
62
|
Design System website
|
|
66
63
|
</a>
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Meta,
|
|
3
|
-
Primary,
|
|
4
|
-
Controls,
|
|
5
|
-
Story,
|
|
6
|
-
Source,
|
|
7
|
-
Design,
|
|
8
|
-
} from "@storybook/blocks";
|
|
1
|
+
import { Meta, Primary, Controls, Story, Source } from "@storybook/addon-docs/blocks";
|
|
9
2
|
import * as VideoPlayerStories from "./VideoPlayer.stories";
|
|
10
3
|
import { figmaLinks } from "../../../.storybook/globals";
|
|
11
4
|
|
|
@@ -25,27 +18,9 @@ The Video Player component supports embedding videos from platforms such as Vime
|
|
|
25
18
|
|
|
26
19
|
## Design resources
|
|
27
20
|
|
|
28
|
-
- <a
|
|
29
|
-
className="figma-link"
|
|
30
|
-
href={figmaLinks.videoPlayer.design}
|
|
31
|
-
target="_blank"
|
|
32
|
-
rel="noopener noreferrer"
|
|
33
|
-
>
|
|
21
|
+
- <a className="figma-link" href={figmaLinks.videoPlayer.design} target="_blank" rel="noopener noreferrer">
|
|
34
22
|
Component design view (Figma)
|
|
35
23
|
</a>
|
|
36
|
-
- <a
|
|
37
|
-
className="figma-link"
|
|
38
|
-
href={figmaLinks.videoPlayer.file}
|
|
39
|
-
target="_blank"
|
|
40
|
-
rel="noopener noreferrer"
|
|
41
|
-
>
|
|
42
|
-
Component file (Figma)
|
|
43
|
-
</a>
|
|
44
|
-
- <a
|
|
45
|
-
className="figma-link"
|
|
46
|
-
href={figmaLinks.videoPlayer.ds}
|
|
47
|
-
target="_blank"
|
|
48
|
-
rel="noopener noreferrer"
|
|
49
|
-
>
|
|
24
|
+
- <a className="figma-link" href={figmaLinks.videoPlayer.ds} target="_blank" rel="noopener noreferrer">
|
|
50
25
|
Design System website
|
|
51
26
|
</a>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Handlebars from "handlebars";
|
|
2
2
|
import Template from "../../components/video_player/html/component.hbs?raw";
|
|
3
|
-
import { figmaLinks
|
|
3
|
+
import { figmaLinks } from "../../../.storybook/globals";
|
|
4
4
|
|
|
5
5
|
const videoPlayerArgs = {
|
|
6
6
|
videoType: "vimeo",
|
|
@@ -10,31 +10,15 @@ const videoPlayerArgs = {
|
|
|
10
10
|
videoId: "1001805640?h=414b9bb286",
|
|
11
11
|
videoSize: "fill_grid",
|
|
12
12
|
videoDuration: "2:30",
|
|
13
|
-
videoCaption:
|
|
14
|
-
|
|
15
|
-
transcriptOptions: "link",
|
|
13
|
+
videoCaption: "Living in Brisbane offers a vibrant city life with beautiful weather, diverse culture, stunning parks, and a thriving food scene",
|
|
14
|
+
transcriptOptions: "accordion",
|
|
16
15
|
transcriptLink: "https://example.com/transcript",
|
|
17
16
|
transcriptText: "Full transcript available here.",
|
|
18
17
|
videoDescription:
|
|
19
18
|
"<h2>Optional Heading</h2><p>psum vulputate faucibus commodo laoreet tincidunt amet suspendisse urna. Turpis elementum eget dis senectus in enim varius aliquam. Vel amet odio nibh at sollicitudin. Nullam condimentum lectus.</p>",
|
|
20
19
|
};
|
|
21
20
|
|
|
22
|
-
const renderVideoPlayer = ({
|
|
23
|
-
videoType,
|
|
24
|
-
videoLayout,
|
|
25
|
-
stackOptions,
|
|
26
|
-
videoAlignItems,
|
|
27
|
-
videoId,
|
|
28
|
-
videoSize,
|
|
29
|
-
videoDuration,
|
|
30
|
-
videoCaption,
|
|
31
|
-
transcriptOptions,
|
|
32
|
-
transcriptLink,
|
|
33
|
-
transcriptText,
|
|
34
|
-
videoDescription,
|
|
35
|
-
bodyBackground,
|
|
36
|
-
...args
|
|
37
|
-
}) => {
|
|
21
|
+
const renderVideoPlayer = ({ videoType, videoLayout, stackOptions, videoAlignItems, videoId, videoSize, videoDuration, videoCaption, transcriptOptions, transcriptLink, transcriptText, videoDescription, bodyBackground, ...args }) => {
|
|
38
22
|
return Handlebars.compile(Template)({
|
|
39
23
|
component: {
|
|
40
24
|
data: {
|
|
@@ -66,8 +50,7 @@ export default {
|
|
|
66
50
|
videoType: {
|
|
67
51
|
control: { type: "radio" },
|
|
68
52
|
options: ["youtube", "vimeo"],
|
|
69
|
-
description:
|
|
70
|
-
"The platform hosting the video. Choose between YouTube or Vimeo.",
|
|
53
|
+
description: "The platform hosting the video. Choose between YouTube or Vimeo.",
|
|
71
54
|
},
|
|
72
55
|
videoLayout: {
|
|
73
56
|
control: { type: "radio" },
|
|
@@ -78,20 +61,17 @@ export default {
|
|
|
78
61
|
control: { type: "radio" },
|
|
79
62
|
options: ["left_aligned", "centered"],
|
|
80
63
|
if: { arg: "videoLayout", eq: "stack" },
|
|
81
|
-
description:
|
|
82
|
-
"Alignment of stacked elements. Only applicable when the layout is set to 'stack'.",
|
|
64
|
+
description: "Alignment of stacked elements. Only applicable when the layout is set to 'stack'.",
|
|
83
65
|
},
|
|
84
66
|
videoAlignItems: {
|
|
85
67
|
control: { type: "radio" },
|
|
86
68
|
options: ["top", "centered_vertically"],
|
|
87
69
|
if: { arg: "videoLayout", neq: "stack" },
|
|
88
|
-
description:
|
|
89
|
-
"Vertical alignment of the video when not using a 'stack' layout.",
|
|
70
|
+
description: "Vertical alignment of the video when not using a 'stack' layout.",
|
|
90
71
|
},
|
|
91
72
|
videoId: {
|
|
92
73
|
control: "text",
|
|
93
|
-
description:
|
|
94
|
-
"Unique identifier for the video. This can be a YouTube or Vimeo video ID.",
|
|
74
|
+
description: "Unique identifier for the video. This can be a YouTube or Vimeo video ID.",
|
|
95
75
|
},
|
|
96
76
|
videoSize: {
|
|
97
77
|
control: { type: "radio" },
|
|
@@ -101,8 +81,7 @@ export default {
|
|
|
101
81
|
},
|
|
102
82
|
videoDuration: {
|
|
103
83
|
control: "text",
|
|
104
|
-
description:
|
|
105
|
-
"The duration of the video in a readable format, e.g., '2:30'.",
|
|
84
|
+
description: "The duration of the video in a readable format, e.g., '2:30'.",
|
|
106
85
|
},
|
|
107
86
|
videoCaption: {
|
|
108
87
|
control: "text",
|
|
@@ -117,25 +96,21 @@ export default {
|
|
|
117
96
|
},
|
|
118
97
|
},
|
|
119
98
|
options: ["link", "accordion"],
|
|
120
|
-
description:
|
|
121
|
-
"How the transcript is presented—either as a link or within an accordion.",
|
|
99
|
+
description: "How the transcript is presented—either as a link or within an accordion.",
|
|
122
100
|
},
|
|
123
101
|
transcriptLink: {
|
|
124
102
|
control: { type: "text" },
|
|
125
103
|
if: { arg: "transcriptOptions", eq: "link" },
|
|
126
|
-
description:
|
|
127
|
-
"The URL for the transcript link. Required if 'transcriptOptions' is set to 'link'.",
|
|
104
|
+
description: "The URL for the transcript link. Required if 'transcriptOptions' is set to 'link'.",
|
|
128
105
|
},
|
|
129
106
|
transcriptText: {
|
|
130
107
|
control: { type: "text" },
|
|
131
108
|
if: { arg: "transcriptOptions", eq: "accordion" },
|
|
132
|
-
description:
|
|
133
|
-
"The full transcript text. Required if 'transcriptOptions' is set to 'accordion'.",
|
|
109
|
+
description: "The full transcript text. Required if 'transcriptOptions' is set to 'accordion'.",
|
|
134
110
|
},
|
|
135
111
|
videoDescription: {
|
|
136
112
|
control: "text",
|
|
137
|
-
description:
|
|
138
|
-
"An optional description providing additional details about the video content.",
|
|
113
|
+
description: "An optional description providing additional details about the video content.",
|
|
139
114
|
},
|
|
140
115
|
bodyBackground: {
|
|
141
116
|
control: { type: "radio" },
|
|
@@ -150,7 +125,6 @@ export default {
|
|
|
150
125
|
description: "The background theme for the video player.",
|
|
151
126
|
},
|
|
152
127
|
},
|
|
153
|
-
|
|
154
128
|
args: { ...videoPlayerArgs },
|
|
155
129
|
parameters: {
|
|
156
130
|
design: {
|
|
@@ -166,16 +140,15 @@ export const Default = {
|
|
|
166
140
|
},
|
|
167
141
|
};
|
|
168
142
|
|
|
169
|
-
export const defaultVariant = (videoPlayerArgs) =>
|
|
170
|
-
renderVideoPlayer({ ...videoPlayerArgs, videoType: "vimeo" });
|
|
143
|
+
export const defaultVariant = (videoPlayerArgs) => renderVideoPlayer({ ...videoPlayerArgs, videoType: "vimeo" });
|
|
171
144
|
defaultVariant.tags = ["!dev"];
|
|
172
145
|
|
|
173
|
-
export const
|
|
146
|
+
export const light = {
|
|
174
147
|
args: {
|
|
175
148
|
...videoPlayerArgs,
|
|
176
149
|
bodyBackground: "light",
|
|
177
150
|
},
|
|
178
|
-
render: (args) => renderVideoPlayer(args
|
|
151
|
+
render: (args) => renderVideoPlayer(args),
|
|
179
152
|
};
|
|
180
153
|
|
|
181
154
|
export const lightAlt = {
|
|
@@ -183,7 +156,7 @@ export const lightAlt = {
|
|
|
183
156
|
...videoPlayerArgs,
|
|
184
157
|
bodyBackground: "alt",
|
|
185
158
|
},
|
|
186
|
-
render: (args) => renderVideoPlayer(args
|
|
159
|
+
render: (args) => renderVideoPlayer(args),
|
|
187
160
|
};
|
|
188
161
|
|
|
189
162
|
export const dark = {
|
|
@@ -191,7 +164,7 @@ export const dark = {
|
|
|
191
164
|
...videoPlayerArgs,
|
|
192
165
|
bodyBackground: "dark",
|
|
193
166
|
},
|
|
194
|
-
render: (args) => renderVideoPlayer(args
|
|
167
|
+
render: (args) => renderVideoPlayer(args),
|
|
195
168
|
};
|
|
196
169
|
|
|
197
170
|
export const darkAlt = {
|
|
@@ -199,5 +172,5 @@ export const darkAlt = {
|
|
|
199
172
|
...videoPlayerArgs,
|
|
200
173
|
bodyBackground: "dark-alt",
|
|
201
174
|
},
|
|
202
|
-
render: (args) => renderVideoPlayer(args
|
|
175
|
+
render: (args) => renderVideoPlayer(args),
|
|
203
176
|
};
|
|
@@ -99,11 +99,11 @@ img.pull-right {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
.qld__text-bold {
|
|
102
|
-
font-weight:
|
|
102
|
+
font-weight: $QLD-font-weight-bold;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.qld__text-normal {
|
|
106
|
-
font-weight:
|
|
106
|
+
font-weight: $QLD-font-weight-regular;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
.qld__text-italic {
|
|
@@ -172,7 +172,7 @@ a.qld__max-width {
|
|
|
172
172
|
.qld__default-xl,
|
|
173
173
|
.qld__default-xxl,
|
|
174
174
|
.qld__default-xxxl {
|
|
175
|
-
font-weight:
|
|
175
|
+
font-weight: $QLD-font-weight-regular;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
.qld__no-space {
|
|
@@ -38,6 +38,11 @@ $QLD-font-display: "Noto Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", H
|
|
|
38
38
|
|
|
39
39
|
$QLD-font-monospace: "Roboto Mono", Consolas, "Liberation Mono", Menlo, Courier, monospace !default;
|
|
40
40
|
|
|
41
|
+
// Font weights
|
|
42
|
+
$QLD-font-weight-regular: 400;
|
|
43
|
+
$QLD-font-weight-semibold: 600;
|
|
44
|
+
$QLD-font-weight-bold: 700;
|
|
45
|
+
|
|
41
46
|
/**
|
|
42
47
|
* QLD-fontsize-map
|
|
43
48
|
*
|
|
File without changes
|