igniteui-webcomponents 7.3.2 → 7.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/animations/easings.d.ts +21 -31
  3. package/animations/easings.js +21 -34
  4. package/animations/easings.js.map +1 -1
  5. package/animations/player.d.ts +8 -16
  6. package/animations/player.js +5 -8
  7. package/animations/player.js.map +1 -1
  8. package/animations/view-transition.d.ts +10 -10
  9. package/animations/view-transition.js +26 -37
  10. package/animations/view-transition.js.map +1 -1
  11. package/components/breadcrumb/breadcrumb.d.ts +74 -0
  12. package/components/breadcrumb/breadcrumb.js +107 -0
  13. package/components/breadcrumb/breadcrumb.js.map +1 -0
  14. package/components/breadcrumb/breadcrumbs.d.ts +60 -0
  15. package/components/breadcrumb/breadcrumbs.js +50 -0
  16. package/components/breadcrumb/breadcrumbs.js.map +1 -0
  17. package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
  18. package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
  19. package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
  20. package/components/{resize-container/themes/resize-container.base.css.js → breadcrumb/themes/breadcrumbs.base.css.js} +2 -2
  21. package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
  22. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
  23. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
  24. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
  25. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
  26. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
  27. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
  28. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
  29. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
  30. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
  31. package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
  32. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
  33. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
  34. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
  35. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
  36. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
  37. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
  38. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
  39. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
  40. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
  41. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
  42. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
  43. package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
  44. package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
  45. package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
  46. package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
  47. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
  48. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
  49. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
  50. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
  51. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
  52. package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
  53. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
  54. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
  55. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
  56. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
  57. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
  58. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
  59. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
  60. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
  61. package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
  62. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
  63. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
  64. package/components/breadcrumb/themes/themes.d.ts +2 -0
  65. package/components/breadcrumb/themes/themes.js +50 -0
  66. package/components/breadcrumb/themes/themes.js.map +1 -0
  67. package/components/button/button.d.ts +0 -2
  68. package/components/button/button.js.map +1 -1
  69. package/components/button-group/button-group.d.ts +42 -12
  70. package/components/button-group/button-group.js +82 -34
  71. package/components/button-group/button-group.js.map +1 -1
  72. package/components/button-group/toggle-button.d.ts +6 -1
  73. package/components/button-group/toggle-button.js +28 -2
  74. package/components/button-group/toggle-button.js.map +1 -1
  75. package/components/calendar/base.js +2 -1
  76. package/components/calendar/base.js.map +1 -1
  77. package/components/calendar/calendar.d.ts +2 -3
  78. package/components/calendar/calendar.js.map +1 -1
  79. package/components/calendar/days-view/days-view.d.ts +2 -2
  80. package/components/calendar/days-view/days-view.js.map +1 -1
  81. package/components/carousel/carousel-indicator.js +1 -0
  82. package/components/carousel/carousel-indicator.js.map +1 -1
  83. package/components/carousel/carousel-slide.d.ts +1 -1
  84. package/components/carousel/carousel-slide.js.map +1 -1
  85. package/components/carousel/carousel.d.ts +3 -3
  86. package/components/carousel/carousel.js.map +1 -1
  87. package/components/chat/chat-input.d.ts +1 -2
  88. package/components/chat/chat-input.js +1 -1
  89. package/components/chat/chat-input.js.map +1 -1
  90. package/components/chat/chat-state.d.ts +8 -9
  91. package/components/chat/chat-state.js.map +1 -1
  92. package/components/chat/chat.d.ts +1 -3
  93. package/components/chat/chat.js +2 -2
  94. package/components/chat/chat.js.map +1 -1
  95. package/components/chat/message-attachments.d.ts +6 -15
  96. package/components/chat/message-attachments.js.map +1 -1
  97. package/components/chat/utils.d.ts +0 -1
  98. package/components/chat/utils.js +1 -1
  99. package/components/chat/utils.js.map +1 -1
  100. package/components/checkbox/checkbox-base.d.ts +3 -1
  101. package/components/checkbox/checkbox-base.js +4 -0
  102. package/components/checkbox/checkbox-base.js.map +1 -1
  103. package/components/checkbox/checkbox.js +4 -12
  104. package/components/checkbox/checkbox.js.map +1 -1
  105. package/components/checkbox/switch.js +1 -8
  106. package/components/checkbox/switch.js.map +1 -1
  107. package/components/chip/chip.d.ts +2 -2
  108. package/components/chip/chip.js.map +1 -1
  109. package/components/color-picker/color-picker.d.ts +35 -34
  110. package/components/color-picker/color-picker.js +12 -7
  111. package/components/color-picker/color-picker.js.map +1 -1
  112. package/components/color-picker/common.d.ts +0 -2
  113. package/components/color-picker/common.js +2 -2
  114. package/components/color-picker/common.js.map +1 -1
  115. package/components/color-picker/converters.js.map +1 -1
  116. package/components/color-picker/picker-canvas.js.map +1 -1
  117. package/components/combo/combo.d.ts +24 -24
  118. package/components/combo/combo.js +21 -26
  119. package/components/combo/combo.js.map +1 -1
  120. package/components/combo/controllers/data.d.ts +7 -10
  121. package/components/combo/controllers/data.js.map +1 -1
  122. package/components/date-picker/date-picker.base.d.ts +22 -27
  123. package/components/date-picker/date-picker.base.js +9 -3
  124. package/components/date-picker/date-picker.base.js.map +1 -1
  125. package/components/date-picker/date-picker.d.ts +1 -1
  126. package/components/date-picker/date-picker.js +5 -3
  127. package/components/date-picker/date-picker.js.map +1 -1
  128. package/components/date-range-picker/date-range-input.d.ts +0 -2
  129. package/components/date-range-picker/date-range-input.js +0 -6
  130. package/components/date-range-picker/date-range-input.js.map +1 -1
  131. package/components/date-range-picker/date-range-picker.d.ts +22 -31
  132. package/components/date-range-picker/date-range-picker.js +7 -7
  133. package/components/date-range-picker/date-range-picker.js.map +1 -1
  134. package/components/date-range-picker/i18n.d.ts +21 -0
  135. package/components/date-range-picker/i18n.js +10 -0
  136. package/components/date-range-picker/i18n.js.map +1 -0
  137. package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
  138. package/components/date-range-picker/predefined-ranges-area.js +2 -5
  139. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  140. package/components/date-range-picker/validators.d.ts +0 -4
  141. package/components/date-range-picker/validators.js +4 -4
  142. package/components/date-range-picker/validators.js.map +1 -1
  143. package/components/date-time-input/date-time-input.base.d.ts +42 -40
  144. package/components/date-time-input/date-time-input.base.js +9 -5
  145. package/components/date-time-input/date-time-input.base.js.map +1 -1
  146. package/components/date-time-input/date-time-input.d.ts +1 -11
  147. package/components/date-time-input/date-time-input.js +0 -6
  148. package/components/date-time-input/date-time-input.js.map +1 -1
  149. package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
  150. package/components/date-time-input/datetime-mask-parser.js +1 -1
  151. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  152. package/components/dialog/dialog.js.map +1 -1
  153. package/components/dropdown/dropdown-group.d.ts +2 -10
  154. package/components/dropdown/dropdown-group.js +2 -27
  155. package/components/dropdown/dropdown-group.js.map +1 -1
  156. package/components/dropdown/dropdown.d.ts +17 -23
  157. package/components/dropdown/dropdown.js +5 -17
  158. package/components/dropdown/dropdown.js.map +1 -1
  159. package/components/file-input/file-input.d.ts +7 -2
  160. package/components/file-input/file-input.js +4 -0
  161. package/components/file-input/file-input.js.map +1 -1
  162. package/components/icon/icon.d.ts +1 -1
  163. package/components/icon/icon.registry.d.ts +6 -6
  164. package/components/icon/icon.registry.js.map +1 -1
  165. package/components/input/input-base.d.ts +2 -2
  166. package/components/input/input-base.js +3 -5
  167. package/components/input/input-base.js.map +1 -1
  168. package/components/input/input.d.ts +3 -3
  169. package/components/input/input.js.map +1 -1
  170. package/components/mask-input/mask-history.d.ts +22 -18
  171. package/components/mask-input/mask-history.js.map +1 -1
  172. package/components/mask-input/mask-input.d.ts +1 -1
  173. package/components/mask-input/mask-parser.d.ts +11 -13
  174. package/components/mask-input/mask-parser.js.map +1 -1
  175. package/components/popover/popover.d.ts +45 -34
  176. package/components/popover/popover.js +54 -122
  177. package/components/popover/popover.js.map +1 -1
  178. package/components/popover/position/arrow.d.ts +19 -0
  179. package/components/popover/position/arrow.js +33 -0
  180. package/components/popover/position/arrow.js.map +1 -0
  181. package/components/popover/position/floating.d.ts +40 -0
  182. package/components/popover/position/floating.js +146 -0
  183. package/components/popover/position/floating.js.map +1 -0
  184. package/components/popover/position/native.d.ts +45 -0
  185. package/components/popover/position/native.js +158 -0
  186. package/components/popover/position/native.js.map +1 -0
  187. package/components/popover/position/strategy.d.ts +37 -0
  188. package/components/popover/position/strategy.js +21 -0
  189. package/components/popover/position/strategy.js.map +1 -0
  190. package/components/popover/position/types.d.ts +26 -0
  191. package/components/popover/position/types.js +15 -0
  192. package/components/popover/position/types.js.map +1 -0
  193. package/components/popover/themes/light/popover.base.css.js +1 -1
  194. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  195. package/components/progress/circular-progress.d.ts +0 -5
  196. package/components/progress/circular-progress.js.map +1 -1
  197. package/components/qr-code/qr-code.d.ts +1 -1
  198. package/components/radio/radio.d.ts +6 -4
  199. package/components/radio/radio.js +24 -25
  200. package/components/radio/radio.js.map +1 -1
  201. package/components/radio-group/radio-group.js.map +1 -1
  202. package/components/rating/rating.d.ts +9 -6
  203. package/components/rating/rating.js +17 -18
  204. package/components/rating/rating.js.map +1 -1
  205. package/components/select/select-group.d.ts +5 -10
  206. package/components/select/select-group.js +10 -34
  207. package/components/select/select-group.js.map +1 -1
  208. package/components/select/select.d.ts +12 -20
  209. package/components/select/select.js +5 -15
  210. package/components/select/select.js.map +1 -1
  211. package/components/slider/range-slider.d.ts +0 -1
  212. package/components/slider/range-slider.js +6 -11
  213. package/components/slider/range-slider.js.map +1 -1
  214. package/components/slider/slider-base.d.ts +4 -1
  215. package/components/slider/slider-base.js +20 -18
  216. package/components/slider/slider-base.js.map +1 -1
  217. package/components/slider/slider.d.ts +2 -0
  218. package/components/slider/slider.js +5 -1
  219. package/components/slider/slider.js.map +1 -1
  220. package/components/splitter/splitter.d.ts +6 -6
  221. package/components/splitter/splitter.js.map +1 -1
  222. package/components/textarea/textarea.d.ts +2 -5
  223. package/components/textarea/textarea.js +3 -5
  224. package/components/textarea/textarea.js.map +1 -1
  225. package/components/tile-manager/tile-manager.d.ts +6 -7
  226. package/components/tile-manager/tile-manager.js.map +1 -1
  227. package/components/tile-manager/tile.d.ts +3 -3
  228. package/components/tile-manager/tile.js.map +1 -1
  229. package/components/toast/toast.d.ts +0 -2
  230. package/components/toast/toast.js.map +1 -1
  231. package/components/tooltip/controller.js.map +1 -1
  232. package/components/tooltip/service.js +4 -5
  233. package/components/tooltip/service.js.map +1 -1
  234. package/components/tooltip/tooltip.d.ts +34 -13
  235. package/components/tooltip/tooltip.js +8 -4
  236. package/components/tooltip/tooltip.js.map +1 -1
  237. package/components/tree/tree-item.d.ts +6 -6
  238. package/components/tree/tree-item.js.map +1 -1
  239. package/components/tree/tree.navigation.d.ts +5 -6
  240. package/components/tree/tree.navigation.js.map +1 -1
  241. package/components/tree/tree.selection.js.map +1 -1
  242. package/components/types.d.ts +1 -1
  243. package/components/types.js.map +1 -1
  244. package/components/validation-container/validation-container.js +2 -1
  245. package/components/validation-container/validation-container.js.map +1 -1
  246. package/components/virtualization/engine.d.ts +40 -9
  247. package/components/virtualization/engine.js +126 -61
  248. package/components/virtualization/engine.js.map +1 -1
  249. package/components/virtualization/recycle.d.ts +13 -0
  250. package/components/virtualization/recycle.js +152 -0
  251. package/components/virtualization/recycle.js.map +1 -0
  252. package/components/virtualization/virtualization.d.ts +84 -65
  253. package/components/virtualization/virtualization.js +20 -16
  254. package/components/virtualization/virtualization.js.map +1 -1
  255. package/custom-elements.json +18455 -19551
  256. package/igniteui-webcomponents.css-data.json +2 -2
  257. package/igniteui-webcomponents.html-data.json +1 -1
  258. package/index.d.ts +3 -1
  259. package/index.js +2 -0
  260. package/index.js.map +1 -1
  261. package/internals/abort-handler.d.ts +13 -25
  262. package/internals/abort-handler.js +4 -6
  263. package/internals/abort-handler.js.map +1 -1
  264. package/internals/context.d.ts +13 -7
  265. package/internals/context.js +2 -1
  266. package/internals/context.js.map +1 -1
  267. package/internals/controllers/adopt-styles.d.ts +19 -20
  268. package/internals/controllers/adopt-styles.js +3 -8
  269. package/internals/controllers/adopt-styles.js.map +1 -1
  270. package/internals/controllers/aria-projection.d.ts +100 -61
  271. package/internals/controllers/aria-projection.js +81 -31
  272. package/internals/controllers/aria-projection.js.map +1 -1
  273. package/internals/controllers/async-consumer.js.map +1 -1
  274. package/internals/controllers/command.d.ts +15 -30
  275. package/internals/controllers/command.js +2 -7
  276. package/internals/controllers/command.js.map +1 -1
  277. package/internals/controllers/context-provider.d.ts +7 -13
  278. package/internals/controllers/context-provider.js.map +1 -1
  279. package/internals/controllers/focus-ring.d.ts +10 -30
  280. package/internals/controllers/focus-ring.js +6 -12
  281. package/internals/controllers/focus-ring.js.map +1 -1
  282. package/internals/controllers/fullscreen.d.ts +7 -23
  283. package/internals/controllers/fullscreen.js +3 -9
  284. package/internals/controllers/fullscreen.js.map +1 -1
  285. package/internals/controllers/gestures.d.ts +10 -29
  286. package/internals/controllers/gestures.js +1 -3
  287. package/internals/controllers/gestures.js.map +1 -1
  288. package/internals/controllers/group.d.ts +13 -30
  289. package/internals/controllers/group.js.map +1 -1
  290. package/internals/controllers/host-listeners.d.ts +28 -0
  291. package/internals/controllers/host-listeners.js +27 -0
  292. package/internals/controllers/host-listeners.js.map +1 -0
  293. package/internals/controllers/id-resolver.d.ts +8 -9
  294. package/internals/controllers/id-resolver.js +6 -14
  295. package/internals/controllers/id-resolver.js.map +1 -1
  296. package/internals/controllers/internals.d.ts +53 -104
  297. package/internals/controllers/internals.js +40 -13
  298. package/internals/controllers/internals.js.map +1 -1
  299. package/internals/controllers/key-bindings.d.ts +61 -158
  300. package/internals/controllers/key-bindings.js +68 -67
  301. package/internals/controllers/key-bindings.js.map +1 -1
  302. package/internals/controllers/keys.d.ts +32 -0
  303. package/internals/controllers/keys.js +20 -0
  304. package/internals/controllers/keys.js.map +1 -0
  305. package/internals/controllers/mutation-observer.d.ts +14 -37
  306. package/internals/controllers/mutation-observer.js +1 -1
  307. package/internals/controllers/mutation-observer.js.map +1 -1
  308. package/internals/controllers/resize-observer.d.ts +9 -19
  309. package/internals/controllers/resize-observer.js.map +1 -1
  310. package/internals/controllers/root-click.d.ts +11 -42
  311. package/internals/controllers/root-click.js +4 -6
  312. package/internals/controllers/root-click.js.map +1 -1
  313. package/internals/controllers/roving-focus.d.ts +16 -35
  314. package/internals/controllers/roving-focus.js.map +1 -1
  315. package/internals/controllers/slot.d.ts +25 -54
  316. package/internals/controllers/slot.js +6 -6
  317. package/internals/controllers/slot.js.map +1 -1
  318. package/internals/controllers/toggle.d.ts +44 -48
  319. package/internals/controllers/toggle.js.map +1 -1
  320. package/internals/date/compare.js.map +1 -1
  321. package/internals/date/converters.d.ts +10 -7
  322. package/internals/date/converters.js.map +1 -1
  323. package/internals/date/model.d.ts +9 -16
  324. package/internals/date/model.js +22 -25
  325. package/internals/date/model.js.map +1 -1
  326. package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
  327. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
  328. package/internals/decorators/blazorDeepImport.d.ts +1 -3
  329. package/internals/decorators/blazorDeepImport.js.map +1 -1
  330. package/internals/decorators/blazorInclude.d.ts +3 -2
  331. package/internals/decorators/blazorInclude.js.map +1 -1
  332. package/internals/decorators/blazorIndirectRender.d.ts +1 -3
  333. package/internals/decorators/blazorIndirectRender.js.map +1 -1
  334. package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
  335. package/internals/decorators/blazorSuppressComponent.js.map +1 -1
  336. package/internals/decorators/coerced-property.d.ts +14 -20
  337. package/internals/decorators/coerced-property.js.map +1 -1
  338. package/internals/decorators/shadow-options.d.ts +2 -5
  339. package/internals/decorators/shadow-options.js.map +1 -1
  340. package/internals/definitions/defineAllComponents.js +2 -0
  341. package/internals/definitions/defineAllComponents.js.map +1 -1
  342. package/internals/directives/drag.d.ts +51 -81
  343. package/internals/directives/drag.js +27 -89
  344. package/internals/directives/drag.js.map +1 -1
  345. package/internals/directives/pointer-operation.d.ts +75 -0
  346. package/internals/directives/pointer-operation.js +92 -0
  347. package/internals/directives/pointer-operation.js.map +1 -0
  348. package/internals/directives/resize.d.ts +36 -64
  349. package/internals/directives/resize.js +18 -85
  350. package/internals/directives/resize.js.map +1 -1
  351. package/internals/i18n/EN/calendar.resources.d.ts +8 -2
  352. package/internals/i18n/EN/calendar.resources.js +2 -2
  353. package/internals/i18n/EN/calendar.resources.js.map +1 -1
  354. package/internals/i18n/EN/chat.resources.d.ts +8 -2
  355. package/internals/i18n/EN/chat.resources.js +3 -10
  356. package/internals/i18n/EN/chat.resources.js.map +1 -1
  357. package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
  358. package/internals/i18n/EN/date-picker.resources.js +1 -7
  359. package/internals/i18n/EN/date-picker.resources.js.map +1 -1
  360. package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
  361. package/internals/i18n/EN/date-range-picker.resources.js +2 -2
  362. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
  363. package/internals/i18n/i18n-controller.d.ts +44 -46
  364. package/internals/i18n/i18n-controller.js +46 -33
  365. package/internals/i18n/i18n-controller.js.map +1 -1
  366. package/internals/i18n/utils.d.ts +9 -4
  367. package/internals/i18n/utils.js +4 -27
  368. package/internals/i18n/utils.js.map +1 -1
  369. package/internals/mixins/alert.d.ts +10 -25
  370. package/internals/mixins/alert.js.map +1 -1
  371. package/internals/mixins/combo-box.d.ts +21 -11
  372. package/internals/mixins/combo-box.js +16 -22
  373. package/internals/mixins/combo-box.js.map +1 -1
  374. package/internals/mixins/event-emitter.js +9 -11
  375. package/internals/mixins/event-emitter.js.map +1 -1
  376. package/internals/mixins/forms/associated-required.d.ts +4 -4
  377. package/internals/mixins/forms/associated-required.js.map +1 -1
  378. package/internals/mixins/forms/associated.d.ts +4 -2
  379. package/internals/mixins/forms/associated.js +42 -19
  380. package/internals/mixins/forms/associated.js.map +1 -1
  381. package/internals/mixins/forms/form-transformers.js.map +1 -1
  382. package/internals/mixins/forms/types.d.ts +27 -78
  383. package/internals/mixins/forms/types.js.map +1 -1
  384. package/internals/mixins/group.d.ts +18 -0
  385. package/internals/mixins/group.js +37 -0
  386. package/internals/mixins/group.js.map +1 -0
  387. package/internals/mixins/i18n.d.ts +10 -16
  388. package/internals/mixins/i18n.js.map +1 -1
  389. package/internals/mixins/mask-behavior.d.ts +8 -22
  390. package/internals/mixins/mask-behavior.js +1 -2
  391. package/internals/mixins/mask-behavior.js.map +1 -1
  392. package/internals/mixins/option.d.ts +1 -2
  393. package/internals/mixins/option.js +2 -1
  394. package/internals/mixins/option.js.map +1 -1
  395. package/internals/part-map.d.ts +4 -2
  396. package/internals/part-map.js +1 -1
  397. package/internals/part-map.js.map +1 -1
  398. package/internals/templates/input-shell.d.ts +8 -17
  399. package/internals/templates/input-shell.js +4 -1
  400. package/internals/templates/input-shell.js.map +1 -1
  401. package/internals/templates/masked-input.d.ts +7 -8
  402. package/internals/templates/masked-input.js.map +1 -1
  403. package/internals/templates/slotted-icon.d.ts +7 -12
  404. package/internals/templates/slotted-icon.js.map +1 -1
  405. package/internals/templates/toggle-shell.d.ts +19 -19
  406. package/internals/templates/toggle-shell.js +12 -8
  407. package/internals/templates/toggle-shell.js.map +1 -1
  408. package/internals/timing.d.ts +5 -14
  409. package/internals/timing.js.map +1 -1
  410. package/internals/utils/arrays.d.ts +21 -21
  411. package/internals/utils/arrays.js +14 -0
  412. package/internals/utils/arrays.js.map +1 -1
  413. package/internals/utils/dom.d.ts +53 -41
  414. package/internals/utils/dom.js +3 -4
  415. package/internals/utils/dom.js.map +1 -1
  416. package/internals/utils/events.d.ts +29 -16
  417. package/internals/utils/events.js +9 -1
  418. package/internals/utils/events.js.map +1 -1
  419. package/internals/utils/lit.d.ts +5 -2
  420. package/internals/utils/lit.js.map +1 -1
  421. package/internals/utils/math.d.ts +8 -6
  422. package/internals/utils/math.js.map +1 -1
  423. package/internals/utils/objects.d.ts +3 -20
  424. package/internals/utils/objects.js +1 -39
  425. package/internals/utils/objects.js.map +1 -1
  426. package/internals/utils/strings.d.ts +9 -11
  427. package/internals/utils/strings.js.map +1 -1
  428. package/internals/utils/types.d.ts +16 -3
  429. package/internals/utils/types.js +3 -0
  430. package/internals/utils/types.js.map +1 -1
  431. package/internals/validators.d.ts +9 -8
  432. package/internals/validators.js +12 -6
  433. package/internals/validators.js.map +1 -1
  434. package/package.json +1 -1
  435. package/skills/README.md +4 -3
  436. package/skills/igniteui-wc-choose-components/SKILL.md +2 -1
  437. package/skills/igniteui-wc-customize-component-theme/SKILL.md +2 -1
  438. package/skills/igniteui-wc-figma-to-app/SKILL.md +328 -0
  439. package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +343 -0
  440. package/skills/igniteui-wc-figma-to-app/references/design-provenance.md +199 -0
  441. package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +489 -0
  442. package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +370 -0
  443. package/skills/igniteui-wc-figma-to-app/references/figma-exploration.md +222 -0
  444. package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +363 -0
  445. package/skills/igniteui-wc-figma-to-app/references/project-setup.md +105 -0
  446. package/skills/igniteui-wc-figma-to-app/references/theme-generation.md +180 -0
  447. package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +370 -0
  448. package/skills/igniteui-wc-generate-from-image-design/SKILL.md +2 -1
  449. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +3 -3
  450. package/skills/igniteui-wc-grids/SKILL.md +133 -0
  451. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +2 -1
  452. package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +2 -1
  453. package/skills/igniteui-wc-optimize-bundle-size/SKILL.md +2 -1
  454. package/theming/config.d.ts +14 -5
  455. package/theming/config.js +38 -18
  456. package/theming/config.js.map +1 -1
  457. package/theming/context.d.ts +1 -23
  458. package/theming/context.js.map +1 -1
  459. package/theming/theming-controller.d.ts +2 -32
  460. package/theming/theming-controller.js +15 -21
  461. package/theming/theming-controller.js.map +1 -1
  462. package/theming/theming-event.d.ts +0 -7
  463. package/theming/theming-event.js +0 -13
  464. package/theming/theming-event.js.map +1 -1
  465. package/theming/types.d.ts +1 -8
  466. package/theming/types.js.map +1 -1
  467. package/web-types.json +3 -3
  468. package/animations/presets/slide/index.d.ts +0 -3
  469. package/animations/presets/slide/index.js +0 -16
  470. package/animations/presets/slide/index.js.map +0 -1
  471. package/components/resize-container/themes/resize-container.base.css.js.map +0 -1
  472. package/internals/controllers/root-scroll.d.ts +0 -31
  473. package/internals/controllers/root-scroll.js +0 -71
  474. package/internals/controllers/root-scroll.js.map +0 -1
  475. package/theming/utils.d.ts +0 -11
  476. package/theming/utils.js +0 -20
  477. package/theming/utils.js.map +0 -1
  478. /package/components/{resize-container/themes/resize-container.base.css.d.ts → breadcrumb/themes/breadcrumb.base.css.d.ts} +0 -0
@@ -0,0 +1,489 @@
1
+ # Figma Variables → Ignite UI Web Components Theming Bridge
2
+
3
+ > **Part of the [`igniteui-wc-figma-to-app`](../SKILL.md) skill.**
4
+ >
5
+ > Use this file in Phase 3 to translate Figma variable values (from `figma_get_variable_defs`) into Ignite UI Theming MCP inputs. Read it in full before calling any theming tool. For the theming system itself — palette semantics, token rules, compound components — the source of truth is [`igniteui-wc-customize-component-theme`](../../igniteui-wc-customize-component-theme/SKILL.md).
6
+
7
+ > **Tool names:** like SKILL.md, this file refers to theming tools by their base name. Match by the tool's base name (`create_palette`, `create_theme`, `create_component_theme`, …) on the connected `igniteui-theming` server; your client may show them as `mcp__igniteui-theming__create_palette` or similar. The `licensed` parameter is for Angular only — do not pass it for Web Components.
8
+
9
+ ---
10
+
11
+ ## Two Paths
12
+
13
+ Which path you take depends on the provenance tiers recorded in Phase 1f ([design-provenance.md](design-provenance.md)):
14
+
15
+ | Path | When | What sets the look |
16
+ | --- | --- | --- |
17
+ | **A — Indigo.Design UI Kit** | Most components are Tier A | The kit variant **is** an Ignite UI design system. Palette and font come from the kit variables. Component proportions are already calibrated, so leave size, spacing, and roundness at their defaults. |
18
+ | **B — Any other kit, or no kit** | Most components are Tier B or C | The design system is only the **closest baseline**. Fidelity comes from palette seeds inferred from usage, type-style overrides, per-component radius tokens, and a measured `--ig-size`. See [Path B](#path-b--any-other-kit-or-no-kit). |
19
+
20
+ **Mixed files.** Count only the Table A rows that map to an Ignite UI component. Decorative Tier C frames that stay plain HTML do not count. The larger group chooses the path for the global theme; on a tie, ask the user. Then style the other group through component themes scoped to **those instances only**:
21
+
22
+ - Put a class on the minority instances (for example `class="kit-b"`), and pass it as `selector` to `create_component_theme`. Do not scope by the tag alone: a Tier A and a Tier B button are both `igc-button`, so that would restyle both.
23
+ - Tier B/C instances in a Path A app get the Path B token work (B2, B5–B8) in those scoped component themes.
24
+ - Tier A instances in a Path B app get their **kit's** design system: pass that kit's `designSystem` to their scoped component themes. Do not give them Path B treatment.
25
+
26
+ ---
27
+
28
+ ## Path A — How the Indigo.Design UI Kits Organize Variables
29
+
30
+ The **Indigo.Design UI Kits** are Figma component libraries published by Infragistics. Designers build their own app frames in Figma using these kits as shared libraries. The kits come in four design-system variants, each with light and dark themes:
31
+
32
+ | Kit variant | Figma library name pattern | `designSystem` value |
33
+ | ---------------------- | ----------------------------------------------- | -------------------- |
34
+ | Material (most common) | `Indigo.Design UI Kit for Material` | `"material"` |
35
+ | Fluent | `Indigo.Design UI Kit for Fluent` | `"fluent"` |
36
+ | Bootstrap | `Indigo.Design UI Kit for Bootstrap` | `"bootstrap"` |
37
+ | Indigo | `Indigo.Design UI Kit` / `Indigo.Design System` | `"indigo"` |
38
+
39
+ **Identifying the active kit variant** is the first task in Phase 3 because it sets the design system for the whole app. Use these signals in **strict precedence order** — stop at the first clear match:
40
+
41
+ 1. **Explicit user request** — "make it Material", "use Fluent", etc.
42
+ 2. **Library source name** — `figma_get_design_context` / `figma_get_metadata` may reference the source library file name.
43
+ 3. **Variable collection name** — `figma_get_variable_defs` may return collection names that include the design system (e.g. `Material/color/primary`).
44
+ 4. **Elevation variable structure** — inspect `Elevations/*`:
45
+ - **Three-layer DROP_SHADOW** (umbra + penumbra + ambient, `Elevations/Shadow 01-03`) → **Material**
46
+ - **Single-layer DROP_SHADOW** → Indigo, Fluent, or Bootstrap
47
+ 5. **Palette shade naming** — `primary/500`, `primary/100`–`primary/900` follows the Material 100–900 convention → likely **Material**.
48
+ 6. **Visual heuristics** — see the [Design System Detection table](#design-system-detection-from-figma).
49
+
50
+ > **Never use font name as a primary signal.** "Titillium Web" is the default body font in the Indigo.Design UI Kit for Material — it is not exclusive to any kit variant.
51
+
52
+ All four kit variants share the same variable naming conventions:
53
+
54
+ ```
55
+ Primitives collection → raw palette values (e.g. blue/500 = #6200EE)
56
+ Semantic collection → role-based aliases (e.g. color/primary = alias → blue/500)
57
+ Component collection → per-component overrides (e.g. button/background = alias → color/primary)
58
+ ```
59
+
60
+ ---
61
+
62
+ ## The Web Components Theming Contract
63
+
64
+ Before mapping any value, understand what actually drives a Web Components theme. This is the single biggest difference from the Angular flow.
65
+
66
+ | Layer | What it is | How it gets set |
67
+ | --- | --- | --- |
68
+ | **Design system + variant** | `--ig-theme`, `--ig-theme-variant` on `:root` | A pre-built theme CSS import or the `:root` block generated by `create_theme`; `configureTheme(ds, variant)` switches component themes at runtime but does not rewrite these CSS variables |
69
+ | **Palette** | `--ig-<family>-<shade>` and `--ig-<family>-<shade>-contrast` custom properties | `create_palette` / `create_theme`, or overriding the `*-500` base shade by hand |
70
+ | **Typography** | `--ig-font-family` plus the type scale | `create_typography`, or plain CSS in a CSS-only project |
71
+ | **Elevations** | shadow custom properties | `create_elevations` (`designSystem: "material" \| "indigo"`) |
72
+ | **Layout** | `--ig-size`, `--ig-spacing`, `--ig-radius-factor` | `set_size` / `set_spacing` / `set_roundness` |
73
+ | **Per component** | component design tokens | `get_component_design_tokens` → `create_component_theme` |
74
+
75
+ Components read the design system **at runtime from CSS variables** and fall back to `bootstrap` / `light` when they are absent. A correct palette with a missing `--ig-theme` gives you the right colors on the wrong component anatomy.
76
+
77
+ **Every theming tool that generates code (`create_*`, `set_size`, `set_spacing`, `set_roundness`) accepts `output: "css" | "sass"`, defaulting to CSS.** Choose once in Phase 3 based on whether the project has Sass, and stay consistent. The Web Components Sass API is `@use 'igniteui-theming'` with individual `palette()`, `typography()`, `elevations()`, and `spacing()` mixins — the Angular `core()` / `theme()` mixins do not exist here.
78
+
79
+ ---
80
+
81
+ ## Path B — Any Other Kit (or No Kit)
82
+
83
+ A third-party kit was not built for Ignite UI. Its variable names do not follow Ignite UI conventions, and its component proportions, radii, and type ramp differ from every Ignite UI design system. Treat theming as **fitting a baseline**: choose the closest design system, then override what the design measurably does differently.
84
+
85
+ ### B1 — Choose the Baseline Design System by Anatomy
86
+
87
+ Use the first rule that gives a clear answer:
88
+
89
+ 1. **Explicit user request.**
90
+ 2. **Kit with a direct counterpart:** Material 3 / Material kits → `material`; Fluent 2 → `fluent`; Bootstrap kits → `bootstrap`.
91
+ 3. **Otherwise, score the anatomy.** These are properties of the Ignite UI themes that you cannot fully override with tokens, so they decide the baseline:
92
+
93
+ | Observable in the design | `material` | `fluent` | `bootstrap` | `indigo` |
94
+ | --- | --- | --- | --- | --- |
95
+ | Text-field label | **Floating inside the field** (notched outline) | Above the field | Above the field | Above the field |
96
+ | Default button height | 36px | 32px | 38px | 28px |
97
+ | Default input height | 48px | 40px | 38px | 28px |
98
+ | Button label casing in the type preset | UPPERCASE | Capitalize | none | UPPERCASE |
99
+
100
+ The label position is the strongest signal. A design with labels above its fields (shadcn, Untitled UI, Ant, Tailwind-style kits, most in-house kits) should **not** use `material`, however "Material-like" its colors look. Among the label-above systems, choose the one whose default heights are closest to the measured controls. When heights are close to 36–40px buttons and 36–44px inputs, `bootstrap` or `fluent` is usually the better starting point. Casing is overridable (B4), so it only breaks ties.
101
+
102
+ These numbers come from the `igniteui-theming` component schemas and type presets at the default `--ig-size`. If a result looks off, confirm it with `get_component_design_tokens`.
103
+
104
+ ### B2 — Infer Color Roles From Usage, Not Names
105
+
106
+ Third-party variable names do not tell you which Ignite UI palette slot they fill. Kits call the brand color `primary`, `brand/600`, `colorBrandBackground`, `md.sys.color.primary`, or nothing at all. Build a **color census** from the design context of the target artboards, and take each seed from where it is **used**:
107
+
108
+ | Ignite UI palette input | Take the color from |
109
+ | --- | --- |
110
+ | `primary` | The fill of high-emphasis buttons. If there are none, the active tab indicator, checked checkbox/switch, or focused-field accent. |
111
+ | `secondary` | A second accent actually used on components: tonal/secondary buttons, selected chips, FAB. If none exists, reuse `primary`. Do not invent one. |
112
+ | `surface` | The page / artboard background. Additional depths (cards, sidebars) → B6. |
113
+ | `gray` | Omit at first. Pass it only if the generated grays visibly diverge from the design's borders and secondary text. |
114
+ | `error` / `warn` / `success` / `info` | Destructive buttons, error-state fields, alert and status colors |
115
+
116
+ In the **CSS path** these all go to `create_palette`, which takes `gray` and the status colors. In the **Sass path**, `create_theme` takes only `primaryColor`, `secondaryColor`, and `surfaceColor`: to set `gray` or a status color, also call `create_palette` (or `create_custom_palette`) and place its output **after** the theme output, so its `:root` palette variables override the generated ones.
117
+
118
+ **Seed-shade rule.** Ignite UI components paint their main fills with the **500** shade of a palette color. Pass the color that is *visible on the component* as the seed, whatever the kit calls it. Examples: Untitled UI buttons use `Brand/600`, Tailwind-style kits use `blue-600`, and Material 3 uses the tone-40 `primary`. Passing the kit's own `…/500` variable when the buttons are painted with `…/600` makes every component one step too light.
119
+
120
+ **Material baseline trap.** In the Ignite UI `material` schema, **control accents use the `secondary` palette**: contained-button fill, flat-button text, checkbox fill, and switch thumb. The navbar and tab indicators use `primary`. `fluent`, `bootstrap`, and `indigo` use `primary` for those controls. Most third-party kits, Material 3 included, paint buttons and checkboxes with their primary color. On a `material` baseline, therefore, seed `secondary` with the brand color seen on the buttons as well. Seed `primary` with the color used on app bars and tab indicators, which is often the same color. Otherwise every button comes out in an unrelated accent. Check the resolved roles with `read_resource({ uri: "theming://guidance/colors/roles" })`.
121
+
122
+ When the variables are available, resolve their alias chains and use them to *name* and *confirm* what the census found. When the variables and the census disagree, the census wins: it describes what the designer actually drew.
123
+
124
+ **Full ramps.** If the design visibly uses several shades of one color (hover, pressed, tinted backgrounds), use `create_custom_palette` with `mode: "explicit"` for that color. The explicit mode needs **all 14 shades** (`50`–`900` plus `A100`, `A200`, `A400`, `A700`). Align the kit's stops by lightness, not by label (Tailwind and Untitled UI have `25` and `950` stops that Ignite UI does not). Derive the accent shades from the neighboring stops. Use `mode: "shades"` for every color whose ramp the design does not show.
125
+
126
+ **Dark variant.** Decide it from the page background, as in [Light vs Dark Mode Detection](#light-vs-dark-mode-detection). Material 3 tonal surfaces (`surface-container-low` … `-highest`) are multiple surface depths. Handle them with B6, not with a lighter `surface` seed.
127
+
128
+ ### B3 — Typography
129
+
130
+ 1. **Family:** take it from the text styles actually used (the design context `font-['…']` classes). Load it in the app. Kits often use Inter, Geist, Roboto Flex, or SF Pro. SF Pro is licensed for Apple platforms only, so substitute a web font and say so.
131
+ 2. **Scale:** map the kit's ramp to Ignite UI type styles **by role and size ranking**, not by name. Override only the styles that differ (see [B4](#b4--button-casing-and-other-type-driven-anatomy) for how):
132
+
133
+ | Kit role (examples) | Ignite UI type style |
134
+ | --- | --- |
135
+ | Display / Hero / Heading XL | `h1`–`h3` (largest three) |
136
+ | Headline / Heading L–M / Title L | `h4`–`h6` |
137
+ | Title M–S / Subtitle / Label L (emphasized body) | `subtitle-1`, `subtitle-2` |
138
+ | Body L / Body M / Text md | `body-1`, `body-2` |
139
+ | Label M on buttons | `button` |
140
+ | Body S / Caption / Text xs | `caption` |
141
+ | Label S / Overline / Eyebrow | `overline` |
142
+
143
+ ### B4 — Button Casing and Other Type-Driven Anatomy
144
+
145
+ The `material` and `indigo` type presets set `button` to `text-transform: uppercase`. `fluent` uses `capitalize`. Nearly every current third-party kit, Material 3 included, uses sentence case. Unless the design shows uppercase labels, set the button's text transform to `none`, together with its measured size and weight.
146
+
147
+ **How to override type styles.** The theme's typography writes every property of every type style to a CSS variable on `:root`, named `--ig-<style>-<property>`, and the components read those variables inside their shadow roots. Add a `:root` block **after** the theme import or theme output that sets only the values that differ:
148
+
149
+ ```css
150
+ /* After the theme import in styles.css */
151
+ :root {
152
+ --ig-button-text-transform: none;
153
+ --ig-button-font-size: 0.875rem;
154
+ --ig-button-font-weight: 500;
155
+ --ig-h1-font-size: 2.25rem;
156
+ --ig-body-1-line-height: 1.5rem;
157
+ }
158
+ ```
159
+
160
+ Property names are `font-family`, `font-size`, `font-weight`, `font-style`, `line-height`, `letter-spacing`, `text-transform`, `margin-top`, and `margin-bottom`.
161
+
162
+ Ignite UI components read these variables inside their own shadow roots, so the overrides reach them. Inside a Lit view's shadow root, document CSS such as `.ig-typography h1` does not reach native headings. Apply the variables in the view's `static styles` yourself, for example `h1 { font-size: var(--ig-h1-font-size); font-weight: var(--ig-h1-font-weight); line-height: var(--ig-h1-line-height); }`.
163
+
164
+ > **Do not rely on `customScale`.** `create_typography` accepts a `customScale` argument, but `igniteui-theming` 29.0.0 drops it from the generated code (CSS and Sass) without a warning. Use the variable overrides above, and measure the result in Phase 5.
165
+
166
+ ### B5 — Radius: Per-Component Tokens, Not a Global Factor
167
+
168
+ `set_roundness` sets a single `radiusFactor` (0–1) that interpolates each component between **its own** minimum and maximum radius, and those ranges differ. For example, the button range is 0–20px, the card 0–24px, the dialog 0–36px, and the chip 0–16px. One factor therefore cannot reproduce a kit's radius language, such as "everything is 8px" or "pill buttons, 12px cards".
169
+
170
+ Instead, set the radius tokens that `get_component_design_tokens` returns for each component (`border-radius`, or variants such as `box-border-radius` / `border-border-radius` on `input-group`) to the **measured px value**, in the same `create_component_theme` call as the component's colors. A pill shape is half the control height, or a large value such as `9999px`.
171
+
172
+ ### B6 — Surfaces and Elevation
173
+
174
+ - **Depths:** kits built on borders instead of shadows (shadcn, Untitled UI, Fluent 2) use 2–4 surface tones. Express them with `create_custom_palette` surface shades or semantic variables (`--surface-1`, `--surface-2`), as in [Multiple Surface Depths](#multiple-surface-depths).
175
+ - **Shadows:** `create_elevations` only has the `material` and `indigo` presets. When the design is flat or border-first, keep the global elevations and set the components' shadow/elevation tokens to `none` or the measured `box-shadow` value. When the design uses shadows, pick the closer preset and verify the depth of cards, menus, and dialogs in Phase 5.
176
+ - **Borders:** a 1px neutral border on cards, inputs, and menus is part of the anatomy of most modern kits. Set it through the components' border tokens, bound to a gray or surface palette variable.
177
+
178
+ ### B7 — Density
179
+
180
+ Choose `--ig-size` **per component family**. Compare the measured height of each family (buttons, inputs, list rows, …) with that family's size steps in the baseline. Each component has its **own default step**. For example, on `material` the button default is large (36px) while the input default is medium (48px). So a design with 36px buttons and 48px inputs already matches both defaults and needs no change. The steps (default in bold):
181
+
182
+ | Design system | Button small / medium / large | Input small / medium / large |
183
+ | --- | --- | --- |
184
+ | `material` | 24 / 30 / **36px** | 40 / **48** / 56px |
185
+ | `fluent` | 24 / **32** / 38px | 32 / **40** / 48px |
186
+ | `bootstrap` | 32 / **38** / 48px | 32 / **38** / 48px |
187
+ | `indigo` | 24 / **28** / 32px | 24 / **28** / 32px |
188
+
189
+ For other families, read the steps and the default from `get_component_design_tokens`. For each family whose nearest step differs from its default, call `set_size` with that `component`. Set `--ig-size` globally only when **every** family moves in the same direction. Close a remaining 2–4px mismatch with the component's padding or height tokens, if it has them. Otherwise leave it: Phase 5 rates a difference of 4px or less as Cosmetic. It is never an anatomy delta. The `set_spacing` rule is unchanged: never convert a Figma pixel value into a multiplier.
190
+
191
+ ### B8 — States and Focus
192
+
193
+ Hover, pressed, disabled, and error variants in the kit are **token inputs**. Map their colors onto the matching state tokens (`hover-background`, `focus-*`, `disabled-*`, …) in the same component theme. Focus rings differ strongly between kits (a 2–3px offset ring in shadcn and Untitled UI, a bottom accent in Fluent). If the design specifies one, it belongs in the component tokens. Keep focus visible whatever the design shows: accessibility is not optional.
194
+
195
+ ---
196
+
197
+ ## Global Palette Mapping
198
+
199
+ > Path A name patterns. For Path B, use these tables only to *label* a variable after the color census (B2) has decided the role.
200
+
201
+ ### Primary Color
202
+
203
+ | Figma Variable Pattern | Theming Input | Notes |
204
+ | ---------------------- | ----------------------------- | --------------------------------------- |
205
+ | `color/primary` | `primary` in `create_palette` | Use the resolved hex value |
206
+ | `primary/500` | `primary` | The 500 shade is the seed color |
207
+ | `Primary/Default` | `primary` | Alternative naming in some kit versions |
208
+ | `palette/primary/500` | `primary` | Prefixed naming pattern |
209
+
210
+ > **Parameter names differ between tools.** `create_palette` takes `primary`, `secondary`, `surface`, `gray`, `info`, `success`, `warn`, `error`. `create_theme` takes `primaryColor`, `secondaryColor`, `surfaceColor`. Do not mix them up.
211
+
212
+ ### Secondary / Accent Color
213
+
214
+ | Figma Variable Pattern | Theming Input | Notes |
215
+ | ---------------------- | ------------------------------- | ---------------------------------- |
216
+ | `color/secondary` | `secondary` in `create_palette` | — |
217
+ | `secondary/500` | `secondary` | — |
218
+ | `Secondary/Default` | `secondary` | — |
219
+ | `color/accent` | `secondary` | Some kit variants call it "accent" |
220
+
221
+ ### Surface / Background Color
222
+
223
+ | Figma Variable Pattern | Theming Input | Notes |
224
+ | ---------------------- | ----------------------------- | ------------------- |
225
+ | `color/surface` | `surface` in `create_palette` | The main background |
226
+ | `surface/default` | `surface` | — |
227
+ | `Surface` | `surface` | — |
228
+ | `color/background` | `surface` | Alternative naming |
229
+
230
+ ### Gray / Neutral Palette
231
+
232
+ The gray scale is derived automatically from the surface color, and **gray is inverted relative to surface** in dark themes. Do not pass gray unless the Figma grays clearly diverge from the generated ones. Read `theming://guidance/colors/rules` before overriding.
233
+
234
+ ### Semantic Status Colors
235
+
236
+ | Figma Variable Pattern | Theming Input | Notes |
237
+ | -------------------------------- | ------------- | -------- |
238
+ | `color/success` or `success/500` | `success` | Optional |
239
+ | `color/warning` or `warning/500` | `warn` | Optional — the parameter is `warn`, not `warning` |
240
+ | `color/error` or `error/500` | `error` | Optional |
241
+ | `color/info` or `info/500` | `info` | Optional |
242
+
243
+ ### Multiple Surface Depths
244
+
245
+ Designs frequently use two or three surface depths (page, panel, card) that a single generated `surface` cannot express. When that happens:
246
+
247
+ - use `create_custom_palette` for explicit per-shade control, or
248
+ - define semantic variables (`--surface-1`, `--surface-2`) alongside the palette and use them in view CSS.
249
+
250
+ Never satisfy a second depth with a raw hex value in component styles.
251
+
252
+ ### Resolving Colors Back Out
253
+
254
+ Use `get_color({ color, variant, contrast, opacity })` to turn a color intent into the correct `var(--ig-<family>-<shade>)` reference — including contrast colors and transparency — instead of hand-writing variable names.
255
+
256
+ ---
257
+
258
+ ## Typography Mapping
259
+
260
+ | Figma Variable Pattern | Theming Input | Notes |
261
+ | -------------------------------- | -------------------------------------- | ------------------------------------- |
262
+ | `typography/font-family` | `fontFamily` in `create_typography` | Primary font |
263
+ | `typography/body/font-family` | `fontFamily` | Body font family |
264
+ | `typography/heading/font-family` | `fontFamily` | Use if the heading font differs |
265
+ | `font/primary` | `fontFamily` | Alternative naming |
266
+
267
+ `create_typography` also accepts `designSystem` (which type scale to start from). Its `customScale` argument is currently ignored by the generators; override individual type styles with the `--ig-<style>-<property>` variables instead (see [B4](#b4--button-casing-and-other-type-driven-anatomy)).
268
+
269
+ In a CSS-only project, apply typography as plain CSS `font-family` / `font-size` / `font-weight` rules, or the CSS output of `create_typography`. **Do not emit Sass typography mixins into an app that has no Sass.**
270
+
271
+ Web fonts must be loaded by the app (a `<link>` to the font provider or a local `@font-face`); setting a font family the browser cannot resolve silently falls back and fails Phase 5.
272
+
273
+ ---
274
+
275
+ ## Spacing, Sizing, and Roundness — Do Not Map Directly
276
+
277
+ > **These tools are NOT equivalent to Figma spacing values.** Do not create a mapping between Figma pixel values and these tools.
278
+
279
+ `set_spacing` takes a **multiplier** (`1.0` = default, plus optional `inline` / `block` multipliers). `set_roundness` takes a `radiusFactor` between **0 and 1**. `set_size` takes a **density** (`small` / `medium` / `large`, or `1`–`3`). Passing a Figma `spacing/md = 16` as `set_spacing({ spacing: 16 })` would produce a 1600% increase.
280
+
281
+ ### When to touch these tools (sparingly)
282
+
283
+ | Tool | Use only when | Never because |
284
+ | ---------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
285
+ | `set_size` | Path A: the design consistently uses a noticeably tighter or looser density than the design system default. Path B: per family, as in B7 | A Figma spacing variable happens to be named "compact" |
286
+ | `set_spacing` | Explicitly requested, or required to match a specific density contract; start at the default | A Figma `spacing/*` pixel value looks like the multiplier number |
287
+ | `set_roundness` | The user explicitly asks for it. For Path B, use per-component radius tokens instead (B5) | A Figma `border-radius/md = 8` maps numerically to a multiplier |
288
+
289
+ ### The correct adjustment path
290
+
291
+ Scope `--ig-size` and `--ig-spacing` to the component that needs it — both tools take a `component` parameter (and `scope` for a sub-component or container selector) that generates exactly this:
292
+
293
+ ```
294
+ set_size({ component: "calendar", size: "small", platform: "webcomponents" })
295
+ // → igc-calendar { --ig-size: var(--ig-size-small); }
296
+
297
+ set_spacing({ component: "calendar", spacing: 0.75, platform: "webcomponents" })
298
+ // → igc-calendar { --ig-spacing: 0.75; }
299
+
300
+ set_size({ scope: ".compact-toolbar", size: "small", platform: "webcomponents" })
301
+ ```
302
+
303
+ Or set the custom properties directly:
304
+
305
+ ```css
306
+ igc-calendar {
307
+ --ig-size: var(--ig-size-small);
308
+ --ig-spacing: 0.75;
309
+ }
310
+ ```
311
+
312
+ The Indigo.Design kit's component proportions are already calibrated per design system — start from the defaults and adjust only when there is a clear visual reason.
313
+
314
+ **Path B differs.** A third-party kit's proportions are *not* calibrated to Ignite UI, so the defaults are not a safe resting point. The prohibition still holds: never convert a px value into a multiplier. But do make the **categorical** choices from measurements: pick `--ig-size` from the nearest height step (B7), and set each component's radius token to the measured px value (B5). These are not multiplier conversions. They use each tool the way it was designed.
315
+
316
+ ---
317
+
318
+ ## Light vs Dark Mode Detection
319
+
320
+ | Figma Signal | Action |
321
+ | -------------------------------------------------------- | ------------------------------------------------------------------------ |
322
+ | Dark artboard background (`#121212`, `#1a1a1a`, similar) | `variant: "dark"` + the dark theme CSS (`themes/dark/<ds>.css`) |
323
+ | Light artboard background (`#fff`, `#f5f5f5`, similar) | `variant: "light"` + the light theme CSS |
324
+ | Multiple artboards — one light, one dark | Ask the user which variant is primary. Generate it as the global theme and run Phase 5 against it. Then add the other variant (the other pre-built theme or a second theme output) under a class or `prefers-color-scheme`, and call `configureTheme` with the same design system and variant when switching at runtime (see `theme-generation.md § 3c`). Validate it against its own artboard |
325
+ | `color/mode` variable present | Its value (`light` or `dark`) is the authoritative signal |
326
+
327
+ Surface color must match the variant: a light surface with `variant: "dark"` produces unreadable components and a luminance warning from the palette tools. Read the warnings.
328
+
329
+ ---
330
+
331
+ ## Design System Detection from Figma
332
+
333
+ > Path A (Indigo.Design kits) only. For any other kit, choose the baseline with the anatomy rubric in [B1](#b1--choose-the-baseline-design-system-by-anatomy).
334
+
335
+ | Figma Visual Signal | Likely Design System | `designSystem` Value |
336
+ | ------------------------------------------------------------------ | -------------------------- | -------------------- |
337
+ | Three-layer `DROP_SHADOW` on elevation variables (`Shadow 01-03`) | Material Design | `"material"` |
338
+ | Prominent layered shadows, rounded cards, ripple effects | Material Design | `"material"` |
339
+ | Flat surfaces, sharp corners, Segoe/Inter font | Microsoft Fluent | `"fluent"` |
340
+ | Component borders, Bootstrap-like grid | Bootstrap | `"bootstrap"` |
341
+ | Purple/indigo accents, rounded corners, single shadow | Infragistics Indigo | `"indigo"` |
342
+ | `primary/500`, `primary/900` palette shade naming | Material (100–900 palette) | `"material"` |
343
+
344
+ `create_elevations` accepts only `"material"` or `"indigo"` as its `designSystem` — for a Fluent or Bootstrap design, pick the closer of the two (usually `material`).
345
+
346
+ ---
347
+
348
+ ## Per-Component Token Resolution
349
+
350
+ ### Step 1: Use the right theme key
351
+
352
+ Theme keys are **not** tag names. Pass the key to `get_component_design_tokens` and `create_component_theme`:
353
+
354
+ | Component in the design | Theme key | Selector it generates for |
355
+ | ----------------------- | ------------------- | --------------------------------- |
356
+ | Text input | `input-group` | `igc-input` (other fields get it through their related themes; `igc-textarea` uses `textarea`) |
357
+ | Navigation drawer | `navdrawer` | `igc-nav-drawer` |
358
+ | Linear progress bar | `progress-linear` | `igc-linear-progress` |
359
+ | Circular progress | `progress-circular` | `igc-circular-progress` |
360
+ | Single-select combo | `simple-combo` | `igc-combo[single-select]` |
361
+ | Flat / contained / outlined button | `flat-button`, `contained-button`, `outlined-button` | `igc-button[variant="…"]` |
362
+ | Icon button variants | `flat-icon-button`, `contained-icon-button`, `outlined-icon-button` | `igc-icon-button[variant="…"]` |
363
+ | Premium grid | `grid` | `igc-grid` |
364
+ | Lightweight grid | `grid-lite` | `igc-grid-lite` |
365
+ | Dropdown menu | `drop-down` | `igc-dropdown` |
366
+ | App scrollbars | `scrollbar` | `.ig-scrollbar` |
367
+
368
+ Most other components use their obvious key (`card`, `list`, `navbar`, `chip`, `avatar`, `badge`, `calendar`, `date-picker`, `select`, `combo`, `tabs`, `stepper`, `tree`, `dialog`, `toast`, `snackbar`, `banner`, `tooltip`, `divider`, `rating`, `slider`, `switch`, `checkbox`, `radio`, `carousel`, `chat`, `expansion-panel`, `accordion`, `splitter`, `file-input`, `date-time-input`, `textarea`, `icon`, `ripple`, `highlight`).
369
+
370
+ **Keys with no standalone Web Components selector in the theming tool** — do not call the theming tools for these: `action-strip`, `bottom-nav`, `column-actions`, `overlay`, `query-builder`, `time-picker`, `date-range-start`, `date-range-end`. (`action-strip` and `column-actions` are themed through the `grid` theme, which derives them.) Sub-part keys (`card-header`, `list-item`, `step`, `tab-item`, `accordion-header`, `expansion-panel-header`, `drop-down-item`, `nav-drawer-item`) have no standalone selector either — style them through the parent's tokens, their documented `::part(...)`, or slotted content.
371
+
372
+ ### Step 2: Discover the tokens
373
+
374
+ ```
375
+ get_component_design_tokens({ component: "<theme key>" })
376
+ ```
377
+
378
+ The result lists every token with name, type, and description — and, for compound components, the **related themes** you must also theme.
379
+
380
+ ### Step 3: Match Figma variables to token names
381
+
382
+ > **Path B:** third-party kits rarely have component variables in this form, and Tier C files usually have none. Take the component's colors, radius, borders, and state colors from the Phase 1d color census and measurements (B2, B5–B8). Use variables, when they exist, only to confirm them.
383
+
384
+ Kit component variables follow `<component>/<role>/<state>`:
385
+
386
+ - `button/background` → token `background`
387
+ - `button/foreground` → token `foreground-color`
388
+ - `chip/background/selected` → token `selected-chip-color`
389
+ - `grid/header-background` → token `header-background`
390
+ - `navbar/background` → token `background`
391
+
392
+ Lookup process: strip the component prefix, match the remainder against the token list, and when there is no exact match pick the token whose description names the same visual role.
393
+
394
+ | Component | Figma Variable | Likely Token Name | Notes |
395
+ | --------- | -------------------------- | ----------------------- | ----------------------- |
396
+ | Button | `button/background` | `background` | Per variant key |
397
+ | Button | `button/foreground` | `foreground-color` | Text color |
398
+ | Button | `button/border` | `border-color` | Outlined variant |
399
+ | Chip | `chip/background` | `background` | Default state |
400
+ | Chip | `chip/selected-background` | `selected-chip-color` | — |
401
+ | Grid | `grid/header/background` | `header-background` | — |
402
+ | Grid | `grid/row/background` | `content-background` | — |
403
+ | Grid | `grid/row/hover` | `row-hover-background` | — |
404
+ | Navbar | `navbar/background` | `background` | — |
405
+ | Input | `input/background` | `box-background` | Filled appearance |
406
+ | Input | `input/border` | `border-color` | `outlined` appearance |
407
+ | Card | `card/background` | `background` | — |
408
+ | List | `list/item/background` | `item-background` | — |
409
+ | List | `list/item/hover` | `item-hover-background` | — |
410
+ | Dialog | `dialog/background` | `background` | — |
411
+
412
+ ### Step 4: Generate the component theme
413
+
414
+ Pass **only tokens that differ from the global theme**, and express values as palette references — never raw hex:
415
+
416
+ ```
417
+ create_component_theme({
418
+ component: "<theme key>",
419
+ platform: "webcomponents",
420
+ designSystem: "<resolved>",
421
+ variant: "<light|dark>",
422
+ tokens: {
423
+ "background": "var(--ig-surface-100)",
424
+ "foreground-color": "var(--ig-gray-900)"
425
+ },
426
+ selector: "<optional scope, e.g. .dashboard igc-card>",
427
+ output: "css"
428
+ })
429
+ ```
430
+
431
+ Apply the generated block exactly as returned. Use `selector` to scope an override to one region instead of every instance in the app.
432
+
433
+ ### Step 5: Compound components
434
+
435
+ Compound components — any component whose `get_component_design_tokens` result lists related themes (for example `combo`, `select`, the date pickers, `card`, `navbar`, `dialog`, `banner`, and the grids) — render internal children with their own themes. Theme each related theme returned in Step 1 using the parent's selector as the wrapper. Styling only the parent leaves dropdown surfaces, calendars, and action buttons off-theme — a guaranteed Phase 5 failure.
436
+
437
+ ---
438
+
439
+ ## Chart Colors
440
+
441
+ Charts have no design tokens. Take the series colors from the Figma design context and run them through the theming MCP before use:
442
+
443
+ ```
444
+ get_chart_series_colors({ chartType: "category-chart" }) // which properties accept a brush list
445
+ get_chart_series_colors({ customBrushes: ["#9DE772", "#6DB1FF"] }) // validate the Figma colors
446
+ get_chart_series_colors({ mode: "color-blind" }) // accessible alternative palette
447
+ ```
448
+
449
+ Assign the result to the chart's brush **properties**: `brushes` / `outlines` on most charts, `brush` on `igc-sparkline`, `fillBrushes` on `igc-treemap`, and `brushes` / `outlines` on each `igc-ring-series` of a doughnut chart. Without an explicit assignment the chart uses its own default palette and will not match the design.
450
+
451
+ ---
452
+
453
+ ## Variable Resolution Priority
454
+
455
+ When multiple Figma variables could map to the same theming input:
456
+
457
+ 1. **Component-scoped variable** (e.g. `button/background`) → per-component token
458
+ 2. **Semantic role variable** (e.g. `color/primary`) → global palette input
459
+ 3. **Primitive variable** (e.g. `primary/500`) → global palette seed color
460
+ 4. **Raw hex/rgb value** (no variable) → extract directly from the design context
461
+
462
+ ---
463
+
464
+ ## What to Skip
465
+
466
+ Do **not** call theming tools for:
467
+
468
+ - Chart, gauge, and map components → configure via properties; series colors via `get_chart_series_colors`
469
+ - Pure layout CSS (margins, grid columns, flex gaps) → write it directly in the view's styles
470
+ - Icon colors → set `color` on the `igc-icon` host or its parent
471
+
472
+ Dock Manager **is** themed with the tools: use the theme key `dock-manager` (selector `igc-dockmanager`) like any other component. It also exposes its own CSS custom properties.
473
+
474
+ ---
475
+
476
+ ## Loading Reference Data
477
+
478
+ | URI | Content |
479
+ | --- | --- |
480
+ | `theming://platforms/webcomponents` | Web Components platform specifics |
481
+ | `theming://guidance/colors/rules` | Surface/gray luminance rules for light and dark |
482
+ | `theming://guidance/colors/roles` | Which components use primary vs secondary vs surface |
483
+ | `theming://guidance/colors/usage` | Which shade for which purpose |
484
+ | `theming://guidance/colors/charts` | Chart color guidance |
485
+ | `theming://presets/palettes` | Preset palette colors |
486
+ | `theming://presets/typography` | Typography presets |
487
+ | `theming://presets/elevations` | Elevation shadow presets |
488
+
489
+ Read them with `read_resource({ uri: "<uri>" })`.