@uh-design-system/component-library 0.5.2 → 0.6.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 (243) hide show
  1. package/dist/cjs/{utils-3412cbed.js → attributes-BMbXzbwU.js} +2 -28
  2. package/dist/cjs/component-library.cjs.js +7 -7
  3. package/dist/cjs/controlUtils-ofqiQxRF.js +42 -0
  4. package/dist/cjs/ds-accordion.cjs.entry.js +79 -0
  5. package/dist/cjs/ds-button.cjs.entry.js +107 -0
  6. package/dist/cjs/ds-card.cjs.entry.js +58 -0
  7. package/dist/cjs/ds-checkbox-group.cjs.entry.js +109 -49
  8. package/dist/cjs/ds-checkbox.cjs.entry.js +88 -79
  9. package/dist/cjs/ds-icon.cjs.entry.js +943 -0
  10. package/dist/cjs/ds-input-validity.cjs.entry.js +14 -15
  11. package/dist/cjs/ds-link-with-arrow.cjs.entry.js +21 -20
  12. package/dist/cjs/ds-link.cjs.entry.js +34 -31
  13. package/dist/cjs/ds-radio-button-group.cjs.entry.js +153 -0
  14. package/dist/cjs/ds-radio-button.cjs.entry.js +151 -0
  15. package/dist/cjs/ds-spinner.cjs.entry.js +62 -0
  16. package/dist/cjs/ds-text-input.cjs.entry.js +90 -77
  17. package/dist/cjs/ds-visually-hidden.cjs.entry.js +3 -6
  18. package/dist/cjs/index-Bp6Dd2i1.js +94 -0
  19. package/dist/cjs/{store-9bd20f3c.js → index-DwLFyR5p.js} +6 -2
  20. package/dist/cjs/{index-bf84b124.js → index-Mjp9Y-Sw.js} +701 -55
  21. package/dist/cjs/index.cjs.js +3 -5
  22. package/dist/cjs/{linkUtils-695da37c.js → linkUtils-onlbgKdI.js} +4 -2
  23. package/dist/cjs/loader.cjs.js +3 -5
  24. package/dist/cjs/utils-BjZTECpy.js +29 -0
  25. package/dist/collection/accessibility/stories/naming.stories.js +3 -3
  26. package/dist/collection/collection-manifest.json +78 -3
  27. package/dist/collection/components/01-base-components/ds-accordion/ds-accordion.css +18 -17
  28. package/dist/collection/components/01-base-components/ds-accordion/ds-accordion.js +91 -50
  29. package/dist/collection/components/01-base-components/ds-accordion/stories/ds-accordion.examples.stories.js +6 -6
  30. package/dist/collection/components/01-base-components/ds-accordion/stories/ds-accordion.features.stories.js +14 -14
  31. package/dist/collection/components/01-base-components/ds-accordion/stories/ds-accordion.stories.js +24 -66
  32. package/dist/collection/components/01-base-components/ds-button/ds-button.css +124 -145
  33. package/dist/collection/components/01-base-components/ds-button/ds-button.js +150 -65
  34. package/dist/collection/components/01-base-components/ds-button/stories/ds-button.examples.stories.js +121 -23
  35. package/dist/collection/components/01-base-components/ds-button/stories/ds-button.features.stories.js +49 -42
  36. package/dist/collection/components/01-base-components/ds-button/stories/ds-button.stories.js +16 -72
  37. package/dist/collection/components/01-base-components/ds-card/ds-card.css +127 -0
  38. package/dist/collection/components/01-base-components/ds-card/ds-card.js +303 -0
  39. package/dist/collection/components/01-base-components/ds-card/stories/ds-card.examples.stories.js +92 -0
  40. package/dist/collection/components/01-base-components/ds-card/stories/ds-card.features.stories.js +66 -0
  41. package/dist/collection/components/01-base-components/ds-card/stories/ds-card.stories.js +71 -0
  42. package/dist/collection/components/01-base-components/ds-checkbox/ds-checkbox.css +46 -46
  43. package/dist/collection/components/01-base-components/ds-checkbox/ds-checkbox.js +120 -111
  44. package/dist/collection/components/01-base-components/ds-checkbox/stories/ds-checkbox.features.stories.js +20 -20
  45. package/dist/collection/components/01-base-components/ds-checkbox/stories/ds-checkbox.stories.js +12 -25
  46. package/dist/collection/components/01-base-components/ds-checkbox-group/ds-checkbox-group.css +2 -3
  47. package/dist/collection/components/01-base-components/ds-checkbox-group/ds-checkbox-group.js +214 -63
  48. package/dist/collection/components/01-base-components/ds-checkbox-group/stories/ds-checkbox-group.features.stories.js +215 -50
  49. package/dist/collection/components/01-base-components/ds-checkbox-group/stories/ds-checkbox-group.stories.js +30 -28
  50. package/dist/collection/components/01-base-components/ds-icon/ds-icon.js +36 -31
  51. package/dist/collection/components/01-base-components/ds-icon/stories/ds-icon.stories.js +10 -37
  52. package/dist/collection/components/01-base-components/ds-input-validity/ds-input-validity.css +2 -2
  53. package/dist/collection/components/01-base-components/ds-input-validity/ds-input-validity.js +60 -30
  54. package/dist/collection/components/01-base-components/ds-input-validity/stories/ds-input-validity.features.stories.js +4 -4
  55. package/dist/collection/components/01-base-components/ds-input-validity/stories/ds-input-validity.stories.js +4 -9
  56. package/dist/collection/components/01-base-components/ds-link/ds-link.css +24 -14
  57. package/dist/collection/components/01-base-components/ds-link/ds-link.js +74 -75
  58. package/dist/collection/components/01-base-components/ds-link/stories/ds-link.examples.stories.js +27 -27
  59. package/dist/collection/components/01-base-components/ds-link/stories/ds-link.features.stories.js +38 -21
  60. package/dist/collection/components/01-base-components/ds-link/stories/ds-link.stories.js +8 -67
  61. package/dist/collection/components/01-base-components/ds-link-with-arrow/ds-link-with-arrow.css +10 -12
  62. package/dist/collection/components/01-base-components/ds-link-with-arrow/ds-link-with-arrow.js +30 -52
  63. package/dist/collection/components/01-base-components/ds-link-with-arrow/stories/ds-link-with-arrow.examples.stories.js +4 -4
  64. package/dist/collection/components/01-base-components/ds-link-with-arrow/stories/ds-link-with-arrow.features.stories.js +6 -6
  65. package/dist/collection/components/01-base-components/ds-link-with-arrow/stories/ds-link-with-arrow.stories.js +4 -28
  66. package/dist/collection/components/01-base-components/ds-radio-button/ds-radio-button.css +115 -0
  67. package/dist/collection/components/01-base-components/ds-radio-button/ds-radio-button.js +449 -0
  68. package/dist/collection/components/01-base-components/ds-radio-button/stories/ds-radio-button.features.stories.js +72 -0
  69. package/dist/collection/components/01-base-components/ds-radio-button/stories/ds-radio-button.stories.js +22 -0
  70. package/dist/collection/components/01-base-components/ds-radio-button-group/ds-radio-button-group.css +30 -0
  71. package/dist/collection/components/01-base-components/ds-radio-button-group/ds-radio-button-group.js +360 -0
  72. package/dist/collection/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.examples.stories.js +42 -0
  73. package/dist/collection/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.features.stories.js +71 -0
  74. package/dist/collection/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.stories.js +60 -0
  75. package/dist/collection/components/01-base-components/ds-spinner/ds-spinner.css +279 -0
  76. package/dist/collection/components/01-base-components/ds-spinner/ds-spinner.js +221 -0
  77. package/dist/collection/components/01-base-components/ds-spinner/stories/ds-spinner.examples.stories.js +120 -0
  78. package/dist/collection/components/01-base-components/ds-spinner/stories/ds-spinner.features.stories.js +107 -0
  79. package/dist/collection/components/01-base-components/ds-spinner/stories/ds-spinner.stories.js +14 -0
  80. package/dist/collection/components/01-base-components/ds-text-input/ds-text-input.css +85 -118
  81. package/dist/collection/components/01-base-components/ds-text-input/ds-text-input.js +230 -155
  82. package/dist/collection/components/01-base-components/ds-text-input/stories/ds-text-input.examples.stories.js +26 -21
  83. package/dist/collection/components/01-base-components/ds-text-input/stories/ds-text-input.features.stories.js +40 -40
  84. package/dist/collection/components/01-base-components/ds-text-input/stories/ds-text-input.stories.js +30 -56
  85. package/dist/collection/components/01-base-components/ds-visually-hidden/ds-visually-hidden.js +1 -1
  86. package/dist/collection/store.js +7 -1
  87. package/dist/collection/utils/attributes/attributes.js +2 -2
  88. package/dist/collection/utils/button/buttonUtils.js +14 -0
  89. package/dist/collection/utils/colours/colourTypes.js +3 -3
  90. package/dist/collection/utils/colours/colourUtils.js +5 -3
  91. package/dist/collection/utils/controls/controlUtils.js +35 -1
  92. package/dist/collection/utils/link/linkUtils.js +3 -2
  93. package/dist/collection/utils/spinner/spinnerUtils.js +20 -0
  94. package/dist/collection/utils/tests/testUtils.js +1 -0
  95. package/dist/collection/utils/typography/typographyUtils.js +3 -3
  96. package/dist/collection/utils/utils.js +10 -9
  97. package/dist/component-library/{utils-cfc536bc.js → attributes-BD_lNRxn.js} +1 -1
  98. package/dist/component-library/component-library.css +1 -1
  99. package/dist/component-library/component-library.esm.js +1 -1
  100. package/dist/component-library/controlUtils-CNER0MvM.js +1 -0
  101. package/dist/component-library/ds-accordion.entry.js +1 -0
  102. package/dist/component-library/ds-button.entry.js +1 -0
  103. package/dist/component-library/ds-card.entry.js +1 -0
  104. package/dist/component-library/ds-checkbox-group.entry.js +1 -1
  105. package/dist/component-library/ds-checkbox.entry.js +1 -1
  106. package/dist/component-library/ds-icon.entry.js +1 -0
  107. package/dist/component-library/ds-input-validity.entry.js +1 -1
  108. package/dist/component-library/ds-link-with-arrow.entry.js +1 -1
  109. package/dist/component-library/ds-link.entry.js +1 -1
  110. package/dist/component-library/ds-radio-button-group.entry.js +1 -0
  111. package/dist/component-library/ds-radio-button.entry.js +1 -0
  112. package/dist/component-library/ds-spinner.entry.js +1 -0
  113. package/dist/component-library/ds-text-input.entry.js +1 -1
  114. package/dist/component-library/ds-visually-hidden.entry.js +1 -1
  115. package/dist/component-library/index-BfTCfPZ1.js +6 -0
  116. package/dist/component-library/index-Cm7V4EAn.js +2 -0
  117. package/dist/component-library/index-DuYjhvTn.js +1 -0
  118. package/dist/component-library/index.esm.js +1 -1
  119. package/dist/component-library/linkUtils-02nCfO0F.js +1 -0
  120. package/dist/component-library/utils-CqaqnfY4.js +1 -0
  121. package/dist/components/attributes.js +3 -3
  122. package/dist/components/controlUtils.js +35 -2
  123. package/dist/components/ds-accordion.js +58 -42
  124. package/dist/components/ds-button2.js +78 -39
  125. package/dist/components/ds-card.d.ts +11 -0
  126. package/dist/components/ds-card.js +91 -0
  127. package/dist/components/ds-checkbox-group.js +116 -56
  128. package/dist/components/ds-checkbox2.js +93 -80
  129. package/dist/components/ds-icon2.js +292 -292
  130. package/dist/components/ds-input-validity2.js +17 -14
  131. package/dist/components/ds-link-with-arrow.js +22 -22
  132. package/dist/components/ds-link.js +43 -40
  133. package/dist/components/ds-radio-button-group.d.ts +11 -0
  134. package/dist/components/ds-radio-button-group.js +185 -0
  135. package/dist/components/ds-radio-button.d.ts +11 -0
  136. package/dist/components/ds-radio-button.js +198 -0
  137. package/dist/components/ds-spinner.d.ts +11 -0
  138. package/dist/components/ds-spinner.js +6 -0
  139. package/dist/components/ds-spinner2.js +89 -0
  140. package/dist/components/ds-text-input.js +126 -104
  141. package/dist/components/ds-visually-hidden2.js +2 -3
  142. package/dist/components/index.js +208 -2
  143. package/dist/components/index2.js +713 -39
  144. package/dist/components/index3.js +69 -57
  145. package/dist/components/linkUtils.js +4 -2
  146. package/dist/docs.d.ts +443 -0
  147. package/dist/docs.json +4790 -0
  148. package/dist/esm/{utils-cfc536bc.js → attributes-BD_lNRxn.js} +3 -26
  149. package/dist/esm/component-library.js +6 -5
  150. package/dist/esm/controlUtils-CNER0MvM.js +37 -0
  151. package/dist/esm/ds-accordion.entry.js +77 -0
  152. package/dist/esm/ds-button.entry.js +105 -0
  153. package/dist/esm/ds-card.entry.js +56 -0
  154. package/dist/esm/ds-checkbox-group.entry.js +108 -46
  155. package/dist/esm/ds-checkbox.entry.js +78 -67
  156. package/dist/esm/ds-icon.entry.js +941 -0
  157. package/dist/esm/ds-input-validity.entry.js +14 -13
  158. package/dist/esm/ds-link-with-arrow.entry.js +21 -18
  159. package/dist/esm/ds-link.entry.js +34 -29
  160. package/dist/esm/ds-radio-button-group.entry.js +151 -0
  161. package/dist/esm/ds-radio-button.entry.js +149 -0
  162. package/dist/esm/ds-spinner.entry.js +60 -0
  163. package/dist/esm/ds-text-input.entry.js +88 -73
  164. package/dist/esm/ds-visually-hidden.entry.js +3 -4
  165. package/dist/esm/index-BfTCfPZ1.js +92 -0
  166. package/dist/esm/{index-434995e1.js → index-Cm7V4EAn.js} +699 -34
  167. package/dist/{components/store.js → esm/index-DuYjhvTn.js} +6 -3
  168. package/dist/esm/index.js +2 -2
  169. package/dist/esm/{linkUtils-3d1b28cf.js → linkUtils-02nCfO0F.js} +4 -2
  170. package/dist/esm/loader.js +4 -4
  171. package/dist/esm/utils-CqaqnfY4.js +25 -0
  172. package/dist/hydrate/index.d.ts +271 -0
  173. package/dist/hydrate/index.js +22280 -0
  174. package/dist/hydrate/index.mjs +22272 -0
  175. package/dist/hydrate/package.json +12 -0
  176. package/dist/styles/helpers.css +15 -0
  177. package/dist/styles/helpers.css.map +1 -0
  178. package/dist/styles/mixins/_breakpoints.scss +13 -0
  179. package/dist/styles/mixins/_focus.scss +26 -0
  180. package/dist/styles/mixins/_wrapper.scss +5 -0
  181. package/dist/styles/mixins/imports-default/_imports.scss +2 -0
  182. package/dist/styles/mixins/tokens/_breakpoints.scss +13 -0
  183. package/dist/styles/mixins/tokens/_semantic-colours.scss +75 -0
  184. package/dist/styles/mixins.scss +12 -0
  185. package/dist/styles/variables.css +176 -0
  186. package/dist/styles/variables.css.map +1 -0
  187. package/dist/types/components/01-base-components/ds-accordion/ds-accordion.d.ts +11 -8
  188. package/dist/types/components/01-base-components/ds-button/ds-button.d.ts +16 -11
  189. package/dist/types/components/01-base-components/ds-button/stories/ds-button.examples.stories.d.ts +1 -0
  190. package/dist/types/components/01-base-components/ds-button/stories/ds-button.features.stories.d.ts +1 -0
  191. package/dist/types/components/01-base-components/ds-card/ds-card.d.ts +20 -0
  192. package/dist/types/components/01-base-components/ds-card/stories/ds-card.examples.stories.d.ts +8 -0
  193. package/dist/types/components/01-base-components/ds-card/stories/ds-card.features.stories.d.ts +8 -0
  194. package/dist/types/components/01-base-components/ds-card/stories/ds-card.stories.d.ts +7 -0
  195. package/dist/types/components/01-base-components/ds-checkbox/ds-checkbox.d.ts +21 -22
  196. package/dist/types/components/01-base-components/ds-checkbox-group/ds-checkbox-group.d.ts +21 -11
  197. package/dist/types/components/01-base-components/ds-checkbox-group/stories/ds-checkbox-group.features.stories.d.ts +3 -0
  198. package/dist/types/components/01-base-components/ds-icon/ds-icon.d.ts +7 -5
  199. package/dist/types/components/01-base-components/ds-input-validity/ds-input-validity.d.ts +5 -6
  200. package/dist/types/components/01-base-components/ds-link/ds-link.d.ts +13 -14
  201. package/dist/types/components/01-base-components/ds-link/stories/ds-link.features.stories.d.ts +2 -0
  202. package/dist/types/components/01-base-components/ds-link-with-arrow/ds-link-with-arrow.d.ts +5 -7
  203. package/dist/types/components/01-base-components/ds-radio-button/ds-radio-button.d.ts +44 -0
  204. package/dist/types/components/01-base-components/ds-radio-button/stories/ds-radio-button.features.stories.d.ts +15 -0
  205. package/dist/types/components/01-base-components/ds-radio-button/stories/ds-radio-button.stories.d.ts +7 -0
  206. package/dist/types/components/01-base-components/ds-radio-button-group/ds-radio-button-group.d.ts +34 -0
  207. package/dist/types/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.examples.stories.d.ts +6 -0
  208. package/dist/types/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.features.stories.d.ts +11 -0
  209. package/dist/types/components/01-base-components/ds-radio-button-group/stories/ds-radio-button-group.stories.d.ts +7 -0
  210. package/dist/types/components/01-base-components/ds-spinner/ds-spinner.d.ts +17 -0
  211. package/dist/types/components/01-base-components/ds-spinner/stories/ds-spinner.examples.stories.d.ts +7 -0
  212. package/dist/types/components/01-base-components/ds-spinner/stories/ds-spinner.features.stories.d.ts +7 -0
  213. package/dist/types/components/01-base-components/ds-spinner/stories/ds-spinner.stories.d.ts +7 -0
  214. package/dist/types/components/01-base-components/ds-text-input/ds-text-input.d.ts +37 -32
  215. package/dist/types/components.d.ts +1287 -228
  216. package/dist/types/stencil-public-runtime.d.ts +22 -0
  217. package/dist/types/store.d.ts +6 -1
  218. package/dist/types/utils/attributes/attributes.d.ts +1 -1
  219. package/dist/types/utils/button/buttonUtils.d.ts +1 -0
  220. package/dist/types/utils/colours/colourTypes.d.ts +3 -3
  221. package/dist/types/utils/controls/controlUtils.d.ts +2 -0
  222. package/dist/types/utils/link/linkUtils.d.ts +1 -1
  223. package/dist/types/utils/spinner/spinnerUtils.d.ts +1 -0
  224. package/dist/types/utils/tests/testUtils.d.ts +1 -0
  225. package/dist/types/utils/utils.d.ts +2 -1
  226. package/package.json +40 -36
  227. package/dist/cjs/controlUtils-041de0fd.js +0 -7
  228. package/dist/cjs/ds-accordion_3.cjs.entry.js +0 -1095
  229. package/dist/cjs/index-5b0b9d4c.js +0 -82
  230. package/dist/component-library/controlUtils-9ca4087b.js +0 -1
  231. package/dist/component-library/ds-accordion_3.entry.js +0 -1
  232. package/dist/component-library/index-434995e1.js +0 -2
  233. package/dist/component-library/index-72ac5051.js +0 -6
  234. package/dist/component-library/linkUtils-3d1b28cf.js +0 -1
  235. package/dist/component-library/store-b8d17c10.js +0 -1
  236. package/dist/esm/controlUtils-9ca4087b.js +0 -4
  237. package/dist/esm/ds-accordion_3.entry.js +0 -1089
  238. package/dist/esm/index-72ac5051.js +0 -80
  239. package/dist/esm/store-b8d17c10.js +0 -204
  240. package/dist/loader/package.json +0 -11
  241. /package/dist/cjs/{app-globals-3a1e7e63.js → app-globals-V2Kpy_OQ.js} +0 -0
  242. /package/dist/component-library/{app-globals-0f993ce5.js → app-globals-DQuL1Twl.js} +0 -0
  243. /package/dist/esm/{app-globals-0f993ce5.js → app-globals-DQuL1Twl.js} +0 -0
@@ -0,0 +1,279 @@
1
+ html {
2
+ font-size: 100%;
3
+ }
4
+
5
+ body {
6
+ font-size: 1rem;
7
+ }
8
+
9
+ /* Font */
10
+ .ds-font {
11
+ /* Font Family */
12
+ /* Font Weights */
13
+ }
14
+ .ds-font--heading {
15
+ font-family: var(--ds-fontFamily-heading);
16
+ }
17
+ .ds-font--body {
18
+ font-family: var(--ds-fontFamily-body);
19
+ }
20
+ .ds-font--regular {
21
+ font-weight: var(--ds-fontWeight-regular);
22
+ }
23
+ .ds-font--semibold {
24
+ font-weight: var(--ds-fontWeight-semibold);
25
+ }
26
+ .ds-font--semibold-plus {
27
+ font-weight: var(--ds-fontWeight-semiboldPlus);
28
+ }
29
+ .ds-font--bold {
30
+ font-weight: var(--ds-fontWeight-bold);
31
+ }
32
+
33
+ /* Letter Spacing */
34
+ .ds-tracking--xtight {
35
+ letter-spacing: var(--ds-letterSpacing-xTight);
36
+ }
37
+ .ds-tracking--tight {
38
+ letter-spacing: var(--ds-letterSpacing-tight);
39
+ }
40
+ .ds-tracking--normal {
41
+ letter-spacing: var(--ds-letterSpacing-normal);
42
+ }
43
+ .ds-tracking--wide {
44
+ letter-spacing: var(--ds-letterSpacing-wide);
45
+ }
46
+ .ds-tracking--xwide {
47
+ letter-spacing: var(--ds-letterSpacing-xWide);
48
+ }
49
+
50
+ /* Line Height */
51
+ .ds-leading--small {
52
+ line-height: var(--ds-lineHeight-small);
53
+ }
54
+ .ds-leading--medium {
55
+ line-height: var(--ds-lineHeight-medium);
56
+ }
57
+ .ds-leading--large {
58
+ line-height: var(--ds-lineHeight-large);
59
+ }
60
+ .ds-leading--xlarge {
61
+ line-height: var(--ds-lineHeight-xLarge);
62
+ }
63
+
64
+ /* Font Width */
65
+ .ds-width--normal {
66
+ font-stretch: var(--ds-fontWidth-normal);
67
+ }
68
+ .ds-width--condense {
69
+ font-stretch: var(--ds-fontWidth-condense);
70
+ }
71
+
72
+ /* Number Style */
73
+ .ds-number--proportional {
74
+ font-variant-numeric: var(--ds-number-style);
75
+ }
76
+
77
+ /* Paragraph */
78
+ .ds-paragraph--16 {
79
+ margin-bottom: var(--ds-fontSize-16);
80
+ }
81
+ .ds-paragraph--20 {
82
+ margin-bottom: var(--ds-fontSize-20);
83
+ }
84
+
85
+ /* List */
86
+ .ds-list--spacing {
87
+ gap: 4px;
88
+ }
89
+
90
+ /* Text colors */
91
+ .ds-text-color--default {
92
+ color: var(--ds-palette-black-95);
93
+ }
94
+
95
+ /* Text Sizes */
96
+ .ds-text {
97
+ /* Regular Text Sizes */
98
+ /* Semibold Text Sizes */
99
+ /* Bold Text Sizes */
100
+ }
101
+ .ds-text--2xl-regular {
102
+ font-size: var(--ds-fontSize-22);
103
+ font-weight: var(--ds-fontWeight-regular);
104
+ }
105
+ .ds-text--xl-regular {
106
+ font-size: var(--ds-fontSize-20);
107
+ font-weight: var(--ds-fontWeight-regular);
108
+ }
109
+ .ds-text--lg-regular {
110
+ font-size: var(--ds-fontSize-18);
111
+ font-weight: var(--ds-fontWeight-regular);
112
+ }
113
+ .ds-text--md-regular {
114
+ font-size: var(--ds-fontSize-16);
115
+ font-weight: var(--ds-fontWeight-regular);
116
+ }
117
+ .ds-text--sm-regular {
118
+ font-size: var(--ds-fontSize-14);
119
+ font-weight: var(--ds-fontWeight-regular);
120
+ }
121
+ .ds-text--xs-regular {
122
+ font-size: var(--ds-fontSize-12);
123
+ font-weight: var(--ds-fontWeight-regular);
124
+ }
125
+ .ds-text--2xl-semibold {
126
+ font-size: var(--ds-fontSize-22);
127
+ font-weight: var(--ds-fontWeight-semibold);
128
+ }
129
+ .ds-text--xl-semibold {
130
+ font-size: var(--ds-fontSize-20);
131
+ font-weight: var(--ds-fontWeight-semibold);
132
+ }
133
+ .ds-text--lg-semibold {
134
+ font-size: var(--ds-fontSize-18);
135
+ font-weight: var(--ds-fontWeight-semibold);
136
+ }
137
+ .ds-text--md-semibold {
138
+ font-size: var(--ds-fontSize-16);
139
+ font-weight: var(--ds-fontWeight-semibold);
140
+ }
141
+ .ds-text--sm-semibold {
142
+ font-size: var(--ds-fontSize-14);
143
+ font-weight: var(--ds-fontWeight-semibold);
144
+ }
145
+ .ds-text--xs-semibold {
146
+ font-size: var(--ds-fontSize-12);
147
+ font-weight: var(--ds-fontWeight-semibold);
148
+ }
149
+ .ds-text--2xl-bold {
150
+ font-size: var(--ds-fontSize-22);
151
+ font-weight: var(--ds-fontWeight-bold);
152
+ }
153
+ .ds-text--xl-bold {
154
+ font-size: var(--ds-fontSize-20);
155
+ font-weight: var(--ds-fontWeight-bold);
156
+ }
157
+ .ds-text--lg-bold {
158
+ font-size: var(--ds-fontSize-18);
159
+ font-weight: var(--ds-fontWeight-bold);
160
+ }
161
+ .ds-text--md-bold {
162
+ font-size: var(--ds-fontSize-16);
163
+ font-weight: var(--ds-fontWeight-bold);
164
+ }
165
+ .ds-text--sm-bold {
166
+ font-size: var(--ds-fontSize-14);
167
+ font-weight: var(--ds-fontWeight-bold);
168
+ }
169
+ .ds-text--xs-bold {
170
+ font-size: var(--ds-fontSize-12);
171
+ font-weight: var(--ds-fontWeight-bold);
172
+ }
173
+
174
+ .ds-spinner {
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ /* Size */
179
+ /* Position */
180
+ }
181
+ .ds-spinner--small {
182
+ padding: 1.5px;
183
+ }
184
+ .ds-spinner--small:has(.ds-spinner__text) {
185
+ gap: var(--ds-spacing-2xSmall);
186
+ }
187
+ .ds-spinner--medium {
188
+ padding: 3px;
189
+ }
190
+ .ds-spinner--medium:has(.ds-spinner__text) {
191
+ gap: var(--ds-spacing-2xSmall);
192
+ }
193
+ .ds-spinner--large {
194
+ padding: 3px;
195
+ }
196
+ .ds-spinner--large:has(.ds-spinner__text) {
197
+ gap: var(--ds-spacing-xSmall);
198
+ }
199
+ .ds-spinner--xLarge {
200
+ padding: 5.5px;
201
+ }
202
+ .ds-spinner--xLarge:has(.ds-spinner__text) {
203
+ gap: 10px;
204
+ }
205
+ .ds-spinner--2xLarge {
206
+ padding: 5.5px;
207
+ }
208
+ .ds-spinner--2xLarge:has(.ds-spinner__text) {
209
+ gap: var(--ds-spacing-small);
210
+ }
211
+ .ds-spinner--below {
212
+ flex-direction: column;
213
+ align-items: center;
214
+ }
215
+ .ds-spinner--right {
216
+ flex-direction: row;
217
+ align-items: center;
218
+ }
219
+ .ds-spinner__spinner {
220
+ width: var(--spinner-size, 24px);
221
+ height: var(--spinner-size, 24px);
222
+ border-radius: 50%;
223
+ border: calc(var(--spinner-size, 24px) / 6) solid var(--ds-overlay-black-15);
224
+ position: relative;
225
+ display: flex;
226
+ align-items: center;
227
+ justify-content: center;
228
+ }
229
+ .ds-spinner__text {
230
+ font-family: var(--ds-fontFamily-body);
231
+ color: var(--ds-palette-black-95);
232
+ }
233
+ .ds-spinner__text--white {
234
+ color: var(--ds-palette-white);
235
+ }
236
+ .ds-spinner__segment {
237
+ display: block;
238
+ position: absolute;
239
+ width: var(--spinner-size, 24px);
240
+ height: var(--spinner-size, 24px);
241
+ border: calc(var(--spinner-size, 24px) / 6) solid var(--spinner-color, #005a94);
242
+ border-radius: 50%;
243
+ animation: ds-spinner-rotate 1.1s cubic-bezier(0.7, 0.15, 0.3, 0.8) infinite;
244
+ border-color: var(--spinner-color, #005a94) var(--spinner-border-color) var(--spinner-border-color) var(--spinner-border-color);
245
+ }
246
+ .ds-spinner__segment--1 {
247
+ animation-delay: -0.3s;
248
+ }
249
+ .ds-spinner__segment--2 {
250
+ animation-delay: -0.2s;
251
+ }
252
+ .ds-spinner__segment--3 {
253
+ animation-delay: -0.1s;
254
+ }
255
+
256
+ @keyframes ds-spinner-rotate {
257
+ 0% {
258
+ transform: rotate(0deg);
259
+ }
260
+ 100% {
261
+ transform: rotate(360deg);
262
+ }
263
+ }
264
+ /* Reduced Motion Support */
265
+ @media (prefers-reduced-motion: reduce) {
266
+ .ds-spinner__segment {
267
+ animation-duration: 2.2s; /* Double the original duration (slower) */
268
+ animation-timing-function: linear; /* More predictable motion */
269
+ }
270
+ .ds-spinner__segment--1 {
271
+ animation-delay: -0.6s;
272
+ }
273
+ .ds-spinner__segment--2 {
274
+ animation-delay: -0.4s;
275
+ }
276
+ .ds-spinner__segment--3 {
277
+ animation-delay: -0.2s;
278
+ }
279
+ }
@@ -0,0 +1,221 @@
1
+ import { h } from "@stencil/core";
2
+ import { inheritAriaAttributes } from "../../../utils/attributes/attributes";
3
+ import classNames from "classnames";
4
+ const SPINNER_SIZES = {
5
+ 'small': 10,
6
+ 'medium': 14,
7
+ 'large': 20,
8
+ 'xLarge': 28,
9
+ '2xLarge': 40,
10
+ };
11
+ const SPINNER_TEXT_SIZES = {
12
+ 'small': 'ds-text--xs-regular',
13
+ 'medium': 'ds-text--sm-regular',
14
+ 'large': 'ds-text--md-regular',
15
+ 'xLarge': 'ds-text--lg-regular',
16
+ '2xLarge': 'ds-text--xl-regular',
17
+ };
18
+ const SPINNER_COLORS = {
19
+ blue: 'var(--ds-palette-mainBlue-70)',
20
+ black: 'var(--ds-palette-black-95)',
21
+ white: 'var(--ds-palette-white)',
22
+ };
23
+ export class DsSpinner {
24
+ inheritedAttributes = {};
25
+ el;
26
+ dsText;
27
+ dsSize = 'medium';
28
+ dsSpinnerTextPosition = 'below';
29
+ dsSpinnerColor = 'blue';
30
+ dsUseRoleAlert = false;
31
+ dsUseAriaLive = false;
32
+ dsHiddenAssistiveText;
33
+ componentWillLoad() {
34
+ this.inheritedAttributes = inheritAriaAttributes(this.el);
35
+ }
36
+ render() {
37
+ const sizeInPixels = SPINNER_SIZES[this.dsSize];
38
+ const textSizeClass = SPINNER_TEXT_SIZES[this.dsSize];
39
+ const spinnerColorVariable = SPINNER_COLORS[this.dsSpinnerColor];
40
+ const classes = classNames('ds-spinner', `ds-spinner--${this.dsSize}`, {
41
+ [`ds-spinner--${this.dsSpinnerTextPosition}`]: !!this.dsText,
42
+ });
43
+ const textClasses = classNames('ds-spinner__text', textSizeClass, `ds-spinner__text--${this.dsSpinnerColor}`);
44
+ const segmentClasses = index => classNames('ds-spinner__segment', `ds-spinner__segment--${index}`);
45
+ return (h("div", { key: '3d312dd8883b903bb59c8ceface626444ac0df44', role: this.dsUseRoleAlert ? 'alert' : null, "aria-live": this.dsUseAriaLive ? 'polite' : null, class: classes, style: {
46
+ '--spinner-size': `${sizeInPixels}px`,
47
+ '--spinner-color': `${spinnerColorVariable}`,
48
+ '--spinner-border-color': this.dsSpinnerColor == 'white' ? 'var(--ds-overlay-white-15)' : 'transparent',
49
+ }, ...this.inheritedAttributes }, h("div", { key: '81d04de4de327d4b8be4a03a4b0f97d56214547e', class: "ds-spinner__spinner" }, h("div", { key: 'f7136c4637d17bc796d2e69df8aae51244d1d97e', class: segmentClasses(1) }), h("div", { key: 'd839ca7f1aae71616062b82af2d5b7610299bf25', class: segmentClasses(2) }), h("div", { key: 'bcbd84559e7fd2204320f4788837df61aed6208a', class: segmentClasses(3) })), this.dsHiddenAssistiveText && (h("ds-visually-hidden", { key: '8b3f758381d1623f84e0c237ec17b97a81a85983' }, h("span", { key: '52930b05b2b868c38f785b09d6bb86dddfde828b' }, this.dsHiddenAssistiveText))), this.dsText && h("span", { key: '91677c1f685820bc32f6c8557df98c1c37cdbf8e', class: textClasses }, this.dsText)));
50
+ }
51
+ static get is() { return "ds-spinner"; }
52
+ static get encapsulation() { return "shadow"; }
53
+ static get originalStyleUrls() {
54
+ return {
55
+ "$": ["ds-spinner.scss"]
56
+ };
57
+ }
58
+ static get styleUrls() {
59
+ return {
60
+ "$": ["ds-spinner.css"]
61
+ };
62
+ }
63
+ static get properties() {
64
+ return {
65
+ "dsText": {
66
+ "type": "string",
67
+ "attribute": "ds-text",
68
+ "mutable": false,
69
+ "complexType": {
70
+ "original": "string",
71
+ "resolved": "string",
72
+ "references": {}
73
+ },
74
+ "required": false,
75
+ "optional": false,
76
+ "docs": {
77
+ "tags": [],
78
+ "text": "Text to display alongside spinner"
79
+ },
80
+ "getter": false,
81
+ "setter": false,
82
+ "reflect": false
83
+ },
84
+ "dsSize": {
85
+ "type": "string",
86
+ "attribute": "ds-size",
87
+ "mutable": false,
88
+ "complexType": {
89
+ "original": "SpinnerSize",
90
+ "resolved": "\"2xLarge\" | \"large\" | \"medium\" | \"small\" | \"xLarge\"",
91
+ "references": {
92
+ "SpinnerSize": {
93
+ "location": "global",
94
+ "id": "global::SpinnerSize"
95
+ }
96
+ }
97
+ },
98
+ "required": false,
99
+ "optional": false,
100
+ "docs": {
101
+ "tags": [],
102
+ "text": "Size of the spinner"
103
+ },
104
+ "getter": false,
105
+ "setter": false,
106
+ "reflect": false,
107
+ "defaultValue": "'medium'"
108
+ },
109
+ "dsSpinnerTextPosition": {
110
+ "type": "string",
111
+ "attribute": "ds-spinner-text-position",
112
+ "mutable": false,
113
+ "complexType": {
114
+ "original": "SpinnerTextPosition",
115
+ "resolved": "\"below\" | \"side\"",
116
+ "references": {
117
+ "SpinnerTextPosition": {
118
+ "location": "global",
119
+ "id": "global::SpinnerTextPosition"
120
+ }
121
+ }
122
+ },
123
+ "required": false,
124
+ "optional": false,
125
+ "docs": {
126
+ "tags": [],
127
+ "text": "Where to display the `dsText` property"
128
+ },
129
+ "getter": false,
130
+ "setter": false,
131
+ "reflect": false,
132
+ "defaultValue": "'below'"
133
+ },
134
+ "dsSpinnerColor": {
135
+ "type": "string",
136
+ "attribute": "ds-spinner-color",
137
+ "mutable": false,
138
+ "complexType": {
139
+ "original": "SpinnerColor",
140
+ "resolved": "\"black\" | \"blue\" | \"white\"",
141
+ "references": {
142
+ "SpinnerColor": {
143
+ "location": "global",
144
+ "id": "global::SpinnerColor"
145
+ }
146
+ }
147
+ },
148
+ "required": false,
149
+ "optional": false,
150
+ "docs": {
151
+ "tags": [],
152
+ "text": "Color of the spinner"
153
+ },
154
+ "getter": false,
155
+ "setter": false,
156
+ "reflect": false,
157
+ "defaultValue": "'blue'"
158
+ },
159
+ "dsUseRoleAlert": {
160
+ "type": "boolean",
161
+ "attribute": "ds-use-role-alert",
162
+ "mutable": false,
163
+ "complexType": {
164
+ "original": "boolean",
165
+ "resolved": "boolean",
166
+ "references": {}
167
+ },
168
+ "required": false,
169
+ "optional": false,
170
+ "docs": {
171
+ "tags": [],
172
+ "text": "Sets `role=\"alert\"` attribute to the spinner element"
173
+ },
174
+ "getter": false,
175
+ "setter": false,
176
+ "reflect": false,
177
+ "defaultValue": "false"
178
+ },
179
+ "dsUseAriaLive": {
180
+ "type": "boolean",
181
+ "attribute": "ds-use-aria-live",
182
+ "mutable": false,
183
+ "complexType": {
184
+ "original": "boolean",
185
+ "resolved": "boolean",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": false,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Sets `aria-live=\"polite\"` attribute to the spinner element"
193
+ },
194
+ "getter": false,
195
+ "setter": false,
196
+ "reflect": false,
197
+ "defaultValue": "false"
198
+ },
199
+ "dsHiddenAssistiveText": {
200
+ "type": "string",
201
+ "attribute": "ds-hidden-assistive-text",
202
+ "mutable": false,
203
+ "complexType": {
204
+ "original": "string",
205
+ "resolved": "string",
206
+ "references": {}
207
+ },
208
+ "required": false,
209
+ "optional": false,
210
+ "docs": {
211
+ "tags": [],
212
+ "text": "Visually hidden information for screen readers"
213
+ },
214
+ "getter": false,
215
+ "setter": false,
216
+ "reflect": false
217
+ }
218
+ };
219
+ }
220
+ static get elementRef() { return "el"; }
221
+ }
@@ -0,0 +1,120 @@
1
+ import { html } from "lit";
2
+ import { litTemplateResultToString } from "../../../../utils/utils";
3
+ import { toggleSpinnerLoad } from "../../../../utils/spinner/spinnerUtils";
4
+ const meta = {
5
+ title: 'Base Components/Spinner/Examples',
6
+ component: 'ds-spinner',
7
+ };
8
+ export default meta;
9
+ const spinnerTextExamplesDom = html `
10
+ <div>
11
+ <div class="ds-sp-container">
12
+ <div class="ds-sp-item">
13
+ <ds-spinner ds-spinner-color="blue" ds-size="small" ds-text="Getting things ready..."></ds-spinner>
14
+ </div>
15
+ <div class="ds-sp-item">
16
+ <ds-spinner ds-spinner-color="blue" ds-size="small" ds-text="Getting things ready..." ds-spinner-text-position="side"></ds-spinner>
17
+ </div>
18
+ </div>
19
+ <div class="ds-sp-container">
20
+ <div class="ds-sp-item">
21
+ <ds-spinner ds-spinner-color="black" ds-size="medium" ds-text="Getting things ready..."></ds-spinner>
22
+ </div>
23
+ <div class="ds-sp-item">
24
+ <ds-spinner ds-spinner-color="black" ds-size="medium" ds-text="Getting things ready..." ds-spinner-text-position="side"></ds-spinner>
25
+ </div>
26
+ </div>
27
+ <div class="ds-sp-container">
28
+ <div class="ds-sp-item">
29
+ <ds-spinner ds-spinner-color="black" ds-size="large" ds-text="Getting things ready..."></ds-spinner>
30
+ </div>
31
+ <div class="ds-sp-item">
32
+ <ds-spinner ds-spinner-color="black" ds-size="large" ds-text="Getting things ready..." ds-spinner-text-position="side"></ds-spinner>
33
+ </div>
34
+ </div>
35
+ <div class="ds-sp-container">
36
+ <div class="ds-sp-item">
37
+ <ds-spinner ds-spinner-color="black" ds-size="xLarge" ds-text="Getting things ready..."></ds-spinner>
38
+ </div>
39
+ <div class="ds-sp-item">
40
+ <ds-spinner ds-spinner-color="black" ds-size="xLarge" ds-text="Getting things ready..." ds-spinner-text-position="side"></ds-spinner>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ `;
45
+ export const WithText = {
46
+ parameters: {
47
+ docs: {
48
+ source: {
49
+ code: litTemplateResultToString(spinnerTextExamplesDom),
50
+ },
51
+ },
52
+ },
53
+ render: () => html `
54
+ <style>
55
+ .ds-sp-container {
56
+ display: flex;
57
+ gap: 1rem;
58
+ width: 100%;
59
+ }
60
+ .ds-sp-item {
61
+ align-items: center;
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: .5rem;
65
+ padding: 0.5rem;
66
+ }
67
+ .white {
68
+ color: #FFF;
69
+ background: #000;
70
+ }
71
+ </style>
72
+ ${spinnerTextExamplesDom}
73
+ `
74
+ };
75
+ export const SpinnerLoadExample = {
76
+ args: {
77
+ dsUseRoleAlert: false,
78
+ dsUseAriaLive: false,
79
+ useAriaLiveContainer: false,
80
+ },
81
+ argTypes: {
82
+ useAriaLiveContainer: { name: 'Set aria-live: polite to the container', control: 'boolean' }
83
+ },
84
+ render: (args) => html `
85
+ <style>
86
+ .ds-sb-example-load {
87
+ display: flex;
88
+ flex-direction: column;
89
+ gap: 1rem;
90
+ width: 300px;
91
+ }
92
+ .ds-sb-box {
93
+ aspect-ratio: 1;
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ height: 100px;
98
+ }
99
+ .ds-sb-hidden {
100
+ display: none;
101
+ visibility: hidden;
102
+ }
103
+ </style>
104
+ <div class="ds-sb-example-load" aria-live="${args.useAriaLiveContainer ? 'polite' : 'off'}">
105
+ <span class="ds-sb-box">Ready to send</span>
106
+ <ds-spinner id="load-example" ds-use-role-alert="${args.dsUseRoleAlert}" ds-use-aria-live="${args.dsUseAriaLive}" class="ds-sb-hidden" ds-text="Sending..." ds-size="large" ds-hidden-assistive-text="This is hidden Send text"></ds-spinner>
107
+ <ds-button
108
+ id="loading-button"
109
+ ds-variant="primary"
110
+ ds-value="Send"
111
+ ds-is-loading="false"
112
+ @click=${(e) => {
113
+ const button = e.currentTarget;
114
+ const spinner = document.querySelector('ds-spinner#load-example');
115
+ const resultContainer = document.querySelectorAll('.ds-sb-box')[0];
116
+ toggleSpinnerLoad(button, spinner, resultContainer, 'Send', 'Sending...');
117
+ }}
118
+ ></ds-button>
119
+ </div>`
120
+ };