@sebgroup/green-core 3.1.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/assets/icons/regular/archive.svg +1 -1
  2. package/assets/icons/regular/bookmark-check.svg +1 -1
  3. package/assets/icons/regular/bookmark-delete.svg +1 -1
  4. package/assets/icons/regular/bookmark-plus.svg +1 -1
  5. package/assets/icons/regular/brand-bankid.svg +1 -1
  6. package/assets/icons/regular/chevron-grabber-vertical-reversed.svg +1 -0
  7. package/assets/icons/regular/cup-hot.svg +1 -1
  8. package/assets/icons/regular/home-energy-two.svg +1 -1
  9. package/assets/icons/regular/light-bulb-simple.svg +1 -1
  10. package/assets/icons/regular/trading-view-candles.svg +1 -1
  11. package/assets/icons/regular/volume-off.svg +1 -1
  12. package/assets/icons/solid/brand-figma.svg +2 -2
  13. package/assets/icons/solid/brand-green.svg +1 -1
  14. package/assets/icons/solid/brand-swish-word.svg +2 -2
  15. package/assets/icons/solid/brush.svg +1 -1
  16. package/assets/icons/solid/chain-link-broken.svg +1 -1
  17. package/assets/icons/solid/checklist.svg +1 -1
  18. package/assets/icons/solid/checkmark.svg +1 -1
  19. package/assets/icons/solid/chevron-grabber-vertical-reversed.svg +1 -0
  20. package/assets/icons/solid/globus.svg +6 -6
  21. package/assets/icons/solid/heart.svg +1 -1
  22. package/assets/icons/solid/home-roof.svg +1 -1
  23. package/assets/icons/solid/pension.svg +3 -3
  24. package/assets/icons/solid/run-shortcut.svg +2 -2
  25. package/assets/icons/solid/store.svg +1 -1
  26. package/assets/icons/solid/thumbs-down.svg +1 -1
  27. package/assets/icons/solid/trading-view-candles.svg +2 -2
  28. package/assets/icons/solid/trending-three.svg +1 -1
  29. package/bin/context-cli/index.js +46 -0
  30. package/bin/mcp-server/constants.d.ts +10 -0
  31. package/bin/mcp-server/constants.js +21 -0
  32. package/bin/mcp-server/handlers.d.ts +10 -0
  33. package/bin/mcp-server/handlers.js +110 -0
  34. package/bin/mcp-server/resources.js +65 -0
  35. package/bin/mcp-server/tools.js +39 -0
  36. package/bin/mcp-server/types.d.ts +77 -0
  37. package/bin/mcp-server/utils.d.ts +6 -7
  38. package/bin/mcp-server/utils.js +12 -11
  39. package/bin/mcp-server/validation.d.ts +8 -1
  40. package/bin/mcp-server/validation.js +37 -1
  41. package/components/button/button.component.js +2 -1
  42. package/components/context-menu/context-menu.component.d.ts +5 -1
  43. package/components/context-menu/context-menu.component.js +21 -2
  44. package/components/details/details.component.js +1 -1
  45. package/components/form-summary/summary.component.d.ts +4 -2
  46. package/components/form-summary/summary.component.js +116 -55
  47. package/components/form-summary/summary.styles.js +16 -2
  48. package/components/icon/icons/archive.component.js +1 -1
  49. package/components/icon/icons/bookmark-check.component.js +1 -1
  50. package/components/icon/icons/bookmark-delete.component.js +1 -1
  51. package/components/icon/icons/bookmark-plus.component.js +1 -1
  52. package/components/icon/icons/brand-bankid.component.js +1 -1
  53. package/components/icon/icons/brand-figma.component.js +1 -1
  54. package/components/icon/icons/brand-green.component.js +1 -1
  55. package/components/icon/icons/brand-swish-word.component.js +1 -1
  56. package/components/icon/icons/brush.component.js +1 -1
  57. package/components/icon/icons/chain-link-broken.component.js +1 -1
  58. package/components/icon/icons/checklist.component.js +1 -1
  59. package/components/icon/icons/checkmark.component.js +1 -1
  60. package/components/icon/icons/chevron-grabber-vertical-reversed.component.d.ts +18 -0
  61. package/components/icon/icons/chevron-grabber-vertical-reversed.component.js +25 -0
  62. package/components/icon/icons/chevron-grabber-vertical-reversed.d.ts +2 -0
  63. package/components/icon/icons/chevron-grabber-vertical-reversed.js +6 -0
  64. package/components/icon/icons/cup-hot.component.js +1 -1
  65. package/components/icon/icons/globus.component.js +1 -1
  66. package/components/icon/icons/heart.component.js +1 -1
  67. package/components/icon/icons/home-energy-two.component.js +1 -1
  68. package/components/icon/icons/home-roof.component.js +1 -1
  69. package/components/icon/icons/index.d.ts +1 -0
  70. package/components/icon/icons/index.js +1 -0
  71. package/components/icon/icons/light-bulb-simple.component.js +1 -1
  72. package/components/icon/icons/pension.component.js +1 -1
  73. package/components/icon/icons/pure.d.ts +1 -0
  74. package/components/icon/icons/pure.js +1 -0
  75. package/components/icon/icons/run-shortcut.component.js +1 -1
  76. package/components/icon/icons/store.component.js +1 -1
  77. package/components/icon/icons/thumbs-down.component.js +1 -1
  78. package/components/icon/icons/trading-view-candles.component.js +2 -2
  79. package/components/icon/icons/trending-three.component.js +1 -1
  80. package/components/icon/icons/volume-off.component.js +1 -1
  81. package/custom-elements.json +37837 -37078
  82. package/gds-element.js +1 -1
  83. package/generated/locales/da.d.ts +1 -1
  84. package/generated/locales/da.js +1 -1
  85. package/generated/locales/de.d.ts +1 -1
  86. package/generated/locales/de.js +1 -1
  87. package/generated/locales/fi.d.ts +1 -1
  88. package/generated/locales/fi.js +1 -1
  89. package/generated/locales/fr.d.ts +1 -1
  90. package/generated/locales/fr.js +1 -1
  91. package/generated/locales/it.d.ts +1 -1
  92. package/generated/locales/it.js +1 -1
  93. package/generated/locales/nl.d.ts +1 -1
  94. package/generated/locales/nl.js +1 -1
  95. package/generated/locales/no.d.ts +1 -1
  96. package/generated/locales/no.js +1 -1
  97. package/generated/locales/sv.d.ts +1 -1
  98. package/generated/locales/sv.js +1 -1
  99. package/generated/mcp/INSTRUCTIONS.md +10 -0
  100. package/generated/mcp/badge/api.md +2 -0
  101. package/generated/mcp/breadcrumbs/api.md +2 -0
  102. package/generated/mcp/button/api.md +2 -0
  103. package/generated/mcp/card/api.md +2 -0
  104. package/generated/mcp/card-linked/api.md +2 -0
  105. package/generated/mcp/card-pattern-01/api.md +2 -0
  106. package/generated/mcp/checkbox-group/api.md +2 -0
  107. package/generated/mcp/components.json +2 -1
  108. package/generated/mcp/concepts/declarative-layout.md +5 -0
  109. package/generated/mcp/context-menu/api.md +3 -0
  110. package/generated/mcp/datepicker/api.md +2 -0
  111. package/generated/mcp/details/api.md +2 -0
  112. package/generated/mcp/dialog/api.md +2 -0
  113. package/generated/mcp/div/api.md +2 -0
  114. package/generated/mcp/divider/api.md +2 -0
  115. package/generated/mcp/dropdown/api.md +2 -0
  116. package/generated/mcp/fab/api.md +2 -0
  117. package/generated/mcp/flex/api.md +2 -0
  118. package/generated/mcp/form-summary/angular.md +3 -1
  119. package/generated/mcp/form-summary/api.md +9 -2
  120. package/generated/mcp/form-summary/react.md +3 -1
  121. package/generated/mcp/formatted-account/api.md +2 -0
  122. package/generated/mcp/formatted-date/api.md +2 -0
  123. package/generated/mcp/formatted-number/api.md +2 -0
  124. package/generated/mcp/grid/api.md +2 -0
  125. package/generated/mcp/icon-ai/api.md +2 -0
  126. package/generated/mcp/icon-airplane-up/api.md +2 -0
  127. package/generated/mcp/icon-archive/api.md +2 -0
  128. package/generated/mcp/icon-arrow/api.md +2 -0
  129. package/generated/mcp/icon-arrow-bottom-top/api.md +2 -0
  130. package/generated/mcp/icon-arrow-box-left/api.md +2 -0
  131. package/generated/mcp/icon-arrow-box-left-alt/api.md +2 -0
  132. package/generated/mcp/icon-arrow-box-right/api.md +2 -0
  133. package/generated/mcp/icon-arrow-down/api.md +2 -0
  134. package/generated/mcp/icon-arrow-inbox/api.md +2 -0
  135. package/generated/mcp/icon-arrow-left/api.md +2 -0
  136. package/generated/mcp/icon-arrow-left-right/api.md +2 -0
  137. package/generated/mcp/icon-arrow-out-of-box/api.md +2 -0
  138. package/generated/mcp/icon-arrow-right/api.md +2 -0
  139. package/generated/mcp/icon-arrow-right-circle/api.md +2 -0
  140. package/generated/mcp/icon-arrow-right-down-circle/api.md +2 -0
  141. package/generated/mcp/icon-arrow-right-up-circle/api.md +2 -0
  142. package/generated/mcp/icon-arrow-rotate-clockwise/api.md +2 -0
  143. package/generated/mcp/icon-arrow-rotate-counter-clockwise/api.md +2 -0
  144. package/generated/mcp/icon-arrow-rotate-left-right/api.md +2 -0
  145. package/generated/mcp/icon-arrow-rotate-right-left/api.md +2 -0
  146. package/generated/mcp/icon-arrow-share-left/api.md +2 -0
  147. package/generated/mcp/icon-arrow-share-right/api.md +2 -0
  148. package/generated/mcp/icon-arrow-split/api.md +2 -0
  149. package/generated/mcp/icon-arrow-up/api.md +2 -0
  150. package/generated/mcp/icon-arrow-wall-down/api.md +2 -0
  151. package/generated/mcp/icon-arrow-wall-left/api.md +2 -0
  152. package/generated/mcp/icon-arrow-wall-right/api.md +2 -0
  153. package/generated/mcp/icon-arrow-wall-up/api.md +2 -0
  154. package/generated/mcp/icon-asterisk/api.md +2 -0
  155. package/generated/mcp/icon-at/api.md +2 -0
  156. package/generated/mcp/icon-back/api.md +2 -0
  157. package/generated/mcp/icon-backward/api.md +2 -0
  158. package/generated/mcp/icon-bag/api.md +2 -0
  159. package/generated/mcp/icon-bank/api.md +2 -0
  160. package/generated/mcp/icon-banknote/api.md +2 -0
  161. package/generated/mcp/icon-banknote-2/api.md +2 -0
  162. package/generated/mcp/icon-barcode/api.md +2 -0
  163. package/generated/mcp/icon-bars-three/api.md +2 -0
  164. package/generated/mcp/icon-bars-two/api.md +2 -0
  165. package/generated/mcp/icon-basket/api.md +2 -0
  166. package/generated/mcp/icon-battery-loading/api.md +2 -0
  167. package/generated/mcp/icon-bell/api.md +2 -0
  168. package/generated/mcp/icon-block/api.md +2 -0
  169. package/generated/mcp/icon-book/api.md +2 -0
  170. package/generated/mcp/icon-bookmark/api.md +2 -0
  171. package/generated/mcp/icon-bookmark-check/api.md +2 -0
  172. package/generated/mcp/icon-bookmark-delete/api.md +2 -0
  173. package/generated/mcp/icon-bookmark-plus/api.md +2 -0
  174. package/generated/mcp/icon-bookmark-remove/api.md +2 -0
  175. package/generated/mcp/icon-books/api.md +2 -0
  176. package/generated/mcp/icon-brand-app-store/api.md +2 -0
  177. package/generated/mcp/icon-brand-apple-music/api.md +2 -0
  178. package/generated/mcp/icon-brand-bankid/api.md +2 -0
  179. package/generated/mcp/icon-brand-chrome/api.md +2 -0
  180. package/generated/mcp/icon-brand-facebook/api.md +2 -0
  181. package/generated/mcp/icon-brand-figma/api.md +2 -0
  182. package/generated/mcp/icon-brand-firefox/api.md +2 -0
  183. package/generated/mcp/icon-brand-github/api.md +2 -0
  184. package/generated/mcp/icon-brand-green/api.md +2 -0
  185. package/generated/mcp/icon-brand-instagram/api.md +2 -0
  186. package/generated/mcp/icon-brand-linkedin/api.md +2 -0
  187. package/generated/mcp/icon-brand-play-store/api.md +2 -0
  188. package/generated/mcp/icon-brand-rss-feed/api.md +2 -0
  189. package/generated/mcp/icon-brand-seb/api.md +2 -0
  190. package/generated/mcp/icon-brand-spotify/api.md +2 -0
  191. package/generated/mcp/icon-brand-storybook/api.md +2 -0
  192. package/generated/mcp/icon-brand-swish-word/api.md +2 -0
  193. package/generated/mcp/icon-brand-x/api.md +2 -0
  194. package/generated/mcp/icon-brush/api.md +2 -0
  195. package/generated/mcp/icon-bubble-annotation/api.md +2 -0
  196. package/generated/mcp/icon-bubbles/api.md +2 -0
  197. package/generated/mcp/icon-buildings/api.md +2 -0
  198. package/generated/mcp/icon-bullet-list/api.md +2 -0
  199. package/generated/mcp/icon-calculator/api.md +2 -0
  200. package/generated/mcp/icon-calendar/api.md +2 -0
  201. package/generated/mcp/icon-calendar-check/api.md +2 -0
  202. package/generated/mcp/icon-calender-add/api.md +2 -0
  203. package/generated/mcp/icon-call/api.md +2 -0
  204. package/generated/mcp/icon-car/api.md +2 -0
  205. package/generated/mcp/icon-carussel/api.md +2 -0
  206. package/generated/mcp/icon-chain-link/api.md +2 -0
  207. package/generated/mcp/icon-chain-link-broken/api.md +2 -0
  208. package/generated/mcp/icon-chart-two/api.md +2 -0
  209. package/generated/mcp/icon-checklist/api.md +2 -0
  210. package/generated/mcp/icon-checkmark/api.md +2 -0
  211. package/generated/mcp/icon-chevron-bottom/api.md +2 -0
  212. package/generated/mcp/icon-chevron-double-down/api.md +2 -0
  213. package/generated/mcp/icon-chevron-double-left/api.md +2 -0
  214. package/generated/mcp/icon-chevron-double-right/api.md +2 -0
  215. package/generated/mcp/icon-chevron-double-up/api.md +2 -0
  216. package/generated/mcp/icon-chevron-down-small/api.md +2 -0
  217. package/generated/mcp/icon-chevron-grabber-vertical/api.md +2 -0
  218. package/generated/mcp/icon-chevron-grabber-vertical-reversed/angular.md +15 -0
  219. package/generated/mcp/icon-chevron-grabber-vertical-reversed/api.md +31 -0
  220. package/generated/mcp/icon-chevron-grabber-vertical-reversed/index.json +8 -0
  221. package/generated/mcp/icon-chevron-grabber-vertical-reversed/react.md +15 -0
  222. package/generated/mcp/icon-chevron-left/api.md +2 -0
  223. package/generated/mcp/icon-chevron-left-small/api.md +2 -0
  224. package/generated/mcp/icon-chevron-right/api.md +2 -0
  225. package/generated/mcp/icon-chevron-right-small/api.md +2 -0
  226. package/generated/mcp/icon-chevron-top/api.md +2 -0
  227. package/generated/mcp/icon-chevron-top-small/api.md +2 -0
  228. package/generated/mcp/icon-circle-ban/api.md +2 -0
  229. package/generated/mcp/icon-circle-check/api.md +2 -0
  230. package/generated/mcp/icon-circle-dots/api.md +2 -0
  231. package/generated/mcp/icon-circle-info/api.md +2 -0
  232. package/generated/mcp/icon-circle-minus/api.md +2 -0
  233. package/generated/mcp/icon-circle-placeholder-on/api.md +2 -0
  234. package/generated/mcp/icon-circle-plus/api.md +2 -0
  235. package/generated/mcp/icon-circle-questionmark/api.md +2 -0
  236. package/generated/mcp/icon-circle-x/api.md +2 -0
  237. package/generated/mcp/icon-circles-three/api.md +2 -0
  238. package/generated/mcp/icon-clock/api.md +2 -0
  239. package/generated/mcp/icon-cloud-download/api.md +2 -0
  240. package/generated/mcp/icon-cloud-upload/api.md +2 -0
  241. package/generated/mcp/icon-cloudy-sun/api.md +2 -0
  242. package/generated/mcp/icon-code/api.md +2 -0
  243. package/generated/mcp/icon-code-brackets/api.md +2 -0
  244. package/generated/mcp/icon-compass-round/api.md +2 -0
  245. package/generated/mcp/icon-cookies/api.md +2 -0
  246. package/generated/mcp/icon-copy/api.md +2 -0
  247. package/generated/mcp/icon-credit-card/api.md +2 -0
  248. package/generated/mcp/icon-credit-card-add/api.md +2 -0
  249. package/generated/mcp/icon-cross-large/api.md +2 -0
  250. package/generated/mcp/icon-cross-small/api.md +2 -0
  251. package/generated/mcp/icon-cup-hot/api.md +2 -0
  252. package/generated/mcp/icon-cursor/api.md +2 -0
  253. package/generated/mcp/icon-devices/api.md +2 -0
  254. package/generated/mcp/icon-direction/api.md +2 -0
  255. package/generated/mcp/icon-dollar/api.md +2 -0
  256. package/generated/mcp/icon-dot-grid-one-horizontal/api.md +2 -0
  257. package/generated/mcp/icon-dot-grid-one-vertical/api.md +2 -0
  258. package/generated/mcp/icon-dot-grid-three/api.md +2 -0
  259. package/generated/mcp/icon-dot-grid-two/api.md +2 -0
  260. package/generated/mcp/icon-email/api.md +2 -0
  261. package/generated/mcp/icon-emoji-angry/api.md +2 -0
  262. package/generated/mcp/icon-emoji-neutral/api.md +2 -0
  263. package/generated/mcp/icon-emoji-sad/api.md +2 -0
  264. package/generated/mcp/icon-emoji-smile/api.md +2 -0
  265. package/generated/mcp/icon-emoji-smiley/api.md +2 -0
  266. package/generated/mcp/icon-euro/api.md +2 -0
  267. package/generated/mcp/icon-expand/api.md +2 -0
  268. package/generated/mcp/icon-eye-open/api.md +2 -0
  269. package/generated/mcp/icon-eye-slash/api.md +2 -0
  270. package/generated/mcp/icon-fashion/api.md +2 -0
  271. package/generated/mcp/icon-fast-forward/api.md +2 -0
  272. package/generated/mcp/icon-file-bend/api.md +2 -0
  273. package/generated/mcp/icon-file-chart/api.md +2 -0
  274. package/generated/mcp/icon-file-text/api.md +2 -0
  275. package/generated/mcp/icon-files/api.md +2 -0
  276. package/generated/mcp/icon-filter/api.md +2 -0
  277. package/generated/mcp/icon-flag/api.md +2 -0
  278. package/generated/mcp/icon-floppy-disk/api.md +2 -0
  279. package/generated/mcp/icon-focus/api.md +2 -0
  280. package/generated/mcp/icon-folder/api.md +2 -0
  281. package/generated/mcp/icon-folder-add-right/api.md +2 -0
  282. package/generated/mcp/icon-fullscreen/api.md +2 -0
  283. package/generated/mcp/icon-gift/api.md +2 -0
  284. package/generated/mcp/icon-globus/api.md +2 -0
  285. package/generated/mcp/icon-graduate-cap/api.md +2 -0
  286. package/generated/mcp/icon-green-power/api.md +2 -0
  287. package/generated/mcp/icon-group/api.md +2 -0
  288. package/generated/mcp/icon-growth/api.md +2 -0
  289. package/generated/mcp/icon-headphones/api.md +2 -0
  290. package/generated/mcp/icon-heart/api.md +2 -0
  291. package/generated/mcp/icon-heart-beat/api.md +2 -0
  292. package/generated/mcp/icon-history/api.md +2 -0
  293. package/generated/mcp/icon-home-energy-one/api.md +2 -0
  294. package/generated/mcp/icon-home-energy-two/api.md +2 -0
  295. package/generated/mcp/icon-home-open/api.md +2 -0
  296. package/generated/mcp/icon-home-roof/api.md +2 -0
  297. package/generated/mcp/icon-horizontal-alignment-bottom/api.md +2 -0
  298. package/generated/mcp/icon-hourglass/api.md +2 -0
  299. package/generated/mcp/icon-images/api.md +2 -0
  300. package/generated/mcp/icon-inbox-empty/api.md +2 -0
  301. package/generated/mcp/icon-industry/api.md +2 -0
  302. package/generated/mcp/icon-jpg/api.md +2 -0
  303. package/generated/mcp/icon-key/api.md +2 -0
  304. package/generated/mcp/icon-knife-spoon/api.md +2 -0
  305. package/generated/mcp/icon-lab/api.md +2 -0
  306. package/generated/mcp/icon-law/api.md +2 -0
  307. package/generated/mcp/icon-leisure/api.md +2 -0
  308. package/generated/mcp/icon-light-bulb-simple/api.md +2 -0
  309. package/generated/mcp/icon-lightning/api.md +2 -0
  310. package/generated/mcp/icon-line-chart-four/api.md +2 -0
  311. package/generated/mcp/icon-line-chart-one/api.md +2 -0
  312. package/generated/mcp/icon-line-chart-three/api.md +2 -0
  313. package/generated/mcp/icon-line-chart-two/api.md +2 -0
  314. package/generated/mcp/icon-lock/api.md +2 -0
  315. package/generated/mcp/icon-macbook-air/api.md +2 -0
  316. package/generated/mcp/icon-magnifying-glass/api.md +2 -0
  317. package/generated/mcp/icon-map-pin/api.md +2 -0
  318. package/generated/mcp/icon-megaphone/api.md +2 -0
  319. package/generated/mcp/icon-menu-sidebar/api.md +2 -0
  320. package/generated/mcp/icon-mic-off/api.md +2 -0
  321. package/generated/mcp/icon-mic-on/api.md +2 -0
  322. package/generated/mcp/icon-minimize/api.md +2 -0
  323. package/generated/mcp/icon-minus-large/api.md +2 -0
  324. package/generated/mcp/icon-minus-small/api.md +2 -0
  325. package/generated/mcp/icon-money-hand/api.md +2 -0
  326. package/generated/mcp/icon-moneybag/api.md +2 -0
  327. package/generated/mcp/icon-moon/api.md +2 -0
  328. package/generated/mcp/icon-mute/api.md +2 -0
  329. package/generated/mcp/icon-office/api.md +2 -0
  330. package/generated/mcp/icon-page-add/api.md +2 -0
  331. package/generated/mcp/icon-paper-plane-top-right/api.md +2 -0
  332. package/generated/mcp/icon-paperclip/api.md +2 -0
  333. package/generated/mcp/icon-pause/api.md +2 -0
  334. package/generated/mcp/icon-pdf/api.md +2 -0
  335. package/generated/mcp/icon-pencil-sign/api.md +2 -0
  336. package/generated/mcp/icon-pencil-sparkle/api.md +2 -0
  337. package/generated/mcp/icon-pencil-wave/api.md +2 -0
  338. package/generated/mcp/icon-pension/api.md +2 -0
  339. package/generated/mcp/icon-people/api.md +2 -0
  340. package/generated/mcp/icon-people-a11y/api.md +2 -0
  341. package/generated/mcp/icon-people-add/api.md +2 -0
  342. package/generated/mcp/icon-people-added/api.md +2 -0
  343. package/generated/mcp/icon-people-circle/api.md +2 -0
  344. package/generated/mcp/icon-people-copy/api.md +2 -0
  345. package/generated/mcp/icon-people-profile/api.md +2 -0
  346. package/generated/mcp/icon-people-remove/api.md +2 -0
  347. package/generated/mcp/icon-percent/api.md +2 -0
  348. package/generated/mcp/icon-phone/api.md +2 -0
  349. package/generated/mcp/icon-pie-chart/api.md +2 -0
  350. package/generated/mcp/icon-piggy-bank/api.md +2 -0
  351. package/generated/mcp/icon-pin/api.md +2 -0
  352. package/generated/mcp/icon-pinch/api.md +2 -0
  353. package/generated/mcp/icon-play/api.md +2 -0
  354. package/generated/mcp/icon-play-circle/api.md +2 -0
  355. package/generated/mcp/icon-plus-large/api.md +2 -0
  356. package/generated/mcp/icon-plus-small/api.md +2 -0
  357. package/generated/mcp/icon-png/api.md +2 -0
  358. package/generated/mcp/icon-poop/api.md +2 -0
  359. package/generated/mcp/icon-postcard/api.md +2 -0
  360. package/generated/mcp/icon-pound/api.md +2 -0
  361. package/generated/mcp/icon-power/api.md +2 -0
  362. package/generated/mcp/icon-power-plant/api.md +2 -0
  363. package/generated/mcp/icon-printer/api.md +2 -0
  364. package/generated/mcp/icon-push/api.md +2 -0
  365. package/generated/mcp/icon-qr-code/api.md +2 -0
  366. package/generated/mcp/icon-rainy/api.md +2 -0
  367. package/generated/mcp/icon-raising-hand/api.md +2 -0
  368. package/generated/mcp/icon-reading-list/api.md +2 -0
  369. package/generated/mcp/icon-receipt-bill/api.md +2 -0
  370. package/generated/mcp/icon-receiption-bell/api.md +2 -0
  371. package/generated/mcp/icon-record/api.md +2 -0
  372. package/generated/mcp/icon-refund/api.md +2 -0
  373. package/generated/mcp/icon-robot/api.md +2 -0
  374. package/generated/mcp/icon-rocket/api.md +2 -0
  375. package/generated/mcp/icon-run-shortcut/api.md +2 -0
  376. package/generated/mcp/icon-safari/api.md +2 -0
  377. package/generated/mcp/icon-school/api.md +2 -0
  378. package/generated/mcp/icon-scissors/api.md +2 -0
  379. package/generated/mcp/icon-search-menu/api.md +2 -0
  380. package/generated/mcp/icon-settings-gear/api.md +2 -0
  381. package/generated/mcp/icon-settings-slider-hor/api.md +2 -0
  382. package/generated/mcp/icon-settings-slider-ver/api.md +2 -0
  383. package/generated/mcp/icon-shapes/api.md +2 -0
  384. package/generated/mcp/icon-share/api.md +2 -0
  385. package/generated/mcp/icon-shield/api.md +2 -0
  386. package/generated/mcp/icon-shield-checked/api.md +2 -0
  387. package/generated/mcp/icon-shield-crossed/api.md +2 -0
  388. package/generated/mcp/icon-shopping-bag/api.md +2 -0
  389. package/generated/mcp/icon-signature/api.md +2 -0
  390. package/generated/mcp/icon-smartwatch/api.md +2 -0
  391. package/generated/mcp/icon-solar/api.md +2 -0
  392. package/generated/mcp/icon-sort/api.md +2 -0
  393. package/generated/mcp/icon-sort-ascending/api.md +2 -0
  394. package/generated/mcp/icon-sort-descending/api.md +2 -0
  395. package/generated/mcp/icon-sort-down/api.md +2 -0
  396. package/generated/mcp/icon-sort-up/api.md +2 -0
  397. package/generated/mcp/icon-square-arrow-top-right/api.md +2 -0
  398. package/generated/mcp/icon-square-behind-square/api.md +2 -0
  399. package/generated/mcp/icon-square-grid-circle/api.md +2 -0
  400. package/generated/mcp/icon-square-placeholder/api.md +2 -0
  401. package/generated/mcp/icon-star/api.md +2 -0
  402. package/generated/mcp/icon-store/api.md +2 -0
  403. package/generated/mcp/icon-sun/api.md +2 -0
  404. package/generated/mcp/icon-sunset-arrow-down/api.md +2 -0
  405. package/generated/mcp/icon-tag/api.md +2 -0
  406. package/generated/mcp/icon-target-arrow/api.md +2 -0
  407. package/generated/mcp/icon-television/api.md +2 -0
  408. package/generated/mcp/icon-tennis/api.md +2 -0
  409. package/generated/mcp/icon-text-edit/api.md +2 -0
  410. package/generated/mcp/icon-thermostat/api.md +2 -0
  411. package/generated/mcp/icon-thumbs-down/api.md +2 -0
  412. package/generated/mcp/icon-thumbs-up/api.md +2 -0
  413. package/generated/mcp/icon-ticket/api.md +2 -0
  414. package/generated/mcp/icon-trading-view-candles/api.md +2 -0
  415. package/generated/mcp/icon-trash-can/api.md +2 -0
  416. package/generated/mcp/icon-tree/api.md +2 -0
  417. package/generated/mcp/icon-trending-five/api.md +2 -0
  418. package/generated/mcp/icon-trending-four/api.md +2 -0
  419. package/generated/mcp/icon-trending-one/api.md +2 -0
  420. package/generated/mcp/icon-trending-three/api.md +2 -0
  421. package/generated/mcp/icon-trending-two/api.md +2 -0
  422. package/generated/mcp/icon-triangle-exclamation/api.md +2 -0
  423. package/generated/mcp/icon-truck/api.md +2 -0
  424. package/generated/mcp/icon-umbrella-security/api.md +2 -0
  425. package/generated/mcp/icon-unlocked/api.md +2 -0
  426. package/generated/mcp/icon-volume-full/api.md +2 -0
  427. package/generated/mcp/icon-volume-half/api.md +2 -0
  428. package/generated/mcp/icon-volume-off/api.md +2 -0
  429. package/generated/mcp/icon-wallet/api.md +2 -0
  430. package/generated/mcp/icon-warning-sign/api.md +2 -0
  431. package/generated/mcp/icon-wifi-full/api.md +2 -0
  432. package/generated/mcp/icon-youtube/api.md +2 -0
  433. package/generated/mcp/icon-zap/api.md +2 -0
  434. package/generated/mcp/icon-zoom-in/api.md +2 -0
  435. package/generated/mcp/icon-zoom-out/api.md +2 -0
  436. package/generated/mcp/icons.json +13 -1
  437. package/generated/mcp/img/api.md +2 -0
  438. package/generated/mcp/index.json +2 -1
  439. package/generated/mcp/input/api.md +2 -0
  440. package/generated/mcp/link/api.md +2 -0
  441. package/generated/mcp/mask/api.md +2 -0
  442. package/generated/mcp/menu-button/api.md +2 -0
  443. package/generated/mcp/pagination/api.md +2 -0
  444. package/generated/mcp/radio-group/api.md +2 -0
  445. package/generated/mcp/rich-text/api.md +2 -0
  446. package/generated/mcp/segment/api.md +2 -0
  447. package/generated/mcp/segmented-control/api.md +2 -0
  448. package/generated/mcp/select/api.md +2 -0
  449. package/generated/mcp/sensitive-account/api.md +2 -0
  450. package/generated/mcp/sensitive-date/api.md +2 -0
  451. package/generated/mcp/sensitive-number/api.md +2 -0
  452. package/generated/mcp/spinner/api.md +2 -0
  453. package/generated/mcp/table/api.md +2 -0
  454. package/generated/mcp/table/react.md +84 -0
  455. package/generated/mcp/text/api.md +2 -0
  456. package/generated/mcp/text/index.json +1 -0
  457. package/generated/mcp/text/instructions.md +4 -0
  458. package/generated/mcp/textarea/api.md +2 -0
  459. package/generated/mcp/tokens.json +1282 -0
  460. package/generated/mcp/video/api.md +2 -0
  461. package/generated/react/context-menu/index.d.ts +1 -0
  462. package/generated/react/icons/icon-chevron-grabber-vertical-reversed/index.d.ts +672 -0
  463. package/generated/react/icons/icon-chevron-grabber-vertical-reversed/index.js +16 -0
  464. package/generated/react/index.d.ts +8 -7
  465. package/generated/react/index.js +8 -7
  466. package/package.json +2 -1
  467. package/utils/directives/forward-attributes.js +5 -1
  468. package/utils/helpers/custom-element-scoping.js +1 -1
@@ -10,12 +10,14 @@ import {
10
10
  loadComponentsIndex,
11
11
  loadGlobalIndex,
12
12
  loadIconsIndex,
13
+ loadTokensIndex,
13
14
  parseResourceUri,
14
15
  readMcpFile
15
16
  } from "./utils.js";
16
17
  import {
17
18
  validateGetComponentDocsInput,
18
19
  validateGetGuideInput,
20
+ validateGetTokensInput,
19
21
  validateListGuidesInput,
20
22
  validateSearchComponentsInput
21
23
  } from "./validation.js";
@@ -346,10 +348,118 @@ async function handleResolveUri(uri) {
346
348
  content: [{ type: "text", text: content }]
347
349
  };
348
350
  }
351
+ function isColorCategory(data) {
352
+ return "subcategories" in data;
353
+ }
354
+ function stripStyleInfo(cat) {
355
+ const { styleExpressionProperties, styleExpressionUsage, ...rest } = cat;
356
+ return rest;
357
+ }
358
+ function stripColorSubStyleInfo(sub) {
359
+ const { styleExpressionProperties, styleExpressionUsage, ...rest } = sub;
360
+ return rest;
361
+ }
362
+ async function handleGetTokens(input) {
363
+ const validatedInput = validateGetTokensInput(input);
364
+ const {
365
+ category = "all",
366
+ colorSubcategory = "all",
367
+ includeStyleExpressionInfo = true
368
+ } = validatedInput;
369
+ const tokensIndex = await loadTokensIndex();
370
+ if (!tokensIndex) {
371
+ throw new NotFoundError(
372
+ "Tokens data not available. The MCP data may need to be regenerated.",
373
+ "index",
374
+ "tokens"
375
+ );
376
+ }
377
+ let result;
378
+ if (category === "all") {
379
+ const categories = {};
380
+ for (const [key, data] of Object.entries(tokensIndex.categories)) {
381
+ if (isColorCategory(data)) {
382
+ if (colorSubcategory === "all") {
383
+ categories[key] = includeStyleExpressionInfo ? data : {
384
+ description: data.description,
385
+ subcategories: Object.fromEntries(
386
+ Object.entries(data.subcategories).map(([k, v]) => [
387
+ k,
388
+ stripColorSubStyleInfo(v)
389
+ ])
390
+ )
391
+ };
392
+ } else {
393
+ const sub = data.subcategories[colorSubcategory];
394
+ if (sub) {
395
+ categories[key] = {
396
+ description: data.description,
397
+ subcategories: {
398
+ [colorSubcategory]: includeStyleExpressionInfo ? sub : stripColorSubStyleInfo(sub)
399
+ }
400
+ };
401
+ }
402
+ }
403
+ } else {
404
+ categories[key] = includeStyleExpressionInfo ? data : stripStyleInfo(data);
405
+ }
406
+ }
407
+ result = { generatedAt: tokensIndex.generatedAt, categories };
408
+ } else if (category === "color") {
409
+ const colorData = tokensIndex.categories.color;
410
+ if (!colorData || !isColorCategory(colorData)) {
411
+ throw new NotFoundError(
412
+ "Color token data not available",
413
+ "category",
414
+ "color"
415
+ );
416
+ }
417
+ if (colorSubcategory === "all") {
418
+ result = includeStyleExpressionInfo ? colorData : {
419
+ description: colorData.description,
420
+ subcategories: Object.fromEntries(
421
+ Object.entries(colorData.subcategories).map(([k, v]) => [
422
+ k,
423
+ stripColorSubStyleInfo(v)
424
+ ])
425
+ )
426
+ };
427
+ } else {
428
+ const sub = colorData.subcategories[colorSubcategory];
429
+ if (!sub) {
430
+ throw new NotFoundError(
431
+ `Color subcategory not found: ${colorSubcategory}`,
432
+ "colorSubcategory",
433
+ colorSubcategory
434
+ );
435
+ }
436
+ result = includeStyleExpressionInfo ? sub : stripColorSubStyleInfo(sub);
437
+ }
438
+ } else {
439
+ const data = tokensIndex.categories[category];
440
+ if (!data) {
441
+ throw new NotFoundError(
442
+ `Token category not found: ${category}`,
443
+ "category",
444
+ category
445
+ );
446
+ }
447
+ result = includeStyleExpressionInfo ? data : stripStyleInfo(data);
448
+ }
449
+ return {
450
+ content: [
451
+ {
452
+ type: "text",
453
+ text: JSON.stringify(result, null, 2)
454
+ }
455
+ ]
456
+ };
457
+ }
349
458
  export {
350
459
  handleGetComponentDocs,
351
460
  handleGetGuide,
352
461
  handleGetInstructions,
462
+ handleGetTokens,
353
463
  handleListGuides,
354
464
  handleResolveUri,
355
465
  handleSearchComponents
@@ -10,6 +10,7 @@ import {
10
10
  loadComponentsIndex,
11
11
  loadGlobalIndex,
12
12
  loadIconsIndex,
13
+ loadTokensIndex,
13
14
  parseResourceUri,
14
15
  readMcpFile
15
16
  } from "./utils.js";
@@ -82,6 +83,31 @@ function setupResourceHandlers(server) {
82
83
  mimeType: "text/markdown"
83
84
  });
84
85
  }
86
+ if (globalIndex.tokens) {
87
+ const tokenCategories = [
88
+ "space",
89
+ "radius",
90
+ "color",
91
+ "typography",
92
+ "viewport",
93
+ "shadow",
94
+ "motion"
95
+ ];
96
+ resources.push({
97
+ uri: "green://tokens",
98
+ name: "Design Tokens (all)",
99
+ description: "All design tokens with values and style expression usage information",
100
+ mimeType: "application/json"
101
+ });
102
+ for (const cat of tokenCategories) {
103
+ resources.push({
104
+ uri: `green://tokens/${cat}`,
105
+ name: `Design Tokens (${cat})`,
106
+ description: `${cat} design tokens with values and style expression usage`,
107
+ mimeType: "application/json"
108
+ });
109
+ }
110
+ }
85
111
  }
86
112
  return { resources };
87
113
  } catch (error) {
@@ -111,6 +137,45 @@ function setupResourceHandlers(server) {
111
137
  ]
112
138
  };
113
139
  }
140
+ if (uri === "green://tokens" || uri.startsWith("green://tokens/")) {
141
+ const tokensIndex = await loadTokensIndex();
142
+ if (!tokensIndex) {
143
+ throw new NotFoundError(
144
+ "Tokens data not available",
145
+ "file",
146
+ PATHS.TOKENS_INDEX
147
+ );
148
+ }
149
+ if (uri === "green://tokens") {
150
+ return {
151
+ contents: [
152
+ {
153
+ uri,
154
+ mimeType: "application/json",
155
+ text: JSON.stringify(tokensIndex, null, 2)
156
+ }
157
+ ]
158
+ };
159
+ }
160
+ const categoryName = uri.replace("green://tokens/", "");
161
+ const categoryData = tokensIndex.categories[categoryName];
162
+ if (!categoryData) {
163
+ throw new NotFoundError(
164
+ `Token category not found: ${categoryName}`,
165
+ "category",
166
+ categoryName
167
+ );
168
+ }
169
+ return {
170
+ contents: [
171
+ {
172
+ uri,
173
+ mimeType: "application/json",
174
+ text: JSON.stringify(categoryData, null, 2)
175
+ }
176
+ ]
177
+ };
178
+ }
114
179
  const parsed = parseResourceUri(uri);
115
180
  if (!parsed) {
116
181
  throw new NotFoundError(`Invalid resource URI format`, "uri", uri);
@@ -9,6 +9,7 @@ import {
9
9
  handleGetComponentDocs,
10
10
  handleGetGuide,
11
11
  handleGetInstructions,
12
+ handleGetTokens,
12
13
  handleListGuides,
13
14
  handleSearchComponents
14
15
  } from "./handlers.js";
@@ -137,6 +138,42 @@ function setupToolHandlers(server) {
137
138
  properties: {},
138
139
  required: []
139
140
  }
141
+ },
142
+ {
143
+ name: "get_tokens",
144
+ description: 'Get available design tokens (spacing, colors, typography, radius, etc.) with their values and style expression usage. Tokens are the building blocks for styling \u2014 use SHORT token names (e.g. "m", "positive-01", "heading-m") in style expression properties on layout components. The tool explains how each token category maps to component properties. Returns CSS variable names for direct CSS usage.',
145
+ inputSchema: {
146
+ type: "object",
147
+ properties: {
148
+ category: {
149
+ type: "string",
150
+ enum: [
151
+ "space",
152
+ "radius",
153
+ "color",
154
+ "typography",
155
+ "viewport",
156
+ "shadow",
157
+ "motion",
158
+ "all"
159
+ ],
160
+ description: "Filter by token category. Default: 'all'. Use 'space' for padding/margin/gap tokens, 'color' for background/content/border colors, 'typography' for font sizes and weights.",
161
+ default: "all"
162
+ },
163
+ colorSubcategory: {
164
+ type: "string",
165
+ enum: ["background", "border", "content", "state", "all"],
166
+ description: "When category is 'color' or 'all', filter to a specific color context. Default: 'all'",
167
+ default: "all"
168
+ },
169
+ includeStyleExpressionInfo: {
170
+ type: "boolean",
171
+ description: "Include information about which style expression properties use these tokens and how short names are inferred. Default: true",
172
+ default: true
173
+ }
174
+ },
175
+ required: []
176
+ }
140
177
  }
141
178
  ]
142
179
  };
@@ -155,6 +192,8 @@ function setupToolHandlers(server) {
155
192
  return await handleGetGuide(args);
156
193
  case "get_instructions":
157
194
  return await handleGetInstructions();
195
+ case "get_tokens":
196
+ return await handleGetTokens(args);
158
197
  default:
159
198
  throw new Error(`Unknown tool: ${name}`);
160
199
  }
@@ -62,6 +62,7 @@ export interface GlobalIndex {
62
62
  instructions?: string;
63
63
  components: string;
64
64
  icons: string;
65
+ tokens?: string;
65
66
  guides: GuideEntry[];
66
67
  }
67
68
  /**
@@ -114,3 +115,79 @@ export interface ListGuidesInput {
114
115
  export interface GetGuideInput {
115
116
  name: string;
116
117
  }
118
+ /**
119
+ * Token category types
120
+ */
121
+ export type TokenCategory = 'space' | 'radius' | 'color' | 'typography' | 'viewport' | 'shadow' | 'motion' | 'all';
122
+ /**
123
+ * Color subcategory types
124
+ */
125
+ export type ColorSubcategory = 'background' | 'border' | 'content' | 'state' | 'all';
126
+ /**
127
+ * Token entry from tokens.json
128
+ */
129
+ export interface TokenEntry {
130
+ name: string;
131
+ cssVariable: string;
132
+ value?: string;
133
+ description?: string;
134
+ pairings?: string[];
135
+ fontSize?: string;
136
+ lineHeight?: string;
137
+ fontWeight?: string;
138
+ }
139
+ /**
140
+ * Typography meta information
141
+ */
142
+ export interface TypographyMeta {
143
+ [role: string]: {
144
+ tone: string;
145
+ description: string;
146
+ };
147
+ }
148
+ /**
149
+ * Token category data (non-color)
150
+ */
151
+ export interface TokenCategoryData {
152
+ description: string;
153
+ cssVariablePrefix: string;
154
+ styleExpressionProperties: string[];
155
+ styleExpressionUsage: string;
156
+ tokens: TokenEntry[];
157
+ meta?: TypographyMeta;
158
+ }
159
+ /**
160
+ * Color subcategory data
161
+ */
162
+ export interface ColorSubcategoryData {
163
+ description: string;
164
+ cssVariablePrefix: string;
165
+ styleExpressionProperties: string[];
166
+ styleExpressionUsage: string;
167
+ levels?: Record<string, {
168
+ tokens: TokenEntry[];
169
+ }>;
170
+ tokens?: TokenEntry[];
171
+ }
172
+ /**
173
+ * Color category data
174
+ */
175
+ export interface ColorCategoryData {
176
+ description: string;
177
+ subcategories: Record<string, ColorSubcategoryData>;
178
+ }
179
+ /**
180
+ * Tokens index structure
181
+ */
182
+ export interface TokensIndex {
183
+ generatedAt: string;
184
+ categories: Record<string, TokenCategoryData | ColorCategoryData>;
185
+ }
186
+ /**
187
+ * Tool input for get_tokens
188
+ */
189
+ export interface GetTokensInput {
190
+ category?: TokenCategory;
191
+ colorSubcategory?: ColorSubcategory;
192
+ includeStyleExpressionInfo?: boolean;
193
+ }
@@ -1,4 +1,4 @@
1
- import type { ComponentEntry, ComponentsIndex, GlobalIndex, IconEntry, IconsIndex } from './types.js';
1
+ import type { ComponentEntry, ComponentsIndex, GlobalIndex, IconEntry, IconsIndex, TokensIndex } from './types.js';
2
2
  /**
3
3
  * Resolve the path to the MCP data directory
4
4
  * When compiled: Server is at dist/libs/core/src/bin/mcp-server/
@@ -26,6 +26,11 @@ export declare function loadIconsIndex(): Promise<IconsIndex | null>;
26
26
  * @returns Global index or null if failed
27
27
  */
28
28
  export declare function loadGlobalIndex(): Promise<GlobalIndex | null>;
29
+ /**
30
+ * Load the tokens index
31
+ * @returns Tokens index or null if failed
32
+ */
33
+ export declare function loadTokensIndex(): Promise<TokensIndex | null>;
29
34
  /**
30
35
  * Normalize component name for matching
31
36
  * Handles both 'gds-button' and 'button' formats
@@ -70,12 +75,6 @@ export declare function findIcon(name: string, icons: IconEntry[]): IconEntry |
70
75
  * readMcpFile('guides/angular.md')
71
76
  */
72
77
  export declare function readMcpFile(relativePath: string): Promise<string | null>;
73
- /**
74
- * Check if a file exists in the MCP data directory
75
- * @param relativePath - Path relative to MCP data directory
76
- * @returns True if file exists, false otherwise
77
- */
78
- export declare function fileExists(relativePath: string): Promise<boolean>;
79
78
  /**
80
79
  * Build a resource URI for a component/icon documentation file
81
80
  * @param category - Resource category
@@ -67,6 +67,17 @@ async function loadGlobalIndex() {
67
67
  return null;
68
68
  }
69
69
  }
70
+ async function loadTokensIndex() {
71
+ try {
72
+ const dataPath = getMcpDataPath();
73
+ return await loadJsonFile(
74
+ path.join(dataPath, PATHS.TOKENS_INDEX)
75
+ );
76
+ } catch (error) {
77
+ logError(error, "loadTokensIndex");
78
+ return null;
79
+ }
80
+ }
70
81
  function normalizeComponentName(name) {
71
82
  const lower = name.toLowerCase().trim();
72
83
  if (lower.startsWith("gds-")) {
@@ -117,16 +128,6 @@ async function readMcpFile(relativePath) {
117
128
  return null;
118
129
  }
119
130
  }
120
- async function fileExists(relativePath) {
121
- try {
122
- const dataPath = getMcpDataPath();
123
- const fullPath = path.join(dataPath, relativePath);
124
- await fs.access(fullPath);
125
- return true;
126
- } catch {
127
- return false;
128
- }
129
- }
130
131
  function buildResourceUri(category, name, docType) {
131
132
  if (docType) {
132
133
  return `green://${category}/${name}/${docType}`;
@@ -142,7 +143,6 @@ function parseResourceUri(uri) {
142
143
  }
143
144
  export {
144
145
  buildResourceUri,
145
- fileExists,
146
146
  findComponent,
147
147
  findIcon,
148
148
  getMcpDataPath,
@@ -150,6 +150,7 @@ export {
150
150
  loadComponentsIndex,
151
151
  loadGlobalIndex,
152
152
  loadIconsIndex,
153
+ loadTokensIndex,
153
154
  normalizeComponentName,
154
155
  parseResourceUri,
155
156
  readMcpFile
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Input validation for MCP server tools
3
3
  */
4
- import type { Category, Framework, GetComponentDocsInput, GetGuideInput, GuideCategory, ListGuidesInput, SearchComponentsInput } from './types.js';
4
+ import type { Category, Framework, GetComponentDocsInput, GetGuideInput, GetTokensInput, GuideCategory, ListGuidesInput, SearchComponentsInput } from './types.js';
5
5
  /**
6
6
  * Validate framework parameter
7
7
  * @param framework - Framework value to validate
@@ -89,3 +89,10 @@ export declare function validateListGuidesInput(input: unknown): ListGuidesInput
89
89
  * @throws ValidationError if validation fails
90
90
  */
91
91
  export declare function validateGetGuideInput(input: unknown): GetGuideInput;
92
+ /**
93
+ * Validate GetTokensInput
94
+ * @param input - Input to validate
95
+ * @returns Validated input
96
+ * @throws ValidationError if validation fails
97
+ */
98
+ export declare function validateGetTokensInput(input: unknown): GetTokensInput;
@@ -1,5 +1,11 @@
1
1
  import "../../chunks/chunk.CAV4X6PU.js";
2
- import { CATEGORIES, FRAMEWORKS, GUIDE_CATEGORIES } from "./constants.js";
2
+ import {
3
+ CATEGORIES,
4
+ COLOR_SUBCATEGORIES,
5
+ FRAMEWORKS,
6
+ GUIDE_CATEGORIES,
7
+ TOKEN_CATEGORIES
8
+ } from "./constants.js";
3
9
  import { ValidationError } from "./errors.js";
4
10
  function validateEnum(value, allowed, fieldName) {
5
11
  if (typeof value !== "string") {
@@ -185,6 +191,35 @@ function validateGetGuideInput(input) {
185
191
  name: sanitized
186
192
  };
187
193
  }
194
+ function validateGetTokensInput(input) {
195
+ if (!input || typeof input !== "object") {
196
+ throw new ValidationError("Invalid input: must be an object", "input");
197
+ }
198
+ const obj = input;
199
+ const result = {};
200
+ if (obj.category !== void 0) {
201
+ result.category = validateEnum(
202
+ obj.category,
203
+ TOKEN_CATEGORIES,
204
+ "category"
205
+ );
206
+ }
207
+ if (obj.colorSubcategory !== void 0) {
208
+ result.colorSubcategory = validateEnum(
209
+ obj.colorSubcategory,
210
+ COLOR_SUBCATEGORIES,
211
+ "colorSubcategory"
212
+ );
213
+ }
214
+ if (obj.includeStyleExpressionInfo !== void 0) {
215
+ result.includeStyleExpressionInfo = validateBoolean(
216
+ obj.includeStyleExpressionInfo,
217
+ "includeStyleExpressionInfo",
218
+ true
219
+ );
220
+ }
221
+ return result;
222
+ }
188
223
  export {
189
224
  sanitizeComponentName,
190
225
  validateBoolean,
@@ -192,6 +227,7 @@ export {
192
227
  validateFramework,
193
228
  validateGetComponentDocsInput,
194
229
  validateGetGuideInput,
230
+ validateGetTokensInput,
195
231
  validateGuideCategory,
196
232
  validateListGuidesInput,
197
233
  validateNumber,
@@ -27,6 +27,7 @@ import {
27
27
  import { GdsFormControlElement } from "../form/form-control.js";
28
28
  import ButtonStyles from "./button.styles.js";
29
29
  const ariaForwards = ["aria-label", "aria-haspopup", "aria-expanded"];
30
+ const attributeForwards = [...ariaForwards, "gds-tabindex"];
30
31
  const html = stripWhitespace(customElementHtml);
31
32
  class Button extends GdsFormControlElement {
32
33
  constructor() {
@@ -116,7 +117,7 @@ class Button extends GdsFormControlElement {
116
117
  @click="${__privateGet(this, _handleClick)}"
117
118
  @keydown="${__privateGet(this, _handleKeyDown)}"
118
119
  ${forwardAttributes(
119
- (attr) => attr.name.startsWith("gds-aria") || attr.name === "gds-role" || ariaForwards.includes(attr.name)
120
+ (attr) => attr.name.startsWith("gds-aria") || attr.name === "gds-role" || attributeForwards.includes(attr.name)
120
121
  )}
121
122
  >
122
123
  <slot name="lead"></slot>
@@ -17,7 +17,7 @@ declare const GdsContextMenu_base: (new (...args: any[]) => import("../../utils/
17
17
  */
18
18
  export declare class GdsContextMenu extends GdsContextMenu_base {
19
19
  #private;
20
- static styles: import("lit").CSSResult[][];
20
+ static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
21
21
  static shadowRootOptions: ShadowRootInit;
22
22
  /**
23
23
  * Whether the context menu popover is open.
@@ -35,6 +35,10 @@ export declare class GdsContextMenu extends GdsContextMenu_base {
35
35
  * The label for the popover and menu. Should describe the context of the menu.
36
36
  */
37
37
  label: string;
38
+ /**
39
+ * Maximum height of the menu list.
40
+ */
41
+ maxHeight: number;
38
42
  /**
39
43
  * The placement of the popover relative to the trigger.
40
44
  */
@@ -5,8 +5,9 @@ import {
5
5
  __privateMethod,
6
6
  __privateSet
7
7
  } from "../../chunks/chunk.CAV4X6PU.js";
8
- var _elTriggerBtn, _setupButton, _handleTriggerSlotChange, _renderPopover, _handleItemClick, handleItemClick_fn;
8
+ var _elTriggerBtn, _setupButton, _handleTriggerSlotChange, _renderPopover, _handleItemClick, handleItemClick_fn, _calcMaxHeight;
9
9
  import { localized, msg } from "@lit/localize";
10
+ import { css } from "lit";
10
11
  import { property, query } from "lit/decorators.js";
11
12
  import { when } from "lit/directives/when.js";
12
13
  import { GdsElement } from "../../gds-element.js";
@@ -41,6 +42,7 @@ let GdsContextMenu = class extends withMarginProps(
41
42
  this.buttonLabel = msg("Open context menu");
42
43
  this.showLabel = false;
43
44
  this.label = "";
45
+ this.maxHeight = 500;
44
46
  this.placement = "bottom-start";
45
47
  __privateAdd(this, _elTriggerBtn, void 0);
46
48
  __privateAdd(this, _setupButton, () => {
@@ -80,9 +82,11 @@ let GdsContextMenu = class extends withMarginProps(
80
82
  .label=${this.label}
81
83
  .placement=${this.placement}
82
84
  .popupRole=${"menu"}
85
+ .calcMaxHeight=${__privateGet(this, _calcMaxHeight)}
83
86
  @gds-ui-state=${(e) => this.open = e.detail.open}
84
87
  >
85
88
  <gds-menu
89
+ class="menu"
86
90
  aria-label=${this.label ?? this.buttonLabel}
87
91
  @gds-menu-item-click=${__privateMethod(this, _handleItemClick, handleItemClick_fn)}
88
92
  >
@@ -90,6 +94,10 @@ let GdsContextMenu = class extends withMarginProps(
90
94
  </gds-menu>
91
95
  </gds-popover>`;
92
96
  });
97
+ __privateAdd(this, _calcMaxHeight, () => {
98
+ const height = Math.min(window.innerHeight, this.maxHeight);
99
+ return `${height - 16}px`;
100
+ });
93
101
  }
94
102
  connectedCallback() {
95
103
  super.connectedCallback();
@@ -134,7 +142,15 @@ _handleItemClick = new WeakSet();
134
142
  handleItemClick_fn = function() {
135
143
  this.open = false;
136
144
  };
137
- GdsContextMenu.styles = [tokens];
145
+ _calcMaxHeight = new WeakMap();
146
+ GdsContextMenu.styles = [
147
+ tokens,
148
+ css`
149
+ .menu {
150
+ overflow: auto;
151
+ }
152
+ `
153
+ ];
138
154
  GdsContextMenu.shadowRootOptions = {
139
155
  mode: "open",
140
156
  delegatesFocus: true
@@ -156,6 +172,9 @@ __decorateClass([
156
172
  __decorateClass([
157
173
  property()
158
174
  ], GdsContextMenu.prototype, "label", 2);
175
+ __decorateClass([
176
+ property({ type: Number, attribute: "max-height" })
177
+ ], GdsContextMenu.prototype, "maxHeight", 2);
159
178
  __decorateClass([
160
179
  property()
161
180
  ], GdsContextMenu.prototype, "placement", 2);
@@ -85,7 +85,7 @@ let GdsDetails = class extends withSizeXProps(
85
85
  rank="tertiary"
86
86
  size=${this.size === "small" ? "xs" : "medium"}
87
87
  role="presentation"
88
- tabindex="-1"
88
+ gds-tabindex="-1"
89
89
  >
90
90
  <gds-icon-details .open=${this.open}></gds-icon-details>
91
91
  </gds-button>
@@ -6,12 +6,14 @@ import { GdsElement } from '../../gds-element';
6
6
  * When a user attempts to submit a form with errors, this component displays a summary of those errors.
7
7
  * Including an error summary greatly assists users in promptly identifying and addressing multiple errors
8
8
  * in a consolidated manner. It provides a clear indication of what went wrong and what needs to be corrected.
9
+ *
10
+ * @slot header - Optional slot for customizing the header of the summary.
9
11
  */
10
12
  export declare class GdsFormSummary extends GdsElement {
11
13
  #private;
12
14
  static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
13
15
  /**
14
- * Whether to hide the error messages under the labels.
16
+ * @deprecated This no longer has any effect, and will be removed in a future release.
15
17
  */
16
18
  hideErrors: boolean;
17
19
  /**
@@ -35,7 +37,7 @@ export declare class GdsFormSummary extends GdsElement {
35
37
  connectedCallback(): void;
36
38
  disconnectedCallback(): void;
37
39
  /**
38
- * Refresh the component to reflext the current state of the form.
40
+ * Refresh the component to reflect the current state of the form.
39
41
  */
40
42
  refresh(): void;
41
43
  render(): any;