@qhealth-design-system/core 1.16.5 → 1.17.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 (45) hide show
  1. package/.storybook/assets/storybook.css +1 -1
  2. package/.storybook/globals.js +10 -0
  3. package/CHANGELOG.md +2 -0
  4. package/package.json +1 -1
  5. package/src/components/_global/css/cta_links/component.scss +107 -14
  6. package/src/components/_global/css/forms/control_inputs/component.scss +65 -77
  7. package/src/components/_global/css/link_columns/component.scss +2 -2
  8. package/src/components/_global/html/scripts.html +0 -2
  9. package/src/components/_global/js/cta_links/global.js +33 -0
  10. package/src/components/_global/js/global.js +175 -138
  11. package/src/components/_global/js/tabs/global.js +6 -2
  12. package/src/components/banner_advanced/html/component.hbs +1 -1
  13. package/src/components/breadcrumbs/js/global.js +17 -4
  14. package/src/components/card_feature/html/component.hbs +1 -1
  15. package/src/components/card_multi_action/html/component.hbs +1 -1
  16. package/src/components/card_single_action/css/component.scss +38 -47
  17. package/src/components/card_single_action/html/component.hbs +1 -1
  18. package/src/components/code/css/component.scss +72 -73
  19. package/src/components/code/html/component.hbs +62 -19
  20. package/src/components/code/js/global.js +102 -86
  21. package/src/components/footer/css/component.scss +2 -4
  22. package/src/components/footer/html/component.hbs +11 -8
  23. package/src/components/header/css/component.scss +11 -11
  24. package/src/components/header/html/component.hbs +3 -3
  25. package/src/components/header/js/global.js +58 -65
  26. package/src/components/in_page_navigation/js/global.js +34 -31
  27. package/src/components/internal_navigation/js/global.js +13 -3
  28. package/src/components/main_navigation/css/component.scss +79 -13
  29. package/src/components/main_navigation/html/component.hbs +5 -5
  30. package/src/components/main_navigation/js/global.js +94 -115
  31. package/src/components/mega_main_navigation/css/component.scss +27 -14
  32. package/src/components/mega_main_navigation/html/component.hbs +5 -5
  33. package/src/components/mega_main_navigation/js/global.js +50 -55
  34. package/src/components/page_alert/css/component.scss +141 -179
  35. package/src/data/site.json +3 -3
  36. package/src/html/component-card_feature.html +74 -487
  37. package/src/html/component-card_single_action.html +219 -1175
  38. package/src/html/component-forms.html +202 -67
  39. package/src/stories/Checkboxes/Checkboxes.js +41 -0
  40. package/src/stories/Checkboxes/Checkboxes.mdx +45 -0
  41. package/src/stories/Checkboxes/Checkboxes.stories.js +209 -0
  42. package/src/stories/RadioButtons/RadioButtons.js +41 -0
  43. package/src/stories/RadioButtons/RadioButtons.mdx +45 -0
  44. package/src/stories/RadioButtons/RadioButtons.stories.js +209 -0
  45. package/src/styles/imports/mixins.scss +5 -43
@@ -2,7 +2,7 @@
2
2
 
3
3
  #storybook-docs {
4
4
  /* Reset the styling of the radio buttons */
5
- input[type="radio"] {
5
+ .docblock-argstable input[type="radio"] {
6
6
  border: initial;
7
7
  clip: auto;
8
8
  height: auto;
@@ -67,4 +67,14 @@ export const figmaLinks = {
67
67
  file: "https://www.figma.com/design/qKsxl3ogIlBp7dafgxXuCA/QGDS-UI-kit?node-id=23167-395563",
68
68
  ds: "https://www.designsystem.qld.gov.au/components/link-columns-link-list",
69
69
  },
70
+ checkboxes: {
71
+ design: "https://www.figma.com/design/qKsxl3ogIlBp7dafgxXuCA/QGDS-UI-kit?node-id=11056-321348&p=f",
72
+ file: "https://www.figma.com/design/qKsxl3ogIlBp7dafgxXuCA/QGDS-UI-kit?node-id=23167-395569",
73
+ ds: "https://www.designsystem.qld.gov.au/components/checkboxes",
74
+ },
75
+ radioButtons: {
76
+ design: "https://www.figma.com/design/qKsxl3ogIlBp7dafgxXuCA/QGDS-UI-kit?node-id=11056-321347&p=f",
77
+ file: "https://www.figma.com/design/qKsxl3ogIlBp7dafgxXuCA/QGDS-UI-kit?node-id=23167-395570",
78
+ ds: "https://www.designsystem.qld.gov.au/components/radio-buttons",
79
+ },
70
80
  };
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 1.17.0 - 2025-10-01
11
+
10
12
  ## 1.16.5 - 2025-08-19
11
13
 
12
14
  ## 1.16.4 - 2025-08-12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qhealth-design-system/core",
3
- "version": "1.16.5",
3
+ "version": "1.17.0",
4
4
  "description": "",
5
5
  "licence": "MIT",
6
6
  "main": "index.js",
@@ -92,27 +92,120 @@ a.qld__cta-link {
92
92
 
93
93
  .qld__cta-link.qld__cta-link--view-all,
94
94
  a.qld__cta-link.qld__cta-link--view-all {
95
- &:after {
96
- mask-image: QLD-svguri($QLD-icon-arrow-view-all);
97
- background-color: var(--QLD-color-light__action--secondary);
95
+ display: inline-block;
96
+ position: relative;
97
+ @include QLD-space(padding-right, 2.5rem);
98
+
99
+ .qld__cta-link--view-all-icon--wrapper {
100
+ display: block;
101
+ min-height: 32px;
102
+ line-height: 32px;
98
103
  }
99
104
 
100
- &:hover {
101
- &:after {
102
- background-color: var(--QLD-color-light__action--secondary-hover);
105
+ &::before,
106
+ &::after,
107
+ .qld__cta-link--view-all-icon--wrapper::before {
108
+ // TODO: Remove this mask-image override after work is done for regular cta links.
109
+ mask-image: none;
110
+ @include QLD-space(margin, 0 0.5unit 0 0.5unit);
111
+ content: "";
112
+ position: absolute;
113
+ display: inline-block;
114
+ box-sizing: border-box;
115
+ border-bottom: 0.125rem solid;
116
+ transition: border-color 0.3s ease;
117
+ border-color: var(--QLD-color-light__action--secondary);
118
+ transition: margin 0.2s ease;
119
+ z-index: 1;
120
+ right: 0.5rem;
121
+ background-color: transparent;
122
+
123
+ .qld__body--dark &,
124
+ .qld__body--dark-alt &,
125
+ .qld__main-nav--dark &,
126
+ .qld__main-nav--dark-alt & {
127
+ border-color: var(--QLD-color-dark__action--secondary);
103
128
  }
104
129
  }
105
130
 
106
- .qld__body--dark &,
107
- .qld__body--dark-alt &,
108
- .qld__main-nav--dark & {
109
- &:after {
110
- background-color: var(--QLD-color-dark__action--secondary);
131
+ &::before {
132
+ width: 0.7rem;
133
+ top: 14.5px;
134
+ }
135
+
136
+ &::after {
137
+ transform: rotate(315deg);
138
+ width: 0.5rem;
139
+ top: 0.72rem;
140
+ height: 0.5rem;
141
+ border-right: 0.125rem solid var(--QLD-color-light__action--secondary);
142
+ }
143
+
144
+ > .qld__cta-link--view-all-icon--wrapper::before {
145
+ border: 2px solid var(--QLD-color-light__action--secondary);
146
+ width: 1.5rem;
147
+ height: 1.5rem;
148
+ top: 3.5px;
149
+ right: 1px;
150
+ border-radius: 50%;
151
+ }
152
+
153
+ &:hover,
154
+ &:focus {
155
+ &::before,
156
+ &::after,
157
+ .qld__cta-link--view-all-icon--wrapper::before {
158
+ @include QLD-space(margin, 0 0 0 1unit);
159
+ border-color: var(--QLD-color-light__action--secondary-hover);
160
+ background-color: transparent;
161
+
162
+ .qld__body--dark &,
163
+ .qld__body--dark-alt &,
164
+ .qld__main-nav--dark &,
165
+ .qld__main-nav--dark-alt & {
166
+ border-color: var(--QLD-color-dark__action--secondary-hover);
167
+ }
111
168
  }
169
+ }
112
170
 
113
- &:hover {
114
- &:after {
115
- background-color: var(--QLD-color-dark__action--secondary-hover);
171
+ // CTA view all link within menus
172
+ .qld__main-nav &,
173
+ .qld__main-nav--mega & {
174
+ @include QLD-media("lg", "down") {
175
+ &::before,
176
+ &::after,
177
+ .qld__cta-link--view-all-icon--wrapper::before {
178
+ left: 0;
179
+ @include QLD-space(margin, 0.65unit 0 0 5unit);
180
+ }
181
+ &::before {
182
+ top: 13.5px;
183
+ width: 0.5rem;
184
+ margin-left: 5.475rem;
185
+ }
186
+ &::after {
187
+ top: 0.66rem;
188
+ margin-left: 5.55rem;
189
+ }
190
+ .qld__cta-link--view-all-icon--wrapper::before {
191
+ left: 2px;
192
+ width: 1.4rem;
193
+ height: 1.4rem;
194
+ }
195
+
196
+ &:hover,
197
+ &:focus {
198
+ &::before,
199
+ &::after,
200
+ .qld__cta-link--view-all-icon--wrapper::before {
201
+ @include QLD-space(margin, 0.65unit 0 0 5.25unit);
202
+ }
203
+ &::before {
204
+ margin-left: 5.75rem;
205
+ }
206
+ &::after {
207
+ margin-left: 5.8rem;
208
+ }
116
209
  }
117
210
  }
118
211
  }
@@ -16,19 +16,18 @@ input[type="checkbox"],
16
16
  @include QLD-space(padding-left, 2.5unit);
17
17
  font-weight: 400;
18
18
 
19
- &:before,
20
- &:after {
19
+ &:before {
21
20
  @include QLD-space(width, 2unit);
22
21
  @include QLD-space(height, 2unit);
23
22
  visibility: visible;
24
- content: " ";
23
+ content: "";
25
24
  display: block;
26
25
  position: absolute;
27
26
  box-sizing: border-box;
28
- background-repeat: no-repeat;
29
27
  z-index: 9;
30
28
  @include QLD-space(left, 0unit);
31
29
  border: $QLD-border-width-default solid transparent;
30
+ border-color: var(--QLD-color-light__border--alt);
32
31
  top: 0;
33
32
 
34
33
  .qld__control-input--small & {
@@ -36,11 +35,6 @@ input[type="checkbox"],
36
35
  @include QLD-space(height, 1.25unit);
37
36
  }
38
37
  }
39
- &:before {
40
- background-color: transparent;
41
- border-color: var(--QLD-color-light__border--alt);
42
- background-image: none !important;
43
- }
44
38
 
45
39
  &:after {
46
40
  z-index: 101;
@@ -54,18 +48,34 @@ input[type="checkbox"],
54
48
  }
55
49
  }
56
50
 
57
- // hover
51
+ // Hover
58
52
  &:hover:not([disabled]) {
59
53
  + label:before {
60
54
  background-color: $QLD-color-neutral--lightest;
61
55
  }
62
56
  }
63
57
 
64
- // normal checked
65
- &:checked {
66
- + label:after {
67
- @include QLD-getControlShape("checkbox", "foreground", var(--QLD-color-light__text));
68
- background-size: auto;
58
+ // Normal checked
59
+ &:checked + label::after {
60
+ transition: border-color 0.3s ease;
61
+ content: "";
62
+ position: absolute;
63
+ width: 1rem;
64
+ height: 0.55rem;
65
+ transform: rotate(-45deg);
66
+ border: none;
67
+ border-bottom: 0.25rem solid;
68
+ border-left: 0.25rem solid;
69
+ top: 0.6rem;
70
+ left: 0.5rem;
71
+
72
+ .qld__control-input--small & {
73
+ width: 0.7rem;
74
+ height: 0.35rem;
75
+ border-bottom-width: 0.15rem;
76
+ border-left-width: 0.15rem;
77
+ top: 0.375rem;
78
+ left: 0.275rem;
69
79
  }
70
80
  }
71
81
 
@@ -78,11 +88,11 @@ input[type="checkbox"],
78
88
  outline-offset: 2px;
79
89
  }
80
90
 
81
- // disabled
91
+ // Disabled
82
92
  &:disabled {
83
93
  + label:before {
84
94
  opacity: 0.3;
85
- background-color: rgba(0, 0, 0, 0.2);
95
+ background-color: $QLD-color-neutral--black__opacity-10;
86
96
  }
87
97
 
88
98
  + label {
@@ -91,8 +101,7 @@ input[type="checkbox"],
91
101
  }
92
102
 
93
103
  &:checked + label:after {
94
- opacity: 0.5; //amir
95
- @include QLD-getControlShape("checkbox", "foreground", var(--QLD-color-light__text--lighter));
104
+ opacity: 0.5;
96
105
  }
97
106
  }
98
107
 
@@ -113,25 +122,16 @@ input[type="checkbox"],
113
122
  .qld__body--dark &,
114
123
  .qld__body--dark-alt & {
115
124
  + label:before {
116
- // background-color: transparent;
117
125
  border-color: var(--QLD-color-dark__heading);
118
- background-image: none !important;
119
126
  }
120
127
 
121
- // hover
128
+ // Hover
122
129
  &:hover {
123
130
  + label:before {
124
131
  background-color: var(--QLD-color-dark__background--shade);
125
132
  }
126
133
  }
127
134
 
128
- // normal checked
129
- &:checked {
130
- + label:after {
131
- @include QLD-getControlShape("checkbox", "foreground", #ffffff);
132
- }
133
- }
134
-
135
135
  // Focus
136
136
  &:focus + label:before,
137
137
  &.qld__input--valid:focus + label:before,
@@ -140,7 +140,7 @@ input[type="checkbox"],
140
140
  box-shadow: none;
141
141
  }
142
142
 
143
- // disabled
143
+ // Disabled
144
144
  &:disabled {
145
145
  + label:before {
146
146
  background-color: transparent;
@@ -153,8 +153,6 @@ input[type="checkbox"],
153
153
 
154
154
  &:checked + label:after {
155
155
  opacity: 0.5;
156
-
157
- @include QLD-getControlShape("checkbox", "foreground", #ffffff);
158
156
  }
159
157
  }
160
158
 
@@ -184,20 +182,19 @@ input[type="radio"],
184
182
  @include QLD-space(line-height, 2unit);
185
183
  @include QLD-space(padding-left, 2.5unit);
186
184
 
187
- &:before,
188
- &:after {
185
+ &:before {
189
186
  width: 30px;
190
187
  height: 30px;
191
188
  visibility: visible;
192
- content: " ";
189
+ content: "";
193
190
  display: block;
194
191
  position: absolute;
195
192
  box-sizing: border-box;
196
- background-repeat: no-repeat;
197
193
  z-index: 100;
198
194
  @include QLD-space(left, 0unit);
199
195
  border: $QLD-border-width-default solid transparent;
200
196
  border-radius: 50%;
197
+ border-color: var(--QLD-color-light__border--alt);
201
198
  top: 0;
202
199
 
203
200
  .qld__control-input--small & {
@@ -206,12 +203,6 @@ input[type="radio"],
206
203
  }
207
204
  }
208
205
 
209
- &:before {
210
- background-color: transparent;
211
- border-color: var(--QLD-color-light__border--alt);
212
- background-image: none !important;
213
- }
214
-
215
206
  &:after {
216
207
  z-index: 101;
217
208
  }
@@ -224,17 +215,34 @@ input[type="radio"],
224
215
  }
225
216
  }
226
217
 
227
- // hover
218
+ // Hover
228
219
  &:hover {
229
220
  + label:before {
230
221
  background-color: $QLD-color-neutral--lightest;
231
222
  }
232
223
  }
233
224
 
234
- // normal checked
235
- &:checked {
225
+ // Normal checked
226
+ &:checked,
227
+ &:checked:disabled {
236
228
  + label:after {
237
- @include QLD-getControlShape("radio", "foreground", var(--QLD-color-light__text));
229
+ transition: border-color 0.3s ease;
230
+ content: "";
231
+ position: absolute;
232
+ display: inline-block;
233
+ box-sizing: border-box;
234
+ width: 0.75rem;
235
+ height: 0.75rem;
236
+ border-radius: 50%;
237
+ top: 5px;
238
+ left: 5px;
239
+ border: 10px solid;
240
+
241
+ .qld__control-input--small & {
242
+ top: 4px;
243
+ left: 4px;
244
+ border-width: 6.5px;
245
+ }
238
246
  }
239
247
  }
240
248
 
@@ -247,11 +255,11 @@ input[type="radio"],
247
255
  outline-offset: 2px;
248
256
  }
249
257
 
250
- // disabled
258
+ // Disabled
251
259
  &:disabled {
252
260
  + label:before {
253
261
  opacity: 0.3;
254
- background-color: rgba(0, 0, 0, 0.2);
262
+ background-color: $QLD-color-neutral--black__opacity-10;
255
263
  }
256
264
 
257
265
  + label {
@@ -260,8 +268,7 @@ input[type="radio"],
260
268
  }
261
269
 
262
270
  &:checked + label:after {
263
- opacity: 0.5; //amir
264
- @include QLD-getControlShape("radio", "foreground", #636363);
271
+ opacity: 0.5;
265
272
  }
266
273
  }
267
274
 
@@ -282,38 +289,26 @@ input[type="radio"],
282
289
  + label:before {
283
290
  background-color: transparent;
284
291
  border-color: var(--QLD-color-dark__heading);
285
- background-image: none !important;
286
292
  }
287
293
 
288
- // hover
294
+ // Hover
289
295
  &:hover {
290
296
  + label:before {
291
297
  background-color: var(--QLD-color-dark__background--shade);
292
298
  }
293
299
  }
294
300
 
295
- // normal checked
296
- &:checked {
297
- + label:after {
298
- @include QLD-getControlShape("radio", "foreground", #ffffff);
299
- }
300
- }
301
-
302
301
  // Focus
303
302
  &:focus + label:before {
304
303
  @include QLD-outline("dark", false);
305
304
  box-shadow: none;
306
305
  }
307
306
 
308
- // disabled
307
+ // Disabled
309
308
  &:disabled {
310
- &:checked + label:after {
311
- @include QLD-getControlShape("radio", "foreground", var(--QLD-color-light__text--lighter));
312
- }
313
-
314
309
  + label:before {
315
310
  opacity: 0.3;
316
- background-color: rgba(0, 0, 0, 0.2);
311
+ background-color: $QLD-color-neutral--black__opacity-10;
317
312
  }
318
313
 
319
314
  + label {
@@ -322,21 +317,14 @@ input[type="radio"],
322
317
  }
323
318
 
324
319
  &:checked + label:after {
325
- opacity: 0.5; //amir
326
- @include QLD-getControlShape("radio", "foreground", #ffffff);
320
+ opacity: 0.5;
327
321
  }
328
322
  }
329
323
  }
330
324
  }
331
325
 
332
- // Print styles
333
- @media print {
334
- .qld__control-input__text {
335
- color: #000 !important;
336
-
337
- &:before,
338
- &:after {
339
- display: none !important;
340
- }
341
- }
326
+ // Ensure the groups have space between elements
327
+ .qld__radio-buttons > div,
328
+ .qld__checkboxes > div {
329
+ margin-top: 0.5rem;
342
330
  }
@@ -26,7 +26,7 @@
26
26
  position: relative;
27
27
  flex: 0 0 100%;
28
28
 
29
- a {
29
+ a:not(.qld__cta-link) {
30
30
  @include QLD-underline("light", "noUnderline");
31
31
  &:before {
32
32
  content: "";
@@ -85,7 +85,7 @@
85
85
  }
86
86
 
87
87
  &:hover {
88
- a {
88
+ a:not(:visited) {
89
89
  color: var(--QLD-color-light__link);
90
90
  }
91
91
 
@@ -1,7 +1,5 @@
1
1
  <script src="https://sdk.datastore.squiz.cloud/js/sdk-simulator.js"></script>
2
2
 
3
- <script src="https://kit.fontawesome.com/fb2f2d4cd6.js" crossorigin="anonymous"></script>
4
-
5
3
  <script src="externals/handlebars.min-v4.7.8.js"></script>
6
4
  <script src="externals/componentPreview.js"></script>
7
5
  <script src="js/helpers.js"></script>
@@ -0,0 +1,33 @@
1
+ (function () {
2
+ "use strict";
3
+
4
+ var ctaLinks = {};
5
+
6
+ ctaLinks.init = function () {
7
+ document.querySelectorAll(".qld__cta-link.qld__cta-link--view-all").forEach((ctaLink) => {
8
+ const viewAllIconWrapperClass = "qld__cta-link--view-all-icon--wrapper";
9
+
10
+ // First check that the cta is not already wrapped
11
+ if (ctaLink.querySelector("." + viewAllIconWrapperClass)) return;
12
+
13
+ // Remove and store text content
14
+ const ctaLinkText = ctaLink.textContent;
15
+ ctaLink.textContent = "";
16
+
17
+ // Create wrapper span for the text
18
+ const wrapper = document.createElement("span");
19
+ wrapper.classList.add(viewAllIconWrapperClass);
20
+ wrapper.textContent = ctaLinkText;
21
+
22
+ // Insert wrapper
23
+ ctaLink.appendChild(wrapper);
24
+ });
25
+ };
26
+
27
+ // Make cta links available to public
28
+ QLD.ctaLinks = ctaLinks;
29
+
30
+ document.addEventListener("DOMContentLoaded", function () {
31
+ QLD.ctaLinks.init();
32
+ });
33
+ })();