@design-factory/angular 21.1.0 → 22.0.0-next.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 (331) hide show
  1. package/.ai/docs/components/accordion/accessibility.md +45 -0
  2. package/.ai/docs/components/accordion/api.md +279 -0
  3. package/.ai/docs/components/accordion/developer.md +43 -0
  4. package/.ai/docs/components/accordion/guidelines.md +99 -0
  5. package/.ai/docs/components/accordion/overview.md +17 -0
  6. package/.ai/docs/components/alert/accessibility.md +24 -0
  7. package/.ai/docs/components/alert/api.md +65 -0
  8. package/.ai/docs/components/alert/developer.md +63 -0
  9. package/.ai/docs/components/alert/guidelines.md +62 -0
  10. package/.ai/docs/components/alert/overview.md +12 -0
  11. package/.ai/docs/components/button/accessibility.md +25 -0
  12. package/.ai/docs/components/button/api.md +71 -0
  13. package/.ai/docs/components/button/developer.md +52 -0
  14. package/.ai/docs/components/button/guidelines.md +75 -0
  15. package/.ai/docs/components/button/overview.md +15 -0
  16. package/.ai/docs/components/buttongroup/api.md +16 -0
  17. package/.ai/docs/components/buttongroup/developer.md +32 -0
  18. package/.ai/docs/components/drawer/accessibility.md +15 -0
  19. package/.ai/docs/components/drawer/api.md +56 -0
  20. package/.ai/docs/components/drawer/developer.md +36 -0
  21. package/.ai/docs/components/drawer/examples.md +9 -0
  22. package/.ai/docs/components/drawer/guidelines.md +58 -0
  23. package/.ai/docs/components/drawer/overview.md +19 -0
  24. package/.ai/docs/components/dropdown/accessibility.md +27 -0
  25. package/.ai/docs/components/dropdown/api.md +85 -0
  26. package/.ai/docs/components/dropdown/developer.md +59 -0
  27. package/.ai/docs/components/dropdown/guidelines.md +80 -0
  28. package/.ai/docs/components/dropdown/overview.md +16 -0
  29. package/.ai/docs/components/sidenav/accessibility.md +48 -0
  30. package/.ai/docs/components/sidenav/api.md +110 -0
  31. package/.ai/docs/components/sidenav/developer.md +14 -0
  32. package/.ai/docs/components/sidenav/guidelines.md +83 -0
  33. package/.ai/docs/components/sidenav/overview.md +16 -0
  34. package/.ai/docs/components/tooltip/accessibility.md +11 -0
  35. package/.ai/docs/components/tooltip/api.md +39 -0
  36. package/.ai/docs/components/tooltip/developer.md +16 -0
  37. package/.ai/docs/components/tooltip/guidelines.md +84 -0
  38. package/.ai/docs/components/tooltip/overview.md +23 -0
  39. package/.ai/docs/components/topnav/accessibility.md +51 -0
  40. package/.ai/docs/components/topnav/api.md +190 -0
  41. package/.ai/docs/components/topnav/developer.md +43 -0
  42. package/.ai/docs/components/topnav/guidelines.md +121 -0
  43. package/.ai/docs/components/topnav/overview.md +17 -0
  44. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
  45. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
  46. package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
  47. package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
  48. package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
  49. package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
  50. package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
  51. package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
  52. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
  53. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
  54. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
  55. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
  56. package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
  57. package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
  58. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
  59. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
  60. package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
  61. package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
  62. package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
  63. package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
  64. package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
  65. package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
  66. package/.ai/docs/demos/alert/card/alert-card.html +15 -0
  67. package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
  68. package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
  69. package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
  70. package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
  71. package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
  72. package/.ai/docs/demos/button/basic/button-basic.html +4 -0
  73. package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
  74. package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
  75. package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
  76. package/.ai/docs/demos/button/icons/button-icons.html +17 -0
  77. package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
  78. package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
  79. package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
  80. package/.ai/docs/demos/button/variants/button-variants.html +49 -0
  81. package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
  82. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
  83. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
  84. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
  85. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
  86. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
  87. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
  88. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
  89. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
  90. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
  91. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
  92. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
  93. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
  94. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
  95. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
  96. package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
  97. package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
  98. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
  99. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
  100. package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
  101. package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
  102. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
  103. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
  104. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
  105. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
  106. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
  107. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
  108. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
  109. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
  110. package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
  111. package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
  112. package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
  113. package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
  114. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
  115. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
  116. package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
  117. package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
  118. package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
  119. package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
  120. package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
  121. package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
  122. package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
  123. package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
  124. package/.ai/index.md +26 -0
  125. package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
  126. package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
  127. package/fesm2022/design-factory-angular-alert.mjs +312 -0
  128. package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
  129. package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
  130. package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
  131. package/fesm2022/design-factory-angular-button.mjs +240 -0
  132. package/fesm2022/design-factory-angular-button.mjs.map +1 -0
  133. package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
  134. package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
  135. package/fesm2022/design-factory-angular-drawer.mjs +64 -62
  136. package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
  137. package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
  138. package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
  139. package/fesm2022/design-factory-angular-form-field.mjs +287 -0
  140. package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
  141. package/fesm2022/design-factory-angular-icon.mjs +24 -0
  142. package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
  143. package/fesm2022/design-factory-angular-input.mjs +34 -0
  144. package/fesm2022/design-factory-angular-input.mjs.map +1 -0
  145. package/fesm2022/design-factory-angular-internals.mjs +119 -39
  146. package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
  147. package/fesm2022/design-factory-angular-separator.mjs +43 -0
  148. package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
  149. package/fesm2022/design-factory-angular-sidenav.mjs +652 -401
  150. package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
  151. package/fesm2022/design-factory-angular-slider.mjs +451 -0
  152. package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
  153. package/fesm2022/design-factory-angular-theme.mjs +29 -19
  154. package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
  155. package/fesm2022/design-factory-angular-toggle.mjs +172 -0
  156. package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
  157. package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
  158. package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
  159. package/fesm2022/design-factory-angular-topnav.mjs +589 -589
  160. package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
  161. package/package.json +61 -8
  162. package/schematics/collection.json +35 -0
  163. package/schematics/component-migration/accordion/constants.d.ts +10 -0
  164. package/schematics/component-migration/accordion/constants.js +46 -0
  165. package/schematics/component-migration/accordion/guide.md +257 -0
  166. package/schematics/component-migration/accordion/index.d.ts +2 -0
  167. package/schematics/component-migration/accordion/index.js +5 -0
  168. package/schematics/component-migration/accordion/migration.d.ts +2 -0
  169. package/schematics/component-migration/accordion/migration.js +13 -0
  170. package/schematics/component-migration/accordion/schema.json +25 -0
  171. package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
  172. package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
  173. package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
  174. package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
  175. package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
  176. package/schematics/component-migration/accordion/steps/title-content.js +75 -0
  177. package/schematics/component-migration/ai/prompt.md +83 -0
  178. package/schematics/component-migration/alert/guide.md +246 -0
  179. package/schematics/component-migration/alert/index.d.ts +2 -0
  180. package/schematics/component-migration/alert/index.js +5 -0
  181. package/schematics/component-migration/alert/migration.d.ts +2 -0
  182. package/schematics/component-migration/alert/migration.js +50 -0
  183. package/schematics/component-migration/alert/schema.json +25 -0
  184. package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
  185. package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
  186. package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
  187. package/schematics/component-migration/alert/steps/animation-input.js +17 -0
  188. package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
  189. package/schematics/component-migration/alert/steps/close-output.js +17 -0
  190. package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
  191. package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
  192. package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
  193. package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
  194. package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
  195. package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
  196. package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
  197. package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
  198. package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
  199. package/schematics/component-migration/alert/steps/selector.js +18 -0
  200. package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
  201. package/schematics/component-migration/alert/steps/static-classes.js +97 -0
  202. package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
  203. package/schematics/component-migration/alert/steps/static-type.js +28 -0
  204. package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
  205. package/schematics/component-migration/alert/steps/template-reference.js +15 -0
  206. package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
  207. package/schematics/component-migration/alert/steps/template-todos.js +78 -0
  208. package/schematics/component-migration/button/guide.md +278 -0
  209. package/schematics/component-migration/button/index.d.ts +2 -0
  210. package/schematics/component-migration/button/index.js +5 -0
  211. package/schematics/component-migration/button/migration.d.ts +2 -0
  212. package/schematics/component-migration/button/migration.js +180 -0
  213. package/schematics/component-migration/button/schema.json +25 -0
  214. package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
  215. package/schematics/component-migration/button/steps/static-classes.js +128 -0
  216. package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
  217. package/schematics/component-migration/button/steps/template-todos.js +120 -0
  218. package/schematics/component-migration/button/types.d.ts +7 -0
  219. package/schematics/component-migration/button/types.js +2 -0
  220. package/schematics/component-migration/dropdown/guide.md +252 -0
  221. package/schematics/component-migration/dropdown/index.d.ts +2 -0
  222. package/schematics/component-migration/dropdown/index.js +5 -0
  223. package/schematics/component-migration/dropdown/migration.d.ts +2 -0
  224. package/schematics/component-migration/dropdown/migration.js +41 -0
  225. package/schematics/component-migration/dropdown/schema.json +25 -0
  226. package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
  227. package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
  228. package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
  229. package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
  230. package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
  231. package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
  232. package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
  233. package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
  234. package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
  235. package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
  236. package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
  237. package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
  238. package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
  239. package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
  240. package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
  241. package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
  242. package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
  243. package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
  244. package/schematics/component-migration/index.d.ts +3 -0
  245. package/schematics/component-migration/index.js +26 -0
  246. package/schematics/component-migration/next-steps/index.d.ts +13 -0
  247. package/schematics/component-migration/next-steps/index.js +34 -0
  248. package/schematics/component-migration/registry.d.ts +1 -0
  249. package/schematics/component-migration/registry.js +15 -0
  250. package/schematics/component-migration/schema.json +20 -0
  251. package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
  252. package/schematics/component-migration/shared/ai-handoff.js +28 -0
  253. package/schematics/component-migration/shared/angular-component.d.ts +10 -0
  254. package/schematics/component-migration/shared/angular-component.js +125 -0
  255. package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
  256. package/schematics/component-migration/shared/button-visual-classes.js +111 -0
  257. package/schematics/component-migration/shared/component-context.d.ts +7 -0
  258. package/schematics/component-migration/shared/component-context.js +24 -0
  259. package/schematics/component-migration/shared/component-imports.d.ts +45 -0
  260. package/schematics/component-migration/shared/component-imports.js +380 -0
  261. package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
  262. package/schematics/component-migration/shared/create-component-schematic.js +55 -0
  263. package/schematics/component-migration/shared/import-edits.d.ts +11 -0
  264. package/schematics/component-migration/shared/import-edits.js +157 -0
  265. package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
  266. package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
  267. package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
  268. package/schematics/component-migration/shared/migrate-project.js +151 -0
  269. package/schematics/component-migration/shared/project-templates.d.ts +15 -0
  270. package/schematics/component-migration/shared/project-templates.js +43 -0
  271. package/schematics/component-migration/shared/scan-project.d.ts +3 -0
  272. package/schematics/component-migration/shared/scan-project.js +24 -0
  273. package/schematics/component-migration/shared/static-placement.d.ts +1 -0
  274. package/schematics/component-migration/shared/static-placement.js +45 -0
  275. package/schematics/component-migration/shared/template-edits.d.ts +28 -0
  276. package/schematics/component-migration/shared/template-edits.js +153 -0
  277. package/schematics/component-migration/shared/template-result.d.ts +3 -0
  278. package/schematics/component-migration/shared/template-result.js +11 -0
  279. package/schematics/component-migration/shared/testing.d.ts +13 -0
  280. package/schematics/component-migration/shared/testing.js +59 -0
  281. package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
  282. package/schematics/component-migration/shared/todo-comments.js +81 -0
  283. package/schematics/component-migration/shared/types.d.ts +41 -0
  284. package/schematics/component-migration/shared/types.js +2 -0
  285. package/schematics/component-migration/tooltip/guide.md +196 -0
  286. package/schematics/component-migration/tooltip/index.d.ts +2 -0
  287. package/schematics/component-migration/tooltip/index.js +5 -0
  288. package/schematics/component-migration/tooltip/migration.d.ts +2 -0
  289. package/schematics/component-migration/tooltip/migration.js +50 -0
  290. package/schematics/component-migration/tooltip/schema.json +25 -0
  291. package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
  292. package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
  293. package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
  294. package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
  295. package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
  296. package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
  297. package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
  298. package/schematics/component-migration/utils/component-resource-collector.js +107 -0
  299. package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
  300. package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
  301. package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
  302. package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
  303. package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
  304. package/schematics/component-migration/utils/typescript/decorators.js +41 -0
  305. package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
  306. package/schematics/component-migration/utils/typescript/functions.js +20 -0
  307. package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
  308. package/schematics/component-migration/utils/typescript/imports.js +110 -0
  309. package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
  310. package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
  311. package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
  312. package/schematics/component-migration/utils/typescript/property-name.js +22 -0
  313. package/schematics/package.json +3 -0
  314. package/types/design-factory-angular-accordion.d.ts +553 -0
  315. package/types/design-factory-angular-alert.d.ts +166 -0
  316. package/types/design-factory-angular-breakpoints.d.ts +13 -0
  317. package/types/design-factory-angular-button.d.ts +166 -0
  318. package/types/design-factory-angular-buttongroup.d.ts +45 -0
  319. package/types/design-factory-angular-drawer.d.ts +10 -16
  320. package/types/design-factory-angular-dropdown.d.ts +148 -0
  321. package/types/design-factory-angular-form-field.d.ts +122 -0
  322. package/types/design-factory-angular-icon.d.ts +11 -0
  323. package/types/design-factory-angular-input.d.ts +16 -0
  324. package/types/design-factory-angular-internals.d.ts +78 -19
  325. package/types/design-factory-angular-separator.d.ts +29 -0
  326. package/types/design-factory-angular-sidenav.d.ts +98 -14
  327. package/types/design-factory-angular-slider.d.ts +239 -0
  328. package/types/design-factory-angular-toggle.d.ts +93 -0
  329. package/types/design-factory-angular-tooltip.d.ts +113 -0
  330. package/types/design-factory-angular-topnav.d.ts +35 -47
  331. package/drawer/README.md +0 -54
@@ -0,0 +1,62 @@
1
+ Icon **(1)** indicates status through shape and color. Title **(2)** summarises the message in one short sentence. Dismiss **(3)** is optional, it allows the user to close the Alert when appropriate. It can be set as self closing and disappears after 5 seconds. You don't need to have the dismiss button to have the self closing. Description **(4)** is here to complete the message alert if it needs a bit more details, but keep it short.
2
+
3
+ Alerts come in five severity levels:
4
+
5
+ - **Information:** Neutral contextual message.
6
+ - **Success:** Positive result or confirmation.
7
+ - **Warning:** A potential issue requiring attention.
8
+ - **Error:** A serious problem that may block user progress.
9
+ - **Tip:** Used to give a tip to the user.
10
+
11
+ The Alert has 3 main variants depending on the placement and the informations provided. Dismiss button is optional in any case. Alert should be placed near the related content or action, however it may be place in a different pre-defined place if needed for concrete use cases.
12
+
13
+ In this case the Alert can be placed in a lot of places but should be placed near the related content or action.
14
+
15
+ - Keep text aligned to the left.
16
+ - Use this variant close to the related content.
17
+ - Group same-type alerts when possible.
18
+
19
+ - Do not overuse alerts on a page.
20
+ - Do not use an alert for destructive confirmations. Use a modal instead.
21
+ - Do not display alerts unrelated to the current user goal.
22
+
23
+ Working like the basic alert but has the option to have a show more/show less button on the top right. It allows to display more informations in the alert.
24
+
25
+ - Use this variant for short summaries with optional details.
26
+ - Use it to group multiple alerts from the same category.
27
+
28
+ - Do not include complex content inside the collapse.
29
+ - Do not exceed three lines per grouped alert message.
30
+ - Do not use timed behavior with collapsible alerts.
31
+
32
+ Should be used when it is in a global context, and impacts the whole screen. It spans the entire width of the screen, and is placed on the top of the page beneath the TopNav. The container Alert sticks to the top of the page even when scrolling. In this case the alert is attached to its header.
33
+
34
+ - Use this variant when the message impacts the full page context.
35
+ - Place it under the TopNav.
36
+ - Keep it attached to the related page header when applicable.
37
+
38
+ - Do not use this variant for content-local feedback.
39
+
40
+ Use a dismiss button when:
41
+
42
+ - The message is optional or informational.
43
+ - The user may want to hide it after reading.
44
+
45
+ Try to not make Error Alerts dismissible unless the error is fully resolved.
46
+
47
+ When clicking on "See more" the Alert expand to show the rest of the content. When clicking on "See less" the Alert shows only the chosen title.
48
+
49
+ There is no special responsive behaviour for this component beside the "Container" variant. It should still take take the entire width of the screen, and is placed on the top of the page beneath the TopNav.
50
+
51
+ Be clear, concise, and actionable as Alert messages must convey essential information quickly and tell the user what happened and what they can do next (if anything). Always start with the key point.
52
+
53
+ Match the message to the severity level as each severity level should express an appropriate tone:
54
+
55
+ - **Information and Tip:** neutral, factual.
56
+ - **Success:** positive, reassuring.
57
+ - **Warning:** cautious but calm.
58
+ - **Error:** direct and urgent, without creating panic.
59
+
60
+ Avoid exaggeration. Let the component's color and icon do part of the work. Keep in mind that the component already expresses the severity visually. Don't write "Error:" or "Warning:" in the message.
61
+
62
+ Use one or two sentences maximum. Alerts are not documentation or long explanations.
@@ -0,0 +1,12 @@
1
+ Use an Alert whenever you need to communicate non-blocking but important information to the user. They help users quickly distinguish between levels of severity, understand context, and respond if needed. Alerts must always remain concise, visible and avoid overwhelming the interface. They can include optional action such as "View details" for the user to have more context on the alert meanings.
2
+
3
+ - Use Alerts for short, actionable, contextual messages.
4
+ - Place Alerts near the related content or action.
5
+ - Use the correct severity level to convey the right urgency.
6
+ - Keep messages clear and direct.
7
+
8
+ - Do not stack multiple Alerts if they can be grouped.
9
+ - Do not use Alerts for long instructions.
10
+ - Do not rely on color alone for meaning.
11
+
12
+ The Alert component is often used alongside other informational and feedback components.
@@ -0,0 +1,25 @@
1
+ Buttons must use the correct ARIA role to ensure proper interaction for keyboard and screen reader users.
2
+
3
+ - Use `<button>` for actions that do not navigate. Buttons trigger in-page behavior such as submitting a form, opening a modal, or deleting an item.
4
+ - Use `<a href="...">` (link) when the action navigates to a new page or URL. A link can be visually styled as a button when it represents a navigational action that benefits from button-level prominence (e.g., a "Back" button pointing to the previous page).
5
+ - For icon-only buttons with no visible label, add `aria-label` with a concise action description: e.g. `aria-label="Close dialog"`.
6
+
7
+ Disabled buttons require special attention for accessibility. The native `disabled` attribute removes the element from the tab order and prevents any interaction, making it difficult to rely on interactive mechanisms (such as tooltips or ARIA-based descriptions) to communicate why an action is unavailable.
8
+
9
+ Always provide a clear explanation of why an action is disabled. Since disabled buttons are not focusable:
10
+
11
+ - Do not attach interaction-based elements (e.g., tooltips or popovers) to the button itself.
12
+ - Instead, surface the explanation through visible, non-interactive content such as helper text or inline messages near the button.
13
+
14
+ Icon-only buttons have no visible text label. Screen readers rely entirely on an accessible name to announce the button's purpose. Without it, the button will be announced as unlabelled or by its icon character code - which is meaningless to users.
15
+
16
+ Buttons must be fully operable using a keyboard alone, without requiring a mouse or touch input.
17
+
18
+ All buttons must be reachable by keyboard using the Tab key in a logical document order. Avoid removing buttons from the tab order unless they are genuinely hidden or inert.
19
+
20
+ - **Tab** - Moves focus to the next interactive element
21
+ - **Shift + Tab** - Moves focus to the previous interactive element
22
+
23
+ &nbsp;
24
+
25
+ - **Space** or **Enter** - Activates the button
@@ -0,0 +1,71 @@
1
+ # Button — API
2
+
3
+ ## `button[dfDropdownToggle]` — Component
4
+
5
+ _Since 22.0_
6
+
7
+ Component representing the toggle button of a dropdown, which is used to toggle the visibility of the dropdown menu.
8
+
9
+ ### Inputs
10
+
11
+ | Name | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | appearance | `DfButtonAppearance` | `'solid'` | Visual appearance of the button. In a df-button-group, the group appearance is used unless the button sets an explicit 'solid' or 'outline' appearance. |
14
+ | dfDropdownToggle | `DfDropdown` | | The dropdown instance controlled by this toggle element. Pass the referenced DfDropdown instance to connect the host button to its menu. |
15
+ | disabled | `boolean` | `false` | Disabled state for buttons and anchor buttons. |
16
+ | iconOnly | `boolean` | `false` | When true, hides the chevron icon for icon-only dropdown buttons. Accessibility: When using iconOnly, you must provide an aria-label attribute on the button element. |
17
+ | mirror | `boolean` | `false` | Enables mirrored styling for inverse surfaces. Ignored if the button is in a df-button-group (the group value is used instead). |
18
+ | size | `DfButtonSize` | `'md'` | Size of the button. Ignored if the button is in a df-button-group (the group size is used instead). |
19
+ | transparent | `boolean` | `false` | Makes outline and text buttons transparent. Solid buttons are unaffected. Ignored if the button is in a df-button-group (transparent buttons are currently not supported in groups). |
20
+ | variant | `DfButtonVariant` | `'primary'` | Semantic variant of the button. Forced to 'primary' if the button is in a df-button-group. |
21
+
22
+ ## `button[dfDropdownItem]` — Directive
23
+
24
+ _Since 22.0_
25
+
26
+ Directive representing a button in the dropdown menu.
27
+
28
+ ### Inputs
29
+
30
+ | Name | Type | Default | Description |
31
+ |------|------|---------|-------------|
32
+ | active | `boolean` | `false` | Whether the dropdown item is displayed in its active state. |
33
+ | disabled | `boolean` | `false` | Whether the dropdown item is disabled. |
34
+
35
+ ## `button[dfButton], a[dfButton]` — Component
36
+
37
+ _Since 22.0_
38
+
39
+ Design Factory button directive for native <button> and <a> elements.
40
+
41
+ ### Inputs
42
+
43
+ | Name | Type | Default | Description |
44
+ |------|------|---------|-------------|
45
+ | appearance | `DfButtonAppearance` | `'solid'` | Visual appearance of the button. In a df-button-group, the group appearance is used unless the button sets an explicit 'solid' or 'outline' appearance. |
46
+ | disabled | `boolean` | `false` | Disabled state for buttons and anchor buttons. |
47
+ | mirror | `boolean` | `false` | Enables mirrored styling for inverse surfaces. Ignored if the button is in a df-button-group (the group value is used instead). |
48
+ | size | `DfButtonSize` | `'md'` | Size of the button. Ignored if the button is in a df-button-group (the group size is used instead). |
49
+ | tabindex | `string \| number \| null \| undefined` | `undefined` | Host tabindex override. |
50
+ | transparent | `boolean` | `false` | Makes outline and text buttons transparent. Solid buttons are unaffected. Ignored if the button is in a df-button-group (transparent buttons are currently not supported in groups). |
51
+ | type | `HTMLButtonElement['type']` | `'button'` | Native button type attribute. |
52
+ | variant | `DfButtonVariant` | `'primary'` | Semantic variant of the button. Forced to 'primary' if the button is in a df-button-group. |
53
+
54
+ ## `button[dfIconButton], a[dfIconButton]` — Component
55
+
56
+ _Since 22.0_
57
+
58
+ Design Factory icon-only button directive for native <button> and <a> elements. Provide an accessible name with aria-label or aria-labelledby. Provide the icon with classes on the host element.
59
+
60
+ ### Inputs
61
+
62
+ | Name | Type | Default | Description |
63
+ |------|------|---------|-------------|
64
+ | appearance | `DfButtonAppearance` | `'solid'` | Visual appearance of the button. In a df-button-group, the group appearance is used unless the button sets an explicit 'solid' or 'outline' appearance. |
65
+ | disabled | `boolean` | `false` | Disabled state for buttons and anchor buttons. |
66
+ | mirror | `boolean` | `false` | Enables mirrored styling for inverse surfaces. Ignored if the button is in a df-button-group (the group value is used instead). |
67
+ | size | `DfButtonSize` | `'md'` | Size of the button. Ignored if the button is in a df-button-group (the group size is used instead). |
68
+ | tabindex | `string \| number \| null \| undefined` | `undefined` | Host tabindex override. |
69
+ | transparent | `boolean` | `false` | Makes outline and text buttons transparent. Solid buttons are unaffected. Ignored if the button is in a df-button-group (transparent buttons are currently not supported in groups). |
70
+ | type | `HTMLButtonElement['type']` | `'button'` | Native button type attribute. |
71
+ | variant | `DfButtonVariant` | `'primary'` | Semantic variant of the button. Forced to 'primary' if the button is in a df-button-group. |
@@ -0,0 +1,52 @@
1
+ Button directives apply DF styling to native elements.
2
+
3
+ Use `button[dfButton]` for actions. It keeps native button behavior and sets `type="button"` by default.
4
+
5
+ ```angular-html
6
+ <button dfButton>Continue</button>
7
+
8
+ <button dfButton appearance="outline">Cancel</button>
9
+ ```
10
+
11
+ \
12
+
13
+ Set `type="submit"` only when the button should submit a form.
14
+
15
+ Use `a[dfButton]` when the host element must be an anchor. It supports both `href` and Angular `routerLink`, while
16
+ using the same styling inputs as `button[dfButton]`.
17
+
18
+ ```angular-html
19
+ <a dfButton routerLink="/settings">Settings</a>
20
+ ```
21
+
22
+ Use `a[dfIconButton]` for icon-only links. Provide icon classes on the host element, and provide an accessible name with
23
+ `aria-label` or `aria-labelledby`.
24
+
25
+ Buttons are styled with `variant`, `appearance` and `size`.
26
+
27
+ - `variant` accepts `primary`, `danger` and `neutral`; use `neutral` only for icon-only buttons.
28
+ - `appearance` accepts `solid`, `outline` and `text`.
29
+ - `size` accepts `sm`, `md` and `lg`; the default is `md`.
30
+
31
+ > Demo source: [docs/demos/button/variants/](../../demos/button/variants/)
32
+
33
+ Set `transparent` on `outline` and `text` buttons when the default background should be removed. Solid buttons are not
34
+ affected.
35
+
36
+ Set `mirror` when the button appears on an inverse surface.
37
+
38
+ > Demo source: [docs/demos/button/surfaces/](../../demos/button/surfaces/)
39
+
40
+ Use `dfButton` for text and icon-with-text buttons. Use `dfIconButton` for icon-only buttons, provide icon classes on
41
+ the host element, and provide an accessible name with `aria-label` or `aria-labelledby`.
42
+
43
+ When a button contains both text and an icon, the icon follows the projected content order. Put the icon before the text
44
+ for a leading icon, or after the text for a trailing icon. In RTL layouts, the visual order follows the normal document
45
+ flow.
46
+
47
+ > Demo source: [docs/demos/button/icons/](../../demos/button/icons/)
48
+
49
+ Bind `disabled` to your component state. For native buttons, the directive sets the native `disabled` attribute. For
50
+ anchor buttons, it sets `aria-disabled`, removes the link from the tab order and blocks click or keyboard activation.
51
+
52
+ > Demo source: [docs/demos/button/disabled/](../../demos/button/disabled/)
@@ -0,0 +1,75 @@
1
+ &nbsp;
2
+
3
+ A button is built from consistent structural elements to keep interaction predictable and scannable:
4
+
5
+ 1. **Container** - The clickable area with padding that ensures a comfortable hit area, even when only an icon is present. It can appear solid, outlined or not be visible at all (text).
6
+ 2. **Label** - A short, action-oriented text string that clearly communicates what happens on click. Labels are mandatory for default buttons.
7
+ 3. **Left icon** (optional) - Helps reinforce the button's intent with a visual cue placed before the label.
8
+ 4. **Right icon** (optional) - Often used to indicate navigation or forward motion (e.g. arrow).
9
+ 5. **Icon** - For icon-only buttons.
10
+
11
+ Solid buttons are the most emphatic and represent the main action on a view. Use them for primary calls-to-action representing the single most important thing a user can do on a given screen.
12
+
13
+ - Use one solid button per view to guide users to the main outcome (for example: "Save changes", "Submit form", "Create invoice").
14
+ - Place the solid button in a consistent location across similar views (for example, bottom-right in forms) to reduce decision-making effort.
15
+
16
+ - Don't use multiple solid buttons in the same context as they would all look equally important; use outline or text for alternatives.
17
+ - Don't use solid buttons for low-commitment or exploratory actions (like "View details"); this dilutes their primary meaning.
18
+
19
+ Use outline for secondary elements as it creates visual hierarchy with the solid button. Their quieter contrast, lighter weight, and reduced scale help the primary action stand out without effort.
20
+
21
+ - Use outline buttons for actions that are relevant but not the main goal of the page, e.g. "Cancel", "Back", or alternative options.
22
+ - Pair an outline button with a primary solid button when users must weigh a main vs. alternative choice (e.g. "Save" vs. "Discard").
23
+
24
+ - Don't use outline buttons alone in critical flows where one action clearly drives the outcome; in those cases, a primary solid button should exist.
25
+ - Don't style destructive actions as outline primary (blue) if they are truly high risk; use the danger status (red) to differentiate them clearly.
26
+
27
+ Tertiary buttons (text appearance) are the least emphatic and are used only for truly low-stakes or supplemental actions, like removing a filter or category.
28
+
29
+ - Use text buttons for low-priority, contextual actions such as "Learn more", "Show details", or secondary options within a block of text.
30
+ - Use text buttons when the action should be available but should not distract from the primary task on the screen.
31
+ - Use a tertiary button for destructive actions only when the impact is low, localized, and easily reversible.
32
+
33
+ - Don't use text buttons for high-risk or critical actions; users might overlook them or misinterpret their importance.
34
+ - Don't rely on subtle text buttons in dense interfaces where users expect strong action affordances; consider outline or solid instead.
35
+
36
+ Icon-only buttons use one icon with no visible label.
37
+
38
+ - Use icon-only buttons in dense toolbars, table headers, or compact layouts where space is limited and the icon has a widely recognized meaning (e.g. edit, delete, filter, more).
39
+ - Provide an accessible label (e.g. via aria-label) and show a tooltip with the same text on hover and keyboard focus in desktop contexts.
40
+
41
+ - Do not use icon-only buttons for primary actions or unclear interactions. Only use them in specific contexts where the icon's meaning is obvious; otherwise, prefer labeled buttons.
42
+ - Limit the use of multiple icon-only actions to contexts where users are expected to recognize them (e.g., expert or productivity tools). For less frequent or less obvious actions, use labels to reduce cognitive load.
43
+
44
+ Mirror is a configuration that adapts the button's colors to maintain adequate contrast on dark or high-contrast backgrounds.
45
+
46
+ - Use mirror when a button is placed on dark surfaces such as app bars, overlays, or dark sections, and the basic configuration would not meet contrast guidelines.
47
+ - Keep the same appearance and status logic (solid/outline/text, primary/danger/neutral) when switching to mirror so the hierarchy remains consistent.
48
+
49
+ - Don't use mirror purely for stylistic variation on light backgrounds; its purpose is to ensure readability and accessibility.
50
+ - Don't mix basic and mirror configurations on the same surface without a clear reason; this can confuse users about where they are in the interface.
51
+
52
+ Used when the button's action is temporarily unavailable. The button appears greyed out and is not interactive. Always provide context to the user explaining why the action is unavailable (e.g. through helper text or inline message).
53
+
54
+ - Use disabled buttons to indicate actions that are temporarily unavailable due to system state or missing prerequisites (e.g. loading, unavailable data).
55
+ - Provide clear guidance near the control, use helper text, inline validation, or contextual messaging to explain why the action is disabled and what the user must do to enable it.
56
+
57
+ - Don't rely solely on the disabled state to teach users what to do. If the reason is unclear, users may think the interface is broken; always pair with explanatory text.
58
+ - Don't use disabled buttons for actions that will never become available. If an action is permanently restricted (permissions, plan limits), hide it or replace it with an explanatory pattern instead.
59
+
60
+ Buttons are available in multiple sizes (small, medium, large), but medium is the default and recommended size for most desktop and web use cases. When choosing a size, users should use the same size consistently across related elements within the same view or section.
61
+
62
+ On smaller screens, buttons may expand to fill the full available width (full-width button) when they are the primary action. Ensure touch targets are large enough (minimum 44×44px) to meet mobile accessibility requirements. In constrained horizontal layouts like navbars, prefer Icon-only buttons.
63
+
64
+ Be clear, concise, and action-driven as button labels must communicate the outcome of the action immediately. Always start with a verb that describes what clicking the button will do (e.g., "Save", "Create invoice", "Send report").
65
+
66
+ Match the label to the button's status as each status communicates a different level of impact:
67
+
68
+ - Primary → standard, forward-moving actions
69
+ - Danger → destructive or high-risk actions
70
+ - Neutral → low-commitment, icon-only or contextual actions
71
+
72
+ Avoid vague labels. Let the button's appearance and status do part of the work. Keep in mind that solid, outline, and text appearances already express hierarchy. Don't write "Click to" or "Please" in the label.
73
+ Use one to three words maximum. Buttons are not descriptions or instructions.
74
+
75
+ > **Tip:** For a full view on UX Writing guidelines, check the following document: Amadeus [UX Writing Style Guide](<https://amadeusworkplace.sharepoint.com/:w:/r/sites/UXCommunity_official/_layouts/15/Doc.aspx?sourcedoc=%7BB0C79089-403F-41AE-AFA3-C5BEDFCB8254%7D&file=Amadeus%20UX%20Writing%20Style%20Guide%20(Brecht%20ALGOET_Marcos%20LLORENS).docx&action=default&mobileredirect=true>)
@@ -0,0 +1,15 @@
1
+ &nbsp;
2
+
3
+ Buttons follow a three-level hierarchy (solid, outline, text) based on their importance within a page. Use this hierarchy to distinguish primary, secondary, and tertiary actions, such as submitting forms, opening dialogs, or navigating.
4
+
5
+ - Use a single "solid" button to represent the main outcome of a view or flow; secondary actions should use outline or text appearances.
6
+ - Choose the button status based on the risk and impact of the action: use danger for destructive or high-risk actions, primary for standard actions, and neutral for icon-only actions that live in navigation or global areas.
7
+ - Write short, action-driven button labels that clearly describe the outcome (e.g., "Save", "Create invoice", "Send").
8
+ - Place buttons close to the content or object they act on, so users immediately understand what will change when they click.
9
+
10
+ - Don't present multiple solid buttons in the same view as they would compete for attention; this makes it harder for users to choose the right path.
11
+ - Don't use a danger status just to draw attention to an action; reserve it for destructive or high-risk actions so users learn to trust the color semantics.
12
+ - Don't hide important or ambiguous actions behind icon-only buttons; if the meaning isn't obvious from the icon, add a label.
13
+ - Don't rely solely on color or subtle visual differences to express priority or state; use label wording, position, and appearance (solid/outline/text) to support the hierarchy.
14
+
15
+ The Button component is often used alongside other action and navigation components:
@@ -0,0 +1,16 @@
1
+ # Button group — API
2
+
3
+ ## `df-button-group` — Component
4
+
5
+ _Since 22.0_
6
+
7
+ Groups a set of related dfButton actions, rendering them as a single visually joined control. Project dfButton elements as content: <df-button-group [size]="'md'" [appearance]="'outline'"> <button dfButton [appearance]="'solid'">Main action</button> <button dfButton>Left</button> <button dfButton>Middle</button> <button dfButton>Right</button> </df-button-group>
8
+
9
+ ### Inputs
10
+
11
+ | Name | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | appearance | `'solid' \| 'outline'` | `'outline'` | The appearance of the buttons in the group. |
14
+ | mirror | `boolean` | `false` | Enables mirrored styling for inverse surfaces. |
15
+ | orientation | `'horizontal' \| 'vertical'` | `'horizontal'` | The orientation of the button group. |
16
+ | size | `DfButtonSize` | `'md'` | The size of the buttons in the group. |
@@ -0,0 +1,32 @@
1
+ Use `df-button-group` to group a set of related `dfButton` actions and render them as a single visually joined control.
2
+ Project the `dfButton` elements as content.
3
+
4
+ Set `appearance` on the group to apply the same appearance to every button. The main action of the group can stand out
5
+ by setting `appearance="solid"` on its own button.
6
+
7
+ ```angular-html
8
+ <df-button-group aria-label="Basic example">
9
+ <button dfButton appearance="solid">Main Action</button>
10
+ <button dfButton>Left</button>
11
+ <button dfButton>Middle</button>
12
+ <button dfButton>Right</button>
13
+ </df-button-group>
14
+ ```
15
+
16
+ \
17
+
18
+ Set `orientation="vertical"` on the group to stack the buttons vertically. The default is `horizontal`.
19
+
20
+ > Demo source: [docs/demos/buttongroup/orientation/](../../demos/buttongroup/orientation/)
21
+
22
+ Set `size` on the group to size every button consistently. It accepts `sm`, `md` and `lg`; the default is `md`.
23
+
24
+ > Demo source: [docs/demos/buttongroup/sizing/](../../demos/buttongroup/sizing/)
25
+
26
+ Set `disabled` on the individual `dfButton` elements that should be disabled.
27
+
28
+ > Demo source: [docs/demos/buttongroup/disabled/](../../demos/buttongroup/disabled/)
29
+
30
+ Set `mirror` on the group when it appears on an inverse surface.
31
+
32
+ > Demo source: [docs/demos/buttongroup/mirror/](../../demos/buttongroup/mirror/)
@@ -0,0 +1,15 @@
1
+ A Drawer must support full keyboard navigation. All interactive elements within it should appear in the natural tab order, and users must be able to move through them using **Tab and Shift+Tab**, activate them with **Enter or Space**, and use **Arrow keys** when the component type expects it.
2
+
3
+ The drawer must not block standard keyboard behavior unless the specific variant intentionally requires it. Keyboard users should always be able to reach, operate, and exit the drawer using familiar key patterns.
4
+
5
+ The Drawer should open with a clear and easy-to-use trigger, such as a [button](/components/button). This trigger must be keyboard accessible, so users can reach it with **Tab** and activate it with **Enter or Space**. It should have a label that explains what will happen when it is used, like "Open filters" or "Show details." When the drawer opens, the trigger should update its state using something like aria-expanded, so screen readers know the drawer is now open.
6
+
7
+ When a Drawer opens, the focus should move to the first interactive element inside it. Focus should not land on empty space or hidden element.
8
+
9
+ The Drawer's content must be read in a clear, logical order that matches how it appears on the screen. If the Drawer opens, the screen reader should not suddenly jump to the middle of it or skip important parts. Elements that are shown on the screen should always be announced, while items that are hidden or collapsed should not be read.
10
+
11
+ A Drawer should start with a clear heading that tells the user what the drawer is about. **This heading must follow the normal order of headings on the page**, but by default it is an h2. For example, if the surrounding page uses an h2, then the Drawer's title might be an h3, so the structure stays logical.
12
+
13
+ The heading should be short, direct, and visible on the screen, because **screen readers use headings to help users jump to different parts of a page**. Only one main heading is needed at the top of the Drawer, and it should not replace or repeat higher-level headings on the page. Using the correct heading level helps users understand how the Drawer fits into the rest of the content and makes navigation easier for people who rely on assistive technology.
14
+
15
+ All interactive elements inside a Drawer must expose a clear accessible name so their purpose can be correctly announced by assistive technologies. Each button, link, input, or control must be identifiable through a visible label such as aria-label or aria-labelledby.
@@ -0,0 +1,56 @@
1
+ # Drawer — API
2
+
3
+ ## `ng-template[dfDrawerHeader]` — Directive
4
+
5
+ A directive to define a template containing the header content of the drawer.
6
+
7
+ ## `ng-template[dfDrawerBody]` — Directive
8
+
9
+ A directive to define a template containing the body content of the drawer.
10
+
11
+ ## `ng-template[dfDrawerFooter]` — Directive
12
+
13
+ A directive to define a template containing the footer content of the drawer.
14
+
15
+ ## `df-drawer` — Component
16
+
17
+ _Since 21.1_
18
+
19
+ Enables users to show contextual content via a sliding panel from any screen edge. See Design Factory documentation for details and examples.
20
+
21
+ ### Inputs
22
+
23
+ | Name | Type | Default | Description |
24
+ |------|------|---------|-------------|
25
+ | backdrop | `boolean` | `true` | If true displays the backdrop element and disables the body scrolling, otherwise the body of the document is navigable |
26
+ | bodyScroll | `boolean` | `false` | If true allows body scrolling when the drawer is open. |
27
+ | className | `string` | `''` | CSS classes to be applied on the widget main container |
28
+ | closeOnBackdropClick | `boolean` | `true` | If true the drawer will be closed when clicking on the backdrop, otherwise the backdrop is static and non iteractive. |
29
+ | configuration | `DrawerConfiguration` | `'overlay'` | The display configuration of the drawer. 'overlay' (default): the drawer overlays the page content with a backdrop. 'inline': the drawer stays in the document flow and moves content as it expands/resizes. |
30
+ | container | `HTMLElement \| null` | `document.body` | Which element should contain the drawer and backdrop DOM elements. If it is not null, the drawer and backdrop DOM elements are moved to the specified container. Otherwise, they stay where the widget is located. Defaults to document.body in the browser and null on the server. |
31
+ | focusOnInit | `boolean` | `true` | If true focuses the drawer when it is opened. |
32
+ | keepInDom | `boolean` | `false` | If true, the drawer element is kept in the DOM when it is not visible. This can be useful to preserve the state of the drawer content when it is hidden. |
33
+ | position | `DfDrawerPosition` | `'inline-start'` | The position of the drawer on the screen. |
34
+ | resizable | `boolean` | `false` | If true, the drawer can be resized by the user. |
35
+ | visible | `boolean` | `false` | If true, the drawer is shown; otherwise, it is hidden. |
36
+
37
+ ### Outputs
38
+
39
+ | Name | Type | Description |
40
+ |------|------|-------------|
41
+ | maximizedChange | `boolean` | Event to be triggered when the maximized state changes. |
42
+ | maxSize | `void` | Event to be triggered when the maximum size is reached. |
43
+ | minimizedChange | `boolean` | Event to be triggered when the minimized state changes. |
44
+ | minSize | `void` | Event to be triggered when the minimum size is reached. |
45
+ | resizingChange | `boolean` | Event to be triggered when the user start or stop moving the drawer. |
46
+ | visibleChange | `boolean` | Event to be triggered when the visible property changes. |
47
+
48
+ ### Methods
49
+
50
+ #### `open(animated: boolean | undefined)` => `Promise<void>`
51
+
52
+ Trigger the opening of the drawer.
53
+
54
+ #### `close(animated: boolean | undefined)` => `Promise<void>`
55
+
56
+ Trigger the closing of the drawer.
@@ -0,0 +1,36 @@
1
+ In this default configuration, the drawer container is placed over the page content. To anchor the drawer to a different side of the screen, set `position` to one of acceptable values:
2
+
3
+ - inline-start
4
+ - inline-end
5
+ - block-start
6
+ - block-end
7
+
8
+ You can enable the resizing of the drawer by adding `resizable` to the drawer element.
9
+
10
+ ```angular-html
11
+ <df-drawer resizable> </df-drawer>
12
+ ```
13
+
14
+ Be sure to handle the drawer content responsiveness when changing the size, you might want to set the `--df-drawer-min-size` in order to limit the minimum size of the container.
15
+
16
+ ```angular-ts
17
+ encapsulation: ViewEncapsulation.None,
18
+ styles: `
19
+ .df-drawer.df-inline-start {
20
+ --df-drawer-min-size: 250px;
21
+ }`
22
+ ```
23
+
24
+ > Demo source: [docs/demos/drawer/overlay/](../../demos/drawer/overlay/)
25
+
26
+ Inline drawers are part of the document flow, so you need to handle the position by setting the `order` in your layout. See the example below for how to set this up.
27
+
28
+ ```angular-html
29
+ <df-drawer configuration="inline" [style.order]="2"> </df-drawer>
30
+
31
+ <div [style.order]="1">
32
+ <h6>Main Page Content</h6>
33
+ </div>
34
+ ```
35
+
36
+ > Demo source: [docs/demos/drawer/inline/](../../demos/drawer/inline/)
@@ -0,0 +1,9 @@
1
+ > Demo source: [docs/demos/drawer/overlay/](../../demos/drawer/overlay/)
2
+
3
+ - Add a **semi-transparent background to visually separate** the Overlay Drawer and prevent interaction with the underlying page (optional).
4
+
5
+ - **Don’t place complex or long workflows** inside an Overlay Drawer.
6
+ - **Don’t open a Drawer on top of another** because stacking Drawers creates confusion.
7
+ - **Don’t allow interaction with the page behind** the Drawer when a background is present.
8
+
9
+ > Demo source: [docs/demos/drawer/inline/](../../demos/drawer/inline/)
@@ -0,0 +1,58 @@
1
+ The Drawer is composed of the following elements:
2
+
3
+ - **Header (1)**: The top section. It usually contains a title that clearly communicates the purpose of the Drawer and an optional close button that is always visible.
4
+ - **Body (2)**: The main content area. It hosts the contextual information or interactive elements such as forms, filters, or details.
5
+ - **Resizer (3)**: Allows users to adjust the drawer's dimensions.
6
+ - **Backdrop (4)**: An optional layer that appears behind the Drawer when using an overlay configuration.
7
+ - **Footer (5)**: Placed at the bottom of the drawer and is used for primary and secondary actions, such as "Apply," "Cancel," or "Save."
8
+ - **Close button (6)**: The most explicit way for users to dismiss the drawer whenever they want.
9
+
10
+ The Overlay Drawer **appears on top of the page content** and is **anchored to one edge of the viewport**. It temporarily covers part of the main interface and **can include a semi-transparent backdrop** to keep the user's attention on the Drawer content. This variant is best for **tasks that require focus**. The Overlay Drawer has a light shadow applied to it.
11
+
12
+ - Add a **semi-transparent backdrop to visually separate** the Overlay Drawer and prevent interaction with the underlying page (optional).
13
+
14
+ - **Don't place complex or long workflows** inside an Overlay Drawer.
15
+ - **Don't open a Drawer on top of another** because stacking Drawers creates confusion.
16
+ - **Don't allow interaction with the page behind** the Drawer when a backdrop is present.
17
+
18
+ **The Inline Drawer is integrated into the page layout** rather than floating above it. When opened, **it pushes or shifts the surrounding content** to make space, so the main page remains visible and interactive. This variant is **ideal for tasks that complement the primary content**, such as showing additional details or configuration options, without isolating the user from the rest of the interface. It feels like part of the page rather than a separate layer, and **it does not use a backdrop overlay**.
19
+
20
+ - Use an Inline Drawer **when you want to keep the main content visible and allow users to interact with both** areas at the same time.
21
+ - Make sure **the Drawer feels integrated into the page layout** and does not look like a floating element.
22
+ - **Keep the Drawer width reasonable** so the main content remains usable and readable.
23
+
24
+ - **Don't add a backdrop layer** because Inline Drawers are meant to coexist with visible content.
25
+ - **Avoid stacking multiple Inline Drawers** because this creates complexity and confusion.
26
+
27
+ **Resizing gives users flexibility to adjust the Drawer's dimensions** based on their needs. This interaction is especially useful when the Drawer contains detailed content that benefits from more space.
28
+
29
+ The Drawer includes a resizer handle placed on the edge where resizing makes sense:
30
+
31
+ - **Vertical resizing for Drawers anchored at the top or bottom.**
32
+ - **Horizontal resizing for Drawers anchored on the left or right.**
33
+
34
+ Users can click and drag the handle to increase or decrease the Drawer's size. The resizing should feel smooth and responsive, with clear visual feedback during the drag action.
35
+
36
+ - **Start with an initial size that fits the content perfectly** so users do not need to resize immediately.
37
+ - **Allow resizing only within reasonable limits** to keep the layout usable.
38
+ - **Set a maximum width around 2/3 of the viewport** so the Drawer never takes over the entire screen.
39
+ - **Keep resizing smooth and responsive** with clear visual feedback during the drag action.
40
+
41
+ - **Don't make the initial size too small or too large** because users expect it to feel right for the content.
42
+
43
+ Closing the Drawer is essential for user control and a smooth experience. **Users should always have clear, predictable ways to dismiss the Drawer** without confusion or frustration.
44
+
45
+ When the content inside the Drawer exceeds the available space, **scrolling becomes necessary to maintain usability and clarity**. The scroll should be handled in a way that keeps essential elements accessible at all times.
46
+
47
+ - The body of the Drawer should support vertical scrolling when content is long.
48
+ - The header and footer remain fixed so users can always see the title and key actions while scrolling through the content.
49
+
50
+ Drawers should adapt to different screen sizes without breaking the user's sense of context. The goal is to maintain usability and clarity whether on desktop or mobile.
51
+
52
+ On desktop, the Drawer acts as **a secondary panel that slides in from one edge of the screen** without taking over the entire viewport. To maintain clarity and avoid disrupting the workflow, the Drawer should never occupy the full width (for left and right anchored Drawers) or the full height (for top and bottom anchored Drawers). It is recommended to leave at least one-third of the main content visible.
53
+
54
+ On smaller screens, the Drawer transforms into a full-screen view, **occupying the entire width and height of the viewport**. This approach ensures clarity and usability on devices where partial overlays can feel confusing. While open, the main content is hidden, and the user's focus shifts entirely to the Drawer. A clear close option is essential for easy navigation. This mobile behaviour supports the same tasks as desktop but optimizes for touch interaction and limited space.
55
+
56
+ When writing for Drawers, start by **making the header clear and descriptive** so users immediately understand the purpose, like "Filter Options" or "Edit Settings." **Keep the tone simple and direct**, avoiding jargon or vague terms. **In the body, use concise helper text only when necessary** and ensure all fields have visible labels for clarity and accessibility. **For actions, prioritize clarity**: the buttons should state exactly what they do, such as "Apply Filters" or "Save Changes," instead of generic words like "OK." Finally, **maintain consistency in tone across all elements**: friendly, professional, and focused on guiding the user through a short, contextual task without overwhelming them.
57
+
58
+ > **Tip:** For a full view on UX Writing guidelines, check the following document: [Amadeus UX Writing Style Guide](<https://amadeusworkplace.sharepoint.com/:w:/r/sites/UXCommunity_official/_layouts/15/Doc.aspx?sourcedoc=%7BB0C79089-403F-41AE-AFA3-C5BEDFCB8254%7D&file=Amadeus%20UX%20Writing%20Style%20Guide%20(Brecht%20ALGOET_Marcos%20LLORENS).docx&action=default&mobileredirect=true>)
@@ -0,0 +1,19 @@
1
+ The Drawer component is a sliding panel designed to present contextual or secondary content without disrupting the user's primary workflow. It appears from one edge of the screen and provides a space for tasks such as viewing details, filling in a form, adjusting settings, or applying filters.
2
+
3
+ - **Use Drawers for short and focused tasks** that can be completed quickly without requiring a full-page transition.
4
+ - Always **provide a clear and predictable way for users to open the Drawer** so they understand what will happen when they interact with the trigger.
5
+ - **Include a clear and descriptive title in the header** so users immediately understand the purpose of the Drawer.
6
+ - **Keep the main content visible** whenever possible so users do not lose their sense of context while working inside the Drawer.
7
+ - **Offer more than one way to dismiss the drawer**, such as a close button, clicking outside the drawer for overlays, using keyboard tab or completing an action that logically ends the task.
8
+ - **Preserve the state of the Drawer** when it is used for settings or filters so users do not lose their progress when closing and reopening it.
9
+
10
+ - **Don't open a Drawer on top of another** because stacking Drawers creates confusion.
11
+ - **Don't open a Drawer without an explicit user action** because unexpected behaviour break trust and disrupt the experience.
12
+ - **Don't close the Drawer automatically without user intent** because users should always feel in control of the interaction.
13
+ - **Don't overload the header or footer with too many actions.**
14
+
15
+ The **Drawer** is related to components that manage content visibility and context. **Cards** often display summarized information, and a **Drawer** can extend that experience by showing more details without leaving the page. **Accordion** and **Collapse** also reveal hidden content, but they do so inline, while a Drawer provides a larger, dedicated space for interaction. Compared to a **Modal**, the **Drawer** without backdrop is less disruptive because it keeps part of the main content visible, making it better for tasks that require maintaining context.
16
+
17
+ </div>
18
+
19
+ The Drawer is an effective container for filtering and sorting because it provides a dedicated space for controls without interrupting the main content.
@@ -0,0 +1,27 @@
1
+ Use semantic roles and states to ensure assistive technologies correctly interpret the Dropdown and its menu:
2
+
3
+ - The dropdown trigger must be a `button` element.
4
+ - Use `aria-controls="(id of the menu container)"` to associate the trigger with the menu.
5
+ - Use `aria-expanded="true | false"` to reflect the open or closed state of the menu.
6
+ - The menu container must use `role="listbox"`.
7
+ - Each actionable item inside the menu must use `role="option"`.
8
+ - Use `aria-live="polite"` on the menu container to announce state changes to screen reader users.
9
+
10
+ Without `aria-live`, a screen reader user focused on the trigger button may not know the menu has appeared. With `aria-live="polite"`, the screen reader announces the change immediately, keeping the user informed without requiring manual navigation. This aligns with **WCAG 4.1.3 Status Messages (AA)**.
11
+
12
+ Avoid using generic containers (`div`, `span`) without roles, as this prevents correct screen reader interpretation.
13
+
14
+ The Dropdown trigger must be fully operable using the keyboard. When users navigate through the page using **Tab**, the trigger must receive focus in the natural tab order. Activating the trigger using **Enter** or **Space** opens the dropdown menu.
15
+
16
+ Once the dropdown menu is open, keyboard navigation moves inside the menu and follows a predictable, linear pattern.
17
+
18
+ - **Arrow Up** / **Arrow Down** move focus between menu items without wrapping past the first or last item.
19
+ - **Enter** or **Space** activates the focused item and closes the menu.
20
+ - **Escape** closes the menu and returns focus to the trigger.
21
+ - **Tab** moves focus out of the menu to the next focusable element on the page, closing the menu automatically. The menu also closes whenever focus leaves the Dropdown entirely.
22
+
23
+ - The Dropdown trigger must have a clear accessible name that describes its purpose (e.g. "More actions", "Options").
24
+ - Icon‑only triggers must provide an accessible label via `aria-label` or equivalent.
25
+ - Menu items must have concise, descriptive labels that clearly communicate the action.
26
+
27
+ Do not rely on icons alone to convey meaning.