@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
package/index.umd.js CHANGED
@@ -4382,7 +4382,7 @@
4382
4382
  });
4383
4383
  }
4384
4384
 
4385
- var css_248z$1k = 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}}`;
4385
+ var css_248z$1k = 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}}`;
4386
4386
 
4387
4387
  /**
4388
4388
  * @cssprop --sgds-{stateColor} - State colors in hexadecimal value
@@ -13575,7 +13575,7 @@
13575
13575
 
13576
13576
  register("sgds-button", SgdsButton);
13577
13577
 
13578
- var css_248z$11 = 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)}`;
13578
+ var css_248z$11 = 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)}`;
13579
13579
 
13580
13580
  var css_248z$10 = 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}`;
13581
13581
 
@@ -13590,7 +13590,8 @@
13590
13590
  class CardElement extends SgdsElement {
13591
13591
  constructor() {
13592
13592
  super(...arguments);
13593
- /** Extends the link passed in slot[name="link"] to the entire card */
13593
+ /** 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.
13594
+ */
13594
13595
  this.stretchedLink = false;
13595
13596
  /** Disables the card */
13596
13597
  this.disabled = false;
@@ -13614,14 +13615,6 @@
13614
13615
  if (childNodes.length > 1) {
13615
13616
  return console.error("Multiple elements passed into SgdsCard's link slot");
13616
13617
  }
13617
- if (!this.stretchedLink)
13618
- return;
13619
- if (childNodes[0] instanceof HTMLAnchorElement || childNodes[0] instanceof SgdsLink) {
13620
- const hyperlink = (childNodes[0].querySelector("a") || childNodes[0]);
13621
- this.card.setAttribute("href", hyperlink.href);
13622
- const linkSlot = this.shadowRoot.querySelector("slot[name='link']");
13623
- linkSlot.style.display = "none";
13624
- }
13625
13618
  }
13626
13619
  }
13627
13620
  CardElement.styles = [...SgdsElement.styles, css_248z$10, css_248z$$, css_248z$_, css_248z$Z, css_248z$Y, css_248z$11];
@@ -13657,7 +13650,9 @@
13657
13650
  * @slot title - The title of the card
13658
13651
  * @slot description - The paragrapher text of the card
13659
13652
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
13660
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
13653
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
13654
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
13655
+ * Legacy slot for anchor elements. Use `footer` instead.
13661
13656
  */
13662
13657
  class SgdsCard extends CardElement {
13663
13658
  constructor() {
@@ -13666,21 +13661,45 @@
13666
13661
  this.imagePosition = "before";
13667
13662
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
13668
13663
  this.imageAdjustment = "default";
13669
- this.hasSlotController = new HasSlotController(this, "image", "icon", "menu", "description");
13664
+ this.hasSlotController = new HasSlotController(this, "image", "icon", "menu");
13665
+ }
13666
+ get linkSlotItems() {
13667
+ if (!this.linkNode || this.linkNode.length === 0)
13668
+ return null;
13669
+ const element = this.linkNode[0];
13670
+ return (element.querySelector("a") || element);
13671
+ }
13672
+ get footerSlotItems() {
13673
+ if (!this.footerNode || this.footerNode.length === 0)
13674
+ return null;
13675
+ const element = this.footerNode[0];
13676
+ return (element.querySelector("a") || element);
13677
+ }
13678
+ firstUpdated() {
13679
+ var _a, _b;
13680
+ if (this.stretchedLink) {
13681
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
13682
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
13683
+ if (footerHref) {
13684
+ this.card.setAttribute("href", footerHref);
13685
+ }
13686
+ else if (linkHref) {
13687
+ this.card.setAttribute("href", linkHref);
13688
+ }
13689
+ }
13670
13690
  }
13671
13691
  handleImgSlotChange(e) {
13672
13692
  const childNodes = e.target.assignedNodes({ flatten: true });
13673
13693
  if (childNodes.length > 1) {
13674
13694
  console.error("Multiple elements passed into SgdsCard's image slot");
13675
13695
  }
13676
- if (this.hasSlotController.test("icon") && this.hasSlotController.test("icon")) {
13696
+ if (this.hasSlotController.test("icon") && this.hasSlotController.test("image")) {
13677
13697
  console.error("Both image and icon slots cannot be used together in SgdsCard");
13678
13698
  }
13679
13699
  }
13680
13700
  render() {
13681
13701
  const tag = this.stretchedLink ? literal `a` : literal `div`;
13682
13702
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
13683
- const hasDescriptionSlot = this.hasSlotController.test("description");
13684
13703
  const hasImageSlot = this.hasSlotController.test("image");
13685
13704
  const hasIconSlot = this.hasSlotController.test("icon");
13686
13705
  const hasMenuSlot = this.hasSlotController.test("menu");
@@ -13695,7 +13714,10 @@
13695
13714
  <div class="card-tinted-bg"></div>
13696
13715
 
13697
13716
  ${hasMenuSlot ? html ` <slot name="menu"></slot> ` : nothing}
13698
- <div class=${classMap({ "card-image": hasImageSlot, "card-media": hasIconSlot || hasUpperSlot })}>
13717
+ <div class=${classMap({
13718
+ "card-image": hasImageSlot,
13719
+ "card-media": hasIconSlot || hasUpperSlot
13720
+ })}>
13699
13721
  <slot name="upper">
13700
13722
  ${hasImageSlot ? html ` <slot name="image" @slotchange=${this.handleImgSlotChange}></slot> ` : nothing}
13701
13723
  ${hasIconSlot ? html ` <slot name="icon"></slot> ` : nothing}
@@ -13710,19 +13732,23 @@
13710
13732
  </div>
13711
13733
  <slot></slot>
13712
13734
  </div>
13713
- ${hasDescriptionSlot
13714
- ? html `<p class="card-text">
13715
- <slot name="description"></slot>
13716
- </p>`
13717
- : nothing}
13735
+ <slot name="description"></slot>
13718
13736
  <slot name="lower"></slot>
13719
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
13737
+ <slot name="footer">
13738
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
13739
+ </slot>
13720
13740
  </div>
13721
13741
  </${tag}>
13722
13742
  `;
13723
13743
  }
13724
13744
  }
13725
13745
  SgdsCard.styles = [...CardElement.styles, css_248z$X];
13746
+ __decorate([
13747
+ queryAssignedElements({ slot: "footer" })
13748
+ ], SgdsCard.prototype, "footerNode", void 0);
13749
+ __decorate([
13750
+ queryAssignedElements({ slot: "link" })
13751
+ ], SgdsCard.prototype, "linkNode", void 0);
13726
13752
  __decorate([
13727
13753
  property({ type: String, reflect: true })
13728
13754
  ], SgdsCard.prototype, "imagePosition", void 0);
@@ -14594,7 +14620,10 @@
14594
14620
  * @slot icon - slot for form control icon to be displayed on the right of the input box.
14595
14621
  *
14596
14622
  * @event sgds-select - Emitted when the combo box's selected value changes.
14623
+ * @event sgds-change - Emitted when the combo box's value changes.
14597
14624
  * @event sgds-input - Emitted when user input is received and its value changes.
14625
+ * @event sgds-focus - Emitted when user input is focused.
14626
+ * @event sgds-blur - Emitted when user input is blurred.
14598
14627
  */
14599
14628
  class SgdsComboBox extends SelectElement {
14600
14629
  constructor() {
@@ -14731,8 +14760,12 @@
14731
14760
  }
14732
14761
  }
14733
14762
  }
14763
+ _handleFocus() {
14764
+ this.emit("sgds-focus");
14765
+ }
14734
14766
  async _handleInputBlur(e) {
14735
14767
  e.preventDefault();
14768
+ this.emit("sgds-blur");
14736
14769
  if (this.multiSelect) {
14737
14770
  const displayValueMatchedSelectedItems = this.selectedItems.filter(({ label }) => this.displayValue === label);
14738
14771
  if (displayValueMatchedSelectedItems.length <= 0) {
@@ -14834,6 +14867,7 @@
14834
14867
  .value=${this.displayValue}
14835
14868
  @input=${this._handleInputChange}
14836
14869
  @blur=${this._handleInputBlur}
14870
+ @focus=${this._handleFocus}
14837
14871
  aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
14838
14872
  aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
14839
14873
  ? `${this._controlId}-invalid`
@@ -26308,13 +26342,7 @@
26308
26342
  }
26309
26343
  }
26310
26344
 
26311
- const LG_BREAKPOINT = 1024;
26312
- const MD_BREAKPOINT = 768;
26313
- const SM_BREAKPOINT = 512;
26314
- const XL_BREAKPOINT = 1280;
26315
- const XXL_BREAKPOINT = 1440;
26316
-
26317
- var css_248z$E = 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)}}`;
26345
+ var css_248z$E = 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)}}`;
26318
26346
 
26319
26347
  /**
26320
26348
  * @summary Drawers slide in from a container to expose additional options and information.
@@ -26358,10 +26386,6 @@
26358
26386
  * its parent element, set this attribute and add `position: relative` to the parent.
26359
26387
  */
26360
26388
  this.contained = false;
26361
- this._handleResize = async () => {
26362
- const replacePlacement = this.drawerPlacement === "top" ? "top" : "bottom";
26363
- this.placement = window.innerWidth < SM_BREAKPOINT ? replacePlacement : this.drawerPlacement;
26364
- };
26365
26389
  this.handleDocumentKeyDown = (event) => {
26366
26390
  if (this.open && !this.contained && event.key === "Escape") {
26367
26391
  event.stopPropagation();
@@ -26370,24 +26394,16 @@
26370
26394
  };
26371
26395
  }
26372
26396
  firstUpdated() {
26373
- this.drawer.hidden = !this.open;
26374
26397
  if (this.open) {
26375
26398
  this.addOpenListeners();
26376
26399
  if (!this.contained) {
26377
26400
  lockBodyScrolling(this);
26378
26401
  }
26379
26402
  }
26380
- this._handleResize();
26381
- }
26382
- connectedCallback() {
26383
- super.connectedCallback();
26384
- this.drawerPlacement = this.placement;
26385
- window.addEventListener("resize", this._handleResize);
26386
26403
  }
26387
26404
  disconnectedCallback() {
26388
26405
  super.disconnectedCallback();
26389
26406
  unlockBodyScrolling(this);
26390
- window.removeEventListener("resize", this._handleResize);
26391
26407
  }
26392
26408
  uppercaseFirstLetter(string) {
26393
26409
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -26515,11 +26531,12 @@
26515
26531
  return waitForEvent(this, "sgds-after-hide");
26516
26532
  }
26517
26533
  render() {
26534
+ const isHydrated = this.hasUpdated;
26535
+ const shouldHide = !this.open && !isHydrated;
26518
26536
  return html$1 `
26519
26537
  <div
26520
26538
  class=${classMap({
26521
26539
  drawer: true,
26522
- "drawer-open": this.open,
26523
26540
  "drawer-top": this.placement === "top",
26524
26541
  "drawer-end": this.placement === "end",
26525
26542
  "drawer-bottom": this.placement === "bottom",
@@ -26527,6 +26544,7 @@
26527
26544
  "drawer-contained": this.contained,
26528
26545
  "drawer-fixed": !this.contained
26529
26546
  })}
26547
+ ?hidden=${shouldHide}
26530
26548
  >
26531
26549
  <div class="drawer-overlay" @click=${() => this.requestClose("overlay")} tabindex="-1"></div>
26532
26550
 
@@ -26579,9 +26597,6 @@
26579
26597
  __decorate([
26580
26598
  property({ type: Boolean, reflect: true })
26581
26599
  ], SgdsDrawer.prototype, "contained", void 0);
26582
- __decorate([
26583
- state()
26584
- ], SgdsDrawer.prototype, "drawerPlacement", void 0);
26585
26600
  __decorate([
26586
26601
  watch("open", { waitUntilFirstUpdate: true })
26587
26602
  ], SgdsDrawer.prototype, "handleOpenChange", null);
@@ -27555,7 +27570,14 @@
27555
27570
  });
27556
27571
  }
27557
27572
 
27558
- const MainnavContext = createContext("mainnav-context");
27573
+ const LG_BREAKPOINT = 1024;
27574
+ const MD_BREAKPOINT = 768;
27575
+ const SM_BREAKPOINT = 512;
27576
+ const XL_BREAKPOINT = 1280;
27577
+ const XXL_BREAKPOINT = 1440;
27578
+
27579
+ const MainnavBreakpointContext = createContext("mainnav-context");
27580
+ const MainnavExpandedContext = createContext("mainnav-expanded-context");
27559
27581
 
27560
27582
  var css_248z$z = 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}`;
27561
27583
 
@@ -27586,6 +27608,10 @@
27586
27608
  constructor() {
27587
27609
  super();
27588
27610
  this._breakpointReached = false;
27611
+ /** Indicates if mobile menu is open or closed */
27612
+ this.expanded = false;
27613
+ /** Denotes the transition state of mobile mainnav menu opening */
27614
+ this.expanding = false;
27589
27615
  /** The href link for brand logo */
27590
27616
  this.brandHref = "";
27591
27617
  this.collapseId = genId("mainnav", "collapse");
@@ -27593,8 +27619,6 @@
27593
27619
  this.expand = "lg";
27594
27620
  /** @internal */
27595
27621
  this.breakpointReached = false;
27596
- /** @internal */
27597
- this.expanded = false;
27598
27622
  window.addEventListener("resize", () => {
27599
27623
  const newBreakpointReachedValue = window.innerWidth < SIZES[this.expand];
27600
27624
  if (newBreakpointReachedValue !== this.breakpointReached) {
@@ -27602,7 +27626,8 @@
27602
27626
  }
27603
27627
  else {
27604
27628
  this.body ? (this.body.hidden = true) : null;
27605
- this.expanded = false;
27629
+ // this.expanded = false;
27630
+ this.expanding = false;
27606
27631
  }
27607
27632
  if (newBreakpointReachedValue) {
27608
27633
  this._handleMobileNav();
@@ -27676,6 +27701,7 @@
27676
27701
  async _animateToShow() {
27677
27702
  const sgdsShow = this.emit("sgds-show", { cancelable: true });
27678
27703
  if (sgdsShow.defaultPrevented) {
27704
+ this.expanding = false;
27679
27705
  this.expanded = false;
27680
27706
  return;
27681
27707
  }
@@ -27689,6 +27715,7 @@
27689
27715
  async _animateToHide() {
27690
27716
  const slHide = this.emit("sgds-hide", { cancelable: true });
27691
27717
  if (slHide.defaultPrevented) {
27718
+ this.expanding = false;
27692
27719
  this.expanded = true;
27693
27720
  return;
27694
27721
  }
@@ -27700,14 +27727,16 @@
27700
27727
  this.emit("sgds-after-hide");
27701
27728
  }
27702
27729
  async handleOpenChange() {
27703
- if (this.expanded) {
27730
+ if (this.expanding) {
27704
27731
  // Show
27705
- this._animateToShow();
27732
+ await this._animateToShow();
27733
+ this.expanded = true;
27706
27734
  }
27707
27735
  else {
27708
27736
  this.header.focus();
27709
27737
  // Hide
27710
- this._animateToHide();
27738
+ await this._animateToHide();
27739
+ this.expanded = false;
27711
27740
  }
27712
27741
  }
27713
27742
  /** Shows the menu. For when mainnav is in the collapsed form */
@@ -27715,7 +27744,7 @@
27715
27744
  if (this.expanded) {
27716
27745
  return;
27717
27746
  }
27718
- this.expanded = true;
27747
+ this.expanding = true;
27719
27748
  return waitForEvent(this, "sgds-after-show");
27720
27749
  }
27721
27750
  /** Hide the menu. For when mainnav is in the collapsed form */
@@ -27723,7 +27752,7 @@
27723
27752
  if (!this.expanded) {
27724
27753
  return;
27725
27754
  }
27726
- this.expanded = false;
27755
+ this.expanding = false;
27727
27756
  document.querySelector("body").style.removeProperty("overflow");
27728
27757
  return waitForEvent(this, "sgds-after-hide");
27729
27758
  }
@@ -27784,9 +27813,16 @@
27784
27813
  "sgds-icon-button": SgdsIconButton
27785
27814
  };
27786
27815
  __decorate([
27787
- provide({ context: MainnavContext }),
27816
+ provide({ context: MainnavBreakpointContext }),
27788
27817
  state()
27789
27818
  ], SgdsMainnav.prototype, "_breakpointReached", void 0);
27819
+ __decorate([
27820
+ provide({ context: MainnavExpandedContext }),
27821
+ state()
27822
+ ], SgdsMainnav.prototype, "expanded", void 0);
27823
+ __decorate([
27824
+ state()
27825
+ ], SgdsMainnav.prototype, "expanding", void 0);
27790
27826
  __decorate([
27791
27827
  query("nav")
27792
27828
  ], SgdsMainnav.prototype, "nav", void 0);
@@ -27814,9 +27850,6 @@
27814
27850
  __decorate([
27815
27851
  state()
27816
27852
  ], SgdsMainnav.prototype, "breakpointReached", void 0);
27817
- __decorate([
27818
- state()
27819
- ], SgdsMainnav.prototype, "expanded", void 0);
27820
27853
  __decorate([
27821
27854
  queryAssignedElements()
27822
27855
  ], SgdsMainnav.prototype, "defaultNodes", void 0);
@@ -27824,7 +27857,7 @@
27824
27857
  queryAssignedElements({ slot: "end" })
27825
27858
  ], SgdsMainnav.prototype, "endNodes", void 0);
27826
27859
  __decorate([
27827
- watch("expanded", { waitUntilFirstUpdate: true })
27860
+ watch("expanding", { waitUntilFirstUpdate: true })
27828
27861
  ], SgdsMainnav.prototype, "handleOpenChange", null);
27829
27862
  setDefaultAnimation("mainnav.show", {
27830
27863
  keyframes: [
@@ -27853,6 +27886,7 @@
27853
27886
  class SgdsMainnavDropdown extends SgdsElement {
27854
27887
  constructor() {
27855
27888
  super(...arguments);
27889
+ this._breakpointReached = true;
27856
27890
  /** @internal Forwards value to id attribute of toggle button of Dropdown. An unique id generated by default */
27857
27891
  this.togglerId = genId("dropdown", "button");
27858
27892
  /** When true, applies active styles on the dropdown button */
@@ -27864,34 +27898,6 @@
27864
27898
  get defaultSlotItems() {
27865
27899
  return [...(this.defaultNodes || [])].filter((node) => typeof node.tagName !== "undefined");
27866
27900
  }
27867
- connectedCallback() {
27868
- super.connectedCallback();
27869
- document.addEventListener("sgds-after-hide", (e) => {
27870
- const target = e.target;
27871
- const mainnav = target.closest("sgds-mainnav");
27872
- if (mainnav) {
27873
- this._resetDropdownMenu();
27874
- this._hideDropdownMenuItems();
27875
- }
27876
- });
27877
- }
27878
- disconnectedCallback() {
27879
- super.disconnectedCallback();
27880
- // Clean up the event listener when the element is removed from the DOM
27881
- document.removeEventListener("sgds-after-hide", () => {
27882
- this._resetDropdownMenu();
27883
- this._hideDropdownMenuItems();
27884
- });
27885
- }
27886
- willUpdate(changedProperties) {
27887
- super.willUpdate(changedProperties);
27888
- if (!this.shadowRoot) {
27889
- return;
27890
- }
27891
- if (this._breakpointReached) {
27892
- this.shadowRoot.adoptedStyleSheets = [css_248z$19.styleSheet, css_248z$y.styleSheet];
27893
- }
27894
- }
27895
27901
  updated() {
27896
27902
  if (this._breakpointReached) {
27897
27903
  this._copyTextToMenu();
@@ -28035,12 +28041,9 @@
28035
28041
  }
28036
28042
  }
28037
28043
  _closeMenu() {
28038
- // 200ms delay as the transform transition is set to this timing
28039
28044
  this._resetDropdownMenu();
28040
- setTimeout(() => {
28041
- this._hideDropdownMenuItems();
28042
- this.navLink.focus();
28043
- }, 200);
28045
+ this._hideDropdownMenuItems();
28046
+ this.navLink.focus();
28044
28047
  }
28045
28048
  render() {
28046
28049
  const mobileView = html$1 `
@@ -28106,9 +28109,13 @@
28106
28109
  "sgds-icon": SgdsIcon
28107
28110
  };
28108
28111
  __decorate([
28109
- consume({ context: MainnavContext, subscribe: true }),
28112
+ consume({ context: MainnavBreakpointContext, subscribe: true }),
28110
28113
  state()
28111
28114
  ], SgdsMainnavDropdown.prototype, "_breakpointReached", void 0);
28115
+ __decorate([
28116
+ consume({ context: MainnavExpandedContext, subscribe: true }),
28117
+ state()
28118
+ ], SgdsMainnavDropdown.prototype, "expanded", void 0);
28112
28119
  __decorate([
28113
28120
  query(".nav-link")
28114
28121
  ], SgdsMainnavDropdown.prototype, "navLink", void 0);
@@ -28540,7 +28547,7 @@
28540
28547
  }
28541
28548
  }
28542
28549
 
28543
- var css_248z$u = 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}`;
28550
+ var css_248z$u = 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}`;
28544
28551
 
28545
28552
  /**
28546
28553
  * @summary The modal component inform users about a specific task and may contain critical information which users then have to make a decision.
@@ -32056,6 +32063,10 @@
32056
32063
  * @summary Select is used to make one selection from a list through keyboard or mouse actions
32057
32064
  *
32058
32065
  * @event sgds-select - Emitted when an option is selected and the value of select is updated
32066
+ * @event sgds-change - Emitted when the select value changes.
32067
+ * @event sgds-focus - Emitted when user input is focused.
32068
+ * @event sgds-blur - Emitted when user input is blurred.
32069
+ *
32059
32070
  */
32060
32071
  class SgdsSelect extends SelectElement {
32061
32072
  connectedCallback() {
@@ -32080,6 +32091,8 @@
32080
32091
  }
32081
32092
  }
32082
32093
  async _handleValueChange() {
32094
+ // when value change, always emit a change event
32095
+ this.emit("sgds-change");
32083
32096
  if (this.value) {
32084
32097
  this.emit("sgds-select");
32085
32098
  }
@@ -32104,8 +32117,12 @@
32104
32117
  this.displayValue = this.selectedItems[0].label;
32105
32118
  this.hideMenu();
32106
32119
  }
32120
+ _handleFocus() {
32121
+ this.emit("sgds-focus");
32122
+ }
32107
32123
  async _handleInputBlur(e) {
32108
32124
  e.preventDefault();
32125
+ this.emit("sgds-blur");
32109
32126
  if (this.selectedItems.length > 0) {
32110
32127
  this.displayValue = this.selectedItems[0].label;
32111
32128
  }
@@ -32163,6 +32180,7 @@
32163
32180
  ?required=${this.required}
32164
32181
  .value=${this.displayValue}
32165
32182
  @blur=${this._handleInputBlur}
32183
+ @focus=${this._handleFocus}
32166
32184
  aria-describedby=${ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
32167
32185
  aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
32168
32186
  ? `${this._controlId}-invalid`
@@ -32212,7 +32230,9 @@
32212
32230
  * @slot title - The title of the card
32213
32231
  * @slot description - The paragrapher text of the card
32214
32232
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
32215
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
32233
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
32234
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
32235
+ * Legacy slot for anchor elements. Use `footer` instead.
32216
32236
  */
32217
32237
  class SgdsImageCard extends CardElement {
32218
32238
  constructor() {
@@ -32223,9 +32243,21 @@
32223
32243
  this.imagePosition = "before";
32224
32244
  /** Controls how the image is sized and aligned within the card. Available options: `default`, `padding around`, `aspect ratio` */
32225
32245
  this.imageAdjustment = "default";
32226
- this.hasSlotController = new HasSlotController(this, "description");
32246
+ }
32247
+ get linkSlotItems() {
32248
+ if (!this.linkNode || this.linkNode.length === 0)
32249
+ return null;
32250
+ const element = this.linkNode[0];
32251
+ return (element.querySelector("a") || element);
32252
+ }
32253
+ get footerSlotItems() {
32254
+ if (!this.footerNode || this.footerNode.length === 0)
32255
+ return null;
32256
+ const element = this.footerNode[0];
32257
+ return (element.querySelector("a") || element);
32227
32258
  }
32228
32259
  firstUpdated() {
32260
+ var _a, _b;
32229
32261
  if (this._imageNode.length === 0) {
32230
32262
  const image = this.shadowRoot.querySelector(".card-image");
32231
32263
  const body = this.shadowRoot.querySelector(".card-body");
@@ -32233,6 +32265,16 @@
32233
32265
  if (this.noPadding)
32234
32266
  body.style.padding = "0px";
32235
32267
  }
32268
+ if (this.stretchedLink) {
32269
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
32270
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
32271
+ if (footerHref) {
32272
+ this.card.setAttribute("href", footerHref);
32273
+ }
32274
+ else if (linkHref) {
32275
+ this.card.setAttribute("href", linkHref);
32276
+ }
32277
+ }
32236
32278
  }
32237
32279
  handleImgSlotChange(e) {
32238
32280
  const childNodes = e.target.assignedNodes({ flatten: true });
@@ -32243,7 +32285,6 @@
32243
32285
  render() {
32244
32286
  const tag = this.stretchedLink ? literal `a` : literal `div`;
32245
32287
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
32246
- const hasDescriptionSlot = this.hasSlotController.test("description");
32247
32288
  return html `
32248
32289
  <${tag}
32249
32290
  class="card ${classMap({
@@ -32266,13 +32307,11 @@
32266
32307
  </div>
32267
32308
  <slot></slot>
32268
32309
  </div>
32269
- ${hasDescriptionSlot
32270
- ? html `<p class="card-text">
32271
- <slot name="description"></slot>
32272
- </p>`
32273
- : nothing}
32310
+ <slot name="description"></slot>
32274
32311
  <slot name="lower"></slot>
32275
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32312
+ <slot name="footer">
32313
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32314
+ </slot>
32276
32315
  </div>
32277
32316
  </${tag}>
32278
32317
  `;
@@ -32282,6 +32321,12 @@
32282
32321
  __decorate([
32283
32322
  queryAssignedNodes({ slot: "image", flatten: true })
32284
32323
  ], SgdsImageCard.prototype, "_imageNode", void 0);
32324
+ __decorate([
32325
+ queryAssignedElements({ slot: "footer" })
32326
+ ], SgdsImageCard.prototype, "footerNode", void 0);
32327
+ __decorate([
32328
+ queryAssignedElements({ slot: "link" })
32329
+ ], SgdsImageCard.prototype, "linkNode", void 0);
32285
32330
  __decorate([
32286
32331
  property({ type: Boolean, reflect: true })
32287
32332
  ], SgdsImageCard.prototype, "noPadding", void 0);
@@ -32294,7 +32339,7 @@
32294
32339
 
32295
32340
  customElements.define("sgds-image-card", SgdsImageCard);
32296
32341
 
32297
- var css_248z$1 = 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}`;
32342
+ var css_248z$1 = 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%}`;
32298
32343
 
32299
32344
  /**
32300
32345
  * @summary Thumbnail cards can be used for headers and footers, a wide variety of content, contain contextual background colors and images.
@@ -32305,16 +32350,30 @@
32305
32350
  * @slot title - The title of the card
32306
32351
  * @slot description - The paragrapher text of the card
32307
32352
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
32308
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
32353
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
32354
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
32355
+ * Legacy slot for anchor elements. Use `footer` instead.
32309
32356
  */
32310
32357
  class SgdsThumbnailCard extends CardElement {
32311
32358
  constructor() {
32312
32359
  super(...arguments);
32313
32360
  /** Removes the card's internal padding when set to true. */
32314
32361
  this.noPadding = false;
32315
- this.hasSlotController = new HasSlotController(this, "description");
32362
+ }
32363
+ get linkSlotItems() {
32364
+ if (!this.linkNode || this.linkNode.length === 0)
32365
+ return null;
32366
+ const element = this.linkNode[0];
32367
+ return (element.querySelector("a") || element);
32368
+ }
32369
+ get footerSlotItems() {
32370
+ if (!this.footerNode || this.footerNode.length === 0)
32371
+ return null;
32372
+ const element = this.footerNode[0];
32373
+ return (element.querySelector("a") || element);
32316
32374
  }
32317
32375
  firstUpdated() {
32376
+ var _a, _b;
32318
32377
  if (this._thumbnailNode.length === 0) {
32319
32378
  if ((this.orientation === "vertical" && this._upperNode.length === 0) || this.orientation === "horizontal") {
32320
32379
  const media = this.shadowRoot.querySelector(".card-media");
@@ -32324,11 +32383,20 @@
32324
32383
  body.style.padding = "0px";
32325
32384
  }
32326
32385
  }
32386
+ if (this.stretchedLink) {
32387
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
32388
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
32389
+ if (footerHref) {
32390
+ this.card.setAttribute("href", footerHref);
32391
+ }
32392
+ else if (linkHref) {
32393
+ this.card.setAttribute("href", linkHref);
32394
+ }
32395
+ }
32327
32396
  }
32328
32397
  render() {
32329
32398
  const tag = this.stretchedLink ? literal `a` : literal `div`;
32330
32399
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
32331
- const hasDescriptionSlot = this.hasSlotController.test("description");
32332
32400
  return html `
32333
32401
  <${tag}
32334
32402
  class="card ${classMap({
@@ -32350,13 +32418,11 @@
32350
32418
  </div>
32351
32419
  <slot></slot>
32352
32420
  </div>
32353
- ${hasDescriptionSlot
32354
- ? html `<p class="card-text">
32355
- <slot name="description"></slot>
32356
- </p>`
32357
- : nothing}
32421
+ <slot name="description"></slot>
32358
32422
  <slot name="lower"></slot>
32359
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32423
+ <slot name="footer">
32424
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32425
+ </slot>
32360
32426
  </div>
32361
32427
  </${tag}>
32362
32428
  `;
@@ -32369,6 +32435,12 @@
32369
32435
  __decorate([
32370
32436
  queryAssignedNodes({ slot: "upper", flatten: true })
32371
32437
  ], SgdsThumbnailCard.prototype, "_upperNode", void 0);
32438
+ __decorate([
32439
+ queryAssignedElements({ slot: "footer" })
32440
+ ], SgdsThumbnailCard.prototype, "footerNode", void 0);
32441
+ __decorate([
32442
+ queryAssignedElements({ slot: "link" })
32443
+ ], SgdsThumbnailCard.prototype, "linkNode", void 0);
32372
32444
  __decorate([
32373
32445
  property({ type: Boolean, reflect: true })
32374
32446
  ], SgdsThumbnailCard.prototype, "noPadding", void 0);
@@ -32386,16 +32458,30 @@
32386
32458
  * @slot title - The title of the card
32387
32459
  * @slot description - The paragrapher text of the card
32388
32460
  * @slot lower - Accepts any additional content to be displayed below the card description, such as badges, metadata, or supplementary information.
32389
- * @slot link - Accepts an anchor element. Only a single element is allowed to be passed in.
32461
+ * @slot footer - Footer area of the card. Accepts links, actions, or any custom content.
32462
+ * @slot link - (@deprecated) Deprecated since 3.3.2 in favour of `footer` slot.
32463
+ * Legacy slot for anchor elements. Use `footer` instead.
32390
32464
  */
32391
32465
  class SgdsIconCard extends CardElement {
32392
32466
  constructor() {
32393
32467
  super(...arguments);
32394
32468
  /** Removes the card's internal padding when set to true. */
32395
32469
  this.noPadding = false;
32396
- this.hasSlotController = new HasSlotController(this, "description");
32470
+ }
32471
+ get linkSlotItems() {
32472
+ if (!this.linkNode || this.linkNode.length === 0)
32473
+ return null;
32474
+ const element = this.linkNode[0];
32475
+ return (element.querySelector("a") || element);
32476
+ }
32477
+ get footerSlotItems() {
32478
+ if (!this.footerNode || this.footerNode.length === 0)
32479
+ return null;
32480
+ const element = this.footerNode[0];
32481
+ return (element.querySelector("a") || element);
32397
32482
  }
32398
32483
  firstUpdated() {
32484
+ var _a, _b;
32399
32485
  if (this._iconNode.length === 0) {
32400
32486
  if ((this.orientation === "vertical" && this._upperNode.length === 0) || this.orientation === "horizontal") {
32401
32487
  const media = this.shadowRoot.querySelector(".card-media");
@@ -32405,14 +32491,24 @@
32405
32491
  body.style.padding = "0px";
32406
32492
  }
32407
32493
  }
32494
+ if (this.stretchedLink) {
32495
+ const footerHref = (_a = this.footerSlotItems) === null || _a === void 0 ? void 0 : _a.href;
32496
+ const linkHref = (_b = this.linkSlotItems) === null || _b === void 0 ? void 0 : _b.href;
32497
+ if (footerHref) {
32498
+ this.card.setAttribute("href", footerHref);
32499
+ }
32500
+ else if (linkHref) {
32501
+ this.card.setAttribute("href", linkHref);
32502
+ }
32503
+ }
32408
32504
  }
32409
32505
  render() {
32410
32506
  const tag = this.stretchedLink ? literal `a` : literal `div`;
32411
32507
  const cardTabIndex = !this.stretchedLink || this.disabled ? -1 : 0;
32412
- const hasDescriptionSlot = this.hasSlotController.test("description");
32413
32508
  return html `
32414
32509
  <${tag}
32415
- class="card ${classMap({
32510
+ class="${classMap({
32511
+ card: true,
32416
32512
  disabled: this.disabled
32417
32513
  })}"
32418
32514
  tabindex=${cardTabIndex}
@@ -32431,13 +32527,11 @@
32431
32527
  </div>
32432
32528
  <slot></slot>
32433
32529
  </div>
32434
- ${hasDescriptionSlot
32435
- ? html `<p class="card-text">
32436
- <slot name="description"></slot>
32437
- </p>`
32438
- : nothing}
32530
+ <slot name="description"></slot>
32439
32531
  <slot name="lower"></slot>
32440
- <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32532
+ <slot name="footer">
32533
+ <slot name="link" @slotchange=${this.handleLinkSlotChange}></slot>
32534
+ </slot>
32441
32535
  </div>
32442
32536
  </${tag}>
32443
32537
  `;
@@ -32450,6 +32544,12 @@
32450
32544
  __decorate([
32451
32545
  queryAssignedNodes({ slot: "upper", flatten: true })
32452
32546
  ], SgdsIconCard.prototype, "_upperNode", void 0);
32547
+ __decorate([
32548
+ queryAssignedElements({ slot: "footer" })
32549
+ ], SgdsIconCard.prototype, "footerNode", void 0);
32550
+ __decorate([
32551
+ queryAssignedElements({ slot: "link" })
32552
+ ], SgdsIconCard.prototype, "linkNode", void 0);
32453
32553
  __decorate([
32454
32554
  property({ type: Boolean, reflect: true })
32455
32555
  ], SgdsIconCard.prototype, "noPadding", void 0);