@govtechsg/sgds-web-component 3.4.0-rc.0 → 3.4.0-rc.2

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 (158) hide show
  1. package/Masthead/index.js +1 -1
  2. package/base/card-element.d.ts +2 -1
  3. package/base/card-element.js +2 -10
  4. package/base/card-element.js.map +1 -1
  5. package/base/card.js +1 -1
  6. package/base/sgds-element2.js +1 -1
  7. package/components/Accordion/index.umd.js +1 -1
  8. package/components/Alert/index.umd.js +1 -1
  9. package/components/Badge/index.umd.js +1 -1
  10. package/components/Breadcrumb/index.umd.js +1 -1
  11. package/components/Button/index.umd.js +1 -1
  12. package/components/Card/index.umd.js +3716 -3705
  13. package/components/Card/index.umd.js.map +1 -1
  14. package/components/Card/sgds-card.d.ts +8 -1
  15. package/components/Card/sgds-card.js +47 -14
  16. package/components/Card/sgds-card.js.map +1 -1
  17. package/components/Checkbox/index.umd.js +1 -1
  18. package/components/ComboBox/index.umd.js +9 -1
  19. package/components/ComboBox/index.umd.js.map +1 -1
  20. package/components/ComboBox/sgds-combo-box.d.ts +4 -0
  21. package/components/ComboBox/sgds-combo-box.js +8 -0
  22. package/components/ComboBox/sgds-combo-box.js.map +1 -1
  23. package/components/Datepicker/index.umd.js +1 -1
  24. package/components/DescriptionList/index.umd.js +1 -1
  25. package/components/Divider/index.umd.js +1 -1
  26. package/components/Drawer/drawer.js +1 -1
  27. package/components/Drawer/index.umd.js +5 -46
  28. package/components/Drawer/index.umd.js.map +1 -1
  29. package/components/Drawer/sgds-drawer.d.ts +0 -3
  30. package/components/Drawer/sgds-drawer.js +4 -18
  31. package/components/Drawer/sgds-drawer.js.map +1 -1
  32. package/components/Dropdown/index.umd.js +1 -1
  33. package/components/FileUpload/index.umd.js +1 -1
  34. package/components/Footer/index.umd.js +1 -1
  35. package/components/Icon/index.umd.js +1 -1
  36. package/components/IconButton/index.umd.js +1 -1
  37. package/components/IconCard/index.umd.js +93 -137
  38. package/components/IconCard/index.umd.js.map +1 -1
  39. package/components/IconCard/sgds-icon-card.d.ts +7 -2
  40. package/components/IconCard/sgds-icon-card.js +39 -12
  41. package/components/IconCard/sgds-icon-card.js.map +1 -1
  42. package/components/IconList/index.umd.js +1 -1
  43. package/components/ImageCard/index.umd.js +91 -136
  44. package/components/ImageCard/index.umd.js.map +1 -1
  45. package/components/ImageCard/sgds-image-card.d.ts +7 -2
  46. package/components/ImageCard/sgds-image-card.js +37 -11
  47. package/components/ImageCard/sgds-image-card.js.map +1 -1
  48. package/components/Input/index.umd.js +1 -1
  49. package/components/Link/index.umd.js +1 -1
  50. package/components/Mainnav/index.umd.js +35 -49
  51. package/components/Mainnav/index.umd.js.map +1 -1
  52. package/components/Mainnav/mainnav-context.d.ts +4 -1
  53. package/components/Mainnav/mainnav-context.js +3 -2
  54. package/components/Mainnav/mainnav-context.js.map +1 -1
  55. package/components/Mainnav/sgds-mainnav-dropdown.d.ts +1 -3
  56. package/components/Mainnav/sgds-mainnav-dropdown.js +9 -35
  57. package/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
  58. package/components/Mainnav/sgds-mainnav.d.ts +4 -2
  59. package/components/Mainnav/sgds-mainnav.js +25 -14
  60. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  61. package/components/Masthead/index.umd.js +1 -1
  62. package/components/Modal/index.umd.js +2 -2
  63. package/components/Modal/modal.js +1 -1
  64. package/components/OverflowMenu/index.umd.js +1 -1
  65. package/components/Pagination/index.umd.js +1 -1
  66. package/components/ProgressBar/index.umd.js +1 -1
  67. package/components/QuantityToggle/index.umd.js +1 -1
  68. package/components/Radio/index.umd.js +1 -1
  69. package/components/Select/index.umd.js +12 -1
  70. package/components/Select/index.umd.js.map +1 -1
  71. package/components/Select/sgds-select.d.ts +5 -0
  72. package/components/Select/sgds-select.js +11 -0
  73. package/components/Select/sgds-select.js.map +1 -1
  74. package/components/Sidenav/index.umd.js +1 -1
  75. package/components/Skeleton/index.umd.js +1 -1
  76. package/components/Spinner/index.umd.js +1 -1
  77. package/components/Stepper/index.umd.js +1 -1
  78. package/components/Subnav/index.umd.js +1 -1
  79. package/components/Switch/index.umd.js +1 -1
  80. package/components/Tab/index.umd.js +1 -1
  81. package/components/Table/index.umd.js +1 -1
  82. package/components/TableOfContents/index.umd.js +1 -1
  83. package/components/Textarea/index.umd.js +1 -1
  84. package/components/ThumbnailCard/index.umd.js +92 -137
  85. package/components/ThumbnailCard/index.umd.js.map +1 -1
  86. package/components/ThumbnailCard/sgds-thumbnail-card.d.ts +7 -2
  87. package/components/ThumbnailCard/sgds-thumbnail-card.js +37 -11
  88. package/components/ThumbnailCard/sgds-thumbnail-card.js.map +1 -1
  89. package/components/ThumbnailCard/thumbnail-card.js +1 -1
  90. package/components/Toast/index.umd.js +1 -1
  91. package/components/Tooltip/index.umd.js +1 -1
  92. package/components/index.umd.js +223 -123
  93. package/components/index.umd.js.map +1 -1
  94. package/index.umd.js +223 -123
  95. package/index.umd.js.map +1 -1
  96. package/package.json +1 -1
  97. package/react/base/card-element.cjs.js +2 -10
  98. package/react/base/card-element.cjs.js.map +1 -1
  99. package/react/base/card-element.js +2 -10
  100. package/react/base/card-element.js.map +1 -1
  101. package/react/base/card.cjs.js +1 -1
  102. package/react/base/card.js +1 -1
  103. package/react/base/sgds-element.cjs2.js +1 -1
  104. package/react/base/sgds-element2.js +1 -1
  105. package/react/combo-box/index.cjs.js +3 -0
  106. package/react/combo-box/index.cjs.js.map +1 -1
  107. package/react/combo-box/index.js +3 -0
  108. package/react/combo-box/index.js.map +1 -1
  109. package/react/components/Card/sgds-card.cjs.js +46 -13
  110. package/react/components/Card/sgds-card.cjs.js.map +1 -1
  111. package/react/components/Card/sgds-card.js +47 -14
  112. package/react/components/Card/sgds-card.js.map +1 -1
  113. package/react/components/ComboBox/sgds-combo-box.cjs.js +8 -0
  114. package/react/components/ComboBox/sgds-combo-box.cjs.js.map +1 -1
  115. package/react/components/ComboBox/sgds-combo-box.js +8 -0
  116. package/react/components/ComboBox/sgds-combo-box.js.map +1 -1
  117. package/react/components/Drawer/drawer.cjs.js +1 -1
  118. package/react/components/Drawer/drawer.js +1 -1
  119. package/react/components/Drawer/sgds-drawer.cjs.js +3 -17
  120. package/react/components/Drawer/sgds-drawer.cjs.js.map +1 -1
  121. package/react/components/Drawer/sgds-drawer.js +4 -18
  122. package/react/components/Drawer/sgds-drawer.js.map +1 -1
  123. package/react/components/IconCard/sgds-icon-card.cjs.js +38 -11
  124. package/react/components/IconCard/sgds-icon-card.cjs.js.map +1 -1
  125. package/react/components/IconCard/sgds-icon-card.js +39 -12
  126. package/react/components/IconCard/sgds-icon-card.js.map +1 -1
  127. package/react/components/ImageCard/sgds-image-card.cjs.js +36 -10
  128. package/react/components/ImageCard/sgds-image-card.cjs.js.map +1 -1
  129. package/react/components/ImageCard/sgds-image-card.js +37 -11
  130. package/react/components/ImageCard/sgds-image-card.js.map +1 -1
  131. package/react/components/Mainnav/mainnav-context.cjs.js +4 -2
  132. package/react/components/Mainnav/mainnav-context.cjs.js.map +1 -1
  133. package/react/components/Mainnav/mainnav-context.js +3 -2
  134. package/react/components/Mainnav/mainnav-context.js.map +1 -1
  135. package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js +8 -34
  136. package/react/components/Mainnav/sgds-mainnav-dropdown.cjs.js.map +1 -1
  137. package/react/components/Mainnav/sgds-mainnav-dropdown.js +9 -35
  138. package/react/components/Mainnav/sgds-mainnav-dropdown.js.map +1 -1
  139. package/react/components/Mainnav/sgds-mainnav.cjs.js +24 -13
  140. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  141. package/react/components/Mainnav/sgds-mainnav.js +25 -14
  142. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  143. package/react/components/Modal/modal.cjs.js +1 -1
  144. package/react/components/Modal/modal.js +1 -1
  145. package/react/components/Select/sgds-select.cjs.js +11 -0
  146. package/react/components/Select/sgds-select.cjs.js.map +1 -1
  147. package/react/components/Select/sgds-select.js +11 -0
  148. package/react/components/Select/sgds-select.js.map +1 -1
  149. package/react/components/ThumbnailCard/sgds-thumbnail-card.cjs.js +36 -10
  150. package/react/components/ThumbnailCard/sgds-thumbnail-card.cjs.js.map +1 -1
  151. package/react/components/ThumbnailCard/sgds-thumbnail-card.js +37 -11
  152. package/react/components/ThumbnailCard/sgds-thumbnail-card.js.map +1 -1
  153. package/react/components/ThumbnailCard/thumbnail-card.cjs.js +1 -1
  154. package/react/components/ThumbnailCard/thumbnail-card.js +1 -1
  155. package/react/select/index.cjs.js +3 -0
  156. package/react/select/index.cjs.js.map +1 -1
  157. package/react/select/index.js +3 -0
  158. package/react/select/index.js.map +1 -1
@@ -4383,7 +4383,7 @@
4383
4383
  });
4384
4384
  }
4385
4385
 
4386
- var css_248z$1f = css`:host{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--sgds-body-color-default);font-family:var(--sgds-font-family-brand);font-size:var(--sgds-font-size-2);font-weight:var(--sgds-font-weight-regular);line-height:var(--sgds-line-height-body);margin:0;*,:after,:before{box-sizing:border-box}:disabled{cursor:not-allowed}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}::slotted(a[target=_blank]):after,a[target=_blank]:after{background-color:currentColor;content:"/";display:inline-block;height:var(--sgds-icon-size-lg);margin-left:.25rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.774 4.4H9.8a.6.6 0 1 1 0 1.2c-.85 0-1.451 0-1.922.039-.463.038-.745.11-.968.223A2.4 2.4 0 0 0 5.861 6.91c-.113.223-.184.505-.222.968-.039.47-.04 1.072-.04 1.922v4.4c0 .85.001 1.451.04 1.922.038.463.11.745.222.968a2.4 2.4 0 0 0 1.05 1.048c.222.114.504.185.967.223.47.038 1.072.039 1.922.039h4.4c.85 0 1.451 0 1.921-.039.464-.038.746-.11.969-.223a2.4 2.4 0 0 0 1.048-1.048c.113-.223.185-.505.223-.968.038-.47.039-1.072.039-1.922a.6.6 0 1 1 1.2 0v.026c0 .818 0 1.468-.043 1.993-.044.538-.136.996-.35 1.415a3.6 3.6 0 0 1-1.573 1.574c-.42.213-.878.305-1.415.35-.525.042-1.175.042-1.993.042H9.774c-.818 0-1.469 0-1.993-.043-.538-.044-.996-.136-1.415-.35a3.6 3.6 0 0 1-1.574-1.573c-.213-.42-.305-.877-.35-1.415-.042-.525-.042-1.175-.042-1.993V9.774c0-.818 0-1.468.043-1.993.044-.538.136-.996.35-1.415a3.6 3.6 0 0 1 1.573-1.574c.42-.213.877-.305 1.415-.35C8.305 4.4 8.956 4.4 9.774 4.4ZM12.4 5a.6.6 0 0 1 .6-.6h6a.6.6 0 0 1 .6.6v6a.6.6 0 1 1-1.2 0V6.449l-5.976 5.975a.6.6 0 0 1-.848-.848L17.55 5.6H13a.6.6 0 0 1-.6-.6Z' fill='%230E0E0E'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.774 4.4H9.8a.6.6 0 1 1 0 1.2c-.85 0-1.451 0-1.922.039-.463.038-.745.11-.968.223A2.4 2.4 0 0 0 5.861 6.91c-.113.223-.184.505-.222.968-.039.47-.04 1.072-.04 1.922v4.4c0 .85.001 1.451.04 1.922.038.463.11.745.222.968a2.4 2.4 0 0 0 1.05 1.048c.222.114.504.185.967.223.47.038 1.072.039 1.922.039h4.4c.85 0 1.451 0 1.921-.039.464-.038.746-.11.969-.223a2.4 2.4 0 0 0 1.048-1.048c.113-.223.185-.505.223-.968.038-.47.039-1.072.039-1.922a.6.6 0 1 1 1.2 0v.026c0 .818 0 1.468-.043 1.993-.044.538-.136.996-.35 1.415a3.6 3.6 0 0 1-1.573 1.574c-.42.213-.878.305-1.415.35-.525.042-1.175.042-1.993.042H9.774c-.818 0-1.469 0-1.993-.043-.538-.044-.996-.136-1.415-.35a3.6 3.6 0 0 1-1.574-1.573c-.213-.42-.305-.877-.35-1.415-.042-.525-.042-1.175-.042-1.993V9.774c0-.818 0-1.468.043-1.993.044-.538.136-.996.35-1.415a3.6 3.6 0 0 1 1.573-1.574c.42-.213.877-.305 1.415-.35C8.305 4.4 8.956 4.4 9.774 4.4ZM12.4 5a.6.6 0 0 1 .6-.6h6a.6.6 0 0 1 .6.6v6a.6.6 0 1 1-1.2 0V6.449l-5.976 5.975a.6.6 0 0 1-.848-.848L17.55 5.6H13a.6.6 0 0 1-.6-.6Z' fill='%230E0E0E'/%3E%3C/svg%3E");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:bottom;width:var(--sgds-icon-size-lg)}::slotted(svg){vertical-align:middle}}`;
4386
+ var css_248z$1f = css`:host{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--sgds-body-color-default);font-family:var(--sgds-font-family-brand);font-size:var(--sgds-font-size-2);font-weight:var(--sgds-font-weight-regular);line-height:var(--sgds-line-height-body);margin:0;*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:disabled{cursor:not-allowed}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}::slotted(a[target=_blank]):after,a[target=_blank]:after{background-color:currentColor;content:"/";display:inline-block;height:var(--sgds-icon-size-lg);margin-left:.25rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.774 4.4H9.8a.6.6 0 1 1 0 1.2c-.85 0-1.451 0-1.922.039-.463.038-.745.11-.968.223A2.4 2.4 0 0 0 5.861 6.91c-.113.223-.184.505-.222.968-.039.47-.04 1.072-.04 1.922v4.4c0 .85.001 1.451.04 1.922.038.463.11.745.222.968a2.4 2.4 0 0 0 1.05 1.048c.222.114.504.185.967.223.47.038 1.072.039 1.922.039h4.4c.85 0 1.451 0 1.921-.039.464-.038.746-.11.969-.223a2.4 2.4 0 0 0 1.048-1.048c.113-.223.185-.505.223-.968.038-.47.039-1.072.039-1.922a.6.6 0 1 1 1.2 0v.026c0 .818 0 1.468-.043 1.993-.044.538-.136.996-.35 1.415a3.6 3.6 0 0 1-1.573 1.574c-.42.213-.878.305-1.415.35-.525.042-1.175.042-1.993.042H9.774c-.818 0-1.469 0-1.993-.043-.538-.044-.996-.136-1.415-.35a3.6 3.6 0 0 1-1.574-1.573c-.213-.42-.305-.877-.35-1.415-.042-.525-.042-1.175-.042-1.993V9.774c0-.818 0-1.468.043-1.993.044-.538.136-.996.35-1.415a3.6 3.6 0 0 1 1.573-1.574c.42-.213.877-.305 1.415-.35C8.305 4.4 8.956 4.4 9.774 4.4ZM12.4 5a.6.6 0 0 1 .6-.6h6a.6.6 0 0 1 .6.6v6a.6.6 0 1 1-1.2 0V6.449l-5.976 5.975a.6.6 0 0 1-.848-.848L17.55 5.6H13a.6.6 0 0 1-.6-.6Z' fill='%230E0E0E'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9.774 4.4H9.8a.6.6 0 1 1 0 1.2c-.85 0-1.451 0-1.922.039-.463.038-.745.11-.968.223A2.4 2.4 0 0 0 5.861 6.91c-.113.223-.184.505-.222.968-.039.47-.04 1.072-.04 1.922v4.4c0 .85.001 1.451.04 1.922.038.463.11.745.222.968a2.4 2.4 0 0 0 1.05 1.048c.222.114.504.185.967.223.47.038 1.072.039 1.922.039h4.4c.85 0 1.451 0 1.921-.039.464-.038.746-.11.969-.223a2.4 2.4 0 0 0 1.048-1.048c.113-.223.185-.505.223-.968.038-.47.039-1.072.039-1.922a.6.6 0 1 1 1.2 0v.026c0 .818 0 1.468-.043 1.993-.044.538-.136.996-.35 1.415a3.6 3.6 0 0 1-1.573 1.574c-.42.213-.878.305-1.415.35-.525.042-1.175.042-1.993.042H9.774c-.818 0-1.469 0-1.993-.043-.538-.044-.996-.136-1.415-.35a3.6 3.6 0 0 1-1.574-1.573c-.213-.42-.305-.877-.35-1.415-.042-.525-.042-1.175-.042-1.993V9.774c0-.818 0-1.468.043-1.993.044-.538.136-.996.35-1.415a3.6 3.6 0 0 1 1.573-1.574c.42-.213.877-.305 1.415-.35C8.305 4.4 8.956 4.4 9.774 4.4ZM12.4 5a.6.6 0 0 1 .6-.6h6a.6.6 0 0 1 .6.6v6a.6.6 0 1 1-1.2 0V6.449l-5.976 5.975a.6.6 0 0 1-.848-.848L17.55 5.6H13a.6.6 0 0 1-.6-.6Z' fill='%230E0E0E'/%3E%3C/svg%3E");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:bottom;width:var(--sgds-icon-size-lg)}::slotted(svg){vertical-align:middle}}`;
4387
4387
 
4388
4388
  /**
4389
4389
  * @cssprop --sgds-{stateColor} - State colors in hexadecimal value
@@ -13558,7 +13558,7 @@
13558
13558
  property({ type: Boolean, reflect: true })
13559
13559
  ], SgdsButton.prototype, "fullWidth", void 0);
13560
13560
 
13561
- var css_248z$Y = css`:host([disabled]){cursor:not-allowed}:host([orientation=horizontal]) .card{flex-direction:row}:host(:not([hideBorder])) .card{border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted)}:host([orientation=horizontal]) .card-body{flex:1}:host([orientation=horizontal]) .card-media{padding:var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-xl)}:host([orientation=horizontal]) .card-image{width:40%}:host([imagePosition=after]) .card-image{order:1}:host([orientation=vertical][imagePosition=after]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-left-radius:var(--sgds-border-radius-none);border-top-right-radius:var(--sgds-border-radius-none)}:host([orientation=horizontal][imagePosition=after]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-bottom-left-radius:var(--sgds-border-radius-none);border-top-left-radius:var(--sgds-border-radius-none)}:host([orientation=horizontal]) slot[name=image]::slotted(img){border-bottom-left-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-right-radius:var(--sgds-border-radius-none);height:100%;object-fit:cover}:host([orientation=vertical][imageAdjustment="padding around"]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-padding-none)}:host([orientation=vertical][imageAdjustment="padding around"][imagePosition=after]) .card-image{margin:var(--sgds-margin-none) var(--sgds-margin-sm) var(--sgds-margin-sm)}:host([orientation=horizontal][imageAdjustment="padding around"]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-none) var(--sgds-margin-sm) var(--sgds-margin-sm)}:host([orientation=horizontal][imageAdjustment="padding around"][imagePosition=after]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-margin-none)}:host([orientation][imageAdjustment="padding around"]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1))}:host([orientation=vertical]:not([imageAdjustment="aspect ratio"])) slot[name=image]::slotted(img){height:auto}:host([orientation=vertical][imageAdjustment="aspect ratio"]) slot[name=image]::slotted(img){object-fit:cover}.card{word-wrap:break-word;background-clip:border-box;background-color:var(--sgds-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-md);box-shadow:none;display:flex;flex-direction:column;height:100%;min-width:0;position:relative;transition:box-shadow .3s ease}a.card{color:initial;text-decoration:none}@media (prefers-reduced-motion:reduce){.card{transition:none}}.card.disabled{opacity:var(--sgds-opacity-50);pointer-events:none}a.card:focus{outline:0}a.card:not(.disabled):focus-visible{box-shadow:var(--sgds-box-shadow-focus)}.card-tinted-bg{border-radius:var(--sgds-border-radius-md);bottom:0;left:0;opacity:var(--sgds-opacity-0);position:absolute;right:0;top:0}.card-image{flex:1;position:relative}.card-media{align-items:flex-start;display:flex;justify-content:space-between;line-height:0;padding:var(--sgds-padding-xl) var(--sgds-padding-xl) var(--sgds-padding-none)}.card-body{color:var(--sgds-body-color-default);display:flex;flex:1 1 auto;flex-direction:column;gap:var(--sgds-gap-xl);padding:var(--sgds-padding-xl);z-index:1}.card-header-container{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}.card-header{display:flex;flex-direction:column;gap:var(--sgds-gap-xs)}.card-title{--sgds-font-size-5:var(--sgds-font-size-4);--sgds-font-size-6:var(--sgds-font-size-4);--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-font-weight-bold:var(--sgds-font-weight-semibold);color:var(--sgds-body-color-default);font-size:var(--sgds-font-size-4);font-weight:var(--sgds-font-weight-semibold)}.card-subtitle,.card-text,.card-title{margin-bottom:var(--sgds-margin-none)}slot[name=subtitle]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-4:var(--sgds-font-size-1);--sgds-font-size-5:var(--sgds-font-size-1);--sgds-font-size-6:var(--sgds-font-size-1);--sgds-font-weight-bold:var(--sgds-font-weight-semibold);--sgds-line-height-heading:var(--sgds-line-height-min);--sgds-letter-spacing-tight:var(--sgds-letter-spacing-wide);color:var(--sgds-color-subtle);font-size:var(--sgds-font-size-1);font-weight:var(--sgds-font-weight-semibold);letter-spacing:var(--sgds-letter-spacing-wide);line-height:var(--sgds-line-height-min);margin:var(--sgds-margin-none);text-transform:uppercase}slot[name=title]::slotted(a){--sgds-font-size-2:var(--sgds-font-size-4);--sgds-font-weight-regular:var(--sgds-font-weight-semibold);color:var(--sgds-link-color-default);font-size:var(--sgds-font-size-4);font-weight:var(--sgds-font-weight-semibold);text-decoration:none!important}slot[name=description]::slotted(*){color:var(--sgds-color-subtle)}slot[name=image]::slotted(img){border-top-left-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-right-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));display:block;width:100%}slot[name=link]::slotted(*){font-weight:700;margin-top:auto;padding-top:var(--sgds-padding-sm)}slot[name=link]::slotted(a){color:var(--sgds-link-color-default);height:auto!important;text-decoration:none!important}slot[name=link]::slotted(a:focus),slot[name=link]::slotted(a:hover),slot[name=title]::slotted(a:focus),slot[name=title]::slotted(a:hover){color:var(--sgds-link-color-emphasis)}slot[name=link]::slotted(a:focus),slot[name=title]::slotted(a:focus){outline:0}slot[name=link]::slotted(a:focus-visible),slot[name=title]::slotted(a:focus-visible){box-shadow:var(--sgds-box-shadow-focus)}`;
13561
+ var css_248z$Y = css`:host([disabled]){cursor:not-allowed}:host([stretchedLink]) slot[name=footer]::slotted(a),:host([stretchedLink]) slot[name=footer]::slotted(sgds-link),:host([stretchedLink]) slot[name=link]::slotted(a),:host([stretchedLink]) slot[name=link]::slotted(sgds-link){display:none}:host([orientation=horizontal]) .card{flex-direction:row}:host(:not([hideBorder])) .card{border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted)}:host([orientation=horizontal]) .card-body{flex:1}:host([orientation=horizontal]) .card-media{padding:var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-xl)}:host([orientation=horizontal]) .card-image{width:40%}:host([imagePosition=after]) .card-image{order:1}:host([orientation=vertical][imagePosition=after]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-left-radius:var(--sgds-border-radius-none);border-top-right-radius:var(--sgds-border-radius-none)}:host([orientation=horizontal][imagePosition=after]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-bottom-left-radius:var(--sgds-border-radius-none);border-top-left-radius:var(--sgds-border-radius-none)}:host([orientation=horizontal]) slot[name=image]::slotted(img){border-bottom-left-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-right-radius:var(--sgds-border-radius-none);height:100%;object-fit:cover}:host([orientation=vertical][imageAdjustment="padding around"]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-padding-none)}:host([orientation=vertical][imageAdjustment="padding around"][imagePosition=after]) .card-image{margin:var(--sgds-margin-none) var(--sgds-margin-sm) var(--sgds-margin-sm)}:host([orientation=horizontal][imageAdjustment="padding around"]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-none) var(--sgds-margin-sm) var(--sgds-margin-sm)}:host([orientation=horizontal][imageAdjustment="padding around"][imagePosition=after]) .card-image{margin:var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-margin-sm) var(--sgds-margin-none)}:host([orientation][imageAdjustment="padding around"]) slot[name=image]::slotted(img){border-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1))}:host([orientation=vertical]:not([imageAdjustment="aspect ratio"])) slot[name=image]::slotted(img){height:auto}:host([orientation=vertical][imageAdjustment="aspect ratio"]) slot[name=image]::slotted(img){object-fit:cover}.card{word-wrap:break-word;background-clip:border-box;background-color:var(--sgds-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-md);box-shadow:none;display:flex;flex-direction:column;height:100%;min-width:0;position:relative;transition:box-shadow .3s ease}a.card{color:initial;text-decoration:none}@media (prefers-reduced-motion:reduce){.card{transition:none}}.card.disabled{opacity:var(--sgds-opacity-50);pointer-events:none}a.card:focus{outline:0}a.card:not(.disabled):focus-visible{box-shadow:var(--sgds-box-shadow-focus)}.card-tinted-bg{border-radius:var(--sgds-border-radius-md);bottom:0;left:0;opacity:var(--sgds-opacity-0);position:absolute;right:0;top:0}.card-image{flex:1;position:relative}.card-media{align-items:flex-start;display:flex;justify-content:space-between;line-height:0;padding:var(--sgds-padding-xl) var(--sgds-padding-xl) var(--sgds-padding-none)}.card-body{color:var(--sgds-body-color-default);display:flex;flex:1 1 auto;flex-direction:column;gap:var(--sgds-gap-xl);padding:var(--sgds-padding-xl);z-index:1}.card-header-container{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}.card-header{display:flex;flex-direction:column;gap:var(--sgds-gap-xs)}.card-title{--sgds-font-size-5:var(--sgds-font-size-4);--sgds-font-size-6:var(--sgds-font-size-4);--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-font-weight-bold:var(--sgds-font-weight-semibold);color:var(--sgds-body-color-default);font-size:var(--sgds-font-size-4);font-weight:var(--sgds-font-weight-semibold);margin-bottom:var(--sgds-margin-none)}slot[name=subtitle]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-4:var(--sgds-font-size-1);--sgds-font-size-5:var(--sgds-font-size-1);--sgds-font-size-6:var(--sgds-font-size-1);--sgds-font-weight-bold:var(--sgds-font-weight-semibold);--sgds-line-height-heading:var(--sgds-line-height-min);--sgds-letter-spacing-tight:var(--sgds-letter-spacing-wide);color:var(--sgds-color-subtle);font-size:var(--sgds-font-size-1);font-weight:var(--sgds-font-weight-semibold);letter-spacing:var(--sgds-letter-spacing-wide);line-height:var(--sgds-line-height-min);margin:var(--sgds-margin-none);text-transform:uppercase}slot[name=title]::slotted(a){--sgds-font-size-2:var(--sgds-font-size-4);--sgds-font-weight-regular:var(--sgds-font-weight-semibold);color:var(--sgds-link-color-default);font-size:var(--sgds-font-size-4);font-weight:var(--sgds-font-weight-semibold);text-decoration:none!important}slot[name=description]::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none);color:var(--sgds-color-subtle);margin-bottom:var(--sgds-paragraph-spacing-xl,--sgds-margin-none)}slot[name=image]::slotted(img){border-top-left-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));border-top-right-radius:calc(var(--sgds-border-radius-md) - var(--sgds-border-width-1));display:block;width:100%}slot[name=footer]::slotted(*),slot[name=link]::slotted(*){margin-top:auto;padding-top:var(--sgds-padding-sm);width:fit-content}slot[name=footer]::slotted(a),slot[name=link]::slotted(a){color:var(--sgds-link-color-default);height:auto!important;text-decoration:none!important}slot[name=footer]::slotted(a:focus),slot[name=footer]::slotted(a:hover),slot[name=link]::slotted(a:focus),slot[name=link]::slotted(a:hover),slot[name=title]::slotted(a:focus),slot[name=title]::slotted(a:hover){color:var(--sgds-link-color-emphasis)}slot[name=footer]::slotted(a:focus),slot[name=link]::slotted(a:focus),slot[name=title]::slotted(a:focus){outline:0}slot[name=footer]::slotted(a:focus-visible),slot[name=link]::slotted(a:focus-visible),slot[name=title]::slotted(a:focus-visible){box-shadow:var(--sgds-box-shadow-focus)}`;
13562
13562
 
13563
13563
  var css_248z$X = css`.text-primary{color:var(--sgds-primary-rgb)!important}.text-secondary{color:var(--sgds-secondary-rgb)!important}.text-success{color:var(--sgds-success-rgb)!important}.text-info{color:var(--sgds-info-rgb)!important}.text-warning{color:var(--sgds-warning-rgb)!important}.text-danger{color:var(--sgds-danger-rgb)!important}.text-light{color:var(--sgds-light-rgb)!important}.text-dark{color:var(--sgds-dark-rgb)!important}.text-muted{color:var(--sgds-secondary-color)!important}`;
13564
13564
 
@@ -13573,7 +13573,8 @@
13573
13573
  class CardElement extends SgdsElement {
13574
13574
  constructor() {
13575
13575
  super(...arguments);
13576
- /** Extends the link passed in slot[name="link"] to the entire card */
13576
+ /** Extends the link passed in the `link` slot to the entire card. Prefer using the `footer` slot for links going forward. The `link` slot is still supported for backward compatibility, but is **deprecated** and will be removed in a future release.
13577
+ */
13577
13578
  this.stretchedLink = false;
13578
13579
  /** Disables the card */
13579
13580
  this.disabled = false;
@@ -13597,14 +13598,6 @@
13597
13598
  if (childNodes.length > 1) {
13598
13599
  return console.error("Multiple elements passed into SgdsCard's link slot");
13599
13600
  }
13600
- if (!this.stretchedLink)
13601
- return;
13602
- if (childNodes[0] instanceof HTMLAnchorElement || childNodes[0] instanceof SgdsLink) {
13603
- const hyperlink = (childNodes[0].querySelector("a") || childNodes[0]);
13604
- this.card.setAttribute("href", hyperlink.href);
13605
- const linkSlot = this.shadowRoot.querySelector("slot[name='link']");
13606
- linkSlot.style.display = "none";
13607
- }
13608
13601
  }
13609
13602
  }
13610
13603
  CardElement.styles = [...SgdsElement.styles, css_248z$X, css_248z$W, css_248z$V, css_248z$U, css_248z$T, css_248z$Y];
@@ -13640,7 +13633,9 @@
13640
13633
  * @slot title - The title of the card
13641
13634
  * @slot description - The paragrapher text of the card
13642
13635
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
13643
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
13636
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
13637
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
13638
+ * Legacy slot for anchor elements. Use `footer` instead.
13644
13639
  */
13645
13640
  class SgdsCard extends CardElement {
13646
13641
  constructor() {
@@ -13649,21 +13644,45 @@
13649
13644
  this.imagePosition = "before";
13650
13645
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
13651
13646
  this.imageAdjustment = "default";
13652
- this.hasSlotController = new HasSlotController(this, "image", "icon", "menu", "description");
13647
+ this.hasSlotController = new HasSlotController(this, "image", "icon", "menu");
13648
+ }
13649
+ get linkSlotItems() {
13650
+ if (!this.linkNode || this.linkNode.length === 0)
13651
+ return null;
13652
+ const element = this.linkNode[0];
13653
+ return (element.querySelector("a") || element);
13654
+ }
13655
+ get footerSlotItems() {
13656
+ if (!this.footerNode || this.footerNode.length === 0)
13657
+ return null;
13658
+ const element = this.footerNode[0];
13659
+ return (element.querySelector("a") || element);
13660
+ }
13661
+ firstUpdated() {
13662
+ var _a, _b;
13663
+ if (this.stretchedLink) {
13664
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
13665
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
13666
+ if (footerHref) {
13667
+ this.card.setAttribute("href", footerHref);
13668
+ }
13669
+ else if (linkHref) {
13670
+ this.card.setAttribute("href", linkHref);
13671
+ }
13672
+ }
13653
13673
  }
13654
13674
  handleImgSlotChange(e) {
13655
13675
  const childNodes = e.target.assignedNodes({ flatten: true });
13656
13676
  if (childNodes.length > 1) {
13657
13677
  console.error("Multiple elements passed into SgdsCard's image slot");
13658
13678
  }
13659
- if (this.hasSlotController.test("icon") && this.hasSlotController.test("icon")) {
13679
+ if (this.hasSlotController.test("icon") && this.hasSlotController.test("image")) {
13660
13680
  console.error("Both image and icon slots cannot be used together in SgdsCard");
13661
13681
  }
13662
13682
  }
13663
13683
  render() {
13664
13684
  const tag = this.stretchedLink ? literal `a` : literal `div`;
13665
13685
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
13666
- const hasDescriptionSlot = this.hasSlotController.test("description");
13667
13686
  const hasImageSlot = this.hasSlotController.test("image");
13668
13687
  const hasIconSlot = this.hasSlotController.test("icon");
13669
13688
  const hasMenuSlot = this.hasSlotController.test("menu");
@@ -13678,7 +13697,10 @@
13678
13697
  <div class="card-tinted-bg"></div>
13679
13698
 
13680
13699
  ${hasMenuSlot ? html ` <slot name="menu"></slot> ` : nothing}
13681
- <div class=${classMap({ "card-image": hasImageSlot, "card-media": hasIconSlot || hasUpperSlot })}>
13700
+ <div class=${classMap({
13701
+ "card-image": hasImageSlot,
13702
+ "card-media": hasIconSlot || hasUpperSlot
13703
+ })}>
13682
13704
  <slot name="upper">
13683
13705
  ${hasImageSlot ? html ` <slot name="image" @slotchange=${this.handleImgSlotChange}></slot> ` : nothing}
13684
13706
  ${hasIconSlot ? html ` <slot name="icon"></slot> ` : nothing}
@@ -13693,19 +13715,23 @@
13693
13715
  </div>
13694
13716
  <slot></slot>
13695
13717
  </div>
13696
- ${hasDescriptionSlot
13697
- ? html `<p class="card-text">
13698
- <slot name="description"></slot>
13699
- </p>`
13700
- : nothing}
13718
+ <slot name="description"></slot>
13701
13719
  <slot name="lower"></slot>
13702
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
13720
+ <slot name="footer">
13721
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
13722
+ </slot>
13703
13723
  </div>
13704
13724
  </${tag}>
13705
13725
  `;
13706
13726
  }
13707
13727
  }
13708
13728
  SgdsCard.styles = [...CardElement.styles, css_248z$S];
13729
+ __decorate([
13730
+ queryAssignedElements({ slot: "footer" })
13731
+ ], SgdsCard.prototype, "footerNode", void 0);
13732
+ __decorate([
13733
+ queryAssignedElements({ slot: "link" })
13734
+ ], SgdsCard.prototype, "linkNode", void 0);
13709
13735
  __decorate([
13710
13736
  property({ type: String, reflect: true })
13711
13737
  ], SgdsCard.prototype, "imagePosition", void 0);
@@ -14817,7 +14843,10 @@
14817
14843
  * @slot icon - slot for form control icon to be displayed on the right of the input box.
14818
14844
  *
14819
14845
  * @event sgds-select - Emitted when the combo box's selected value changes.
14846
+ * @event sgds-change - Emitted when the combo box's value changes.
14820
14847
  * @event sgds-input - Emitted when user input is received and its value changes.
14848
+ * @event sgds-focus - Emitted when user input is focused.
14849
+ * @event sgds-blur - Emitted when user input is blurred.
14821
14850
  */
14822
14851
  class SgdsComboBox extends SelectElement {
14823
14852
  constructor() {
@@ -14954,8 +14983,12 @@
14954
14983
  }
14955
14984
  }
14956
14985
  }
14986
+ _handleFocus() {
14987
+ this.emit("sgds-focus");
14988
+ }
14957
14989
  async _handleInputBlur(e) {
14958
14990
  e.preventDefault();
14991
+ this.emit("sgds-blur");
14959
14992
  if (this.multiSelect) {
14960
14993
  const displayValueMatchedSelectedItems = this.selectedItems.filter(({ label }) => this.displayValue === label);
14961
14994
  if (displayValueMatchedSelectedItems.length <= 0) {
@@ -15057,6 +15090,7 @@
15057
15090
  .value=${this.displayValue}
15058
15091
  @input=${this._handleInputChange}
15059
15092
  @blur=${this._handleInputBlur}
15093
+ @focus=${this._handleFocus}
15060
15094
  aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
15061
15095
  aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
15062
15096
  ? `${this._controlId}-invalid`
@@ -26277,13 +26311,7 @@
26277
26311
  }
26278
26312
  }
26279
26313
 
26280
- const LG_BREAKPOINT = 1024;
26281
- const MD_BREAKPOINT = 768;
26282
- const SM_BREAKPOINT = 512;
26283
- const XL_BREAKPOINT = 1280;
26284
- const XXL_BREAKPOINT = 1440;
26285
-
26286
- var css_248z$z = css`:host{display:contents}:host([size=md]) .drawer-end .drawer-panel,:host([size=md]) .drawer-start .drawer-panel{max-width:var(--sgds-dimension-768)}:host([size=md]) .drawer-bottom .drawer-panel,:host([size=md]) .drawer-top .drawer-panel{max-height:var(--sgds-dimension-768)}:host([size=lg]) .drawer-end .drawer-panel,:host([size=lg]) .drawer-start .drawer-panel{max-width:var(--sgds-dimension-1024)}:host([size=lg]) .drawer-bottom .drawer-panel,:host([size=lg]) .drawer-top .drawer-panel{max-height:var(--sgds-dimension-1024)}.drawer{height:100%;inset-inline-start:0;overflow:hidden;pointer-events:none;top:0;width:100%}.drawer-fixed{position:fixed;z-index:1100}.drawer-panel{background-color:var(--sgds-surface-default);display:flex;flex-direction:column;gap:var(--sgds-gap-2-xl);overflow:auto;padding:var(--sgds-padding-lg);pointer-events:all;position:absolute;z-index:2}.drawer-panel:focus{outline:none}.drawer-top .drawer-panel{bottom:auto;height:90%;inset-inline-end:auto;inset-inline-start:0;max-height:var(--sgds-dimension-512);top:0;width:100%}.drawer-end .drawer-panel{bottom:auto;height:100%;inset-inline-end:0;inset-inline-start:auto;max-width:var(--sgds-dimension-512);top:0;width:90%}.drawer-bottom .drawer-panel{bottom:0;height:90%;inset-inline-end:auto;inset-inline-start:0;max-height:var(--sgds-dimension-512);top:auto;width:100%}.drawer-start .drawer-panel{bottom:auto;height:100%;inset-inline-end:auto;inset-inline-start:0;max-width:var(--sgds-dimension-512);top:0;width:90%}.drawer-header{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}slot[name=title]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-6:var(--sgds-font-size-4);--sgds-font-size-7:var(--sgds-font-size-4);color:var(--sgds-color-default)!important;font-size:var(--sgds-font-size-6,var(--sgds-font-size-4));margin-bottom:var(--sgds-margin-2-xs,var(--sgds-margin-none))}slot[name=description]::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none);color:var(--sgds-color-subtle);margin-bottom:var(--sgds-paragraph-spacing-xl,var(--sgds-margin-none))}slot[name=footer]::slotted(*){box-shadow:0 -2px 2px 0 hsla(0,0%,5%,.08);margin:var(--sgds-margin-none) calc(var(--sgds-margin-xs)*-1);padding:var(--sgds-padding-lg) var(--sgds-padding-lg) var(--sgds-padding-none)}sgds-close-button{position:absolute;right:8px;top:8px}.drawer-body{-webkit-overflow-scrolling:touch;display:block;flex:1 1 auto;overflow:auto}.drawer-overlay{background-color:var(--sgds-bg-overlay);bottom:0;display:block;left:0;pointer-events:all;position:fixed;right:0;top:0}.drawer-contained .drawer-overlay{display:none}@media screen and (min-width:512px){.drawer-panel{padding:var(--sgds-padding-2-xl)}slot[name=footer]::slotted(*){margin:var(--sgds-margin-none) calc(var(--sgds-margin-md)*-1);padding:var(--sgds-padding-2-xl) var(--sgds-padding-2-xl) var(--sgds-padding-none)}}`;
26314
+ var css_248z$z = css`:host{display:contents}:host([size=md]) .drawer-end .drawer-panel,:host([size=md]) .drawer-start .drawer-panel{max-width:var(--sgds-dimension-768)}:host([size=md]) .drawer-bottom .drawer-panel,:host([size=md]) .drawer-top .drawer-panel{max-height:var(--sgds-dimension-768)}:host([size=lg]) .drawer-end .drawer-panel,:host([size=lg]) .drawer-start .drawer-panel{max-width:var(--sgds-dimension-1024)}:host([size=lg]) .drawer-bottom .drawer-panel,:host([size=lg]) .drawer-top .drawer-panel{max-height:var(--sgds-dimension-1024)}.drawer{height:100%;inset-inline-start:0;overflow:hidden;pointer-events:none;top:0;width:100%}.drawer-fixed{position:fixed;z-index:1100}.drawer-panel{background-color:var(--sgds-surface-default);display:flex;flex-direction:column;gap:var(--sgds-gap-2-xl);overflow:auto;padding:var(--sgds-padding-lg);pointer-events:all;position:absolute;z-index:2}.drawer-panel:focus{outline:none}.drawer-top .drawer-panel{bottom:auto;height:80%;inset-inline-end:auto;inset-inline-start:0;max-height:var(--sgds-dimension-512);top:0;width:100%}.drawer-end .drawer-panel{bottom:auto;height:100%;inset-inline-end:0;inset-inline-start:auto;max-width:var(--sgds-dimension-512);top:0;width:80%}.drawer-bottom .drawer-panel{bottom:0;height:80%;inset-inline-end:auto;inset-inline-start:0;max-height:var(--sgds-dimension-512);top:auto;width:100%}.drawer-start .drawer-panel{bottom:auto;height:100%;inset-inline-end:auto;inset-inline-start:0;max-width:var(--sgds-dimension-512);top:0;width:80%}.drawer-header{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}slot[name=title]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-6:var(--sgds-font-size-4);--sgds-font-size-7:var(--sgds-font-size-4);color:var(--sgds-color-default)!important;font-size:var(--sgds-font-size-6,var(--sgds-font-size-4));margin-bottom:var(--sgds-margin-2-xs,var(--sgds-margin-none))}slot[name=description]::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none);color:var(--sgds-color-subtle);margin-bottom:var(--sgds-paragraph-spacing-xl,var(--sgds-margin-none))}slot[name=footer]::slotted(*){box-shadow:0 -2px 2px 0 hsla(0,0%,5%,.08);margin:var(--sgds-margin-none) calc(var(--sgds-margin-xs)*-1);padding:var(--sgds-padding-lg) var(--sgds-padding-lg) var(--sgds-padding-none)}sgds-close-button{position:absolute;right:8px;top:8px}.drawer-body{-webkit-overflow-scrolling:touch;display:block;flex:1 1 auto;overflow:auto}.drawer-overlay{background-color:var(--sgds-bg-overlay);bottom:0;display:block;left:0;pointer-events:all;position:fixed;right:0;top:0}.drawer-contained .drawer-overlay{display:none}@media screen and (min-width:512px){.drawer-panel{padding:var(--sgds-padding-2-xl)}slot[name=footer]::slotted(*){margin:var(--sgds-margin-none) calc(var(--sgds-margin-md)*-1);padding:var(--sgds-padding-2-xl) var(--sgds-padding-2-xl) var(--sgds-padding-none)}}`;
26287
26315
 
26288
26316
  /**
26289
26317
  * @summary Drawers slide in from a container to expose additional options and information.
@@ -26327,10 +26355,6 @@
26327
26355
  * its parent element, set this attribute and add `position: relative` to the parent.
26328
26356
  */
26329
26357
  this.contained = false;
26330
- this._handleResize = async () => {
26331
- const replacePlacement = this.drawerPlacement === "top" ? "top" : "bottom";
26332
- this.placement = window.innerWidth < SM_BREAKPOINT ? replacePlacement : this.drawerPlacement;
26333
- };
26334
26358
  this.handleDocumentKeyDown = (event) => {
26335
26359
  if (this.open && !this.contained && event.key === "Escape") {
26336
26360
  event.stopPropagation();
@@ -26339,24 +26363,16 @@
26339
26363
  };
26340
26364
  }
26341
26365
  firstUpdated() {
26342
- this.drawer.hidden = !this.open;
26343
26366
  if (this.open) {
26344
26367
  this.addOpenListeners();
26345
26368
  if (!this.contained) {
26346
26369
  lockBodyScrolling(this);
26347
26370
  }
26348
26371
  }
26349
- this._handleResize();
26350
- }
26351
- connectedCallback() {
26352
- super.connectedCallback();
26353
- this.drawerPlacement = this.placement;
26354
- window.addEventListener("resize", this._handleResize);
26355
26372
  }
26356
26373
  disconnectedCallback() {
26357
26374
  super.disconnectedCallback();
26358
26375
  unlockBodyScrolling(this);
26359
- window.removeEventListener("resize", this._handleResize);
26360
26376
  }
26361
26377
  uppercaseFirstLetter(string) {
26362
26378
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -26484,11 +26500,12 @@
26484
26500
  return waitForEvent(this, "sgds-after-hide");
26485
26501
  }
26486
26502
  render() {
26503
+ const isHydrated = this.hasUpdated;
26504
+ const shouldHide = !this.open && !isHydrated;
26487
26505
  return html$1 `
26488
26506
  <div
26489
26507
  class=${classMap({
26490
26508
  drawer: true,
26491
- "drawer-open": this.open,
26492
26509
  "drawer-top": this.placement === "top",
26493
26510
  "drawer-end": this.placement === "end",
26494
26511
  "drawer-bottom": this.placement === "bottom",
@@ -26496,6 +26513,7 @@
26496
26513
  "drawer-contained": this.contained,
26497
26514
  "drawer-fixed": !this.contained
26498
26515
  })}
26516
+ ?hidden=${shouldHide}
26499
26517
  >
26500
26518
  <div class="drawer-overlay" @click=${() => this.requestClose("overlay")} tabindex="-1"></div>
26501
26519
 
@@ -26548,9 +26566,6 @@
26548
26566
  __decorate([
26549
26567
  property({ type: Boolean, reflect: true })
26550
26568
  ], SgdsDrawer.prototype, "contained", void 0);
26551
- __decorate([
26552
- state()
26553
- ], SgdsDrawer.prototype, "drawerPlacement", void 0);
26554
26569
  __decorate([
26555
26570
  watch("open", { waitUntilFirstUpdate: true })
26556
26571
  ], SgdsDrawer.prototype, "handleOpenChange", null);
@@ -26978,16 +26993,30 @@
26978
26993
  * @slot title - The title of the card
26979
26994
  * @slot description - The paragrapher text of the card
26980
26995
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
26981
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
26996
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
26997
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
26998
+ * Legacy slot for anchor elements. Use `footer` instead.
26982
26999
  */
26983
27000
  class SgdsIconCard extends CardElement {
26984
27001
  constructor() {
26985
27002
  super(...arguments);
26986
27003
  /** Removes the card's internal padding when set to true. */
26987
27004
  this.noPadding = false;
26988
- this.hasSlotController = new HasSlotController(this, "description");
27005
+ }
27006
+ get linkSlotItems() {
27007
+ if (!this.linkNode || this.linkNode.length === 0)
27008
+ return null;
27009
+ const element = this.linkNode[0];
27010
+ return (element.querySelector("a") || element);
27011
+ }
27012
+ get footerSlotItems() {
27013
+ if (!this.footerNode || this.footerNode.length === 0)
27014
+ return null;
27015
+ const element = this.footerNode[0];
27016
+ return (element.querySelector("a") || element);
26989
27017
  }
26990
27018
  firstUpdated() {
27019
+ var _a, _b;
26991
27020
  if (this._iconNode.length === 0) {
26992
27021
  if ((this.orientation === "vertical" && this._upperNode.length === 0) || this.orientation === "horizontal") {
26993
27022
  const media = this.shadowRoot.querySelector(".card-media");
@@ -26997,14 +27026,24 @@
26997
27026
  body.style.padding = "0px";
26998
27027
  }
26999
27028
  }
27029
+ if (this.stretchedLink) {
27030
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
27031
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
27032
+ if (footerHref) {
27033
+ this.card.setAttribute("href", footerHref);
27034
+ }
27035
+ else if (linkHref) {
27036
+ this.card.setAttribute("href", linkHref);
27037
+ }
27038
+ }
27000
27039
  }
27001
27040
  render() {
27002
27041
  const tag = this.stretchedLink ? literal `a` : literal `div`;
27003
27042
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
27004
- const hasDescriptionSlot = this.hasSlotController.test("description");
27005
27043
  return html `
27006
27044
  <${tag}
27007
- class="card ${classMap({
27045
+ class="${classMap({
27046
+ card: true,
27008
27047
  disabled: this.disabled
27009
27048
  })}"
27010
27049
  tabindex=${cardTabIndex}
@@ -27023,13 +27062,11 @@
27023
27062
  </div>
27024
27063
  <slot></slot>
27025
27064
  </div>
27026
- ${hasDescriptionSlot
27027
- ? html `<p class="card-text">
27028
- <slot name="description"></slot>
27029
- </p>`
27030
- : nothing}
27065
+ <slot name="description"></slot>
27031
27066
  <slot name="lower"></slot>
27032
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
27067
+ <slot name="footer">
27068
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
27069
+ </slot>
27033
27070
  </div>
27034
27071
  </${tag}>
27035
27072
  `;
@@ -27042,6 +27079,12 @@
27042
27079
  __decorate([
27043
27080
  queryAssignedNodes({ slot: "upper", flatten: true })
27044
27081
  ], SgdsIconCard.prototype, "_upperNode", void 0);
27082
+ __decorate([
27083
+ queryAssignedElements({ slot: "footer" })
27084
+ ], SgdsIconCard.prototype, "footerNode", void 0);
27085
+ __decorate([
27086
+ queryAssignedElements({ slot: "link" })
27087
+ ], SgdsIconCard.prototype, "linkNode", void 0);
27045
27088
  __decorate([
27046
27089
  property({ type: Boolean, reflect: true })
27047
27090
  ], SgdsIconCard.prototype, "noPadding", void 0);
@@ -27090,7 +27133,9 @@
27090
27133
  * @slot title - The title of the card
27091
27134
  * @slot description - The paragrapher text of the card
27092
27135
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
27093
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
27136
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
27137
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
27138
+ * Legacy slot for anchor elements. Use `footer` instead.
27094
27139
  */
27095
27140
  class SgdsImageCard extends CardElement {
27096
27141
  constructor() {
@@ -27101,9 +27146,21 @@
27101
27146
  this.imagePosition = "before";
27102
27147
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
27103
27148
  this.imageAdjustment = "default";
27104
- this.hasSlotController = new HasSlotController(this, "description");
27149
+ }
27150
+ get linkSlotItems() {
27151
+ if (!this.linkNode || this.linkNode.length === 0)
27152
+ return null;
27153
+ const element = this.linkNode[0];
27154
+ return (element.querySelector("a") || element);
27155
+ }
27156
+ get footerSlotItems() {
27157
+ if (!this.footerNode || this.footerNode.length === 0)
27158
+ return null;
27159
+ const element = this.footerNode[0];
27160
+ return (element.querySelector("a") || element);
27105
27161
  }
27106
27162
  firstUpdated() {
27163
+ var _a, _b;
27107
27164
  if (this._imageNode.length === 0) {
27108
27165
  const image = this.shadowRoot.querySelector(".card-image");
27109
27166
  const body = this.shadowRoot.querySelector(".card-body");
@@ -27111,6 +27168,16 @@
27111
27168
  if (this.noPadding)
27112
27169
  body.style.padding = "0px";
27113
27170
  }
27171
+ if (this.stretchedLink) {
27172
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
27173
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
27174
+ if (footerHref) {
27175
+ this.card.setAttribute("href", footerHref);
27176
+ }
27177
+ else if (linkHref) {
27178
+ this.card.setAttribute("href", linkHref);
27179
+ }
27180
+ }
27114
27181
  }
27115
27182
  handleImgSlotChange(e) {
27116
27183
  const childNodes = e.target.assignedNodes({ flatten: true });
@@ -27121,7 +27188,6 @@
27121
27188
  render() {
27122
27189
  const tag = this.stretchedLink ? literal `a` : literal `div`;
27123
27190
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
27124
- const hasDescriptionSlot = this.hasSlotController.test("description");
27125
27191
  return html `
27126
27192
  <${tag}
27127
27193
  class="card ${classMap({
@@ -27144,13 +27210,11 @@
27144
27210
  </div>
27145
27211
  <slot></slot>
27146
27212
  </div>
27147
- ${hasDescriptionSlot
27148
- ? html `<p class="card-text">
27149
- <slot name="description"></slot>
27150
- </p>`
27151
- : nothing}
27213
+ <slot name="description"></slot>
27152
27214
  <slot name="lower"></slot>
27153
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
27215
+ <slot name="footer">
27216
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
27217
+ </slot>
27154
27218
  </div>
27155
27219
  </${tag}>
27156
27220
  `;
@@ -27160,6 +27224,12 @@
27160
27224
  __decorate([
27161
27225
  queryAssignedNodes({ slot: "image", flatten: true })
27162
27226
  ], SgdsImageCard.prototype, "_imageNode", void 0);
27227
+ __decorate([
27228
+ queryAssignedElements({ slot: "footer" })
27229
+ ], SgdsImageCard.prototype, "footerNode", void 0);
27230
+ __decorate([
27231
+ queryAssignedElements({ slot: "link" })
27232
+ ], SgdsImageCard.prototype, "linkNode", void 0);
27163
27233
  __decorate([
27164
27234
  property({ type: Boolean, reflect: true })
27165
27235
  ], SgdsImageCard.prototype, "noPadding", void 0);
@@ -27653,7 +27723,14 @@
27653
27723
  });
27654
27724
  }
27655
27725
 
27656
- const MainnavContext = createContext("mainnav-context");
27726
+ const LG_BREAKPOINT = 1024;
27727
+ const MD_BREAKPOINT = 768;
27728
+ const SM_BREAKPOINT = 512;
27729
+ const XL_BREAKPOINT = 1280;
27730
+ const XXL_BREAKPOINT = 1440;
27731
+
27732
+ const MainnavBreakpointContext = createContext("mainnav-context");
27733
+ const MainnavExpandedContext = createContext("mainnav-expanded-context");
27657
27734
 
27658
27735
  var css_248z$t = css`:host{z-index:1200}nav{background-color:var(--sgds-surface-default);box-shadow:0 2px 2px 0 hsla(0,0%,5%,.08)}.navbar{align-items:stretch;display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xs);justify-content:space-between;margin:auto;max-width:var(--sgds-mainnav-max-width);min-height:80px;padding:0 var(--sgds-mainnav-padding-x);position:relative;width:100%}@media screen and (max-width:768px){.navbar{padding:0 var(--sgds-mainnav-mobile-padding-x)}}.navbar-brand{align-items:center;display:flex;text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:focus-visible{outline:0}.navbar-brand:focus-visible{box-shadow:var(--sgds-box-shadow-focus)}.navbar-nav{display:flex;flex-direction:column;height:100%;margin-bottom:0;margin-top:0;width:100%}nav>.navbar-body{background-color:var(--sgds-surface-default);border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);bottom:0;box-shadow:0 2px 2px 0 hsla(0,0%,5%,.08);padding:var(--sgds-padding-md) 0;position:absolute;transition:transform .2s ease-in-out;width:100%;z-index:2000}nav>.navbar-body slot::slotted(:not(sgds-mainnav-item):not(sgds-mainnav-dropdown)){padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}@media screen and (max-width:768px){nav>.navbar-body slot::slotted(:not(sgds-mainnav-item):not(sgds-mainnav-dropdown)){padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{align-self:center}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-nav-scroll{overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:1024px){.navbar-expand-lg{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1280px){.navbar-expand-xl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--mainnav-nav-link-padding-x);padding-right:var(--mainnav-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1440px){.navbar-expand-xxl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}slot[name=non-collapsible]{align-items:center;display:flex;gap:var(--sgds-spacer-4);margin-left:auto}.slot-end{align-items:stretch;display:flex;gap:var(--sgds-gap-xs);margin-left:auto}.slot-end::slotted(:not([name$=-mainnav-item]):not([name$=-mainnav-dropdown])){align-self:center}`;
27659
27736
 
@@ -27684,6 +27761,10 @@
27684
27761
  constructor() {
27685
27762
  super();
27686
27763
  this._breakpointReached = false;
27764
+ /** Indicates if mobile menu is open or closed */
27765
+ this.expanded = false;
27766
+ /** Denotes the transition state of mobile mainnav menu opening */
27767
+ this.expanding = false;
27687
27768
  /** The href link for brand logo */
27688
27769
  this.brandHref = "";
27689
27770
  this.collapseId = genId("mainnav", "collapse");
@@ -27691,8 +27772,6 @@
27691
27772
  this.expand = "lg";
27692
27773
  /** @internal */
27693
27774
  this.breakpointReached = false;
27694
- /** @internal */
27695
- this.expanded = false;
27696
27775
  window.addEventListener("resize", () => {
27697
27776
  const newBreakpointReachedValue = window.innerWidth < SIZES[this.expand];
27698
27777
  if (newBreakpointReachedValue !== this.breakpointReached) {
@@ -27700,7 +27779,8 @@
27700
27779
  }
27701
27780
  else {
27702
27781
  this.body ? (this.body.hidden = true) : null;
27703
- this.expanded = false;
27782
+ // this.expanded = false;
27783
+ this.expanding = false;
27704
27784
  }
27705
27785
  if (newBreakpointReachedValue) {
27706
27786
  this._handleMobileNav();
@@ -27774,6 +27854,7 @@
27774
27854
  async _animateToShow() {
27775
27855
  const sgdsShow = this.emit("sgds-show", { cancelable: true });
27776
27856
  if (sgdsShow.defaultPrevented) {
27857
+ this.expanding = false;
27777
27858
  this.expanded = false;
27778
27859
  return;
27779
27860
  }
@@ -27787,6 +27868,7 @@
27787
27868
  async _animateToHide() {
27788
27869
  const slHide = this.emit("sgds-hide", { cancelable: true });
27789
27870
  if (slHide.defaultPrevented) {
27871
+ this.expanding = false;
27790
27872
  this.expanded = true;
27791
27873
  return;
27792
27874
  }
@@ -27798,14 +27880,16 @@
27798
27880
  this.emit("sgds-after-hide");
27799
27881
  }
27800
27882
  async handleOpenChange() {
27801
- if (this.expanded) {
27883
+ if (this.expanding) {
27802
27884
  // Show
27803
- this._animateToShow();
27885
+ await this._animateToShow();
27886
+ this.expanded = true;
27804
27887
  }
27805
27888
  else {
27806
27889
  this.header.focus();
27807
27890
  // Hide
27808
- this._animateToHide();
27891
+ await this._animateToHide();
27892
+ this.expanded = false;
27809
27893
  }
27810
27894
  }
27811
27895
  /** Shows the menu. For when mainnav is in the collapsed form */
@@ -27813,7 +27897,7 @@
27813
27897
  if (this.expanded) {
27814
27898
  return;
27815
27899
  }
27816
- this.expanded = true;
27900
+ this.expanding = true;
27817
27901
  return waitForEvent(this, "sgds-after-show");
27818
27902
  }
27819
27903
  /** Hide the menu. For when mainnav is in the collapsed form */
@@ -27821,7 +27905,7 @@
27821
27905
  if (!this.expanded) {
27822
27906
  return;
27823
27907
  }
27824
- this.expanded = false;
27908
+ this.expanding = false;
27825
27909
  document.querySelector("body").style.removeProperty("overflow");
27826
27910
  return waitForEvent(this, "sgds-after-hide");
27827
27911
  }
@@ -27882,9 +27966,16 @@
27882
27966
  "sgds-icon-button": SgdsIconButton
27883
27967
  };
27884
27968
  __decorate([
27885
- provide({ context: MainnavContext }),
27969
+ provide({ context: MainnavBreakpointContext }),
27886
27970
  state()
27887
27971
  ], SgdsMainnav.prototype, "_breakpointReached", void 0);
27972
+ __decorate([
27973
+ provide({ context: MainnavExpandedContext }),
27974
+ state()
27975
+ ], SgdsMainnav.prototype, "expanded", void 0);
27976
+ __decorate([
27977
+ state()
27978
+ ], SgdsMainnav.prototype, "expanding", void 0);
27888
27979
  __decorate([
27889
27980
  query("nav")
27890
27981
  ], SgdsMainnav.prototype, "nav", void 0);
@@ -27912,9 +28003,6 @@
27912
28003
  __decorate([
27913
28004
  state()
27914
28005
  ], SgdsMainnav.prototype, "breakpointReached", void 0);
27915
- __decorate([
27916
- state()
27917
- ], SgdsMainnav.prototype, "expanded", void 0);
27918
28006
  __decorate([
27919
28007
  queryAssignedElements()
27920
28008
  ], SgdsMainnav.prototype, "defaultNodes", void 0);
@@ -27922,7 +28010,7 @@
27922
28010
  queryAssignedElements({ slot: "end" })
27923
28011
  ], SgdsMainnav.prototype, "endNodes", void 0);
27924
28012
  __decorate([
27925
- watch("expanded", { waitUntilFirstUpdate: true })
28013
+ watch("expanding", { waitUntilFirstUpdate: true })
27926
28014
  ], SgdsMainnav.prototype, "handleOpenChange", null);
27927
28015
  setDefaultAnimation("mainnav.show", {
27928
28016
  keyframes: [
@@ -27951,6 +28039,7 @@
27951
28039
  class SgdsMainnavDropdown extends SgdsElement {
27952
28040
  constructor() {
27953
28041
  super(...arguments);
28042
+ this._breakpointReached = true;
27954
28043
  /** @internal Forwards value to id attribute of toggle button of Dropdown. An unique id generated by default */
27955
28044
  this.togglerId = genId("dropdown", "button");
27956
28045
  /** When true, applies active styles on the dropdown button */
@@ -27962,34 +28051,6 @@
27962
28051
  get defaultSlotItems() {
27963
28052
  return [...(this.defaultNodes || [])].filter((node) => typeof node.tagName !== "undefined");
27964
28053
  }
27965
- connectedCallback() {
27966
- super.connectedCallback();
27967
- document.addEventListener("sgds-after-hide", (e) => {
27968
- const target = e.target;
27969
- const mainnav = target.closest("sgds-mainnav");
27970
- if (mainnav) {
27971
- this._resetDropdownMenu();
27972
- this._hideDropdownMenuItems();
27973
- }
27974
- });
27975
- }
27976
- disconnectedCallback() {
27977
- super.disconnectedCallback();
27978
- // Clean up the event listener when the element is removed from the DOM
27979
- document.removeEventListener("sgds-after-hide", () => {
27980
- this._resetDropdownMenu();
27981
- this._hideDropdownMenuItems();
27982
- });
27983
- }
27984
- willUpdate(changedProperties) {
27985
- super.willUpdate(changedProperties);
27986
- if (!this.shadowRoot) {
27987
- return;
27988
- }
27989
- if (this._breakpointReached) {
27990
- this.shadowRoot.adoptedStyleSheets = [css_248z$14.styleSheet, css_248z$s.styleSheet];
27991
- }
27992
- }
27993
28054
  updated() {
27994
28055
  if (this._breakpointReached) {
27995
28056
  this._copyTextToMenu();
@@ -28133,12 +28194,9 @@
28133
28194
  }
28134
28195
  }
28135
28196
  _closeMenu() {
28136
- // 200ms delay as the transform transition is set to this timing
28137
28197
  this._resetDropdownMenu();
28138
- setTimeout(() => {
28139
- this._hideDropdownMenuItems();
28140
- this.navLink.focus();
28141
- }, 200);
28198
+ this._hideDropdownMenuItems();
28199
+ this.navLink.focus();
28142
28200
  }
28143
28201
  render() {
28144
28202
  const mobileView = html$1 `
@@ -28204,9 +28262,13 @@
28204
28262
  "sgds-icon": SgdsIcon
28205
28263
  };
28206
28264
  __decorate([
28207
- consume({ context: MainnavContext, subscribe: true }),
28265
+ consume({ context: MainnavBreakpointContext, subscribe: true }),
28208
28266
  state()
28209
28267
  ], SgdsMainnavDropdown.prototype, "_breakpointReached", void 0);
28268
+ __decorate([
28269
+ consume({ context: MainnavExpandedContext, subscribe: true }),
28270
+ state()
28271
+ ], SgdsMainnavDropdown.prototype, "expanded", void 0);
28210
28272
  __decorate([
28211
28273
  query(".nav-link")
28212
28274
  ], SgdsMainnavDropdown.prototype, "navLink", void 0);
@@ -28632,7 +28694,7 @@
28632
28694
  }
28633
28695
  }
28634
28696
 
28635
- var css_248z$o = css`:host(:not([size=fullscreen])) .modal-panel{background-color:var(--sgds-surface-default);max-width:var(--sgds-dimension-640);padding:var(--sgds-padding-xl)}:host([size=sm]) .modal-panel{max-width:var(--sgds-dimension-480)}:host([size=md]) .modal-panel{max-width:var(--sgds-dimension-640)}:host([size=lg]) .modal-panel{max-width:var(--sgds-dimension-800)}:host([size=fullscreen]) .modal-overlay{background-color:var(--sgds-surface-default)}.modal{align-items:start;bottom:0;display:flex;font-family:var(--sgds-body-font-family);justify-content:center;left:0;position:fixed;right:0;top:0;z-index:105500}.modal-panel{border-radius:var(--sgds-border-radius-md);display:flex;flex-direction:column;gap:var(--sgds-gap-2-xl);margin:var(--sgds-margin-sm) var(--sgds-margin-xs);max-height:calc(100% - var(--sgds-margin-sm) - var(--sgds-margin-sm));position:relative;width:100%}.modal-panel:focus{outline:none}.modal-content{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--sgds-gap-2-xl);min-height:0;position:relative}.modal-header__close{position:absolute;right:calc(var(--sgds-padding-md)*-1);top:calc(var(--sgds-padding-md)*-1)}@media screen and (min-width:512px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-sm)}}@media screen and (min-width:768px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-md);max-height:calc(100% - var(--sgds-margin-md) - var(--sgds-margin-md))}}@media screen and (min-width:1024px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-xl) var(--sgds-margin-xs);max-height:calc(100% - var(--sgds-margin-xl) - var(--sgds-margin-xl));max-width:var(--sgds-dimension-896)}}@media screen and (min-width:1280px){:host([size=fullscreen]) .modal-panel{max-width:var(--sgds-dimension-1176)}}@media screen and (min-width:1440px){:host([size=fullscreen]) .modal-panel{max-width:var(--sgds-dimension-1320)}}.modal.show .modal-panel{opacity:1;transform:none}.modal-header{display:flex;flex:0 0 auto;flex-direction:row;justify-content:space-between;max-width:var(--sgds-dimension-872)}.modal-header__title-description{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}:host([size=fullscreen]) .modal-header__title-description{gap:var(--sgds-gap-md)}slot[name=title]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-6:var(--sgds-font-size-4);align-items:center;display:flex;flex:1 1 auto;font-size:var(--sgds-font-size-6,--sgds-font-size-4);gap:1rem;line-height:var(--sgds-line-height-heading);margin:var(--sgds-margin-none,var(--sgds-margin-xs,--sgds-margin-2-xs))}slot[name=description]::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none);color:var(--sgds-color-subtle);line-height:var(--sgds-line-height-body);margin:var(--sgds-margin-none,--sgds-paragraph-spacing-xl)}.modal-body{-webkit-overflow-scrolling:touch;flex:1 1 auto;overflow:auto}.modal-body slot::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none)}.modal-footer{display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--sgds-gap-md);justify-content:flex-end;padding-top:var(--sgds-padding-md)}.modal:not(.has-footer) .modal-footer{display:none}.modal-overlay{background-color:var(--sgds-bg-overlay);bottom:0;left:0;position:fixed;right:0;top:0}[hidden]{display:none}`;
28697
+ var css_248z$o = css`:host(:not([size=fullscreen])) .modal-panel{background-color:var(--sgds-surface-default);max-width:var(--sgds-dimension-640);padding:var(--sgds-padding-xl)}:host([size=sm]) .modal-panel{max-width:var(--sgds-dimension-480)}:host([size=md]) .modal-panel{max-width:var(--sgds-dimension-640)}:host([size=lg]) .modal-panel{max-width:var(--sgds-dimension-800)}:host([size=fullscreen]) .modal-overlay{background-color:var(--sgds-surface-default)}.modal{align-items:start;bottom:0;display:flex;font-family:var(--sgds-body-font-family);justify-content:center;left:0;position:fixed;right:0;top:0;z-index:105500}.modal-panel{border-radius:var(--sgds-border-radius-md);display:flex;flex-direction:column;gap:var(--sgds-gap-2-xl);margin:var(--sgds-margin-sm) var(--sgds-margin-xs);max-height:calc(100% - var(--sgds-margin-sm) - var(--sgds-margin-sm));width:100%;z-index:2}.modal-panel:focus{outline:none}.modal-content{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--sgds-gap-2-xl);min-height:0}.modal-header__close{position:relative;right:calc(var(--sgds-padding-md)*-1);top:calc(var(--sgds-padding-md)*-1)}@media screen and (min-width:512px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-sm)}}@media screen and (min-width:768px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-md);max-height:calc(100% - var(--sgds-margin-md) - var(--sgds-margin-md))}}@media screen and (min-width:1024px){:host([size=fullscreen]) .modal-panel{margin:var(--sgds-margin-xl) var(--sgds-margin-xs);max-height:calc(100% - var(--sgds-margin-xl) - var(--sgds-margin-xl));max-width:var(--sgds-dimension-896)}}@media screen and (min-width:1280px){:host([size=fullscreen]) .modal-panel{max-width:var(--sgds-dimension-1176)}}@media screen and (min-width:1440px){:host([size=fullscreen]) .modal-panel{max-width:var(--sgds-dimension-1320)}}.modal.show .modal-panel{opacity:1;transform:none}.modal-header{display:flex;flex:0 0 auto;flex-direction:row;justify-content:space-between;max-width:var(--sgds-dimension-872)}.modal-header__title-description{display:flex;flex-direction:column;gap:var(--sgds-gap-sm)}:host([size=fullscreen]) .modal-header__title-description{gap:var(--sgds-gap-md)}slot[name=title]::slotted(*){--sgds-margin-2-xs:var(--sgds-margin-none);--sgds-margin-xs:var(--sgds-margin-none);--sgds-font-size-6:var(--sgds-font-size-4);align-items:center;display:flex;flex:1 1 auto;font-size:var(--sgds-font-size-6,--sgds-font-size-4);gap:1rem;line-height:var(--sgds-line-height-heading);margin:var(--sgds-margin-none,var(--sgds-margin-xs,--sgds-margin-2-xs))}slot[name=description]::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none);color:var(--sgds-color-subtle);line-height:var(--sgds-line-height-body);margin:var(--sgds-margin-none,--sgds-paragraph-spacing-xl)}.modal-body{-webkit-overflow-scrolling:touch;flex:1 1 auto;overflow:auto}.modal-body slot::slotted(*){--sgds-paragraph-spacing-xl:var(--sgds-margin-none)}.modal-footer{display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--sgds-gap-md);justify-content:flex-end;padding-top:var(--sgds-padding-md)}.modal:not(.has-footer) .modal-footer{display:none}.modal-overlay{background-color:var(--sgds-bg-overlay);bottom:0;left:0;position:fixed;right:0;top:0}[hidden]{display:none}`;
28636
28698
 
28637
28699
  /**
28638
28700
  * @summary The modal component inform users about a specific task and may contain critical information which users then have to make a decision.
@@ -30089,6 +30151,10 @@
30089
30151
  * @summary Select is used to make one selection from a list through keyboard or mouse actions
30090
30152
  *
30091
30153
  * @event sgds-select - Emitted when an option is selected and the value of select is updated
30154
+ * @event sgds-change - Emitted when the select value changes.
30155
+ * @event sgds-focus - Emitted when user input is focused.
30156
+ * @event sgds-blur - Emitted when user input is blurred.
30157
+ *
30092
30158
  */
30093
30159
  class SgdsSelect extends SelectElement {
30094
30160
  connectedCallback() {
@@ -30113,6 +30179,8 @@
30113
30179
  }
30114
30180
  }
30115
30181
  async _handleValueChange() {
30182
+ // when value change, always emit a change event
30183
+ this.emit("sgds-change");
30116
30184
  if (this.value) {
30117
30185
  this.emit("sgds-select");
30118
30186
  }
@@ -30137,8 +30205,12 @@
30137
30205
  this.displayValue = this.selectedItems[0].label;
30138
30206
  this.hideMenu();
30139
30207
  }
30208
+ _handleFocus() {
30209
+ this.emit("sgds-focus");
30210
+ }
30140
30211
  async _handleInputBlur(e) {
30141
30212
  e.preventDefault();
30213
+ this.emit("sgds-blur");
30142
30214
  if (this.selectedItems.length > 0) {
30143
30215
  this.displayValue = this.selectedItems[0].label;
30144
30216
  }
@@ -30196,6 +30268,7 @@
30196
30268
  ?required=${this.required}
30197
30269
  .value=${this.displayValue}
30198
30270
  @blur=${this._handleInputBlur}
30271
+ @focus=${this._handleFocus}
30199
30272
  aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
30200
30273
  aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
30201
30274
  ? `${this._controlId}-invalid`
@@ -31922,7 +31995,7 @@
31922
31995
  watch("value", { waitUntilFirstUpdate: true })
31923
31996
  ], SgdsTextarea.prototype, "_handleValueChange", null);
31924
31997
 
31925
- var css_248z$2 = css`:host([noPadding]) .card{border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent)}:host(:not([noPadding])) .card:not(.disabled):hover{box-shadow:0 0 1px 0 hsla(0,0%,5%,.12),0 8px 16px 0 hsla(0,0%,5%,.12)}:host([orientation=vertical][noPadding]) .card-body{padding:var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-none)}:host([orientation=vertical][imagePosition=after][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-none)}:host([orientation=horizontal][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-xl)}:host([orientation=horizontal][imagePosition=after][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-none)}:host([tinted]:not([noPadding])) .card-tinted-bg{background-color:var(--sgds-bg-translucent-subtle);opacity:var(--sgds-opacity-50)}:host([orientation][noPadding]) .card-media{padding:var(--sgds-padding-none)}slot[name=thumbnail]::slotted(*){height:64px;max-width:128px;min-width:64px;object-fit:contain;object-position:left}`;
31998
+ var css_248z$2 = css`:host([noPadding]) .card{border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent)}:host(:not([noPadding])) .card:not(.disabled):hover{box-shadow:0 0 1px 0 hsla(0,0%,5%,.12),0 8px 16px 0 hsla(0,0%,5%,.12)}:host([orientation=vertical][noPadding]) .card-body{padding:var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-none)}:host([orientation=vertical][imagePosition=after][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-none)}:host([orientation=horizontal][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-none) var(--sgds-padding-xl)}:host([orientation=horizontal][imagePosition=after][noPadding]) .card-body{padding:var(--sgds-padding-none) var(--sgds-padding-xl) var(--sgds-padding-none) var(--sgds-padding-none)}:host([tinted]:not([noPadding])) .card-tinted-bg{background-color:var(--sgds-bg-translucent-subtle);opacity:var(--sgds-opacity-50)}:host([orientation][noPadding]) .card-media{padding:var(--sgds-padding-none)}slot[name=thumbnail]::slotted(*){height:64px!important;max-width:128px!important;min-width:64px!important;object-fit:contain;object-position:left;width:100%}`;
31926
31999
 
31927
32000
  /**
31928
32001
  * @summary Thumbnail cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
@@ -31933,16 +32006,30 @@
31933
32006
  * @slot title - The title of the card
31934
32007
  * @slot description - The paragrapher text of the card
31935
32008
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
31936
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
32009
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
32010
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
32011
+ * Legacy slot for anchor elements. Use `footer` instead.
31937
32012
  */
31938
32013
  class SgdsThumbnailCard extends CardElement {
31939
32014
  constructor() {
31940
32015
  super(...arguments);
31941
32016
  /** Removes the card's internal padding when set to true. */
31942
32017
  this.noPadding = false;
31943
- this.hasSlotController = new HasSlotController(this, "description");
32018
+ }
32019
+ get linkSlotItems() {
32020
+ if (!this.linkNode || this.linkNode.length === 0)
32021
+ return null;
32022
+ const element = this.linkNode[0];
32023
+ return (element.querySelector("a") || element);
32024
+ }
32025
+ get footerSlotItems() {
32026
+ if (!this.footerNode || this.footerNode.length === 0)
32027
+ return null;
32028
+ const element = this.footerNode[0];
32029
+ return (element.querySelector("a") || element);
31944
32030
  }
31945
32031
  firstUpdated() {
32032
+ var _a, _b;
31946
32033
  if (this._thumbnailNode.length === 0) {
31947
32034
  if ((this.orientation === "vertical" && this._upperNode.length === 0) || this.orientation === "horizontal") {
31948
32035
  const media = this.shadowRoot.querySelector(".card-media");
@@ -31952,11 +32039,20 @@
31952
32039
  body.style.padding = "0px";
31953
32040
  }
31954
32041
  }
32042
+ if (this.stretchedLink) {
32043
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
32044
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
32045
+ if (footerHref) {
32046
+ this.card.setAttribute("href", footerHref);
32047
+ }
32048
+ else if (linkHref) {
32049
+ this.card.setAttribute("href", linkHref);
32050
+ }
32051
+ }
31955
32052
  }
31956
32053
  render() {
31957
32054
  const tag = this.stretchedLink ? literal `a` : literal `div`;
31958
32055
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
31959
- const hasDescriptionSlot = this.hasSlotController.test("description");
31960
32056
  return html `
31961
32057
  <${tag}
31962
32058
  class="card ${classMap({
@@ -31978,13 +32074,11 @@
31978
32074
  </div>
31979
32075
  <slot></slot>
31980
32076
  </div>
31981
- ${hasDescriptionSlot
31982
- ? html `<p class="card-text">
31983
- <slot name="description"></slot>
31984
- </p>`
31985
- : nothing}
32077
+ <slot name="description"></slot>
31986
32078
  <slot name="lower"></slot>
31987
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32079
+ <slot name="footer">
32080
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32081
+ </slot>
31988
32082
  </div>
31989
32083
  </${tag}>
31990
32084
  `;
@@ -31997,6 +32091,12 @@
31997
32091
  __decorate([
31998
32092
  queryAssignedNodes({ slot: "upper", flatten: true })
31999
32093
  ], SgdsThumbnailCard.prototype, "_upperNode", void 0);
32094
+ __decorate([
32095
+ queryAssignedElements({ slot: "footer" })
32096
+ ], SgdsThumbnailCard.prototype, "footerNode", void 0);
32097
+ __decorate([
32098
+ queryAssignedElements({ slot: "link" })
32099
+ ], SgdsThumbnailCard.prototype, "linkNode", void 0);
32000
32100
  __decorate([
32001
32101
  property({ type: Boolean, reflect: true })
32002
32102
  ], SgdsThumbnailCard.prototype, "noPadding", void 0);