@carto/meridian-ds 5.1.4-alpha.f9cdbcf.347 → 5.2.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 (614) hide show
  1. package/CHANGELOG.md +11 -3
  2. package/dist/bin/meridian-ds-mcp.js +53 -4
  3. package/dist/conventions.md +1 -1
  4. package/dist/eslint-rules/index.cjs +138 -107
  5. package/dist/eslint-rules/index.js +138 -107
  6. package/dist/metadata.json +1517 -52
  7. package/dist/stories/components-accordion-group--behavior.anatomy.json +1 -0
  8. package/dist/stories/components-accordion-group--behavior.webp +0 -0
  9. package/dist/stories/components-accordion-group--size.anatomy.json +1 -0
  10. package/dist/stories/components-accordion-group--size.webp +0 -0
  11. package/dist/stories/components-accordion-group--summary.anatomy.json +1 -0
  12. package/dist/stories/components-accordion-group--summary.webp +0 -0
  13. package/dist/stories/components-accordion-group--variants.anatomy.json +1 -0
  14. package/dist/stories/components-accordion-group--variants.webp +0 -0
  15. package/dist/stories/components-alert--actions.anatomy.json +1 -0
  16. package/dist/stories/components-alert--actions.webp +0 -0
  17. package/dist/stories/components-alert--layout.anatomy.json +1 -0
  18. package/dist/stories/components-alert--layout.webp +0 -0
  19. package/dist/stories/components-alert--removable.anatomy.json +1 -0
  20. package/dist/stories/components-alert--removable.webp +0 -0
  21. package/dist/stories/components-alert--severity.anatomy.json +1 -0
  22. package/dist/stories/components-alert--severity.webp +0 -0
  23. package/dist/stories/components-alert--sticky.anatomy.json +1 -0
  24. package/dist/stories/components-alert--sticky.webp +0 -0
  25. package/dist/stories/components-alert--title.anatomy.json +1 -0
  26. package/dist/stories/components-alert--title.webp +0 -0
  27. package/dist/stories/components-appbar--composition.anatomy.json +1 -0
  28. package/dist/stories/components-appbar--composition.webp +0 -0
  29. package/dist/stories/components-appbar--custom-branding.anatomy.json +1 -0
  30. package/dist/stories/components-appbar--custom-branding.webp +0 -0
  31. package/dist/stories/components-autocomplete-autocomplete--custom-render-option.anatomy.json +1 -0
  32. package/dist/stories/components-autocomplete-autocomplete--custom-render-option.webp +0 -0
  33. package/dist/stories/components-autocomplete-autocomplete--free-solo.anatomy.json +1 -0
  34. package/dist/stories/components-autocomplete-autocomplete--free-solo.webp +0 -0
  35. package/dist/stories/components-autocomplete-autocomplete--grouped-non-virtualized.anatomy.json +1 -0
  36. package/dist/stories/components-autocomplete-autocomplete--grouped-non-virtualized.webp +0 -0
  37. package/dist/stories/components-autocomplete-autocomplete--grouped-virtualization.anatomy.json +1 -0
  38. package/dist/stories/components-autocomplete-autocomplete--grouped-virtualization.webp +0 -0
  39. package/dist/stories/components-autocomplete-autocomplete--label-and-helper-text.anatomy.json +1 -0
  40. package/dist/stories/components-autocomplete-autocomplete--label-and-helper-text.webp +0 -0
  41. package/dist/stories/components-autocomplete-autocomplete--medium.anatomy.json +1 -0
  42. package/dist/stories/components-autocomplete-autocomplete--medium.webp +0 -0
  43. package/dist/stories/components-autocomplete-autocomplete--prefix.anatomy.json +1 -0
  44. package/dist/stories/components-autocomplete-autocomplete--prefix.webp +0 -0
  45. package/dist/stories/components-autocomplete-autocomplete--small.anatomy.json +1 -0
  46. package/dist/stories/components-autocomplete-autocomplete--small.webp +0 -0
  47. package/dist/stories/components-autocomplete-autocomplete--variants.anatomy.json +1 -0
  48. package/dist/stories/components-autocomplete-autocomplete--variants.webp +0 -0
  49. package/dist/stories/components-autocomplete-autocomplete--virtualized-list.anatomy.json +1 -0
  50. package/dist/stories/components-autocomplete-autocomplete--virtualized-list.webp +0 -0
  51. package/dist/stories/components-autocomplete-creatable-autocomplete--grouped-virtualization.anatomy.json +1 -0
  52. package/dist/stories/components-autocomplete-creatable-autocomplete--grouped-virtualization.webp +0 -0
  53. package/dist/stories/components-autocomplete-creatable-autocomplete--large-dataset-extended.anatomy.json +1 -0
  54. package/dist/stories/components-autocomplete-creatable-autocomplete--large-dataset-extended.webp +0 -0
  55. package/dist/stories/components-autocomplete-creatable-autocomplete--large-dataset.anatomy.json +1 -0
  56. package/dist/stories/components-autocomplete-creatable-autocomplete--large-dataset.webp +0 -0
  57. package/dist/stories/components-autocomplete-creatable-autocomplete--multiple.anatomy.json +1 -0
  58. package/dist/stories/components-autocomplete-creatable-autocomplete--multiple.webp +0 -0
  59. package/dist/stories/components-autocomplete-multiple-autocomplete--counter-formatters.anatomy.json +1 -0
  60. package/dist/stories/components-autocomplete-multiple-autocomplete--counter-formatters.webp +0 -0
  61. package/dist/stories/components-autocomplete-multiple-autocomplete--grouped-virtualization.anatomy.json +1 -0
  62. package/dist/stories/components-autocomplete-multiple-autocomplete--grouped-virtualization.webp +0 -0
  63. package/dist/stories/components-autocomplete-multiple-autocomplete--large-dataset-extended.anatomy.json +1 -0
  64. package/dist/stories/components-autocomplete-multiple-autocomplete--large-dataset-extended.webp +0 -0
  65. package/dist/stories/components-autocomplete-multiple-autocomplete--large-dataset.anatomy.json +1 -0
  66. package/dist/stories/components-autocomplete-multiple-autocomplete--large-dataset.webp +0 -0
  67. package/dist/stories/components-autocomplete-multiple-autocomplete--start-adornment.anatomy.json +1 -0
  68. package/dist/stories/components-autocomplete-multiple-autocomplete--start-adornment.webp +0 -0
  69. package/dist/stories/components-autocomplete-multiple-autocomplete--states.anatomy.json +1 -0
  70. package/dist/stories/components-autocomplete-multiple-autocomplete--states.webp +0 -0
  71. package/dist/stories/components-avatar--color-background.anatomy.json +1 -0
  72. package/dist/stories/components-avatar--color-background.webp +0 -0
  73. package/dist/stories/components-avatar--content-size.anatomy.json +1 -0
  74. package/dist/stories/components-avatar--content-size.webp +0 -0
  75. package/dist/stories/components-avatar--content.anatomy.json +1 -0
  76. package/dist/stories/components-avatar--content.webp +0 -0
  77. package/dist/stories/components-avatar--shape-sizes.anatomy.json +1 -0
  78. package/dist/stories/components-avatar--shape-sizes.webp +0 -0
  79. package/dist/stories/components-avatar--shape.anatomy.json +1 -0
  80. package/dist/stories/components-avatar--shape.webp +0 -0
  81. package/dist/stories/components-buttons-button--behavior.anatomy.json +1 -0
  82. package/dist/stories/components-buttons-button--behavior.webp +0 -0
  83. package/dist/stories/components-buttons-button--colors.anatomy.json +1 -0
  84. package/dist/stories/components-buttons-button--colors.webp +0 -0
  85. package/dist/stories/components-buttons-button--external-link.anatomy.json +1 -0
  86. package/dist/stories/components-buttons-button--external-link.webp +0 -0
  87. package/dist/stories/components-buttons-button--variants.anatomy.json +1 -0
  88. package/dist/stories/components-buttons-button--variants.webp +0 -0
  89. package/dist/stories/components-buttons-iconbutton--colors.anatomy.json +1 -0
  90. package/dist/stories/components-buttons-iconbutton--colors.webp +0 -0
  91. package/dist/stories/components-buttons-iconbutton--icon-button-group.anatomy.json +1 -0
  92. package/dist/stories/components-buttons-iconbutton--icon-button-group.webp +0 -0
  93. package/dist/stories/components-buttons-iconbutton--tooltip.anatomy.json +1 -0
  94. package/dist/stories/components-buttons-iconbutton--tooltip.webp +0 -0
  95. package/dist/stories/components-buttons-iconbutton--variants.anatomy.json +1 -0
  96. package/dist/stories/components-buttons-iconbutton--variants.webp +0 -0
  97. package/dist/stories/components-buttons-splitbutton--colors.anatomy.json +1 -0
  98. package/dist/stories/components-buttons-splitbutton--colors.webp +0 -0
  99. package/dist/stories/components-buttons-splitbutton--states.anatomy.json +1 -0
  100. package/dist/stories/components-buttons-splitbutton--states.webp +0 -0
  101. package/dist/stories/components-buttons-splitbutton--variants.anatomy.json +1 -0
  102. package/dist/stories/components-buttons-splitbutton--variants.webp +0 -0
  103. package/dist/stories/components-buttons-toggle-button-group--background-color.anatomy.json +1 -0
  104. package/dist/stories/components-buttons-toggle-button-group--background-color.webp +0 -0
  105. package/dist/stories/components-buttons-toggle-button-group--behavior.anatomy.json +1 -0
  106. package/dist/stories/components-buttons-toggle-button-group--behavior.webp +0 -0
  107. package/dist/stories/components-buttons-toggle-button-group--colors.anatomy.json +1 -0
  108. package/dist/stories/components-buttons-toggle-button-group--colors.webp +0 -0
  109. package/dist/stories/components-buttons-toggle-button-group--divided-group.anatomy.json +1 -0
  110. package/dist/stories/components-buttons-toggle-button-group--divided-group.webp +0 -0
  111. package/dist/stories/components-buttons-toggle-button-group--multiple-selection-group.anatomy.json +1 -0
  112. package/dist/stories/components-buttons-toggle-button-group--multiple-selection-group.webp +0 -0
  113. package/dist/stories/components-buttons-toggle-button-group--orientation.anatomy.json +1 -0
  114. package/dist/stories/components-buttons-toggle-button-group--orientation.webp +0 -0
  115. package/dist/stories/components-buttons-toggle-button-group--variant.anatomy.json +1 -0
  116. package/dist/stories/components-buttons-toggle-button-group--variant.webp +0 -0
  117. package/dist/stories/components-chipgroup--behavior.anatomy.json +1 -0
  118. package/dist/stories/components-chipgroup--behavior.webp +0 -0
  119. package/dist/stories/components-chipgroup--color.anatomy.json +1 -0
  120. package/dist/stories/components-chipgroup--color.webp +0 -0
  121. package/dist/stories/components-chipgroup--disabled.anatomy.json +1 -0
  122. package/dist/stories/components-chipgroup--disabled.webp +0 -0
  123. package/dist/stories/components-chipgroup--size.anatomy.json +1 -0
  124. package/dist/stories/components-chipgroup--size.webp +0 -0
  125. package/dist/stories/components-codearea-codeareafield--autocompletion-with-highlight.anatomy.json +1 -0
  126. package/dist/stories/components-codearea-codeareafield--autocompletion-with-highlight.webp +0 -0
  127. package/dist/stories/components-codearea-codeareafield--autocompletion.anatomy.json +1 -0
  128. package/dist/stories/components-codearea-codeareafield--autocompletion.webp +0 -0
  129. package/dist/stories/components-codearea-codeareafield--custom-save-label-action.anatomy.json +1 -0
  130. package/dist/stories/components-codearea-codeareafield--custom-save-label-action.webp +0 -0
  131. package/dist/stories/components-codearea-codeareafield--custom-text-marking.anatomy.json +1 -0
  132. package/dist/stories/components-codearea-codeareafield--custom-text-marking.webp +0 -0
  133. package/dist/stories/components-codearea-codeareafield--disable-active-line.anatomy.json +1 -0
  134. package/dist/stories/components-codearea-codeareafield--disable-active-line.webp +0 -0
  135. package/dist/stories/components-codearea-codeareafield--fixed-height.anatomy.json +1 -0
  136. package/dist/stories/components-codearea-codeareafield--fixed-height.webp +0 -0
  137. package/dist/stories/components-codearea-codeareafield--fold-code.anatomy.json +1 -0
  138. package/dist/stories/components-codearea-codeareafield--fold-code.webp +0 -0
  139. package/dist/stories/components-codearea-codeareafield--full-screen.anatomy.json +1 -0
  140. package/dist/stories/components-codearea-codeareafield--full-screen.webp +0 -0
  141. package/dist/stories/components-codearea-codeareafield--label-linenumber-and-helper-text.anatomy.json +1 -0
  142. package/dist/stories/components-codearea-codeareafield--label-linenumber-and-helper-text.webp +0 -0
  143. package/dist/stories/components-codearea-codeareafield--long-value-right-padding.anatomy.json +1 -0
  144. package/dist/stories/components-codearea-codeareafield--long-value-right-padding.webp +0 -0
  145. package/dist/stories/components-codearea-codeareafield--mode.anatomy.json +1 -0
  146. package/dist/stories/components-codearea-codeareafield--mode.webp +0 -0
  147. package/dist/stories/components-codearea-codeareafield--states.anatomy.json +1 -0
  148. package/dist/stories/components-codearea-codeareafield--states.webp +0 -0
  149. package/dist/stories/components-codearea-codeareafield--variant.anatomy.json +1 -0
  150. package/dist/stories/components-codearea-codeareafield--variant.webp +0 -0
  151. package/dist/stories/components-datepickers-datepicker--clearable.anatomy.json +1 -0
  152. package/dist/stories/components-datepickers-datepicker--clearable.webp +0 -0
  153. package/dist/stories/components-datepickers-datepicker--custom-translations.anatomy.json +1 -0
  154. package/dist/stories/components-datepickers-datepicker--custom-translations.webp +0 -0
  155. package/dist/stories/components-datepickers-datepicker--disabled-dates.anatomy.json +1 -0
  156. package/dist/stories/components-datepickers-datepicker--disabled-dates.webp +0 -0
  157. package/dist/stories/components-datepickers-datepicker--label-and-helper-text.anatomy.json +1 -0
  158. package/dist/stories/components-datepickers-datepicker--label-and-helper-text.webp +0 -0
  159. package/dist/stories/components-datepickers-datepicker--sizes.anatomy.json +1 -0
  160. package/dist/stories/components-datepickers-datepicker--sizes.webp +0 -0
  161. package/dist/stories/components-datepickers-datepicker--views.anatomy.json +1 -0
  162. package/dist/stories/components-datepickers-datepicker--views.webp +0 -0
  163. package/dist/stories/components-datepickers-daterangecalendar--fixed-range.anatomy.json +1 -0
  164. package/dist/stories/components-datepickers-daterangecalendar--fixed-range.webp +0 -0
  165. package/dist/stories/components-datepickers-daterangepicker--clearable.anatomy.json +1 -0
  166. package/dist/stories/components-datepickers-daterangepicker--clearable.webp +0 -0
  167. package/dist/stories/components-datepickers-daterangepicker--custom-translations.anatomy.json +1 -0
  168. package/dist/stories/components-datepickers-daterangepicker--custom-translations.webp +0 -0
  169. package/dist/stories/components-datepickers-daterangepicker--disabled-dates.anatomy.json +1 -0
  170. package/dist/stories/components-datepickers-daterangepicker--disabled-dates.webp +0 -0
  171. package/dist/stories/components-datepickers-daterangepicker--label-and-helper-text.anatomy.json +1 -0
  172. package/dist/stories/components-datepickers-daterangepicker--label-and-helper-text.webp +0 -0
  173. package/dist/stories/components-datepickers-daterangepicker--sizes.anatomy.json +1 -0
  174. package/dist/stories/components-datepickers-daterangepicker--sizes.webp +0 -0
  175. package/dist/stories/components-datepickers-daterangepicker--views.anatomy.json +1 -0
  176. package/dist/stories/components-datepickers-daterangepicker--views.webp +0 -0
  177. package/dist/stories/components-datepickers-datetimepicker--am-pm-disabled.anatomy.json +1 -0
  178. package/dist/stories/components-datepickers-datetimepicker--am-pm-disabled.webp +0 -0
  179. package/dist/stories/components-datepickers-datetimepicker--clearable.anatomy.json +1 -0
  180. package/dist/stories/components-datepickers-datetimepicker--clearable.webp +0 -0
  181. package/dist/stories/components-datepickers-datetimepicker--custom-translations.anatomy.json +1 -0
  182. package/dist/stories/components-datepickers-datetimepicker--custom-translations.webp +0 -0
  183. package/dist/stories/components-datepickers-datetimepicker--disabled-dates.anatomy.json +1 -0
  184. package/dist/stories/components-datepickers-datetimepicker--disabled-dates.webp +0 -0
  185. package/dist/stories/components-datepickers-datetimepicker--label-and-helper-text.anatomy.json +1 -0
  186. package/dist/stories/components-datepickers-datetimepicker--label-and-helper-text.webp +0 -0
  187. package/dist/stories/components-datepickers-datetimepicker--show-calendar-false.anatomy.json +1 -0
  188. package/dist/stories/components-datepickers-datetimepicker--show-calendar-false.webp +0 -0
  189. package/dist/stories/components-datepickers-datetimepicker--sizes.anatomy.json +1 -0
  190. package/dist/stories/components-datepickers-datetimepicker--sizes.webp +0 -0
  191. package/dist/stories/components-datepickers-datetimepicker--time-step.anatomy.json +1 -0
  192. package/dist/stories/components-datepickers-datetimepicker--time-step.webp +0 -0
  193. package/dist/stories/components-datepickers-datetimepicker--views.anatomy.json +1 -0
  194. package/dist/stories/components-datepickers-datetimepicker--views.webp +0 -0
  195. package/dist/stories/components-datepickers-timepicker--am-pm-disabled.anatomy.json +1 -0
  196. package/dist/stories/components-datepickers-timepicker--am-pm-disabled.webp +0 -0
  197. package/dist/stories/components-datepickers-timepicker--clearable.anatomy.json +1 -0
  198. package/dist/stories/components-datepickers-timepicker--clearable.webp +0 -0
  199. package/dist/stories/components-datepickers-timepicker--custom-translations.anatomy.json +1 -0
  200. package/dist/stories/components-datepickers-timepicker--custom-translations.webp +0 -0
  201. package/dist/stories/components-datepickers-timepicker--disabled-dates.anatomy.json +1 -0
  202. package/dist/stories/components-datepickers-timepicker--disabled-dates.webp +0 -0
  203. package/dist/stories/components-datepickers-timepicker--label-and-helper-text.anatomy.json +1 -0
  204. package/dist/stories/components-datepickers-timepicker--label-and-helper-text.webp +0 -0
  205. package/dist/stories/components-datepickers-timepicker--show-clock-false.anatomy.json +1 -0
  206. package/dist/stories/components-datepickers-timepicker--show-clock-false.webp +0 -0
  207. package/dist/stories/components-datepickers-timepicker--sizes.anatomy.json +1 -0
  208. package/dist/stories/components-datepickers-timepicker--sizes.webp +0 -0
  209. package/dist/stories/components-datepickers-timepicker--time-step.anatomy.json +1 -0
  210. package/dist/stories/components-datepickers-timepicker--time-step.webp +0 -0
  211. package/dist/stories/components-datepickers-timepicker--views.anatomy.json +1 -0
  212. package/dist/stories/components-datepickers-timepicker--views.webp +0 -0
  213. package/dist/stories/components-dialogs-dialog--custom-spacing.anatomy.json +1 -0
  214. package/dist/stories/components-dialogs-dialog--custom-spacing.webp +0 -0
  215. package/dist/stories/components-dialogs-dialog--fluid-height.anatomy.json +1 -0
  216. package/dist/stories/components-dialogs-dialog--fluid-height.webp +0 -0
  217. package/dist/stories/components-dialogs-dialog--fluid-width.anatomy.json +1 -0
  218. package/dist/stories/components-dialogs-dialog--fluid-width.webp +0 -0
  219. package/dist/stories/components-dialogs-dialog--full-screen.anatomy.json +1 -0
  220. package/dist/stories/components-dialogs-dialog--full-screen.webp +0 -0
  221. package/dist/stories/components-dialogs-dialog--gutter-content.anatomy.json +1 -0
  222. package/dist/stories/components-dialogs-dialog--gutter-content.webp +0 -0
  223. package/dist/stories/components-dialogs-dialog--internall-scroll.anatomy.json +1 -0
  224. package/dist/stories/components-dialogs-dialog--internall-scroll.webp +0 -0
  225. package/dist/stories/components-dialogs-dialog--large.anatomy.json +1 -0
  226. package/dist/stories/components-dialogs-dialog--large.webp +0 -0
  227. package/dist/stories/components-dialogs-dialog--medium.anatomy.json +1 -0
  228. package/dist/stories/components-dialogs-dialog--medium.webp +0 -0
  229. package/dist/stories/components-dialogs-dialog--scroll-borders-hook.anatomy.json +1 -0
  230. package/dist/stories/components-dialogs-dialog--scroll-borders-hook.webp +0 -0
  231. package/dist/stories/components-dialogs-dialog--scrollable-content.anatomy.json +1 -0
  232. package/dist/stories/components-dialogs-dialog--scrollable-content.webp +0 -0
  233. package/dist/stories/components-dialogs-dialog--small.anatomy.json +1 -0
  234. package/dist/stories/components-dialogs-dialog--small.webp +0 -0
  235. package/dist/stories/components-dialogs-dialog--types.anatomy.json +1 -0
  236. package/dist/stories/components-dialogs-dialog--types.webp +0 -0
  237. package/dist/stories/components-dialogs-dialog--with-stepper-and-chip.anatomy.json +1 -0
  238. package/dist/stories/components-dialogs-dialog--with-stepper-and-chip.webp +0 -0
  239. package/dist/stories/components-dialogs-dialogalert--custom-icon.anatomy.json +1 -0
  240. package/dist/stories/components-dialogs-dialogalert--custom-icon.webp +0 -0
  241. package/dist/stories/components-dialogs-dialogalert--severity.anatomy.json +1 -0
  242. package/dist/stories/components-dialogs-dialogalert--severity.webp +0 -0
  243. package/dist/stories/components-dialogs-dialogalert--with-title.anatomy.json +1 -0
  244. package/dist/stories/components-dialogs-dialogalert--with-title.webp +0 -0
  245. package/dist/stories/components-dialogs-dialogconfirmation--custom-slide-props.anatomy.json +1 -0
  246. package/dist/stories/components-dialogs-dialogconfirmation--custom-slide-props.webp +0 -0
  247. package/dist/stories/components-dialogs-dialogconfirmation--open.anatomy.json +1 -0
  248. package/dist/stories/components-dialogs-dialogconfirmation--open.webp +0 -0
  249. package/dist/stories/components-dialogs-dialogfooter--dark.anatomy.json +1 -0
  250. package/dist/stories/components-dialogs-dialogfooter--dark.webp +0 -0
  251. package/dist/stories/components-dialogs-dialogfooter--with-alert-and-title.anatomy.json +1 -0
  252. package/dist/stories/components-dialogs-dialogfooter--with-alert-and-title.webp +0 -0
  253. package/dist/stories/components-dialogs-dialogfooter--with-alert.anatomy.json +1 -0
  254. package/dist/stories/components-dialogs-dialogfooter--with-alert.webp +0 -0
  255. package/dist/stories/components-dialogs-dialogfooter--with-checkbox.anatomy.json +1 -0
  256. package/dist/stories/components-dialogs-dialogfooter--with-checkbox.webp +0 -0
  257. package/dist/stories/components-dialogs-dialogfooter--with-switch.anatomy.json +1 -0
  258. package/dist/stories/components-dialogs-dialogfooter--with-switch.webp +0 -0
  259. package/dist/stories/components-dialogs-dialogfooter--with-tertiary-actions.anatomy.json +1 -0
  260. package/dist/stories/components-dialogs-dialogfooter--with-tertiary-actions.webp +0 -0
  261. package/dist/stories/components-dialogs-dialogheader--custom-close-icon.anatomy.json +1 -0
  262. package/dist/stories/components-dialogs-dialogheader--custom-close-icon.webp +0 -0
  263. package/dist/stories/components-dialogs-dialogheader--custom-close-tooltip-text.anatomy.json +1 -0
  264. package/dist/stories/components-dialogs-dialogheader--custom-close-tooltip-text.webp +0 -0
  265. package/dist/stories/components-dialogs-dialogheader--custom-icon-button-props.anatomy.json +1 -0
  266. package/dist/stories/components-dialogs-dialogheader--custom-icon-button-props.webp +0 -0
  267. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-icon.anatomy.json +1 -0
  268. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-icon.webp +0 -0
  269. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-props.anatomy.json +1 -0
  270. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-props.webp +0 -0
  271. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-tooltip.anatomy.json +1 -0
  272. package/dist/stories/components-dialogs-dialogheader--with-back-button-custom-tooltip.webp +0 -0
  273. package/dist/stories/components-dialogs-dialogheader--with-back-button.anatomy.json +1 -0
  274. package/dist/stories/components-dialogs-dialogheader--with-back-button.webp +0 -0
  275. package/dist/stories/components-dialogs-dialogheader--with-children.anatomy.json +1 -0
  276. package/dist/stories/components-dialogs-dialogheader--with-children.webp +0 -0
  277. package/dist/stories/components-dialogs-dialogheader--with-chip.anatomy.json +1 -0
  278. package/dist/stories/components-dialogs-dialogheader--with-chip.webp +0 -0
  279. package/dist/stories/components-dialogs-dialogheader--with-secondary-actions.anatomy.json +1 -0
  280. package/dist/stories/components-dialogs-dialogheader--with-secondary-actions.webp +0 -0
  281. package/dist/stories/components-dialogs-dialogstepper--first-step.anatomy.json +1 -0
  282. package/dist/stories/components-dialogs-dialogstepper--first-step.webp +0 -0
  283. package/dist/stories/components-dialogs-dialogstepper--step-completed.anatomy.json +1 -0
  284. package/dist/stories/components-dialogs-dialogstepper--step-completed.webp +0 -0
  285. package/dist/stories/components-emptystate--actions.anatomy.json +1 -0
  286. package/dist/stories/components-emptystate--actions.webp +0 -0
  287. package/dist/stories/components-emptystate--content-dimensions.anatomy.json +1 -0
  288. package/dist/stories/components-emptystate--content-dimensions.webp +0 -0
  289. package/dist/stories/components-emptystate--icon-props.anatomy.json +1 -0
  290. package/dist/stories/components-emptystate--icon-props.webp +0 -0
  291. package/dist/stories/components-emptystate--icon.anatomy.json +1 -0
  292. package/dist/stories/components-emptystate--icon.webp +0 -0
  293. package/dist/stories/components-emptystate--size.anatomy.json +1 -0
  294. package/dist/stories/components-emptystate--size.webp +0 -0
  295. package/dist/stories/components-emptystate--title-and-description.anatomy.json +1 -0
  296. package/dist/stories/components-emptystate--title-and-description.webp +0 -0
  297. package/dist/stories/components-filterdropdown--custom-button-props.anatomy.json +1 -0
  298. package/dist/stories/components-filterdropdown--custom-button-props.webp +0 -0
  299. package/dist/stories/components-filterdropdown--custom-tooltip-props.anatomy.json +1 -0
  300. package/dist/stories/components-filterdropdown--custom-tooltip-props.webp +0 -0
  301. package/dist/stories/components-filterdropdown--disabled.anatomy.json +1 -0
  302. package/dist/stories/components-filterdropdown--disabled.webp +0 -0
  303. package/dist/stories/components-filterdropdown--labels.anatomy.json +1 -0
  304. package/dist/stories/components-filterdropdown--labels.webp +0 -0
  305. package/dist/stories/components-filterdropdown--menu-item-options.anatomy.json +1 -0
  306. package/dist/stories/components-filterdropdown--menu-item-options.webp +0 -0
  307. package/dist/stories/components-filterdropdown--positioned-menu.anatomy.json +1 -0
  308. package/dist/stories/components-filterdropdown--positioned-menu.webp +0 -0
  309. package/dist/stories/components-filterdropdown--responsive.anatomy.json +1 -0
  310. package/dist/stories/components-filterdropdown--responsive.webp +0 -0
  311. package/dist/stories/components-filterdropdown--secondary-button-color.anatomy.json +1 -0
  312. package/dist/stories/components-filterdropdown--secondary-button-color.webp +0 -0
  313. package/dist/stories/components-filterdropdown--selected-color.anatomy.json +1 -0
  314. package/dist/stories/components-filterdropdown--selected-color.webp +0 -0
  315. package/dist/stories/components-filterdropdown--sizes.anatomy.json +1 -0
  316. package/dist/stories/components-filterdropdown--sizes.webp +0 -0
  317. package/dist/stories/components-iconwrapper--background.anatomy.json +1 -0
  318. package/dist/stories/components-iconwrapper--background.webp +0 -0
  319. package/dist/stories/components-iconwrapper--border.anatomy.json +1 -0
  320. package/dist/stories/components-iconwrapper--border.webp +0 -0
  321. package/dist/stories/components-iconwrapper--colors.anatomy.json +1 -0
  322. package/dist/stories/components-iconwrapper--colors.webp +0 -0
  323. package/dist/stories/components-iconwrapper--padding.anatomy.json +1 -0
  324. package/dist/stories/components-iconwrapper--padding.webp +0 -0
  325. package/dist/stories/components-iconwrapper--sizes.anatomy.json +1 -0
  326. package/dist/stories/components-iconwrapper--sizes.webp +0 -0
  327. package/dist/stories/components-iconwrapper--variants.anatomy.json +1 -0
  328. package/dist/stories/components-iconwrapper--variants.webp +0 -0
  329. package/dist/stories/components-iconwrapper--with-tooltip.anatomy.json +1 -0
  330. package/dist/stories/components-iconwrapper--with-tooltip.webp +0 -0
  331. package/dist/stories/components-labelwithindicator--icon.anatomy.json +1 -0
  332. package/dist/stories/components-labelwithindicator--icon.webp +0 -0
  333. package/dist/stories/components-labelwithindicator--indicator.anatomy.json +1 -0
  334. package/dist/stories/components-labelwithindicator--indicator.webp +0 -0
  335. package/dist/stories/components-labelwithindicator--type.anatomy.json +1 -0
  336. package/dist/stories/components-labelwithindicator--type.webp +0 -0
  337. package/dist/stories/components-labelwithindicator--typography-props.anatomy.json +1 -0
  338. package/dist/stories/components-labelwithindicator--typography-props.webp +0 -0
  339. package/dist/stories/components-labelwithindicator--use-cases.anatomy.json +1 -0
  340. package/dist/stories/components-labelwithindicator--use-cases.webp +0 -0
  341. package/dist/stories/components-link--color.anatomy.json +1 -0
  342. package/dist/stories/components-link--color.webp +0 -0
  343. package/dist/stories/components-link--external-link.anatomy.json +1 -0
  344. package/dist/stories/components-link--external-link.webp +0 -0
  345. package/dist/stories/components-link--icon.anatomy.json +1 -0
  346. package/dist/stories/components-link--icon.webp +0 -0
  347. package/dist/stories/components-link--inline-link.anatomy.json +1 -0
  348. package/dist/stories/components-link--inline-link.webp +0 -0
  349. package/dist/stories/components-link--variant.anatomy.json +1 -0
  350. package/dist/stories/components-link--variant.webp +0 -0
  351. package/dist/stories/components-list-list--direction.anatomy.json +1 -0
  352. package/dist/stories/components-list-list--direction.webp +0 -0
  353. package/dist/stories/components-list-list--divider.anatomy.json +1 -0
  354. package/dist/stories/components-list-list--divider.webp +0 -0
  355. package/dist/stories/components-list-list--double-action.anatomy.json +1 -0
  356. package/dist/stories/components-list-list--double-action.webp +0 -0
  357. package/dist/stories/components-list-list--fixed-height.anatomy.json +1 -0
  358. package/dist/stories/components-list-list--fixed-height.webp +0 -0
  359. package/dist/stories/components-list-list--gutters.anatomy.json +1 -0
  360. package/dist/stories/components-list-list--gutters.webp +0 -0
  361. package/dist/stories/components-list-list--primary-action.anatomy.json +1 -0
  362. package/dist/stories/components-list-list--primary-action.webp +0 -0
  363. package/dist/stories/components-list-list--secondary-action.anatomy.json +1 -0
  364. package/dist/stories/components-list-list--secondary-action.webp +0 -0
  365. package/dist/stories/components-list-list--size.anatomy.json +1 -0
  366. package/dist/stories/components-list-list--size.webp +0 -0
  367. package/dist/stories/components-list-list--spacing.anatomy.json +1 -0
  368. package/dist/stories/components-list-list--spacing.webp +0 -0
  369. package/dist/stories/components-list-list--subheaders.anatomy.json +1 -0
  370. package/dist/stories/components-list-list--subheaders.webp +0 -0
  371. package/dist/stories/components-list-list--variants.anatomy.json +1 -0
  372. package/dist/stories/components-list-list--variants.webp +0 -0
  373. package/dist/stories/components-list-list--virtualized.anatomy.json +1 -0
  374. package/dist/stories/components-list-list--virtualized.webp +0 -0
  375. package/dist/stories/components-list-listitem--alignment.anatomy.json +1 -0
  376. package/dist/stories/components-list-listitem--alignment.webp +0 -0
  377. package/dist/stories/components-list-listitem--divider.anatomy.json +1 -0
  378. package/dist/stories/components-list-listitem--divider.webp +0 -0
  379. package/dist/stories/components-list-listitem--double-action.anatomy.json +1 -0
  380. package/dist/stories/components-list-listitem--double-action.webp +0 -0
  381. package/dist/stories/components-list-listitem--fixed-height.anatomy.json +1 -0
  382. package/dist/stories/components-list-listitem--fixed-height.webp +0 -0
  383. package/dist/stories/components-list-listitem--gutters.anatomy.json +1 -0
  384. package/dist/stories/components-list-listitem--gutters.webp +0 -0
  385. package/dist/stories/components-list-listitem--media-content.anatomy.json +1 -0
  386. package/dist/stories/components-list-listitem--media-content.webp +0 -0
  387. package/dist/stories/components-list-listitem--primary-action.anatomy.json +1 -0
  388. package/dist/stories/components-list-listitem--primary-action.webp +0 -0
  389. package/dist/stories/components-list-listitem--right-content.anatomy.json +1 -0
  390. package/dist/stories/components-list-listitem--right-content.webp +0 -0
  391. package/dist/stories/components-list-listitem--secondary-action.anatomy.json +1 -0
  392. package/dist/stories/components-list-listitem--secondary-action.webp +0 -0
  393. package/dist/stories/components-list-listitem--size.anatomy.json +1 -0
  394. package/dist/stories/components-list-listitem--size.webp +0 -0
  395. package/dist/stories/components-list-listitem--text-content.anatomy.json +1 -0
  396. package/dist/stories/components-list-listitem--text-content.webp +0 -0
  397. package/dist/stories/components-list-listitem--variants.anatomy.json +1 -0
  398. package/dist/stories/components-list-listitem--variants.webp +0 -0
  399. package/dist/stories/components-loader--color.anatomy.json +1 -0
  400. package/dist/stories/components-loader--color.webp +0 -0
  401. package/dist/stories/components-loader--content-height.anatomy.json +1 -0
  402. package/dist/stories/components-loader--content-height.webp +0 -0
  403. package/dist/stories/components-loader--custom-icon-props.anatomy.json +1 -0
  404. package/dist/stories/components-loader--custom-icon-props.webp +0 -0
  405. package/dist/stories/components-loader--label-and-second-label.anatomy.json +1 -0
  406. package/dist/stories/components-loader--label-and-second-label.webp +0 -0
  407. package/dist/stories/components-loader--size.anatomy.json +1 -0
  408. package/dist/stories/components-loader--size.webp +0 -0
  409. package/dist/stories/components-menu--content.anatomy.json +1 -0
  410. package/dist/stories/components-menu--content.webp +0 -0
  411. package/dist/stories/components-menu--custom-height.anatomy.json +1 -0
  412. package/dist/stories/components-menu--custom-height.webp +0 -0
  413. package/dist/stories/components-menu--custom-width.anatomy.json +1 -0
  414. package/dist/stories/components-menu--custom-width.webp +0 -0
  415. package/dist/stories/components-menu--dense.anatomy.json +1 -0
  416. package/dist/stories/components-menu--dense.webp +0 -0
  417. package/dist/stories/components-menu--destructive.anatomy.json +1 -0
  418. package/dist/stories/components-menu--destructive.webp +0 -0
  419. package/dist/stories/components-menu--disable-gutters.anatomy.json +1 -0
  420. package/dist/stories/components-menu--disable-gutters.webp +0 -0
  421. package/dist/stories/components-menu--extended.anatomy.json +1 -0
  422. package/dist/stories/components-menu--extended.webp +0 -0
  423. package/dist/stories/components-menu--fixed-menu-item.anatomy.json +1 -0
  424. package/dist/stories/components-menu--fixed-menu-item.webp +0 -0
  425. package/dist/stories/components-menu--icon-color.anatomy.json +1 -0
  426. package/dist/stories/components-menu--icon-color.webp +0 -0
  427. package/dist/stories/components-menu--menu-list-wrapper.anatomy.json +1 -0
  428. package/dist/stories/components-menu--menu-list-wrapper.webp +0 -0
  429. package/dist/stories/components-menu--placement-right.anatomy.json +1 -0
  430. package/dist/stories/components-menu--placement-right.webp +0 -0
  431. package/dist/stories/components-menu--placement-top.anatomy.json +1 -0
  432. package/dist/stories/components-menu--placement-top.webp +0 -0
  433. package/dist/stories/components-menu--selected-color.anatomy.json +1 -0
  434. package/dist/stories/components-menu--selected-color.webp +0 -0
  435. package/dist/stories/components-menu--states.anatomy.json +1 -0
  436. package/dist/stories/components-menu--states.webp +0 -0
  437. package/dist/stories/components-menu--subtitle.anatomy.json +1 -0
  438. package/dist/stories/components-menu--subtitle.webp +0 -0
  439. package/dist/stories/components-menu--text-overflow.anatomy.json +1 -0
  440. package/dist/stories/components-menu--text-overflow.webp +0 -0
  441. package/dist/stories/components-messagefield--action.anatomy.json +1 -0
  442. package/dist/stories/components-messagefield--action.webp +0 -0
  443. package/dist/stories/components-messagefield--behavior.anatomy.json +1 -0
  444. package/dist/stories/components-messagefield--behavior.webp +0 -0
  445. package/dist/stories/components-messagefield--header.anatomy.json +1 -0
  446. package/dist/stories/components-messagefield--header.webp +0 -0
  447. package/dist/stories/components-messagefield--label-and-helper-text.anatomy.json +1 -0
  448. package/dist/stories/components-messagefield--label-and-helper-text.webp +0 -0
  449. package/dist/stories/components-messagefield--medium.anatomy.json +1 -0
  450. package/dist/stories/components-messagefield--medium.webp +0 -0
  451. package/dist/stories/components-messagefield--small.anatomy.json +1 -0
  452. package/dist/stories/components-messagefield--small.webp +0 -0
  453. package/dist/stories/components-messagefield--toolbar.anatomy.json +1 -0
  454. package/dist/stories/components-messagefield--toolbar.webp +0 -0
  455. package/dist/stories/components-messagefield--variant.anatomy.json +1 -0
  456. package/dist/stories/components-messagefield--variant.webp +0 -0
  457. package/dist/stories/components-password-field--behavior.anatomy.json +1 -0
  458. package/dist/stories/components-password-field--behavior.webp +0 -0
  459. package/dist/stories/components-password-field--label-and-helper-text.anatomy.json +1 -0
  460. package/dist/stories/components-password-field--label-and-helper-text.webp +0 -0
  461. package/dist/stories/components-password-field--medium.anatomy.json +1 -0
  462. package/dist/stories/components-password-field--medium.webp +0 -0
  463. package/dist/stories/components-password-field--prefix-and-suffix.anatomy.json +1 -0
  464. package/dist/stories/components-password-field--prefix-and-suffix.webp +0 -0
  465. package/dist/stories/components-password-field--small.anatomy.json +1 -0
  466. package/dist/stories/components-password-field--small.webp +0 -0
  467. package/dist/stories/components-password-field--variants.anatomy.json +1 -0
  468. package/dist/stories/components-password-field--variants.webp +0 -0
  469. package/dist/stories/components-progress-circularprogress--color.anatomy.json +1 -0
  470. package/dist/stories/components-progress-circularprogress--color.webp +0 -0
  471. package/dist/stories/components-progress-circularprogress--size.anatomy.json +1 -0
  472. package/dist/stories/components-progress-circularprogress--size.webp +0 -0
  473. package/dist/stories/components-progress-circularprogress--thickness.anatomy.json +1 -0
  474. package/dist/stories/components-progress-circularprogress--thickness.webp +0 -0
  475. package/dist/stories/components-progress-circularprogress--variant.anatomy.json +1 -0
  476. package/dist/stories/components-progress-circularprogress--variant.webp +0 -0
  477. package/dist/stories/components-searchfield--behavior.anatomy.json +1 -0
  478. package/dist/stories/components-searchfield--behavior.webp +0 -0
  479. package/dist/stories/components-searchfield--dense.anatomy.json +1 -0
  480. package/dist/stories/components-searchfield--dense.webp +0 -0
  481. package/dist/stories/components-searchfield--medium.anatomy.json +1 -0
  482. package/dist/stories/components-searchfield--medium.webp +0 -0
  483. package/dist/stories/components-searchfield--small.anatomy.json +1 -0
  484. package/dist/stories/components-searchfield--small.webp +0 -0
  485. package/dist/stories/components-searchfield--variants.anatomy.json +1 -0
  486. package/dist/stories/components-searchfield--variants.webp +0 -0
  487. package/dist/stories/components-select-field-multiple-select-field--custom-render-label.anatomy.json +1 -0
  488. package/dist/stories/components-select-field-multiple-select-field--custom-render-label.webp +0 -0
  489. package/dist/stories/components-select-field-multiple-select-field--custom-translation-text.anatomy.json +1 -0
  490. package/dist/stories/components-select-field-multiple-select-field--custom-translation-text.webp +0 -0
  491. package/dist/stories/components-select-field-multiple-select-field--item-disabled-with-tooltip.anatomy.json +1 -0
  492. package/dist/stories/components-select-field-multiple-select-field--item-disabled-with-tooltip.webp +0 -0
  493. package/dist/stories/components-select-field-multiple-select-field--select-all-disabled.anatomy.json +1 -0
  494. package/dist/stories/components-select-field-multiple-select-field--select-all-disabled.webp +0 -0
  495. package/dist/stories/components-select-field-multiple-select-field--show-counter.anatomy.json +1 -0
  496. package/dist/stories/components-select-field-multiple-select-field--show-counter.webp +0 -0
  497. package/dist/stories/components-select-field-multiple-select-field--tooltip-placement.anatomy.json +1 -0
  498. package/dist/stories/components-select-field-multiple-select-field--tooltip-placement.webp +0 -0
  499. package/dist/stories/components-select-field-multiple-select-field--use-labels-collapsed.anatomy.json +1 -0
  500. package/dist/stories/components-select-field-multiple-select-field--use-labels-collapsed.webp +0 -0
  501. package/dist/stories/components-select-field-multiple-select-field--without-filters.anatomy.json +1 -0
  502. package/dist/stories/components-select-field-multiple-select-field--without-filters.webp +0 -0
  503. package/dist/stories/components-select-field-select-field--behavior.anatomy.json +1 -0
  504. package/dist/stories/components-select-field-select-field--behavior.webp +0 -0
  505. package/dist/stories/components-select-field-select-field--grouped.anatomy.json +1 -0
  506. package/dist/stories/components-select-field-select-field--grouped.webp +0 -0
  507. package/dist/stories/components-select-field-select-field--label-and-helper-text.anatomy.json +1 -0
  508. package/dist/stories/components-select-field-select-field--label-and-helper-text.webp +0 -0
  509. package/dist/stories/components-select-field-select-field--medium.anatomy.json +1 -0
  510. package/dist/stories/components-select-field-select-field--medium.webp +0 -0
  511. package/dist/stories/components-select-field-select-field--prefix.anatomy.json +1 -0
  512. package/dist/stories/components-select-field-select-field--prefix.webp +0 -0
  513. package/dist/stories/components-select-field-select-field--small.anatomy.json +1 -0
  514. package/dist/stories/components-select-field-select-field--small.webp +0 -0
  515. package/dist/stories/components-select-field-select-field--variants.anatomy.json +1 -0
  516. package/dist/stories/components-select-field-select-field--variants.webp +0 -0
  517. package/dist/stories/components-snackbar--action.anatomy.json +1 -0
  518. package/dist/stories/components-snackbar--action.webp +0 -0
  519. package/dist/stories/components-snackbar--auto-width.anatomy.json +1 -0
  520. package/dist/stories/components-snackbar--auto-width.webp +0 -0
  521. package/dist/stories/components-snackbar--custom-close-text.anatomy.json +1 -0
  522. package/dist/stories/components-snackbar--custom-close-text.webp +0 -0
  523. package/dist/stories/components-snackbar--custom-icon.anatomy.json +1 -0
  524. package/dist/stories/components-snackbar--custom-icon.webp +0 -0
  525. package/dist/stories/components-snackbar--message.anatomy.json +1 -0
  526. package/dist/stories/components-snackbar--message.webp +0 -0
  527. package/dist/stories/components-snackbar--severity.anatomy.json +1 -0
  528. package/dist/stories/components-snackbar--severity.webp +0 -0
  529. package/dist/stories/components-tablepaginationactions--custom-tooltip.anatomy.json +1 -0
  530. package/dist/stories/components-tablepaginationactions--custom-tooltip.webp +0 -0
  531. package/dist/stories/components-tablepaginationactions--states.anatomy.json +1 -0
  532. package/dist/stories/components-tablepaginationactions--states.webp +0 -0
  533. package/dist/stories/components-tag--colors.anatomy.json +1 -0
  534. package/dist/stories/components-tag--colors.webp +0 -0
  535. package/dist/stories/components-tag--types.anatomy.json +1 -0
  536. package/dist/stories/components-tag--types.webp +0 -0
  537. package/dist/stories/components-tag--variants.anatomy.json +1 -0
  538. package/dist/stories/components-tag--variants.webp +0 -0
  539. package/dist/stories/components-tag--with-icons.anatomy.json +1 -0
  540. package/dist/stories/components-tag--with-icons.webp +0 -0
  541. package/dist/stories/components-tooltip-tooltipdata--data.anatomy.json +1 -0
  542. package/dist/stories/components-tooltip-tooltipdata--data.webp +0 -0
  543. package/dist/stories/components-typography--color.anatomy.json +1 -0
  544. package/dist/stories/components-typography--color.webp +0 -0
  545. package/dist/stories/components-typography--variant.anatomy.json +1 -0
  546. package/dist/stories/components-typography--variant.webp +0 -0
  547. package/dist/stories/components-typography--weight.anatomy.json +1 -0
  548. package/dist/stories/components-typography--weight.webp +0 -0
  549. package/dist/stories/components-uploadfield--behavior.anatomy.json +1 -0
  550. package/dist/stories/components-uploadfield--behavior.webp +0 -0
  551. package/dist/stories/components-uploadfield--label-and-helper-text.anatomy.json +1 -0
  552. package/dist/stories/components-uploadfield--label-and-helper-text.webp +0 -0
  553. package/dist/stories/components-uploadfield--medium.anatomy.json +1 -0
  554. package/dist/stories/components-uploadfield--medium.webp +0 -0
  555. package/dist/stories/components-uploadfield--small.anatomy.json +1 -0
  556. package/dist/stories/components-uploadfield--small.webp +0 -0
  557. package/dist/stories/components-uploadfield--variants.anatomy.json +1 -0
  558. package/dist/stories/components-uploadfield--variants.webp +0 -0
  559. package/dist/stories/patterns-copiablecomponent--custom-icon.anatomy.json +1 -0
  560. package/dist/stories/patterns-copiablecomponent--custom-icon.webp +0 -0
  561. package/dist/stories/patterns-copiablecomponent--custom-snackbar-props.anatomy.json +1 -0
  562. package/dist/stories/patterns-copiablecomponent--custom-snackbar-props.webp +0 -0
  563. package/dist/stories/patterns-copiablecomponent--tooltip.anatomy.json +1 -0
  564. package/dist/stories/patterns-copiablecomponent--tooltip.webp +0 -0
  565. package/dist/stories/patterns-copiablecomponent--variants.anatomy.json +1 -0
  566. package/dist/stories/patterns-copiablecomponent--variants.webp +0 -0
  567. package/dist/stories/patterns-copiableinputtext--long-value.anatomy.json +1 -0
  568. package/dist/stories/patterns-copiableinputtext--long-value.webp +0 -0
  569. package/dist/stories/patterns-copiableinputtext--sizes.anatomy.json +1 -0
  570. package/dist/stories/patterns-copiableinputtext--sizes.webp +0 -0
  571. package/dist/stories/patterns-copiableinputtext--states.anatomy.json +1 -0
  572. package/dist/stories/patterns-copiableinputtext--states.webp +0 -0
  573. package/dist/stories/patterns-copiableinputtext--variants.anatomy.json +1 -0
  574. package/dist/stories/patterns-copiableinputtext--variants.webp +0 -0
  575. package/dist/stories/patterns-ellipsiswithtooltip--always-show-tooltip.anatomy.json +1 -0
  576. package/dist/stories/patterns-ellipsiswithtooltip--always-show-tooltip.webp +0 -0
  577. package/dist/stories/patterns-ellipsiswithtooltip--composition.anatomy.json +1 -0
  578. package/dist/stories/patterns-ellipsiswithtooltip--composition.webp +0 -0
  579. package/dist/stories/patterns-ellipsiswithtooltip--content.anatomy.json +1 -0
  580. package/dist/stories/patterns-ellipsiswithtooltip--content.webp +0 -0
  581. package/dist/stories/patterns-ellipsiswithtooltip--middle-ellipsis-alignment.anatomy.json +1 -0
  582. package/dist/stories/patterns-ellipsiswithtooltip--middle-ellipsis-alignment.webp +0 -0
  583. package/dist/stories/patterns-ellipsiswithtooltip--pseudo-hover.anatomy.json +1 -0
  584. package/dist/stories/patterns-ellipsiswithtooltip--pseudo-hover.webp +0 -0
  585. package/dist/types/components/AccordionGroup/AccordionGroup.stories.d.ts.map +1 -1
  586. package/dist/types/components/AppBar/AppBar.stories.d.ts.map +1 -1
  587. package/dist/types/components/Autocomplete/Autocomplete/Autocomplete.metadata.d.ts.map +1 -1
  588. package/dist/types/components/Button/Button.stories.d.ts.map +1 -1
  589. package/dist/types/components/EllipsisWithTooltip/EllipsisWithTooltip.stories.d.ts.map +1 -1
  590. package/dist/types/components/EmptyState/EmptyState.stories.d.ts +1 -0
  591. package/dist/types/components/EmptyState/EmptyState.stories.d.ts.map +1 -1
  592. package/dist/types/components/IconButton/IconButton.stories.d.ts.map +1 -1
  593. package/dist/types/components/IconWrapper/IconWrapper.stories.d.ts.map +1 -1
  594. package/dist/types/components/List/List.stories.d.ts.map +1 -1
  595. package/dist/types/components/List/ListItem/ListItem.stories.d.ts.map +1 -1
  596. package/dist/types/components/Loader/Loader.stories.d.ts +1 -0
  597. package/dist/types/components/Loader/Loader.stories.d.ts.map +1 -1
  598. package/dist/types/components/Menu/Menu/Menu.stories.d.ts.map +1 -1
  599. package/dist/types/components/SearchField/SearchField.metadata.d.ts +5 -0
  600. package/dist/types/components/SearchField/SearchField.metadata.d.ts.map +1 -1
  601. package/dist/types/components/SelectField/MultipleSelectField/MultipleSelectField.metadata.d.ts.map +1 -1
  602. package/dist/types/components/SelectField/SelectField/SelectField.metadata.d.ts.map +1 -1
  603. package/dist/types/components/SelectField/SelectField/SelectField.stories.d.ts.map +1 -1
  604. package/dist/types/components/SplitButton/SplitButton.stories.d.ts.map +1 -1
  605. package/dist/types/components/Tag/Tag.stories.d.ts +1 -1
  606. package/dist/types/components/ToggleButtonGroup/ToggleButtonGroup.stories.d.ts.map +1 -1
  607. package/dist/types/custom-icons/__docs__/CustomIcons.stories.d.ts.map +1 -1
  608. package/dist/types/eslint-rules/index.d.ts +65 -2
  609. package/dist/types/eslint-rules/index.d.ts.map +1 -1
  610. package/dist/types/theme/components/stories/ButtonGroup.stories.d.ts.map +1 -1
  611. package/dist/types/theme/components/stories/Divider.stories.d.ts.map +1 -1
  612. package/dist/types/theme/components/stories/FAB.stories.d.ts.map +1 -1
  613. package/dist/types/theme/components/stories/Switch.stories.d.ts.map +1 -1
  614. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -2,11 +2,19 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- - feat(dialog): export useScrollBorders hook for scroll-edge borders [sc-578988] [#564](https://github.com/CartoDB/meridian-ds/pull/564)
6
- - feat(ai-metadata): leaner MCP and shared design-system rules [#563](https://github.com/CartoDB/meridian-ds/pull/563)
7
-
8
5
  ## 5.0
9
6
 
7
+ ### 5.2.0
8
+
9
+ - feat(dialog): export useScrollBorders hook for scroll-edge borders [sc-578988] [#564](https://github.com/CartoDB/meridian-ds/pull/564)
10
+ - feat(button): `tooltip` on Button and SplitButton — shown on hover even while disabled, and linked as the button's description; with it set, the button renders inside a wrapper span [sc-579530] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
11
+ - feat(icon-button): logs a dev-only `console.error` when an IconButton has no accessible name — test setups that fail on `console.error` need a `tooltip` or `aria-label` on those buttons [sc-579530] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
12
+ - feat(eslint-rules): new `@carto/meridian-ds/eslint-rules` export — Meridian's design rules as `no-restricted-syntax` entries plus generated MUI restricted imports, for `.eslintrc` or flat config; `SPACING_STEPS` exported from `@carto/meridian-ds/theme` [sc-579313] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
13
+ - feat(ai-metadata): leaner MCP — minified results, compact catalogs (`list_icons` is now plain text; `list_components` lists family members by name), `get_component` takes `names` and returns `example`/`moreExamples`/`propTypes` instead of `description`/`examples.stories` [sc-578601] [sc-578984] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
14
+ - feat(ai-metadata): conventions absorb the generic design-review rules; decision trees point list filters at FilterDropdown [sc-578639] [sc-580037] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
15
+ - feat(ai-metadata): Meridian's own rendering per curated story — `meridian_get_screenshot(storyId)` and new `meridian_get_anatomy(storyId)`, shipped in `dist/stories/` [sc-580343] [#568](https://github.com/CartoDB/meridian-ds/pull/568)
16
+ - chore(stories): stories follow Meridian's design rules, enforced by lint [sc-579467] [#563](https://github.com/CartoDB/meridian-ds/pull/563)
17
+
10
18
  ### 5.1.3
11
19
 
12
20
  - fix(ai-metadata): allow fractional spacing steps; give design team ownership of design-system paths [sc-577069] [#558](https://github.com/CartoDB/meridian-ds/pull/558)
@@ -36,6 +36,8 @@ var ICONS = [];
36
36
  var ICONS_TEXT = "";
37
37
  var TOKENS;
38
38
  var SCREENSHOTS = {};
39
+ var STORY_REFS = {};
40
+ var DIST_DIR = "";
39
41
  var CONVENTIONS = "";
40
42
  var VERSION = "0.0.0";
41
43
  var TOOLS = [
@@ -109,17 +111,32 @@ var TOOLS = [
109
111
  },
110
112
  {
111
113
  name: "meridian_get_screenshot",
112
- description: "Path to a labeled reference image. name='icons' is a grid of every custom icon captioned with its import name \u2014 Read it to confirm an icon visually. Needs an image-capable runtime. Omit name to list the available screenshots.",
114
+ description: "Path to a reference image. name='icons' is a grid of every custom icon captioned with its import name. Any curated component's story id (e.g. 'components-alert--layout', from meridian_get_component's `example.id` or meridian_get_examples) returns Meridian's own rendering of that story at 1280\xD7800 \u2014 compare it with your build to tell an app composing a component wrong from Meridian rendering it wrong. Needs an image-capable runtime. Omit name to list the labeled screenshots.",
113
115
  inputSchema: {
114
116
  type: "object",
115
117
  properties: {
116
118
  name: {
117
119
  type: "string",
118
- description: "Which screenshot to return (e.g. 'icons'). Omit to list the available ones."
120
+ description: "'icons', or a story id. Omit to list the labeled screenshots."
119
121
  }
120
122
  },
121
123
  additionalProperties: false
122
124
  }
125
+ },
126
+ {
127
+ name: "meridian_get_anatomy",
128
+ description: "Slot geometry of Meridian's own rendering of a story: each MUI component instance with its box, and its slots' boxes (e.g. Alert `icon`/`message`/`action`) relative to that instance, so they compare across widths. Matches meridian_get_screenshot for the same story id. Use it to measure where a component's parts should sit.",
129
+ inputSchema: {
130
+ type: "object",
131
+ properties: {
132
+ storyId: {
133
+ type: "string",
134
+ description: "A curated component's story id, e.g. 'components-alert--layout'."
135
+ }
136
+ },
137
+ required: ["storyId"],
138
+ additionalProperties: false
139
+ }
123
140
  }
124
141
  ];
125
142
  var find = (name) => DOCS.find((d) => d.name.toLowerCase() === String(name).toLowerCase());
@@ -273,15 +290,43 @@ Fetch any with meridian_get_examples(storyId):
273
290
  }
274
291
  return md;
275
292
  }
293
+ var SCOPE_HINT = {
294
+ element: " (cropped to the story root)",
295
+ page: " (full page, with portaled content)"
296
+ };
276
297
  function getScreenshot(name) {
277
298
  const available = Object.keys(SCREENSHOTS);
299
+ const story = STORY_REFS[name];
300
+ if (story)
301
+ return {
302
+ path: path.join(DIST_DIR, story.image),
303
+ ...story.scope && { scope: story.scope },
304
+ hint: `Meridian's rendering of ${name} at 1280\xD7800${story.scope ? SCOPE_HINT[story.scope] : ""}. meridian_get_anatomy('${name}') gives its slot boxes.`
305
+ };
278
306
  const shot = name ? SCREENSHOTS[name] : void 0;
279
307
  if (!shot || !fs.existsSync(shot.path))
280
308
  return name ? {
281
- error: `No screenshot named "${name}". Available: ${available.join(", ") || "(none \u2014 run `yarn metadata:screenshots` and rebuild)"}.`
309
+ error: `No screenshot named "${name}". Available: ${available.join(", ") || "(none \u2014 run `yarn metadata:screenshots` and rebuild)"}, or a curated component's story id (see meridian_get_examples).`
282
310
  } : { available };
283
311
  return { path: shot.path, count: shot.count, hint: shot.hint };
284
312
  }
313
+ function getAnatomy(storyId) {
314
+ const ref = STORY_REFS[storyId];
315
+ if (!ref)
316
+ return {
317
+ error: `No reference rendering for "${storyId}". Use a curated component's story id (see meridian_get_examples).`
318
+ };
319
+ if (!ref.anatomy)
320
+ return {
321
+ error: `No anatomy captured for "${storyId}" yet; meridian_get_screenshot('${storyId}') still has its image.`
322
+ };
323
+ return {
324
+ storyId,
325
+ ...JSON.parse(
326
+ fs.readFileSync(path.join(DIST_DIR, ref.anatomy), "utf8")
327
+ )
328
+ };
329
+ }
285
330
  function renderIcons() {
286
331
  const lines = ICONS.map(
287
332
  (i) => i.keywords?.length ? `${i.name}: ${i.keywords.join(", ")}` : i.name
@@ -303,6 +348,8 @@ function callTool(name, args) {
303
348
  return TOKENS ?? { error: "No tokens in this bundle." };
304
349
  case "meridian_get_screenshot":
305
350
  return getScreenshot(String(args.name ?? ""));
351
+ case "meridian_get_anatomy":
352
+ return getAnatomy(String(args.storyId ?? args.name ?? ""));
306
353
  case "meridian_get_component":
307
354
  if (Array.isArray(args.names))
308
355
  return args.names.map((n) => getComponent(String(n)));
@@ -322,7 +369,7 @@ var SERVER_INSTRUCTIONS = `Meridian Design System knowledge for writing React UI
322
369
 
323
370
  REQUIRED FIRST STEP: before writing or editing any Meridian UI, have the conventions in context and follow them for the rest of the session \u2014 the per-component data doesn't repeat those rules. Call meridian_get_conventions once, unless your context already has the "Meridian usage conventions" doc (e.g. a skill loaded it).
324
371
 
325
- Then: meridian_list_components to pick \u2192 meridian_get_component (\`names: [...]\` for several; includes the lead example) \u2192 meridian_get_examples only for other stories. Icons: meridian_list_icons. Exact token values: meridian_get_tokens.
372
+ Then: meridian_list_components to pick \u2192 meridian_get_component (\`names: [...]\` for several; includes the lead example) \u2192 meridian_get_examples only for other stories. Icons: meridian_list_icons. Exact token values: meridian_get_tokens. Meridian's own rendering of a story, for design QA: meridian_get_screenshot(storyId) + meridian_get_anatomy(storyId).
326
373
 
327
374
  Component tiers \u2014 all real and importable; prefer any of them over a bare MUI equivalent: CURATED (most) have full guidance; LISTED (\`documented: false\`, with stories) have no curation \u2014 use the examples + .d.ts; KNOWN (\`documented: false\`, no stories) have only the .d.ts.
328
375
 
@@ -394,6 +441,8 @@ function load() {
394
441
  }
395
442
  ])
396
443
  );
444
+ DIST_DIR = path.dirname(bundlePath);
445
+ STORY_REFS = bundle.storyReferences ?? {};
397
446
  CONVENTIONS = bundle.conventions;
398
447
  VERSION = bundle.version;
399
448
  process.stderr.write(
@@ -67,7 +67,7 @@ Meridian is the source of truth: when an existing codebase pattern contradicts M
67
67
 
68
68
  ## Styling
69
69
 
70
- - Use theme tokens, never hardcoded values: colors from the palette (`text.*`, `background.*`, `divider`, semantic `*.main`) and spacing from the theme scale (`theme.spacing(n)`, or `sx` numeric spacing like `px: 2` / `mt: 1.5`) — no raw hex/rgb or px. Margin, padding and offsets use steps `0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 12, 15` (2–120px); `width`/`height` may use any step (`spacing-step` in `@carto/meridian-ds/eslint-rules` lints it). Get the exact values — palette keys, spacing base, type ramp, `shape.borderRadius`, breakpoints, shadows — from `meridian_get_tokens`.
70
+ - Use theme tokens, never hardcoded values: colors from the palette (`text.*`, `background.*`, `divider`, semantic `*.main`) and spacing from the theme scale (`theme.spacing(n)`, or `sx` numeric spacing like `px: 2` / `mt: 1.5`) — no raw hex/rgb or px. Margin, padding and gap use steps `0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 12, 15` (2–120px); `width`/`height` and positional offsets may use any step (`spacing-step` in `@carto/meridian-ds/eslint-rules` lints it). Get the exact values — palette keys, spacing base, type ramp, `shape.borderRadius`, breakpoints, shadows — from `meridian_get_tokens`.
71
71
  - Token details:
72
72
  - `sx` spacing keys (`m*`/`p*`/`gap`) resolve to the scale, but `top`/`right`/`bottom`/`left` don't (`top: 2` is 2px) — use `theme.spacing()` there.
73
73
  - In `styled()`, always use `theme.spacing()`. `style={}` isn't theme-aware — use `sx`.
@@ -177,11 +177,13 @@ const STYLE_STRING = (pattern) => `Literal[value=${pattern}]:not(JSXAttribute[na
177
177
  const NON_ZERO = "Literal[raw=/^[0-9.]+$/][raw!=/^0+(\\.0+)?$/]";
178
178
  const exactly = (...alternatives) => `/^(${alternatives.join("|")})$/`;
179
179
  const SPACING = "[mp][trblxy]?|(margin|padding)(Top|Right|Bottom|Left|X|Y|Inline|Block)?|gap|rowGap|columnGap";
180
- const OFFSET = "top|right|bottom|left|inset";
181
180
  const SPACING_KEY = exactly(SPACING);
182
- const OFFSET_KEY = exactly(OFFSET);
183
- const SPACING_OR_OFFSET_KEY = exactly(SPACING, OFFSET);
184
- const MERIDIAN_COMPONENT = exactly(...MERIDIAN_COMPONENTS);
181
+ const MERIDIAN_IMPORT = /^@carto\/meridian-ds(\/|$)/;
182
+ const CSS_WIDE = "inherit|initial|unset|revert|revert-layer";
183
+ const PALETTE_VALUE = `/^(${CSS_WIDE}|currentColor|transparent|divider|[a-z]+\\.[A-Za-z0-9]+(\\.[A-Za-z0-9]+)?)$/`;
184
+ const ICON = "/(Icon|Outlined|Rounded|Sharp|TwoTone)$/";
185
+ const VISUAL_KEY = "/^(background|border|border(Top|Right|Bottom|Left)?(Color|Width|Style)?|borderRadius|boxShadow|opacity|outline|textTransform|textDecoration|fill|stroke)$/";
186
+ const COLOR_KEY = "/^(color|bgcolor|backgroundColor)$/";
185
187
  const SX = ":matches(JSXAttribute[name.name='sx'], Property[key.name='sx'])";
186
188
  const STYLED_OR_STYLE = ":matches(CallExpression[callee.callee.name='styled'], CallExpression[callee.object.name='styled'], CallExpression[callee.callee.object.name='styled'], JSXAttribute[name.name='style'])";
187
189
  const SPACING_CALL = "CallExpression[callee.property.name='spacing']";
@@ -196,110 +198,138 @@ const WRAPPERS = [
196
198
  "TemplateLiteral > ConditionalExpression > "
197
199
  ];
198
200
  const under = (parent, nodes) => nodes.flatMap((node) => WRAPPERS.map((w) => `${parent} > ${w}${node}`));
199
- const meridianDesignRules = {
200
- "spacing-step": {
201
- selector: anyOf(
202
- ...under(`${SX} Property[key.name=${SPACING_KEY}]`, [
203
- ...signed(OFF_SCALE),
204
- `ArrayExpression > ${OFF_SCALE}`,
205
- `ObjectExpression > Property > ${OFF_SCALE}`
206
- ]),
207
- ...under(
208
- `Property[key.name=${SPACING_OR_OFFSET_KEY}]`,
209
- signed(OFF_SCALE).map((n) => `${SPACING_CALL} > ${n}`)
210
- )
211
- ),
212
- message: `Spacing off the Meridian scale: margin, padding, gap and offsets use ${spacingSteps.SPACING_STEPS.join(", ")}.`
213
- },
214
- "px-spacing": {
215
- selector: anyOf(
216
- ...under(`Property[key.name=${SPACING_OR_OFFSET_KEY}]`, [
217
- PX_STRING,
218
- `ArrayExpression > ${PX_STRING}`,
219
- `ObjectExpression > Property > ${PX_STRING}`
220
- ]),
221
- ...under(
222
- `${STYLED_OR_STYLE} Property[key.name=${SPACING_OR_OFFSET_KEY}]`,
223
- signed(NON_ZERO)
201
+ const esqueryRegex = (re) => `/${re.source.replace(/\\?\//g, "\\x2F")}/`;
202
+ function createMeridianDesignRules({
203
+ importSource = MERIDIAN_IMPORT
204
+ } = {}) {
205
+ const source = esqueryRegex(importSource);
206
+ const forImported = (names, selector) => anyOf(
207
+ ...names.map(
208
+ (name) => `Program:has(ImportDeclaration[source.value=${source}] > :matches(ImportSpecifier, ImportDefaultSpecifier)[local.name='${name}']) ${selector(name)}`
209
+ )
210
+ );
211
+ const sxOf = (name) => `JSXOpeningElement[name.name='${name}'] > JSXAttribute[name.name='sx']`;
212
+ return {
213
+ "spacing-step": {
214
+ selector: anyOf(
215
+ ...under(`${SX} Property[key.name=${SPACING_KEY}]`, [
216
+ ...signed(OFF_SCALE),
217
+ `ArrayExpression > ${OFF_SCALE}`,
218
+ `ObjectExpression > Property > ${OFF_SCALE}`
219
+ ]),
220
+ ...under(
221
+ `Property[key.name=${SPACING_KEY}]`,
222
+ signed(OFF_SCALE).map((n) => `${SPACING_CALL} > ${n}`)
223
+ )
224
224
  ),
225
- ...under(`${SX} Property[key.name=${OFFSET_KEY}]`, signed(NON_ZERO))
226
- ),
227
- message: "Raw px spacing: use the theme scale — `sx` spacing numbers (`px: 2`) or `theme.spacing(n)`. Numbers in `styled()`/`style` and `sx` offsets are px."
228
- },
229
- "filled-icon": {
230
- selector: anyOf(
231
- "ImportDeclaration[source.value=/^@mui.icons-material.(?!.*(Outlined|Rounded|Sharp|TwoTone)$)/]",
232
- "ImportDeclaration[source.value='@mui/icons-material'][importKind!='type'] > ImportSpecifier[importKind!='type'][imported.name!=/(Outlined|Rounded|Sharp|TwoTone)$/]"
233
- ),
234
- message: "Filled MUI icon: import the Outlined variant."
235
- },
236
- "alpha-white-black": {
237
- selector: "CallExpression[callee.name='alpha'] > MemberExpression[property.name=/^(white|black)$/][object.property.name='common']",
238
- message: "`alpha()` on white/black: use the palette opacity shades `white[N]` / `black[N]`."
239
- },
240
- "hex-color": {
241
- selector: STYLE_STRING(
242
- "/(^|[\\s(,])#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b/"
243
- ),
244
- message: "Hardcoded hex color: use a palette token."
245
- },
246
- "rgb-color": {
247
- selector: STYLE_STRING("/(^|[^a-z])rgba?\\(/"),
248
- message: "Hardcoded rgb()/rgba() color: use a palette token."
249
- },
250
- "typography-style": {
251
- selector: anyOf(
252
- ...under(
253
- `:matches(${SX}, ${STYLED_OR_STYLE}) Property[key.name=/^(fontSize|fontWeight|lineHeight|fontFamily)$/]`,
254
- ["Literal"]
255
- )
256
- ),
257
- message: "Hardcoded typography: use `<Typography variant>` (and `weight`), `sx={{ typography: 'body2' }}` or `...theme.typography.body2`."
258
- },
259
- "external-link": {
260
- selector: "JSXOpeningElement[name.name='a'] > JSXAttribute[name.name='target'] > Literal[value='_blank']",
261
- message: 'Raw `<a target="_blank">`: use Meridian `Link` with `external`.'
262
- },
263
- "system-props": {
264
- selector: "JSXOpeningElement[name.name=/^(Box|Stack|Grid|Grid2|Container)$/] > JSXAttribute[name.name=/^(m|p)[trblxy]?$/]",
265
- message: "MUI system props are deprecated: move spacing into `sx`, e.g. `<Box sx={{ px: 2 }}>`."
266
- },
267
- "data-name": {
268
- selector: `JSXOpeningElement[name.name=${MERIDIAN_COMPONENT}] > JSXAttribute[name.name='data-name']`,
269
- message: "`data-name` on a Meridian component overrides its own marker: set it on a wrapper, or drop it."
270
- },
271
- "literal-a11y-text": {
272
- selector: anyOf(
273
- ...["", "JSXExpressionContainer > "].map(
274
- (wrapper) => `JSXAttribute[name.name=/^(aria-label|placeholder)$/] > ${wrapper}Literal[value=/[A-Za-z]/]`
275
- )
276
- ),
277
- message: "Hardcoded `aria-label` / `placeholder`: translate it with the i18n layer, and keep test ids out of it."
278
- },
279
- "raw-shadow-radius": {
280
- selector: anyOf(
281
- "Property[key.name='boxShadow'] > Literal[value=/\\d/]",
282
- "Property[key.name='borderRadius'] > Literal[value=/^\\d+(\\.\\d+)?px$/]"
283
- ),
284
- message: "Hardcoded shadow or radius: use `theme.shadows[n]` / `theme.shape.borderRadius`."
285
- },
286
- "styled-meridian": {
287
- selector: `CallExpression[callee.name='styled'] > Identifier[name=${MERIDIAN_COMPONENT}]`,
288
- message: "`styled()` of a Meridian component restyles it locally: use its props/variants, or raise the gap upstream in Meridian."
289
- },
290
- "visual-sx": {
291
- selector: `JSXOpeningElement[name.name=${MERIDIAN_COMPONENT}] > JSXAttribute[name.name='sx'] Property[key.name=/^(color|bgcolor|background|backgroundColor|border|border(Top|Right|Bottom|Left)?(Color|Width|Style)?|borderRadius|boxShadow|opacity|outline|textTransform|textDecoration|fill|stroke)$/]`,
292
- message: "Visual `sx` on a Meridian component overrides its design: keep `sx` to layout (spacing, size, position) and use its props/variants for the look."
293
- },
294
- "disabled-without-reason": {
295
- selector: "JSXOpeningElement[name.name=/^(Button|IconButton|SplitButton)$/]:has(> JSXAttribute[name.name='disabled']:not([value.expression.value=false])):not(:has(> JSXAttribute[name.name=/^(tooltip|aria-describedby)$/]))",
296
- message: "Disabled without a reason: pass `tooltip` (or `aria-describedby`) saying why it can’t be used."
297
- },
298
- "disabled-cursor": {
299
- selector: "Property[key.name='cursor'] > Literal[value='not-allowed']",
300
- message: "Don't tweak the cursor for disabled states: the component already styles them."
301
- }
302
- };
225
+ message: `Spacing off the Meridian scale: margin, padding and gap use ${spacingSteps.SPACING_STEPS.join(", ")}.`
226
+ },
227
+ "px-spacing": {
228
+ selector: anyOf(
229
+ ...under(`Property[key.name=${SPACING_KEY}]`, [
230
+ PX_STRING,
231
+ `ArrayExpression > ${PX_STRING}`,
232
+ `ObjectExpression > Property > ${PX_STRING}`
233
+ ]),
234
+ ...under(
235
+ `${STYLED_OR_STYLE} Property[key.name=${SPACING_KEY}]`,
236
+ signed(NON_ZERO)
237
+ )
238
+ ),
239
+ message: "Raw px spacing: use the theme scale — `sx` spacing numbers (`px: 2`) or `theme.spacing(n)`. Numbers in `styled()`/`style` are px."
240
+ },
241
+ "filled-icon": {
242
+ selector: anyOf(
243
+ "ImportDeclaration[source.value=/^@mui.icons-material.(?!.*(Outlined|Rounded|Sharp|TwoTone)$)/]",
244
+ "ImportDeclaration[source.value='@mui/icons-material'][importKind!='type'] > ImportSpecifier[importKind!='type'][imported.name!=/(Outlined|Rounded|Sharp|TwoTone)$/]"
245
+ ),
246
+ message: "Filled MUI icon: import the Outlined variant."
247
+ },
248
+ "alpha-white-black": {
249
+ selector: "CallExpression[callee.name='alpha'] > MemberExpression[property.name=/^(white|black)$/][object.property.name='common']",
250
+ message: "`alpha()` on white/black: use the palette opacity shades `white[N]` / `black[N]`."
251
+ },
252
+ "hex-color": {
253
+ selector: STYLE_STRING(
254
+ "/(^|[\\s(,])#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b/"
255
+ ),
256
+ message: "Hardcoded hex color: use a palette token."
257
+ },
258
+ "rgb-color": {
259
+ selector: STYLE_STRING("/(^|[^a-z])rgba?\\(/"),
260
+ message: "Hardcoded rgb()/rgba() color: use a palette token."
261
+ },
262
+ "typography-style": {
263
+ selector: anyOf(
264
+ ...under(
265
+ `:matches(${SX}, ${STYLED_OR_STYLE}) Property[key.name=/^(fontWeight|fontFamily)$/]`,
266
+ [`Literal[value!=/^(${CSS_WIDE})$/]`]
267
+ ),
268
+ ...under(
269
+ `:matches(${SX}, ${STYLED_OR_STYLE}) Property[key.name='lineHeight']`,
270
+ [`Literal[value!=/^(${CSS_WIDE}|0|1|normal)$/]`]
271
+ ),
272
+ ...under(
273
+ `:matches(${SX}, ${STYLED_OR_STYLE}) Property[key.name='fontSize']:not(JSXOpeningElement[name.name=${ICON}] > JSXAttribute[name.name='sx'] Property)`,
274
+ [`Literal[value!=/^(${CSS_WIDE})$/]`]
275
+ )
276
+ ),
277
+ message: "Hardcoded typography: use `<Typography variant>` (and `weight`), `sx={{ typography: 'body2' }}` or `...theme.typography.body2`."
278
+ },
279
+ "external-link": {
280
+ selector: "JSXOpeningElement[name.name='a'] > JSXAttribute[name.name='target'] > Literal[value='_blank']",
281
+ message: 'Raw `<a target="_blank">`: use Meridian `Link` with `external`.'
282
+ },
283
+ "data-name": {
284
+ selector: forImported(
285
+ MERIDIAN_COMPONENTS,
286
+ (name) => `JSXOpeningElement[name.name='${name}'] > JSXAttribute[name.name='data-name']`
287
+ ),
288
+ message: "`data-name` on a Meridian component overrides its own marker: set it on a wrapper, or drop it."
289
+ },
290
+ "literal-a11y-text": {
291
+ selector: anyOf(
292
+ ...["", "JSXExpressionContainer > "].map(
293
+ (wrapper) => `JSXAttribute[name.name=/^(aria-label|placeholder)$/] > ${wrapper}Literal[value=/[A-Za-z]/]`
294
+ )
295
+ ),
296
+ message: "Hardcoded `aria-label` / `placeholder`: translate it with the i18n layer, and keep test ids out of it."
297
+ },
298
+ "raw-shadow-radius": {
299
+ selector: anyOf(
300
+ "Property[key.name='boxShadow'] > Literal[value=/\\d/]",
301
+ "Property[key.name='borderRadius'] > Literal[value=/^\\d+(\\.\\d+)?px$/]"
302
+ ),
303
+ message: "Hardcoded shadow or radius: use `theme.shadows[n]` / `theme.shape.borderRadius`."
304
+ },
305
+ "styled-meridian": {
306
+ selector: forImported(
307
+ MERIDIAN_COMPONENTS,
308
+ (name) => `CallExpression[callee.name='styled'] > Identifier[name='${name}']`
309
+ ),
310
+ message: "`styled()` of a Meridian component restyles it locally: use its props/variants, or raise the gap upstream in Meridian."
311
+ },
312
+ "visual-sx": {
313
+ selector: forImported(
314
+ MERIDIAN_COMPONENTS,
315
+ (name) => `${sxOf(name)} :matches(Property[key.name=${VISUAL_KEY}], Property[key.name=${COLOR_KEY}] Literal[value!=${PALETTE_VALUE}])`
316
+ ),
317
+ message: "Visual `sx` on a Meridian component overrides its design: keep `sx` to layout (spacing, size, position) and use its props/variants for the look."
318
+ },
319
+ "disabled-without-reason": {
320
+ selector: forImported(
321
+ ["Button", "IconButton", "SplitButton"],
322
+ (name) => `JSXOpeningElement[name.name='${name}']:has(> JSXAttribute[name.name='disabled']:not([value.expression.value=false])):not(:has(> JSXAttribute[name.name=/^(tooltip|aria-describedby)$/]))`
323
+ ),
324
+ message: "Disabled without a reason: pass `tooltip` (or `aria-describedby`) saying why it can’t be used."
325
+ },
326
+ "disabled-cursor": {
327
+ selector: "Property[key.name='cursor'] > Literal[value='not-allowed']",
328
+ message: "Don't tweak the cursor for disabled states: the component already styles them."
329
+ }
330
+ };
331
+ }
332
+ const meridianDesignRules = createMeridianDesignRules();
303
333
  const PROPS_TYPES = new Set(MERIDIAN_PROPS_TYPES);
304
334
  const replacedBy = (names) => names.flatMap((n) => PROPS_TYPES.has(n) ? [n, `${n}Props`] : [n]);
305
335
  const USE_MERIDIAN = "Import from @carto/meridian-ds/components instead.";
@@ -333,5 +363,6 @@ const meridianRestrictedImports = {
333
363
  message: USE_MERIDIAN
334
364
  }))
335
365
  };
366
+ exports.createMeridianDesignRules = createMeridianDesignRules;
336
367
  exports.meridianDesignRules = meridianDesignRules;
337
368
  exports.meridianRestrictedImports = meridianRestrictedImports;