@sebgroup/green-core 2.36.0 → 2.37.1

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 (416) hide show
  1. package/components/menu-button/menu-button.styles.js +5 -0
  2. package/components/table/table.component.d.ts +14 -0
  3. package/components/table/table.component.js +90 -14
  4. package/components/table/table.stories.data.d.ts +9 -1
  5. package/components/table/table.stories.data.js +51 -3
  6. package/components/table/table.styles.js +181 -9
  7. package/components/table/table.types.d.ts +9 -1
  8. package/custom-elements.json +279 -258
  9. package/gds-element.js +1 -1
  10. package/generated/mcp/components.json +1 -1
  11. package/generated/mcp/icons.json +1 -1
  12. package/generated/mcp/index.json +1 -1
  13. package/generated/mcp/table/api.md +2 -0
  14. package/generated/react/alert/index.d.ts +281 -3
  15. package/generated/react/backdrop/index.d.ts +281 -3
  16. package/generated/react/badge/index.d.ts +281 -3
  17. package/generated/react/blur/index.d.ts +281 -3
  18. package/generated/react/breadcrumb/index.d.ts +281 -3
  19. package/generated/react/breadcrumbs/index.d.ts +281 -3
  20. package/generated/react/button/index.d.ts +281 -3
  21. package/generated/react/calendar/index.d.ts +281 -3
  22. package/generated/react/card/index.d.ts +281 -3
  23. package/generated/react/card-linked/index.d.ts +281 -3
  24. package/generated/react/card-pattern-01/index.d.ts +281 -3
  25. package/generated/react/checkbox/index.d.ts +281 -3
  26. package/generated/react/checkbox-group/index.d.ts +281 -3
  27. package/generated/react/coachmark/index.d.ts +281 -3
  28. package/generated/react/context-menu/index.d.ts +281 -3
  29. package/generated/react/datepicker/index.d.ts +281 -3
  30. package/generated/react/details/index.d.ts +281 -3
  31. package/generated/react/dialog/index.d.ts +281 -3
  32. package/generated/react/div/index.d.ts +281 -3
  33. package/generated/react/divider/index.d.ts +281 -3
  34. package/generated/react/dropdown/index.d.ts +281 -3
  35. package/generated/react/fab/index.d.ts +281 -3
  36. package/generated/react/filter-chip/index.d.ts +281 -3
  37. package/generated/react/filter-chips/index.d.ts +281 -3
  38. package/generated/react/flex/index.d.ts +281 -3
  39. package/generated/react/form-summary/index.d.ts +281 -3
  40. package/generated/react/formatted-account/index.d.ts +281 -3
  41. package/generated/react/formatted-date/index.d.ts +281 -3
  42. package/generated/react/formatted-number/index.d.ts +281 -3
  43. package/generated/react/grid/index.d.ts +281 -3
  44. package/generated/react/grouped-list/index.d.ts +281 -3
  45. package/generated/react/icons/icon-ai/index.d.ts +281 -3
  46. package/generated/react/icons/icon-airplane-up/index.d.ts +281 -3
  47. package/generated/react/icons/icon-archive/index.d.ts +281 -3
  48. package/generated/react/icons/icon-arrow/index.d.ts +281 -3
  49. package/generated/react/icons/icon-arrow-bottom-top/index.d.ts +281 -3
  50. package/generated/react/icons/icon-arrow-box-left/index.d.ts +281 -3
  51. package/generated/react/icons/icon-arrow-box-left-alt/index.d.ts +281 -3
  52. package/generated/react/icons/icon-arrow-box-right/index.d.ts +281 -3
  53. package/generated/react/icons/icon-arrow-down/index.d.ts +281 -3
  54. package/generated/react/icons/icon-arrow-inbox/index.d.ts +281 -3
  55. package/generated/react/icons/icon-arrow-left/index.d.ts +281 -3
  56. package/generated/react/icons/icon-arrow-left-right/index.d.ts +281 -3
  57. package/generated/react/icons/icon-arrow-out-of-box/index.d.ts +281 -3
  58. package/generated/react/icons/icon-arrow-right/index.d.ts +281 -3
  59. package/generated/react/icons/icon-arrow-right-circle/index.d.ts +281 -3
  60. package/generated/react/icons/icon-arrow-right-down-circle/index.d.ts +281 -3
  61. package/generated/react/icons/icon-arrow-right-up-circle/index.d.ts +281 -3
  62. package/generated/react/icons/icon-arrow-rotate-clockwise/index.d.ts +281 -3
  63. package/generated/react/icons/icon-arrow-rotate-counter-clockwise/index.d.ts +281 -3
  64. package/generated/react/icons/icon-arrow-rotate-left-right/index.d.ts +281 -3
  65. package/generated/react/icons/icon-arrow-rotate-right-left/index.d.ts +281 -3
  66. package/generated/react/icons/icon-arrow-share-left/index.d.ts +281 -3
  67. package/generated/react/icons/icon-arrow-share-right/index.d.ts +281 -3
  68. package/generated/react/icons/icon-arrow-split/index.d.ts +281 -3
  69. package/generated/react/icons/icon-arrow-up/index.d.ts +281 -3
  70. package/generated/react/icons/icon-arrow-wall-down/index.d.ts +281 -3
  71. package/generated/react/icons/icon-arrow-wall-left/index.d.ts +281 -3
  72. package/generated/react/icons/icon-arrow-wall-right/index.d.ts +281 -3
  73. package/generated/react/icons/icon-arrow-wall-up/index.d.ts +281 -3
  74. package/generated/react/icons/icon-arrows-repeat/index.d.ts +281 -3
  75. package/generated/react/icons/icon-asterisk/index.d.ts +281 -3
  76. package/generated/react/icons/icon-at/index.d.ts +281 -3
  77. package/generated/react/icons/icon-back/index.d.ts +281 -3
  78. package/generated/react/icons/icon-backward/index.d.ts +281 -3
  79. package/generated/react/icons/icon-bag/index.d.ts +281 -3
  80. package/generated/react/icons/icon-bank/index.d.ts +281 -3
  81. package/generated/react/icons/icon-banknote/index.d.ts +281 -3
  82. package/generated/react/icons/icon-banknote-2/index.d.ts +281 -3
  83. package/generated/react/icons/icon-barcode/index.d.ts +281 -3
  84. package/generated/react/icons/icon-bars-three/index.d.ts +281 -3
  85. package/generated/react/icons/icon-bars-two/index.d.ts +281 -3
  86. package/generated/react/icons/icon-basket/index.d.ts +281 -3
  87. package/generated/react/icons/icon-battery-loading/index.d.ts +281 -3
  88. package/generated/react/icons/icon-bell/index.d.ts +281 -3
  89. package/generated/react/icons/icon-block/index.d.ts +281 -3
  90. package/generated/react/icons/icon-book/index.d.ts +281 -3
  91. package/generated/react/icons/icon-bookmark/index.d.ts +281 -3
  92. package/generated/react/icons/icon-bookmark-check/index.d.ts +281 -3
  93. package/generated/react/icons/icon-bookmark-delete/index.d.ts +281 -3
  94. package/generated/react/icons/icon-bookmark-plus/index.d.ts +281 -3
  95. package/generated/react/icons/icon-bookmark-remove/index.d.ts +281 -3
  96. package/generated/react/icons/icon-books/index.d.ts +281 -3
  97. package/generated/react/icons/icon-brand-app-store/index.d.ts +281 -3
  98. package/generated/react/icons/icon-brand-apple-music/index.d.ts +281 -3
  99. package/generated/react/icons/icon-brand-bankid/index.d.ts +281 -3
  100. package/generated/react/icons/icon-brand-chrome/index.d.ts +281 -3
  101. package/generated/react/icons/icon-brand-facebook/index.d.ts +281 -3
  102. package/generated/react/icons/icon-brand-figma/index.d.ts +281 -3
  103. package/generated/react/icons/icon-brand-firefox/index.d.ts +281 -3
  104. package/generated/react/icons/icon-brand-github/index.d.ts +281 -3
  105. package/generated/react/icons/icon-brand-green/index.d.ts +281 -3
  106. package/generated/react/icons/icon-brand-instagram/index.d.ts +281 -3
  107. package/generated/react/icons/icon-brand-linkedin/index.d.ts +281 -3
  108. package/generated/react/icons/icon-brand-play-store/index.d.ts +281 -3
  109. package/generated/react/icons/icon-brand-rss-feed/index.d.ts +281 -3
  110. package/generated/react/icons/icon-brand-seb/index.d.ts +281 -3
  111. package/generated/react/icons/icon-brand-spotify/index.d.ts +281 -3
  112. package/generated/react/icons/icon-brand-storybook/index.d.ts +281 -3
  113. package/generated/react/icons/icon-brand-swish-word/index.d.ts +281 -3
  114. package/generated/react/icons/icon-brand-x/index.d.ts +281 -3
  115. package/generated/react/icons/icon-brush/index.d.ts +281 -3
  116. package/generated/react/icons/icon-bubble/index.d.ts +281 -3
  117. package/generated/react/icons/icon-bubble-annotation/index.d.ts +281 -3
  118. package/generated/react/icons/icon-bubble-dots/index.d.ts +281 -3
  119. package/generated/react/icons/icon-bubble-question/index.d.ts +281 -3
  120. package/generated/react/icons/icon-bubble-quotes/index.d.ts +281 -3
  121. package/generated/react/icons/icon-bubble-text/index.d.ts +281 -3
  122. package/generated/react/icons/icon-bubble-wide-annotation/index.d.ts +281 -3
  123. package/generated/react/icons/icon-bubbles/index.d.ts +281 -3
  124. package/generated/react/icons/icon-buildings/index.d.ts +281 -3
  125. package/generated/react/icons/icon-bullet-list/index.d.ts +281 -3
  126. package/generated/react/icons/icon-cain-link/index.d.ts +281 -3
  127. package/generated/react/icons/icon-calculator/index.d.ts +281 -3
  128. package/generated/react/icons/icon-calendar/index.d.ts +281 -3
  129. package/generated/react/icons/icon-calendar-check/index.d.ts +281 -3
  130. package/generated/react/icons/icon-calender-add/index.d.ts +281 -3
  131. package/generated/react/icons/icon-call/index.d.ts +281 -3
  132. package/generated/react/icons/icon-car/index.d.ts +281 -3
  133. package/generated/react/icons/icon-carussel/index.d.ts +281 -3
  134. package/generated/react/icons/icon-chain-link/index.d.ts +281 -3
  135. package/generated/react/icons/icon-chain-link-broken/index.d.ts +281 -3
  136. package/generated/react/icons/icon-charging-station/index.d.ts +281 -3
  137. package/generated/react/icons/icon-chart-one/index.d.ts +281 -3
  138. package/generated/react/icons/icon-chart-presentation/index.d.ts +281 -3
  139. package/generated/react/icons/icon-chart-two/index.d.ts +281 -3
  140. package/generated/react/icons/icon-checklist/index.d.ts +281 -3
  141. package/generated/react/icons/icon-checkmark/index.d.ts +281 -3
  142. package/generated/react/icons/icon-chevron-bottom/index.d.ts +281 -3
  143. package/generated/react/icons/icon-chevron-double-down/index.d.ts +281 -3
  144. package/generated/react/icons/icon-chevron-double-left/index.d.ts +281 -3
  145. package/generated/react/icons/icon-chevron-double-right/index.d.ts +281 -3
  146. package/generated/react/icons/icon-chevron-double-up/index.d.ts +281 -3
  147. package/generated/react/icons/icon-chevron-down-small/index.d.ts +281 -3
  148. package/generated/react/icons/icon-chevron-grabber-vertical/index.d.ts +281 -3
  149. package/generated/react/icons/icon-chevron-left/index.d.ts +281 -3
  150. package/generated/react/icons/icon-chevron-left-small/index.d.ts +281 -3
  151. package/generated/react/icons/icon-chevron-right/index.d.ts +281 -3
  152. package/generated/react/icons/icon-chevron-right-small/index.d.ts +281 -3
  153. package/generated/react/icons/icon-chevron-top/index.d.ts +281 -3
  154. package/generated/react/icons/icon-chevron-top-small/index.d.ts +281 -3
  155. package/generated/react/icons/icon-circle-ban/index.d.ts +281 -3
  156. package/generated/react/icons/icon-circle-check/index.d.ts +281 -3
  157. package/generated/react/icons/icon-circle-dots/index.d.ts +281 -3
  158. package/generated/react/icons/icon-circle-info/index.d.ts +281 -3
  159. package/generated/react/icons/icon-circle-minus/index.d.ts +281 -3
  160. package/generated/react/icons/icon-circle-placeholder-on/index.d.ts +281 -3
  161. package/generated/react/icons/icon-circle-plus/index.d.ts +281 -3
  162. package/generated/react/icons/icon-circle-questionmark/index.d.ts +281 -3
  163. package/generated/react/icons/icon-circle-x/index.d.ts +281 -3
  164. package/generated/react/icons/icon-circles-three/index.d.ts +281 -3
  165. package/generated/react/icons/icon-clock/index.d.ts +281 -3
  166. package/generated/react/icons/icon-cloud-download/index.d.ts +281 -3
  167. package/generated/react/icons/icon-cloud-upload/index.d.ts +281 -3
  168. package/generated/react/icons/icon-cloudy-sun/index.d.ts +281 -3
  169. package/generated/react/icons/icon-code/index.d.ts +281 -3
  170. package/generated/react/icons/icon-code-brackets/index.d.ts +281 -3
  171. package/generated/react/icons/icon-compass-round/index.d.ts +281 -3
  172. package/generated/react/icons/icon-cookies/index.d.ts +281 -3
  173. package/generated/react/icons/icon-copy/index.d.ts +281 -3
  174. package/generated/react/icons/icon-credit-card/index.d.ts +281 -3
  175. package/generated/react/icons/icon-credit-card-add/index.d.ts +281 -3
  176. package/generated/react/icons/icon-cross-large/index.d.ts +281 -3
  177. package/generated/react/icons/icon-cross-small/index.d.ts +281 -3
  178. package/generated/react/icons/icon-cup-hot/index.d.ts +281 -3
  179. package/generated/react/icons/icon-cursor/index.d.ts +281 -3
  180. package/generated/react/icons/icon-details/index.d.ts +281 -3
  181. package/generated/react/icons/icon-devices/index.d.ts +281 -3
  182. package/generated/react/icons/icon-direction/index.d.ts +281 -3
  183. package/generated/react/icons/icon-dollar/index.d.ts +281 -3
  184. package/generated/react/icons/icon-dot-grid-one-horizontal/index.d.ts +281 -3
  185. package/generated/react/icons/icon-dot-grid-one-vertical/index.d.ts +281 -3
  186. package/generated/react/icons/icon-dot-grid-three/index.d.ts +281 -3
  187. package/generated/react/icons/icon-dot-grid-two/index.d.ts +281 -3
  188. package/generated/react/icons/icon-email/index.d.ts +281 -3
  189. package/generated/react/icons/icon-emoji-angry/index.d.ts +281 -3
  190. package/generated/react/icons/icon-emoji-neutral/index.d.ts +281 -3
  191. package/generated/react/icons/icon-emoji-sad/index.d.ts +281 -3
  192. package/generated/react/icons/icon-emoji-smile/index.d.ts +281 -3
  193. package/generated/react/icons/icon-emoji-smiley/index.d.ts +281 -3
  194. package/generated/react/icons/icon-euro/index.d.ts +281 -3
  195. package/generated/react/icons/icon-expand/index.d.ts +281 -3
  196. package/generated/react/icons/icon-eye-open/index.d.ts +281 -3
  197. package/generated/react/icons/icon-eye-slash/index.d.ts +281 -3
  198. package/generated/react/icons/icon-fashion/index.d.ts +281 -3
  199. package/generated/react/icons/icon-fast-forward/index.d.ts +281 -3
  200. package/generated/react/icons/icon-file-bend/index.d.ts +281 -3
  201. package/generated/react/icons/icon-file-chart/index.d.ts +281 -3
  202. package/generated/react/icons/icon-file-text/index.d.ts +281 -3
  203. package/generated/react/icons/icon-files/index.d.ts +281 -3
  204. package/generated/react/icons/icon-filter/index.d.ts +281 -3
  205. package/generated/react/icons/icon-flag/index.d.ts +281 -3
  206. package/generated/react/icons/icon-floppy-disk/index.d.ts +281 -3
  207. package/generated/react/icons/icon-focus/index.d.ts +281 -3
  208. package/generated/react/icons/icon-focus-square/index.d.ts +281 -3
  209. package/generated/react/icons/icon-folder/index.d.ts +281 -3
  210. package/generated/react/icons/icon-folder-add-right/index.d.ts +281 -3
  211. package/generated/react/icons/icon-folder-paper/index.d.ts +281 -3
  212. package/generated/react/icons/icon-folder-upload/index.d.ts +281 -3
  213. package/generated/react/icons/icon-fullscreen/index.d.ts +281 -3
  214. package/generated/react/icons/icon-gift/index.d.ts +281 -3
  215. package/generated/react/icons/icon-globus/index.d.ts +281 -3
  216. package/generated/react/icons/icon-graduate-cap/index.d.ts +281 -3
  217. package/generated/react/icons/icon-green-power/index.d.ts +281 -3
  218. package/generated/react/icons/icon-group/index.d.ts +281 -3
  219. package/generated/react/icons/icon-growth/index.d.ts +281 -3
  220. package/generated/react/icons/icon-headphones/index.d.ts +281 -3
  221. package/generated/react/icons/icon-heart/index.d.ts +281 -3
  222. package/generated/react/icons/icon-heart-beat/index.d.ts +281 -3
  223. package/generated/react/icons/icon-history/index.d.ts +281 -3
  224. package/generated/react/icons/icon-home-energy-one/index.d.ts +281 -3
  225. package/generated/react/icons/icon-home-energy-two/index.d.ts +281 -3
  226. package/generated/react/icons/icon-home-open/index.d.ts +281 -3
  227. package/generated/react/icons/icon-home-roof/index.d.ts +281 -3
  228. package/generated/react/icons/icon-horizontal-alignment-bottom/index.d.ts +281 -3
  229. package/generated/react/icons/icon-hourglass/index.d.ts +281 -3
  230. package/generated/react/icons/icon-images/index.d.ts +281 -3
  231. package/generated/react/icons/icon-inbox-empty/index.d.ts +281 -3
  232. package/generated/react/icons/icon-industry/index.d.ts +281 -3
  233. package/generated/react/icons/icon-invite/index.d.ts +281 -3
  234. package/generated/react/icons/icon-jpg/index.d.ts +281 -3
  235. package/generated/react/icons/icon-key/index.d.ts +281 -3
  236. package/generated/react/icons/icon-knife-spoon/index.d.ts +281 -3
  237. package/generated/react/icons/icon-lab/index.d.ts +281 -3
  238. package/generated/react/icons/icon-law/index.d.ts +281 -3
  239. package/generated/react/icons/icon-leisure/index.d.ts +281 -3
  240. package/generated/react/icons/icon-light-bulb/index.d.ts +281 -3
  241. package/generated/react/icons/icon-light-bulb-simple/index.d.ts +281 -3
  242. package/generated/react/icons/icon-lightning/index.d.ts +281 -3
  243. package/generated/react/icons/icon-line-chart-four/index.d.ts +281 -3
  244. package/generated/react/icons/icon-line-chart-one/index.d.ts +281 -3
  245. package/generated/react/icons/icon-line-chart-three/index.d.ts +281 -3
  246. package/generated/react/icons/icon-line-chart-two/index.d.ts +281 -3
  247. package/generated/react/icons/icon-lock/index.d.ts +281 -3
  248. package/generated/react/icons/icon-macbook-air/index.d.ts +281 -3
  249. package/generated/react/icons/icon-magnifying-glass/index.d.ts +281 -3
  250. package/generated/react/icons/icon-maintenance/index.d.ts +281 -3
  251. package/generated/react/icons/icon-map-pin/index.d.ts +281 -3
  252. package/generated/react/icons/icon-megaphone/index.d.ts +281 -3
  253. package/generated/react/icons/icon-menu-sidebar/index.d.ts +281 -3
  254. package/generated/react/icons/icon-mic-off/index.d.ts +281 -3
  255. package/generated/react/icons/icon-mic-on/index.d.ts +281 -3
  256. package/generated/react/icons/icon-minimize/index.d.ts +281 -3
  257. package/generated/react/icons/icon-minus-large/index.d.ts +281 -3
  258. package/generated/react/icons/icon-minus-small/index.d.ts +281 -3
  259. package/generated/react/icons/icon-money-hand/index.d.ts +281 -3
  260. package/generated/react/icons/icon-moneybag/index.d.ts +281 -3
  261. package/generated/react/icons/icon-moon/index.d.ts +281 -3
  262. package/generated/react/icons/icon-mute/index.d.ts +281 -3
  263. package/generated/react/icons/icon-office/index.d.ts +281 -3
  264. package/generated/react/icons/icon-other/index.d.ts +281 -3
  265. package/generated/react/icons/icon-page-add/index.d.ts +281 -3
  266. package/generated/react/icons/icon-page-text/index.d.ts +281 -3
  267. package/generated/react/icons/icon-paper-plane-top-right/index.d.ts +281 -3
  268. package/generated/react/icons/icon-paperclip/index.d.ts +281 -3
  269. package/generated/react/icons/icon-pause/index.d.ts +281 -3
  270. package/generated/react/icons/icon-pdf/index.d.ts +281 -3
  271. package/generated/react/icons/icon-pencel-line/index.d.ts +281 -3
  272. package/generated/react/icons/icon-pencil-sign/index.d.ts +281 -3
  273. package/generated/react/icons/icon-pencil-sparkle/index.d.ts +281 -3
  274. package/generated/react/icons/icon-pencil-wave/index.d.ts +281 -3
  275. package/generated/react/icons/icon-pension/index.d.ts +281 -3
  276. package/generated/react/icons/icon-people/index.d.ts +281 -3
  277. package/generated/react/icons/icon-people-a11y/index.d.ts +281 -3
  278. package/generated/react/icons/icon-people-add/index.d.ts +281 -3
  279. package/generated/react/icons/icon-people-added/index.d.ts +281 -3
  280. package/generated/react/icons/icon-people-circle/index.d.ts +281 -3
  281. package/generated/react/icons/icon-people-copy/index.d.ts +281 -3
  282. package/generated/react/icons/icon-people-profile/index.d.ts +281 -3
  283. package/generated/react/icons/icon-people-remove/index.d.ts +281 -3
  284. package/generated/react/icons/icon-percent/index.d.ts +281 -3
  285. package/generated/react/icons/icon-phone/index.d.ts +281 -3
  286. package/generated/react/icons/icon-phone-dynamic-island/index.d.ts +281 -3
  287. package/generated/react/icons/icon-pie-chart/index.d.ts +281 -3
  288. package/generated/react/icons/icon-piggy-bank/index.d.ts +281 -3
  289. package/generated/react/icons/icon-pin/index.d.ts +281 -3
  290. package/generated/react/icons/icon-pinch/index.d.ts +281 -3
  291. package/generated/react/icons/icon-play/index.d.ts +281 -3
  292. package/generated/react/icons/icon-play-circle/index.d.ts +281 -3
  293. package/generated/react/icons/icon-plus-large/index.d.ts +281 -3
  294. package/generated/react/icons/icon-plus-small/index.d.ts +281 -3
  295. package/generated/react/icons/icon-png/index.d.ts +281 -3
  296. package/generated/react/icons/icon-poop/index.d.ts +281 -3
  297. package/generated/react/icons/icon-postcard/index.d.ts +281 -3
  298. package/generated/react/icons/icon-pound/index.d.ts +281 -3
  299. package/generated/react/icons/icon-power/index.d.ts +281 -3
  300. package/generated/react/icons/icon-power-plant/index.d.ts +281 -3
  301. package/generated/react/icons/icon-printer/index.d.ts +281 -3
  302. package/generated/react/icons/icon-push/index.d.ts +281 -3
  303. package/generated/react/icons/icon-qr-code/index.d.ts +281 -3
  304. package/generated/react/icons/icon-rainy/index.d.ts +281 -3
  305. package/generated/react/icons/icon-raising-hand/index.d.ts +281 -3
  306. package/generated/react/icons/icon-reading-list/index.d.ts +281 -3
  307. package/generated/react/icons/icon-receipt-bill/index.d.ts +281 -3
  308. package/generated/react/icons/icon-receiption-bell/index.d.ts +281 -3
  309. package/generated/react/icons/icon-record/index.d.ts +281 -3
  310. package/generated/react/icons/icon-refund/index.d.ts +281 -3
  311. package/generated/react/icons/icon-robot/index.d.ts +281 -3
  312. package/generated/react/icons/icon-rocket/index.d.ts +281 -3
  313. package/generated/react/icons/icon-run-shortcut/index.d.ts +281 -3
  314. package/generated/react/icons/icon-safari/index.d.ts +281 -3
  315. package/generated/react/icons/icon-school/index.d.ts +281 -3
  316. package/generated/react/icons/icon-scissors/index.d.ts +281 -3
  317. package/generated/react/icons/icon-search-menu/index.d.ts +281 -3
  318. package/generated/react/icons/icon-seb/index.d.ts +281 -3
  319. package/generated/react/icons/icon-settings-gear/index.d.ts +281 -3
  320. package/generated/react/icons/icon-settings-slider-hor/index.d.ts +281 -3
  321. package/generated/react/icons/icon-settings-slider-three/index.d.ts +281 -3
  322. package/generated/react/icons/icon-settings-slider-ver/index.d.ts +281 -3
  323. package/generated/react/icons/icon-shapes/index.d.ts +281 -3
  324. package/generated/react/icons/icon-share/index.d.ts +281 -3
  325. package/generated/react/icons/icon-shield/index.d.ts +281 -3
  326. package/generated/react/icons/icon-shield-checked/index.d.ts +281 -3
  327. package/generated/react/icons/icon-shield-crossed/index.d.ts +281 -3
  328. package/generated/react/icons/icon-shopping-bag/index.d.ts +281 -3
  329. package/generated/react/icons/icon-signature/index.d.ts +281 -3
  330. package/generated/react/icons/icon-smartwatch/index.d.ts +281 -3
  331. package/generated/react/icons/icon-solar/index.d.ts +281 -3
  332. package/generated/react/icons/icon-solar-panel/index.d.ts +281 -3
  333. package/generated/react/icons/icon-sort/index.d.ts +281 -3
  334. package/generated/react/icons/icon-sort-ascending/index.d.ts +281 -3
  335. package/generated/react/icons/icon-sort-descending/index.d.ts +281 -3
  336. package/generated/react/icons/icon-sort-down/index.d.ts +281 -3
  337. package/generated/react/icons/icon-sort-up/index.d.ts +281 -3
  338. package/generated/react/icons/icon-square-arrow-top-right/index.d.ts +281 -3
  339. package/generated/react/icons/icon-square-behind-square/index.d.ts +281 -3
  340. package/generated/react/icons/icon-square-check/index.d.ts +281 -3
  341. package/generated/react/icons/icon-square-grid-circle/index.d.ts +281 -3
  342. package/generated/react/icons/icon-square-info/index.d.ts +281 -3
  343. package/generated/react/icons/icon-square-minus/index.d.ts +281 -3
  344. package/generated/react/icons/icon-square-placeholder/index.d.ts +281 -3
  345. package/generated/react/icons/icon-square-plus/index.d.ts +281 -3
  346. package/generated/react/icons/icon-square-x/index.d.ts +281 -3
  347. package/generated/react/icons/icon-star/index.d.ts +281 -3
  348. package/generated/react/icons/icon-store/index.d.ts +281 -3
  349. package/generated/react/icons/icon-suitcase-work/index.d.ts +281 -3
  350. package/generated/react/icons/icon-sun/index.d.ts +281 -3
  351. package/generated/react/icons/icon-sunset-arrow-down/index.d.ts +281 -3
  352. package/generated/react/icons/icon-tag/index.d.ts +281 -3
  353. package/generated/react/icons/icon-target-arrow/index.d.ts +281 -3
  354. package/generated/react/icons/icon-television/index.d.ts +281 -3
  355. package/generated/react/icons/icon-tennis/index.d.ts +281 -3
  356. package/generated/react/icons/icon-text-edit/index.d.ts +281 -3
  357. package/generated/react/icons/icon-thermostat/index.d.ts +281 -3
  358. package/generated/react/icons/icon-thumbs-down/index.d.ts +281 -3
  359. package/generated/react/icons/icon-thumbs-up/index.d.ts +281 -3
  360. package/generated/react/icons/icon-ticket/index.d.ts +281 -3
  361. package/generated/react/icons/icon-todos/index.d.ts +281 -3
  362. package/generated/react/icons/icon-trading-view-candles/index.d.ts +281 -3
  363. package/generated/react/icons/icon-trash-can/index.d.ts +281 -3
  364. package/generated/react/icons/icon-tree/index.d.ts +281 -3
  365. package/generated/react/icons/icon-trending-five/index.d.ts +281 -3
  366. package/generated/react/icons/icon-trending-four/index.d.ts +281 -3
  367. package/generated/react/icons/icon-trending-one/index.d.ts +281 -3
  368. package/generated/react/icons/icon-trending-three/index.d.ts +281 -3
  369. package/generated/react/icons/icon-trending-two/index.d.ts +281 -3
  370. package/generated/react/icons/icon-triangle-exclamation/index.d.ts +281 -3
  371. package/generated/react/icons/icon-truck/index.d.ts +281 -3
  372. package/generated/react/icons/icon-umbrella-security/index.d.ts +281 -3
  373. package/generated/react/icons/icon-unlocked/index.d.ts +281 -3
  374. package/generated/react/icons/icon-vertical-alignment-right/index.d.ts +281 -3
  375. package/generated/react/icons/icon-volume-full/index.d.ts +281 -3
  376. package/generated/react/icons/icon-volume-half/index.d.ts +281 -3
  377. package/generated/react/icons/icon-volume-off/index.d.ts +281 -3
  378. package/generated/react/icons/icon-wallet/index.d.ts +281 -3
  379. package/generated/react/icons/icon-warning-sign/index.d.ts +281 -3
  380. package/generated/react/icons/icon-wifi-full/index.d.ts +281 -3
  381. package/generated/react/icons/icon-youtube/index.d.ts +281 -3
  382. package/generated/react/icons/icon-zap/index.d.ts +281 -3
  383. package/generated/react/icons/icon-zoom-in/index.d.ts +281 -3
  384. package/generated/react/icons/icon-zoom-out/index.d.ts +281 -3
  385. package/generated/react/img/index.d.ts +281 -3
  386. package/generated/react/index.d.ts +1 -1
  387. package/generated/react/index.js +1 -1
  388. package/generated/react/input/index.d.ts +281 -3
  389. package/generated/react/link/index.d.ts +281 -3
  390. package/generated/react/list-item/index.d.ts +281 -3
  391. package/generated/react/mask/index.d.ts +281 -3
  392. package/generated/react/menu-button/index.d.ts +281 -3
  393. package/generated/react/menu-heading/index.d.ts +281 -3
  394. package/generated/react/menu-item/index.d.ts +281 -3
  395. package/generated/react/option/index.d.ts +281 -3
  396. package/generated/react/pagination/index.d.ts +281 -3
  397. package/generated/react/popover/index.d.ts +281 -3
  398. package/generated/react/radio/index.d.ts +281 -3
  399. package/generated/react/radio-group/index.d.ts +281 -3
  400. package/generated/react/rich-text/index.d.ts +281 -3
  401. package/generated/react/segment/index.d.ts +281 -3
  402. package/generated/react/segmented-control/index.d.ts +281 -3
  403. package/generated/react/select/index.d.ts +281 -3
  404. package/generated/react/sensitive-account/index.d.ts +281 -3
  405. package/generated/react/sensitive-date/index.d.ts +281 -3
  406. package/generated/react/sensitive-number/index.d.ts +281 -3
  407. package/generated/react/signal/index.d.ts +281 -3
  408. package/generated/react/spinner/index.d.ts +281 -3
  409. package/generated/react/table/index.d.ts +282 -3
  410. package/generated/react/text/index.d.ts +281 -3
  411. package/generated/react/textarea/index.d.ts +281 -3
  412. package/generated/react/theme/index.d.ts +281 -3
  413. package/generated/react/video/index.d.ts +281 -3
  414. package/package.json +484 -484
  415. package/utils/helpers/custom-element-scoping.js +1 -1
  416. package/utils/react.d.ts +3 -2
@@ -106,6 +106,11 @@ const style = css`
106
106
  & > slot:not([name]) {
107
107
  order: 1;
108
108
  }
109
+
110
+ @media (max-width: 576px) {
111
+ font: var(--gds-sys-text-detail-book-xs);
112
+ --_padding-inline: var(--gds-sys-space-xs);
113
+ }
109
114
  }
110
115
 
111
116
  a {
@@ -8,6 +8,7 @@ import * as Types from './table.types';
8
8
  *
9
9
  * @slot `header-lead` - Content displayed at the start of the table header (after search).
10
10
  * @slot `header-trail` - Content displayed at the end of the table header (before settings).
11
+ * @slot `footer` - Content displayed in the table footer area (before pagination).
11
12
  * @slot `error` - Custom error state content when data loading fails.
12
13
  * @slot `empty` - Custom empty state content when no data is available.
13
14
  * @slot `no-results` - Custom no results content when search returns empty.
@@ -103,6 +104,19 @@ export declare class GdsTable<T extends Types.Row = Types.Row> extends GdsElemen
103
104
  * Disables data caching mechanism.
104
105
  */
105
106
  nocache: boolean;
107
+ /**
108
+ * Configures a table footer row (`<tfoot>`) at the bottom of the table.
109
+ * The footer row provides slot insertion points for each visible column,
110
+ * letting consumers render any aggregation (sum, average, count, etc.).
111
+ *
112
+ * Use `tfoot.label` to optionally show a label in the first cell (omitted by default).
113
+ * Use `tfoot.sticky` to pin the footer to the bottom of the scroll area.
114
+ *
115
+ * Slot naming convention: `tfoot:{columnKey}`
116
+ *
117
+ * Accepts: `{ label?: string, sticky?: boolean }` or omit to disable.
118
+ */
119
+ tfoot?: Types.Tfoot;
106
120
  /**
107
121
  * Key to trigger data reloading when changed. Setting this to a new value
108
122
  * forces the table to clear the cache and request new data from the data provider.
@@ -5,7 +5,7 @@ import {
5
5
  __privateMethod,
6
6
  __privateSet
7
7
  } from "../../chunks/chunk.QU3DSPNU.js";
8
- var _cache, _cacheDuration, _GdsTable_instances, Density_get, hasSelection_get, isAllSelected_get, isPartialSelection_get, getCacheKey_fn, isCacheValid_fn, loadData_fn, getRowKey_fn, renderCellWrapped_fn, renderMobileLabel_fn, renderSlotElement_fn, renderCellContent_fn, renderSortIcon_fn, hasHeaderContent_fn, renderHeaderControls_fn, renderColumnHeader_fn, renderActionsHeader_fn, renderSelectableHeader_fn, renderColumnHeaders_fn, renderTableHeader_fn, renderTableCell_fn, renderSelectableCell_fn, renderRowCells_fn, renderActionsCell_fn, renderTableRow_fn, renderCheckbox_fn, renderSkeletonCell_fn, renderSkeletonRow_fn, renderTableBody_fn, renderTable_fn, renderErrorState_fn, renderEmptyState_fn, renderFooter_fn, renderHeadline_fn, handleSearch_fn, handleSearchClear_fn, handleSort_fn, handlePageChange_fn, handlePageSizeChange_fn, handleColumnVisibility_fn, handleSelectAll_fn, handleRowSelect_fn, selectAllInternal_fn, clearSelectionInternal_fn, emitSelectionChange_fn, initializeScrollTracking_fn, updateVerticalScrollState_fn, updateHorizontalScrollState_fn;
8
+ var _cache, _cacheDuration, _GdsTable_instances, Density_get, hasSelection_get, isAllSelected_get, isPartialSelection_get, getCacheKey_fn, isCacheValid_fn, loadData_fn, getRowKey_fn, renderCellWrapped_fn, renderMobileLabel_fn, renderSlotElement_fn, renderCellContent_fn, renderSortIcon_fn, hasHeaderContent_fn, renderHeaderControls_fn, renderColumnHeader_fn, renderActionsHeader_fn, renderSelectableHeader_fn, renderColumnHeaders_fn, renderTableHeader_fn, renderTableCell_fn, renderSelectableCell_fn, renderRowCells_fn, renderActionsCell_fn, renderTableRow_fn, renderCheckbox_fn, renderSkeletonCell_fn, renderSkeletonRow_fn, renderTableBody_fn, renderTableFoot_fn, renderTable_fn, renderErrorState_fn, renderEmptyState_fn, renderFooter_fn, renderHeadline_fn, handleSearch_fn, handleSearchClear_fn, handleSort_fn, handlePageChange_fn, handlePageSizeChange_fn, handleColumnVisibility_fn, handleSelectAll_fn, handleRowSelect_fn, selectAllInternal_fn, clearSelectionInternal_fn, emitSelectionChange_fn, initializeScrollTracking_fn, updateVerticalScrollState_fn, updateHorizontalScrollState_fn;
9
9
  import { localized, msg } from "@lit/localize";
10
10
  import { property, state } from "lit/decorators.js";
11
11
  import { classMap } from "lit/directives/class-map.js";
@@ -430,6 +430,7 @@ renderActionsHeader_fn = function() {
430
430
  const label = this.actions.label || msg("Actions");
431
431
  const classes = classMap({
432
432
  actions: true,
433
+ sticky: Boolean(this.actions.sticky),
433
434
  wrap: Boolean(this.actions.width),
434
435
  [`align-${this.actions.align}`]: !!this.actions.align,
435
436
  [`justify-${this.actions.justify}`]: !!this.actions.justify
@@ -521,6 +522,7 @@ renderActionsCell_fn = function(row, index) {
521
522
  const rowKey = __privateMethod(this, _GdsTable_instances, getRowKey_fn).call(this, row, index);
522
523
  const classes = classMap({
523
524
  "actions-cell": true,
525
+ sticky: Boolean(this.actions.sticky),
524
526
  wrap: Boolean(this.actions.width),
525
527
  [`align-${this.actions.align}`]: !!this.actions.align,
526
528
  [`justify-${this.actions.justify}`]: !!this.actions.justify
@@ -650,6 +652,67 @@ renderTableBody_fn = function() {
650
652
  </tbody>
651
653
  `;
652
654
  };
655
+ renderTableFoot_fn = function() {
656
+ if (!this.tfoot) return null;
657
+ const label = this.tfoot.label;
658
+ const visibleColumns = this.columns.filter(
659
+ (column) => this._view.visibleColumns.has(column.key)
660
+ );
661
+ const classes = classMap({
662
+ tablefoot: true,
663
+ sticky: Boolean(this.tfoot.sticky)
664
+ });
665
+ return html`
666
+ <tfoot class=${classes}>
667
+ <tr>
668
+ ${when(this.selectable, () => html`<td class="checkbox-cell"></td>`)}
669
+ ${visibleColumns.map((column, i) => {
670
+ const cellClasses = classMap({
671
+ "tablefoot-cell": true,
672
+ "tablefoot-label-cell": i === 0,
673
+ [`align-${column.align}`]: !!column.align,
674
+ [`justify-${column.justify}`]: !!column.justify,
675
+ wrap: Boolean(column.width)
676
+ });
677
+ const style = styleMap({
678
+ "--cell-width": column.width
679
+ });
680
+ if (i === 0 && label) {
681
+ return html`
682
+ <th scope="row" class=${cellClasses} style=${style}>
683
+ <div class="cell-content">
684
+ <span class="tablefoot-label">${label}</span>
685
+ <slot name="tfoot:${column.key}"></slot>
686
+ </div>
687
+ </th>
688
+ `;
689
+ }
690
+ return html`
691
+ <td class=${cellClasses} style=${style}>
692
+ <div class="cell-content">
693
+ <slot name="tfoot:${column.key}"></slot>
694
+ </div>
695
+ </td>
696
+ `;
697
+ })}
698
+ ${when(this.actions, () => {
699
+ const isObj = this.actions && typeof this.actions !== "function";
700
+ const stickyAction = isObj && this.actions.sticky;
701
+ const actionClasses = classMap({
702
+ "actions-cell": true,
703
+ "tablefoot-cell": true,
704
+ sticky: Boolean(stickyAction)
705
+ });
706
+ return html`<td class=${actionClasses}>
707
+ <div class="cell-content">
708
+ <slot name="tfoot:actions"></slot>
709
+ </div>
710
+ </td>`;
711
+ })}
712
+ </tr>
713
+ </tfoot>
714
+ `;
715
+ };
653
716
  renderTable_fn = function() {
654
717
  const CLASSES = classMap({
655
718
  responsive: this.responsive,
@@ -673,6 +736,7 @@ renderTable_fn = function() {
673
736
  ${caption}
674
737
  </caption>
675
738
  ${__privateMethod(this, _GdsTable_instances, renderTableHeader_fn).call(this)} ${__privateMethod(this, _GdsTable_instances, renderTableBody_fn).call(this)}
739
+ ${__privateMethod(this, _GdsTable_instances, renderTableFoot_fn).call(this)}
676
740
  </table>
677
741
  </div>
678
742
  </gds-card>
@@ -735,18 +799,20 @@ renderFooter_fn = function() {
735
799
  const end = Math.min(this._view.page * this._view.rows, this._total);
736
800
  const summaryString = `${start}\u2013${end} ${msg("of")} ${this._total}`;
737
801
  return html`
738
- <gds-pagination
739
- .page=${this._view.page}
740
- .rows=${this._view.rows}
741
- .options=${this.options}
742
- .total=${this._total}
743
- .density=${this.density}
744
- .label=${summaryString}
745
- @gds-page-change=${__privateMethod(this, _GdsTable_instances, handlePageChange_fn)}
746
- @gds-rows-change=${__privateMethod(this, _GdsTable_instances, handlePageSizeChange_fn)}
747
- width="100%"
748
- >
749
- </gds-pagination>
802
+ <slot name="footer">
803
+ <gds-pagination
804
+ .page=${this._view.page}
805
+ .rows=${this._view.rows}
806
+ .options=${this.options}
807
+ .total=${this._total}
808
+ .density=${this.density}
809
+ .label=${summaryString}
810
+ @gds-page-change=${__privateMethod(this, _GdsTable_instances, handlePageChange_fn)}
811
+ @gds-rows-change=${__privateMethod(this, _GdsTable_instances, handlePageSizeChange_fn)}
812
+ width="100%"
813
+ >
814
+ </gds-pagination>
815
+ </slot>
750
816
  `;
751
817
  };
752
818
  renderHeadline_fn = function() {
@@ -916,14 +982,21 @@ initializeScrollTracking_fn = function() {
916
982
  /**
917
983
  * Updates CSS classes based on vertical scroll position.
918
984
  * Adds 'scrolled' class when scrolled down from top.
985
+ * Adds 'scrolled-bottom' class when not scrolled to the very bottom.
919
986
  */
920
987
  updateVerticalScrollState_fn = function(container) {
921
- const { scrollTop } = container;
988
+ const { scrollTop, scrollHeight, clientHeight } = container;
989
+ const maxScrollTop = scrollHeight - clientHeight;
922
990
  if (scrollTop > 0) {
923
991
  container.classList.add("scrolled");
924
992
  } else {
925
993
  container.classList.remove("scrolled");
926
994
  }
995
+ if (scrollTop < maxScrollTop - 1) {
996
+ container.classList.add("scrolled-bottom");
997
+ } else {
998
+ container.classList.remove("scrolled-bottom");
999
+ }
927
1000
  };
928
1001
  /**
929
1002
  * Updates CSS classes based on horizontal scroll position.
@@ -1013,6 +1086,9 @@ __decorateClass([
1013
1086
  __decorateClass([
1014
1087
  property({ type: Boolean, reflect: false })
1015
1088
  ], GdsTable.prototype, "nocache", 2);
1089
+ __decorateClass([
1090
+ property({ type: Object })
1091
+ ], GdsTable.prototype, "tfoot", 2);
1016
1092
  __decorateClass([
1017
1093
  property()
1018
1094
  ], GdsTable.prototype, "dataLoadKey", 2);
@@ -1,8 +1,9 @@
1
1
  import { TemplateResult } from 'lit';
2
- import type { TableActions, TableColumn, TableRequest, TableResponse } from './table.types';
2
+ import type { TableActions, TableColumn, TableRequest, TableResponse, TableTfoot } from './table.types';
3
3
  export declare const Users: {
4
4
  Columns: TableColumn[];
5
5
  Actions: TableActions;
6
+ Tfoot: TableTfoot;
6
7
  Data: (request: TableRequest) => Promise<TableResponse<any>>;
7
8
  /**
8
9
  * Generates slot content for the given rows (current page).
@@ -14,6 +15,13 @@ export declare const Users: {
14
15
  * ```
15
16
  */
16
17
  SlotContent: (rows: any[]) => TemplateResult;
18
+ /**
19
+ * Generates tfoot slot content for the footer row.
20
+ * Receives all rows on the page and computes aggregations.
21
+ *
22
+ * Slot naming: `tfoot:{columnKey}`
23
+ */
24
+ TfootSlotContent: (rows: any[]) => TemplateResult;
17
25
  };
18
26
  export declare const Feedback: {
19
27
  Columns: TableColumn[];
@@ -123,6 +123,10 @@ const Users = {
123
123
  label: "Actions",
124
124
  justify: "end"
125
125
  },
126
+ Tfoot: {
127
+ label: "Totals",
128
+ sticky: true
129
+ },
126
130
  Data: userDataProvider,
127
131
  /**
128
132
  * Generates slot content for the given rows (current page).
@@ -212,6 +216,47 @@ const Users = {
212
216
  `
213
217
  )}
214
218
  `;
219
+ },
220
+ /**
221
+ * Generates tfoot slot content for the footer row.
222
+ * Receives all rows on the page and computes aggregations.
223
+ *
224
+ * Slot naming: `tfoot:{columnKey}`
225
+ */
226
+ TfootSlotContent: (rows) => {
227
+ const totalAmount = rows.reduce(
228
+ (sum, row) => sum + (Number(row.amount) || 0),
229
+ 0
230
+ );
231
+ const activeCount = rows.filter(
232
+ (row) => String(row.status) === "Active"
233
+ ).length;
234
+ const activeRate = Math.round(activeCount / rows.length * 100);
235
+ const departments = new Set(rows.map((row) => row.department)).size;
236
+ return html`
237
+ <!-- tfoot: name row count -->
238
+ <span slot="tfoot:name">${rows.length} Users</span>
239
+
240
+ <!-- tfoot: status active rate -->
241
+ <gds-badge
242
+ slot="tfoot:status"
243
+ variant="${activeRate >= 70 ? "positive" : activeRate >= 40 ? "warning" : "negative"}"
244
+ size="small"
245
+ >
246
+ ${activeRate}% active
247
+ </gds-badge>
248
+
249
+ <!-- tfoot: department count -->
250
+ <gds-badge slot="tfoot:department" variant="information" size="small">
251
+ ${departments} depts
252
+ </gds-badge>
253
+
254
+ <!-- tfoot: amount sum -->
255
+ <gds-flex slot="tfoot:amount" gap="s" align-items="center">
256
+ <gds-formatted-number .value=${totalAmount}></gds-formatted-number>
257
+ <gds-badge size="small">SEK</gds-badge>
258
+ </gds-flex>
259
+ `;
215
260
  }
216
261
  };
217
262
  const loadFeedback = async () => {
@@ -297,7 +342,8 @@ const Actions = {
297
342
  label: "Actions",
298
343
  align: "center",
299
344
  justify: "start",
300
- width: "150px"
345
+ // width: '150px',
346
+ sticky: true
301
347
  },
302
348
  MultipleActionsSlotContent: (rows) => {
303
349
  return html`
@@ -327,7 +373,8 @@ const Actions = {
327
373
  label: "Actions",
328
374
  align: "center",
329
375
  justify: "end",
330
- width: "150px"
376
+ // width: '150px',
377
+ sticky: true
331
378
  },
332
379
  ActionLinkSlotContent: (rows) => {
333
380
  return html`
@@ -348,7 +395,8 @@ const Actions = {
348
395
  label: "Actions",
349
396
  align: "center",
350
397
  justify: "end",
351
- width: "150px"
398
+ // width: '150px',
399
+ sticky: true
352
400
  },
353
401
  ActionContextMenuSlotContent: (rows) => {
354
402
  return html`
@@ -24,6 +24,7 @@ const TableStyles = css`
24
24
  --table-gap: var(--gds-sys-space-m);
25
25
  --table-border-spacing: 0 var(--gds-sys-space-5xs);
26
26
  --table-data-padding: var(--gds-sys-space-5xs) var(--gds-sys-space-4xs);
27
+ --table-data-padding-x: var(--gds-sys-space-4xs);
27
28
  }
28
29
 
29
30
  /* Comfortable default */
@@ -37,6 +38,7 @@ const TableStyles = css`
37
38
  --table-gap: var(--gds-sys-space-l);
38
39
  --table-border-spacing: 0 var(--gds-sys-space-4xs);
39
40
  --table-data-padding: var(--gds-sys-space-3xs) var(--gds-sys-space-2xs);
41
+ --table-data-padding-x: var(--gds-sys-space-2xs);
40
42
  }
41
43
 
42
44
  /* Spacious density */
@@ -50,6 +52,7 @@ const TableStyles = css`
50
52
  --table-gap: var(--gds-sys-space-xl);
51
53
  --table-border-spacing: 0 var(--gds-sys-space-3xs);
52
54
  --table-data-padding: var(--gds-sys-space-3xs) var(--gds-sys-space-xs);
55
+ --table-data-padding-x: var(--gds-sys-space-xs);
53
56
  }
54
57
 
55
58
  /* Secondary and Tertiary */
@@ -61,6 +64,7 @@ const TableStyles = css`
61
64
  --_table-row-hover: var(--gds-sys-color-l2-neutral-01);
62
65
  --_table-row-selected-hover: var(--gds-sys-color-l3-neutral-03);
63
66
  --_table-row-striped: var(--gds-sys-color-l2-neutral-01);
67
+ --_table-card-bg: var(--gds-sys-color-l1-neutral-01);
64
68
  }
65
69
 
66
70
  /* Primary variant */
@@ -75,6 +79,7 @@ const TableStyles = css`
75
79
  );
76
80
  --_table-row-selected-hover: var(--gds-sys-color-l3-neutral-03);
77
81
  --_table-row-striped: var(--gds-sys-color-l2-neutral-01);
82
+ --_table-card-bg: var(--gds-sys-color-l2-neutral-01);
78
83
  }
79
84
 
80
85
  /* Apply density variables */
@@ -360,6 +365,152 @@ const TableStyles = css`
360
365
  justify-content: flex-end;
361
366
  }
362
367
 
368
+ /* Sticky actions column */
369
+ th.actions.sticky,
370
+ td.actions-cell.sticky {
371
+ position: sticky;
372
+ right: calc(-1 * var(--table-data-padding-x, 0px));
373
+ z-index: 1;
374
+ width: max-content;
375
+ padding-right: calc(
376
+ var(--table-cell-padding-x) + var(--table-data-padding-x, 0px)
377
+ );
378
+ }
379
+
380
+ th.actions.sticky {
381
+ z-index: 2;
382
+ background: var(--_table-header-bg);
383
+ }
384
+
385
+ th.actions.sticky .column-header {
386
+ justify-content: flex-end;
387
+ }
388
+
389
+ td.actions-cell.sticky {
390
+ background: var(--_table-card-bg);
391
+ }
392
+
393
+ td.actions-cell.sticky .cell-content {
394
+ justify-content: flex-end;
395
+ position: relative;
396
+ }
397
+
398
+ /* Left gradient fade on sticky action cells */
399
+ td.actions-cell.sticky::before {
400
+ content: '';
401
+ position: absolute;
402
+ inset-block: 0;
403
+ right: 100%;
404
+ width: var(--gds-sys-space-4xl);
405
+ pointer-events: none;
406
+ background: linear-gradient(to right, transparent, var(--_table-card-bg));
407
+ }
408
+
409
+ th.actions.sticky::before {
410
+ content: '';
411
+ position: absolute;
412
+ inset-block: 0;
413
+ right: 100%;
414
+ width: var(--gds-sys-space-4xl);
415
+ pointer-events: none;
416
+ background: linear-gradient(to right, transparent, var(--_table-header-bg));
417
+ }
418
+
419
+ /* Sticky action inherits row hover/selected/striped backgrounds */
420
+ tbody tr:hover td.actions-cell.sticky {
421
+ background: var(--_table-row-hover);
422
+ }
423
+
424
+ tbody tr:hover td.actions-cell.sticky::before {
425
+ background: linear-gradient(to right, transparent, var(--_table-row-hover));
426
+ }
427
+
428
+ tbody tr.selected td.actions-cell.sticky {
429
+ background: var(--gds-sys-color-l3-neutral-02);
430
+ }
431
+
432
+ tbody tr.selected td.actions-cell.sticky::before {
433
+ background: linear-gradient(
434
+ to right,
435
+ transparent,
436
+ var(--gds-sys-color-l3-neutral-02)
437
+ );
438
+ }
439
+
440
+ .striped
441
+ tbody
442
+ tr:not(.selected, :hover):nth-child(even)
443
+ td.actions-cell.sticky {
444
+ background: var(--_table-row-striped);
445
+ }
446
+
447
+ .striped
448
+ tbody
449
+ tr:not(.selected, :hover):nth-child(even)
450
+ td.actions-cell.sticky::before {
451
+ background: linear-gradient(
452
+ to right,
453
+ transparent,
454
+ var(--_table-row-striped)
455
+ );
456
+ }
457
+
458
+ /* Table Footer Row */
459
+
460
+ tfoot.tablefoot tr td,
461
+ tfoot.tablefoot tr th[scope='row'] {
462
+ padding-block: var(--table-cell-padding-y);
463
+ padding-inline: var(--table-cell-padding-x);
464
+ background: var(--_table-header-bg);
465
+ font-weight: normal;
466
+ border-top: var(--_table-border-width) solid var(--_table-border-color);
467
+ }
468
+
469
+ tfoot.tablefoot tr th[scope='row'] {
470
+ font-weight: var(--gds-sys-text-weight-book);
471
+ }
472
+
473
+ tfoot.tablefoot tr td:first-child,
474
+ tfoot.tablefoot tr th:first-child {
475
+ border-top-left-radius: var(--gds-sys-radius-s);
476
+ border-bottom-left-radius: var(--gds-sys-radius-s);
477
+ }
478
+
479
+ tfoot.tablefoot tr td:last-child,
480
+ tfoot.tablefoot tr th:last-child {
481
+ border-top-right-radius: var(--gds-sys-radius-s);
482
+ border-bottom-right-radius: var(--gds-sys-radius-s);
483
+ }
484
+
485
+ .tablefoot-label {
486
+ font-weight: var(--gds-sys-text-weight-book);
487
+ white-space: nowrap;
488
+ }
489
+
490
+ tfoot.tablefoot.sticky {
491
+ position: sticky;
492
+ bottom: 0;
493
+ z-index: 10;
494
+ will-change: transform;
495
+ }
496
+
497
+ /* When sticky tablefoot: move padding from .data to table, keep tfoot edge-to-edge */
498
+ .data:has(tfoot.tablefoot.sticky) {
499
+ padding: 0;
500
+ }
501
+
502
+ .data:has(tfoot.tablefoot.sticky) table {
503
+ padding-top: var(--table-data-padding-x);
504
+ padding-inline: var(--table-data-padding-x);
505
+ }
506
+
507
+ tfoot.tablefoot.sticky tr td,
508
+ tfoot.tablefoot.sticky tr th[scope='row'] {
509
+ border-radius: 0;
510
+ background: var(--_table-card-bg);
511
+ border-top: var(--_table-border-width) solid var(--_table-border-color);
512
+ }
513
+
363
514
  /* Align utilities */
364
515
  td {
365
516
  height: 100%;
@@ -674,6 +825,16 @@ const TableStyles = css`
674
825
  }
675
826
  }
676
827
 
828
+ /* Sticky table footer */
829
+ tfoot.tablefoot.sticky {
830
+ background-color: var(--_table-card-bg);
831
+ }
832
+
833
+ tfoot.tablefoot.sticky tr td,
834
+ tfoot.tablefoot.sticky tr th[scope='row'] {
835
+ background: var(--_table-card-bg);
836
+ }
837
+
677
838
  /* Horizontal scroll */
678
839
  @property --_start-fade {
679
840
  syntax: '<length>';
@@ -689,18 +850,20 @@ const TableStyles = css`
689
850
 
690
851
  @keyframes scroll-fade {
691
852
  0% {
692
- --_start-fade: 0;
853
+ --_start-fade: 0px;
854
+ --_end-fade: var(--gds-sys-space-4xl);
693
855
  }
694
- 10%,
695
- 100% {
856
+ 1% {
696
857
  --_start-fade: var(--gds-sys-space-4xl);
858
+ --_end-fade: var(--gds-sys-space-4xl);
697
859
  }
698
- 0%,
699
- 90% {
860
+ 99% {
861
+ --_start-fade: var(--gds-sys-space-4xl);
700
862
  --_end-fade: var(--gds-sys-space-4xl);
701
863
  }
702
864
  100% {
703
- --_end-fade: 0;
865
+ --_start-fade: var(--gds-sys-space-4xl);
866
+ --_end-fade: 0px;
704
867
  }
705
868
  }
706
869
 
@@ -712,9 +875,18 @@ const TableStyles = css`
712
875
  #ffff var(--_start-fade) calc(100% - var(--_end-fade)),
713
876
  #0000
714
877
  );
715
- animation: scroll-fade;
716
- animation-timeline: --scroll-fade;
717
- scroll-timeline: --scroll-fade x;
878
+ animation: scroll-fade both linear;
879
+ animation-timeline: scroll(self inline);
880
+ }
881
+
882
+ /* When sticky actions are present, remove the right fade.*/
883
+ .data:has(td.actions-cell.sticky) {
884
+ mask: linear-gradient(
885
+ to right,
886
+ #0000,
887
+ #ffff var(--_start-fade),
888
+ #ffff 100%
889
+ );
718
890
  }
719
891
  }
720
892
  }
@@ -18,6 +18,11 @@ export interface Actions {
18
18
  align?: 'start' | 'center' | 'stretch' | 'end';
19
19
  justify?: 'start' | 'center' | 'space-between' | 'end';
20
20
  width?: string;
21
+ sticky?: boolean;
22
+ }
23
+ export interface Tfoot {
24
+ label?: string;
25
+ sticky?: boolean;
21
26
  }
22
27
  export interface Row {
23
28
  [key: string]: any;
@@ -44,7 +49,7 @@ export interface Response<T> {
44
49
  /**
45
50
  * Internal density configuration for the table's built-in UI controls
46
51
  * (search input, column settings dropdown). Does not affect user-provided
47
- * slot content size your own components to match the chosen density.
52
+ * slot content size your own components to match the chosen density.
48
53
  */
49
54
  export declare const DENSITY_CONFIG: {
50
55
  readonly compact: {
@@ -85,6 +90,9 @@ export type TableState = State;
85
90
  export type TableRequest = Request;
86
91
  export type TableResponse<T> = Response<T>;
87
92
  export type TableDensity = Density;
93
+ export type TableTfoot = Tfoot;
94
+ /** @deprecated Use `TableTfoot` instead */
95
+ export type TableTotals = Tfoot;
88
96
  export type TableCache<T> = Cache<T>;
89
97
  export type TableCacheEntry<T> = CacheEntry<T>;
90
98
  export type TableSlotValue = SlotValue;