@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,85 @@
1
+ # Dropdown — API
2
+
3
+ ## `df-dropdown` — Component
4
+
5
+ _Since 22.0_
6
+
7
+ Dropdown is a component to provide a button combined to a menu with a list of options.
8
+
9
+ ### Inputs
10
+
11
+ | Name | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | container | `'body' \| null` | `null` | Which element should contain the dropdown menu DOM element. 'body': the menu is appended to document.body (useful when the toggle is inside an element that clips its content via overflow or creates a stacking context). null (default): the menu is rendered inline, where the dropdown is declared. |
14
+ | opened | `boolean` | `false` | If true, the dropdown is open. |
15
+ | placement | `string \| DfDropdownPlacement[]` | | The dropdown placement relative to its anchor. |
16
+ | size | `DfDropdownSize` | | Visual size configuration for dropdown items. |
17
+
18
+ ### Outputs
19
+
20
+ | Name | Type | Description |
21
+ |------|------|-------------|
22
+ | openedChange | `boolean` | Event emitted when the open state changes. |
23
+
24
+ ### Methods
25
+
26
+ #### `toggle(open: boolean | undefined)` => `void`
27
+
28
+ Toggles the dropdown menu visibility programmatically.
29
+
30
+ #### `open()` => `void`
31
+
32
+ Opens the dropdown menu programmatically.
33
+
34
+ #### `close()` => `void`
35
+
36
+ Closes the dropdown menu programmatically.
37
+
38
+ #### `isOpen()` => `boolean`
39
+
40
+ Get whether the dropdown menu is currently open.
41
+
42
+ ## `button[dfDropdownToggle]` — Component
43
+
44
+ _Since 22.0_
45
+
46
+ Component representing the toggle button of a dropdown, which is used to toggle the visibility of the dropdown menu.
47
+
48
+ ### Inputs
49
+
50
+ | Name | Type | Default | Description |
51
+ |------|------|---------|-------------|
52
+ | 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. |
53
+ | dfDropdownToggle | `DfDropdown` | | The dropdown instance controlled by this toggle element. Pass the referenced DfDropdown instance to connect the host button to its menu. |
54
+ | disabled | `boolean` | `false` | Disabled state for buttons and anchor buttons. |
55
+ | 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. |
56
+ | 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). |
57
+ | size | `DfButtonSize` | `'md'` | Size of the button. Ignored if the button is in a df-button-group (the group size is used instead). |
58
+ | 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). |
59
+ | variant | `DfButtonVariant` | `'primary'` | Semantic variant of the button. Forced to 'primary' if the button is in a df-button-group. |
60
+
61
+ ## `button[dfDropdownItem]` — Directive
62
+
63
+ _Since 22.0_
64
+
65
+ Directive representing a button in the dropdown menu.
66
+
67
+ ### Inputs
68
+
69
+ | Name | Type | Default | Description |
70
+ |------|------|---------|-------------|
71
+ | active | `boolean` | `false` | Whether the dropdown item is displayed in its active state. |
72
+ | disabled | `boolean` | `false` | Whether the dropdown item is disabled. |
73
+
74
+ ## `a[dfDropdownItem]` — Directive
75
+
76
+ _Since 22.0_
77
+
78
+ Directive representing a link in the dropdown menu.
79
+
80
+ ### Inputs
81
+
82
+ | Name | Type | Default | Description |
83
+ |------|------|---------|-------------|
84
+ | active | `boolean` | `false` | Whether the dropdown item is displayed in its active state. |
85
+ | disabled | `boolean` | `false` | Whether the dropdown item is disabled. |
@@ -0,0 +1,59 @@
1
+ Use `<df-dropdown>` for the menu content and connect it to a native button with `[dfDropdownToggle]`. Use
2
+ `button[dfDropdownItem]` for commands and `a[dfDropdownItem]` for navigation items.
3
+
4
+ ```angular-html
5
+ <button [dfDropdownToggle]="menu">Actions</button>
6
+ <df-dropdown #menu>
7
+ <button dfDropdownItem>Refresh</button>
8
+ <a dfDropdownItem href="/settings">Settings</a>
9
+ </df-dropdown>
10
+ ```
11
+
12
+ > Demo source: [docs/demos/dropdown/basic/](../../demos/dropdown/basic/)
13
+
14
+ The dropdown toggle uses the DF button styling inputs. Set `appearance`, `variant`, `size`, `transparent` and `mirror`
15
+ on the toggle button the same way you would for a regular button.
16
+
17
+ > Demo source: [docs/demos/dropdown/toggle/](../../demos/dropdown/toggle/)
18
+
19
+ Set `size` on both the toggle and the dropdown menu when the entire control needs to render in a different size.
20
+
21
+ > Demo source: [docs/demos/dropdown/sizes/](../../demos/dropdown/sizes/)
22
+
23
+ Pair a primary action with a dropdown of related actions by composing the toggle with
24
+ [`df-button-group`](/components/buttongroup). The toggle inherits the group `appearance`, `size` and `mirror`, so
25
+ they only need to be set once on the group.
26
+
27
+ ```angular-html
28
+ <df-button-group aria-label="Split button">
29
+ <button dfButton>Save</button>
30
+ <button [dfDropdownToggle]="menu" aria-label="More save options"></button>
31
+ </df-button-group>
32
+ <df-dropdown #menu>
33
+ <button dfDropdownItem>Save and close</button>
34
+ <button dfDropdownItem>Save as draft</button>
35
+ </df-dropdown>
36
+ ```
37
+
38
+ > Demo source: [docs/demos/dropdown/split/](../../demos/dropdown/split/)
39
+
40
+ Use `[opened]` and `(openedChange)` when the open state is owned by the parent component. Use `open()`, `close()` or
41
+ `toggle(open?: boolean)` when you need to open or close the menu programmatically.
42
+
43
+ ```angular-html
44
+ <button [dfDropdownToggle]="menu">Actions</button>
45
+ <df-dropdown #menu [opened]="opened" (openedChange)="opened = $event">...</df-dropdown>
46
+ ```
47
+
48
+ The dropdown does not apply any ARIA `role` attribute automatically. You must set the appropriate roles on the container and on each item to match your use case.
49
+
50
+ For example, use `role="listbox"` on the dropdown and `role="option"` on each item:
51
+
52
+ ```angular-html
53
+ <button [dfDropdownToggle]="menu">Choose color</button>
54
+ <df-dropdown #menu role="listbox">
55
+ <button dfDropdownItem role="option" aria-selected="true">Red</button>
56
+ <button dfDropdownItem role="option" aria-selected="false">Green</button>
57
+ <button dfDropdownItem role="option" aria-selected="false">Blue</button>
58
+ </df-dropdown>
59
+ ```
@@ -0,0 +1,80 @@
1
+ &nbsp;
2
+
3
+ **Basic variant:**
4
+
5
+ - **Icon left (1):** Is optional and adds semantic value to increase context comprehension. Different from the right icon, which helps to understand what sort of behavior will be actioned.
6
+ - **Label (2):** Describes the action category or entry point (e.g., "More actions").
7
+ - **Dropdown menu (3):** A contextual list of related actions. Items should be short, actionable, and ordered logically.
8
+
9
+ **Split variant:**
10
+
11
+ - **Main button (4):** Executes the main action directly, without requiring menu interaction.
12
+ - **Dropdown trigger (5):** A smaller, adjacent trigger that opens a menu of secondary or alternative actions related to the main action.
13
+
14
+ The Basic Dropdown is used when all actions have similar importance and none needs to be shown as a primary action.
15
+
16
+ - Use the Basic Dropdown when you need **a compact entry point to several related actions** of equal importance.
17
+ - Ensure the trigger label reflects the nature of the action(s).
18
+
19
+ - Don't place unrelated or infrequent actions together. Dropdowns are not catch-all containers.
20
+
21
+ The Split Dropdown is used when one action is clearly primary and should remain directly accessible, while secondary actions are placed in the dropdown.
22
+
23
+ - Use the Split Dropdown when **a primary action must stay visible**, with alternatives grouped under the dropdown.
24
+
25
+ - Don't place unrelated or infrequent actions together. Dropdowns are not catch-all containers.
26
+
27
+ The Dropdown with left icon enhances the trigger's recognisability by pairing the label with a meaningful icon. This visual cue helps users identify the nature of the contained actions more quickly.
28
+
29
+ - **Keep icon style consistent** with the rest of the system.
30
+ - **Prefer simple, universally recognisable icons** for faster scanning.
31
+
32
+ - **Don't add icons purely for decoration**, they must add semantic value and highlight content.
33
+ - Don't add any icons other than the one on the left.
34
+
35
+ The Icon‑only Dropdown is a compact standalone Dropdown, used in interfaces where space is limited or where adding a label would be redundant. It exposes secondary actions while keeping layouts clean and lightweight.
36
+
37
+ - Choose icons that are widely recognised and consistent across the product.
38
+ - Ensure that the icon meaning is well established and unambiguous.
39
+
40
+ - Don't cluster multiple similar icons together.
41
+ - Don't rely solely on the icon for meaning when the context is ambiguous. Use the Basic Dropdown instead.
42
+
43
+ The dropdown menu should behave in a way that feels immediate. The interactions should remain simple: opening the menu reveals a short list of contextual actions, selecting an item performs the action and closes the menu, and clicking outside dismisses it. The dropdown menu can be anchored to the trigger, either on the left or on the right.
44
+
45
+ - Keep the **menu visually anchored to its trigger** to preserve spatial consistency.
46
+ - **Use dividers or titles to separate** logical subgroups of actions.
47
+
48
+ - **Don't overload the Dropdown menu** with too many actions because long lists slow users down and increase cognitive load.
49
+ - **Don't apply complex or inconsistent sorting rules** that force users to "learn" the menu.
50
+
51
+ Use an external link to navigate users outside the current product or application, typically to documentation, support platforms, or external tools.
52
+
53
+ - Clearly indicate that the link leads to an external destination (label + icon).
54
+ - Use concise, descriptive link text that explains what the user will access.
55
+
56
+ - Don't use external links for core workflows or critical in-app actions.
57
+
58
+ In case of doubt we recommend using the medium size which is the standard size for Design Factory. When using a size, try to keep the same all across your pages.
59
+
60
+ The menu should appear exactly when the user expects it, remain visually connected to its trigger, and disappear as soon as its purpose is fulfilled.
61
+
62
+ **Opening:** The menu opens instantly when the user activates the trigger (click or tap). There should be no delay, hover dependencies, or unexpected animations.
63
+
64
+ **Positioning:** The menu stays anchored to the trigger so users immediately understand its origin and context.
65
+
66
+ **Selection:** Choosing an action immediately triggers the corresponding behavior and closes the menu.
67
+
68
+ **Closing:** Clicking or tapping outside the menu dismisses it. The menu can also be closed by clicking the element that opened it. The component should never remain open unintentionally or obstruct surrounding content.
69
+
70
+ There is no special responsive behaviour for this component.
71
+
72
+ Write labels and menu items that are clear, concise, and action‑oriented so users immediately understand what the Dropdown contains and what each action will do. Always favor wording that helps users scan quickly and decide without hesitation.
73
+
74
+ Use consistent, predictable phrasing for all actions:
75
+
76
+ - **Action labels** → start with a clear verb ("Edit", "Duplicate", "Download")
77
+ - **Categories or sections** → use short, factual nouns ("Share", "Settings")
78
+ - **Icon‑only Dropdown** → ensure tooltip text reflects the exact action category
79
+
80
+ > **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,16 @@
1
+ &nbsp;
2
+
3
+ The Dropdown is **an action component that reveals a concise set of related actions** without exposing them permanently in the interface. It relies on a trigger button that opens a contextual menu containing secondary or complementary actions, helping keep the layout clean while still providing access to relevant options.
4
+
5
+ - Use Dropdowns only **for actions that belong to the same functional group**.
6
+ - Use Dropdowns **to reduce visual noise** when secondary actions don't need constant visibility.
7
+ - **Keep Dropdown menus short and ordered logically** (frequency, alphabetical order…).
8
+
9
+ - **Don't use Dropdowns for choosing values**. You can use the [Select](/components/select) component instead.
10
+ - **Don't hide essential or high-priority actions** inside a Dropdown.
11
+ - **Don't use Dropdowns for filtering or sorting** content.
12
+ - **Don't overload Dropdowns menus** with long or complex lists.
13
+
14
+ The Dropdown is used to expose a small set of related actions that are secondary to the current context and do not need to be visible at all times. Unlike a **Button**, which represents a single, immediate call to action, or a **Button group**, which displays several related actions side by side and keeps them always visible, a Dropdown helps reduce visual clutter by revealing actions only when needed. A **Select** component, on the other hand, is used for choosing a value within a form or a selection workflow and directly affects data or state, not actions.
15
+
16
+ </div>
@@ -0,0 +1,48 @@
1
+ - WCAG guidelines for disclosure navigation menus served as a base for the ones in this page - [View WCAG Disclosure Navigation Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-navigation/)
2
+
3
+ Case : The users are focused on an element in the top bar. Then, the users focus the next element and this one is the side navigation. It will focus the first element of the side navigation.
4
+
5
+ Screen Reader should announce this region as : Side navigation with a list of “x” elements.
6
+
7
+ **Tabs** reach focusable elements.
8
+
9
+ - Tab → focus to the next focusable element
10
+ - Shift + tab → focus to the previous focusable element
11
+
12
+ **Arrow key** reach focusable elements.
13
+
14
+ Screen Readers would read each item after pusching the arrow key.
15
+
16
+ This not scrolling down the side navigation.
17
+
18
+ - down → read the next item
19
+ - up → read the previous item
20
+
21
+ - If the item is expandable, it expands it.
22
+ - If the item is collapsable, it collapses it.
23
+ - If the item is not expandable, it opens the page in the content area.
24
+ - On expand/colapse icon button it activates the action of the button.
25
+
26
+ Use case: Expand an expandable item. The users focus [L1] Item 2. Then push "enter" or "space bar" keys, it expand the list. The focus stays on [L1] Item 2.
27
+
28
+ Use case: Enter or Space bar will visit the content of the item selected : Level 1 or lower level, here an example with level 2.
29
+ The focus will go on next focusable element of the content.
30
+
31
+ Use case: Enter or Space bar will visit the content of the item selected : Level 1 or lower level, here an example with level 2.
32
+ The focus will go on next focusable element of the content.
33
+
34
+ Screen Readers should read:<br>
35
+ [type of the element], [text of the element], [state of the element]
36
+
37
+ 1. read: input search
38
+ 2. read: Button aria-label, [L1] Item, current page
39
+ 3. read: Button aria-label, [L1] Item, expanded
40
+ 4. read: Button aria-label, [L2] Item, visit the page
41
+ 5. read: Button aria-label, [L2] Item, visit the page
42
+ 6. read: Button aria-label, [L1] Item, collapsed
43
+ 7. read: Button aria-label, collapse the side navigation
44
+ 8. read: Button aria-label, resize the side navigation
45
+
46
+ Screen Reader should announce this region as : Side navigation with a list of “x” elements
47
+
48
+ For users who zoom up to 300%, apply the responsivness behaviour of the component.
@@ -0,0 +1,110 @@
1
+ # SideNav — API
2
+
3
+ ## `df-sidenav` — Component
4
+
5
+ _Since 21.0.0_
6
+
7
+ SideNav is a component to provide navigation feature with a panel on the side of your page
8
+
9
+ ### Inputs
10
+
11
+ | Name | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | collapsible | `boolean` | `true` | Flag whether the sidenav should have the collapse button |
14
+ | disableInitialDesktopAutoScroll | `boolean` | `false` | Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized. |
15
+ | enableMobile | `boolean` | `true` | Flag to enable the mobile sidenav display of the items. |
16
+ | resizable | `boolean` | `true` | Flag whether the sidenav should be resizable |
17
+ | searchable | `boolean` | `true` | Flag whether the sidenav includes a search input |
18
+
19
+ ### Properties
20
+
21
+ | Name | Type | Description |
22
+ |------|------|-------------|
23
+ | isMinimized | `Signal<boolean>` | Flag to indicate if the sidenav is minimized |
24
+
25
+ ### Methods
26
+
27
+ #### `toggleMinimize(minimized: boolean)` => `void`
28
+
29
+ Toggles the minimized state of the sidenav
30
+
31
+ #### `visibleChangeHandler(isVisible: boolean)` => `void`
32
+
33
+ Handles visibility changes of the sidenav component to handle the component state accordingly.
34
+
35
+ #### `resizingChangeHandler(isResizing: boolean)` => `void`
36
+
37
+ Handles changes when the sidenav is resized, to handle the state accordingly.
38
+
39
+ #### `navigateToChildren(itemRef: DfSidenavItemComponent | null | undefined)` => `void`
40
+
41
+ Method to add the given item to the mobile navigation stack
42
+
43
+ #### `navigateBack()` => `void`
44
+
45
+ Method to navigate back in the mobile navigation stack
46
+
47
+ ## `df-sidenav-input` — Component
48
+
49
+ _Since 22.0_
50
+
51
+ A wrapper of the DfSidenavComponent driven by a data array provided as an input. All inputs are forwarded to the underlying DfSidenavComponent.
52
+
53
+ ### Inputs
54
+
55
+ | Name | Type | Default | Description |
56
+ |------|------|---------|-------------|
57
+ | className | `string` | `''` | Class name applied to the underlying DfSidenavComponent host element. |
58
+ | collapsible | `boolean` | `true` | Flag whether the sidenav should have the collapse button. |
59
+ | disableInitialDesktopAutoScroll | `boolean` | `false` | Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized. |
60
+ | enableMobile | `boolean` | `true` | Flag to enable the mobile sidenav display of the items. |
61
+ | items | `DfSideNavInputNode[]` | `[]` | Navigation items to render in the sidenav. |
62
+ | resizable | `boolean` | `false` | Flag whether the sidenav should be resizable. |
63
+ | searchable | `boolean` | `false` | Flag whether the sidenav includes a search input. |
64
+
65
+ ### Properties
66
+
67
+ | Name | Type | Description |
68
+ |------|------|-------------|
69
+ | isMinimized | `Signal<boolean>` | Whether the sidenav is currently minimized. |
70
+
71
+ ### Methods
72
+
73
+ #### `toggleMinimize(minimized: boolean | undefined)` => `void`
74
+
75
+ Toggle or set the minimized state of the sidenav.
76
+
77
+ ## `[dfSidenavIcon]` — Directive
78
+
79
+ _Since 21.0.0_
80
+
81
+ Utility directive for marking icon content in sidenav items and links. Needed for identification of the projected icon content. Use in case if there is no icon provided with font-awesome.
82
+
83
+ ## `df-sidenav-link` — Component
84
+
85
+ _Since 21.0.0_
86
+
87
+ Sidenav link that can be used inside or directly inside the
88
+
89
+ ### Inputs
90
+
91
+ | Name | Type | Default | Description |
92
+ |------|------|---------|-------------|
93
+ | active | `boolean` | | Explicitly sets the active state of the link. When provided, the link renders as a plain <a href> (no Angular Router). When undefined (default), the Angular Router determines the active state. |
94
+ | icon | `string` | `''` | The icon class name or inline content (e.g., font awesome class) |
95
+ | label | `string` | | The label of the link |
96
+ | linkPath | `string` | | The router link path for to the link |
97
+ | routerLinkActiveOptions | `IsActiveMatchOptions \| { exact: boolean }` | `{ exact: false }` | Options to determine when the router link is considered active |
98
+
99
+ ## `df-sidenav-item` — Component
100
+
101
+ _Since 21.0.0_
102
+
103
+ Sidenav element that should be nested inside or
104
+
105
+ ### Inputs
106
+
107
+ | Name | Type | Default | Description |
108
+ |------|------|---------|-------------|
109
+ | icon | `string` | `''` | Optional icon class for the sidenav item |
110
+ | label | `unknown` | | Label of the sidenav item |
@@ -0,0 +1,14 @@
1
+ > **Tip:** Open them in a new tab with the button **Open in new tab** to observe the layout on different screen breakpoints. If you toggle `Device toolbar` in the **Developer Tools** and refresh the page the Sidenav will use the mobile layout.
2
+
3
+ SideNav should be used together with [TopNav](/components/topnav/overview) as a part of the [Navigation Pattern](/patterns/navigation-pattern/overview).
4
+
5
+ SideNav has two main elements:
6
+
7
+ - [SidenavItemComponent](https://github.com/Amadeus-xDLC/design-factory.design-system/blob/main/projects/angular/components/sidenav/sidenav-item/sidenav-item.component.ts) - should be nested inside the SideNav and is a container for the Links
8
+ - [SidenavLinkComponent](https://github.com/Amadeus-xDLC/design-factory.design-system/blob/main/projects/angular/components/sidenav/sidenav-link/sidenav-link.component.ts) - should be nested inside the SideNav and is a leaf component that handles navigation
9
+
10
+ Both of these elements can contain icon, although it is allowed only on the root level (not nested). When collapsed the presense of the icon impacts the display by showing only respecive icon and having a bigger width. Below you can observe examples with and without icons respectively.
11
+
12
+ > Demo source: [docs/demos/sidenav/sidenav-basic-with-icon/](../../demos/sidenav/sidenav-basic-with-icon/)
13
+
14
+ > Demo source: [docs/demos/sidenav/sidenav-basic-no-icon/](../../demos/sidenav/sidenav-basic-no-icon/)
@@ -0,0 +1,83 @@
1
+ The SideNav comes in two variants: **expanded** (default) and **collapsed** (optional).
2
+ Each variant is structured around three main areas:
3
+
4
+ - **Header (1)** _(optional)_: Can include a CTA button or a search field to filter the menu.
5
+ - **Content (2)**: Main area containing the navigation tree. It includes two types of items:
6
+ - **Pages** → Open a page
7
+ - **Folders** → Group pages or sub-folders without loading a page
8
+ - **Expand/Collapse trigger (3)** _(optional)_: Switches between two predefined widths of the SideNav.
9
+
10
+ The SideNav supports different configurations depending on the level of complexity or guidance needed.
11
+ The expanded variant remains the default, offering clearer structure and easier scanning, while the collapsed variant is optional and best suited for experienced users.
12
+ The following Do/Don't guidelines help ensure a consistent and efficient navigation experience.
13
+
14
+ - Mix the use of pages and folders in the navigation, allowing for a parent item to contain both sub-pages and sub-folders, enabling more adaptability to the user needs.
15
+ - Do restrict the use of icons to the first level for a distinct and meaningful navigation.
16
+
17
+ - Don't use the SideNav in it's collapsed variant only. The default variant is the expanded one, which allows for a richer experience and faster understanding of the navigation. Collapse variant only works once the user is used to the Navigation of the UI and doesn't require as much information.
18
+ - An item containing sub-pages, should be a folder, and therefore not have content of its own. This way the menu is simplified, and when clicking on an item only one action is possible avoiding confusion (folder will expand it's content on the sideNav; pages will load its content on the right).
19
+ - Don't have more than three levels of navigation in the SideNav, allowing for a flatter structure, which supports faster scanning and better information visibility.
20
+
21
+ > **Info:** Previous version had a white background, however we have decided to go for a light blue background for the revamp of the SideNav. White version is still available but keep in mind that it should be used when there is no other solution. **Brand compliance & enforcement**: using only blue reinforces the Amadeus brand and theme, whereas the a white version could end up looking more like a white label type of component, or dilute the identity by having too many options. **Differentiation**: using a blue tint, allows for the Navigation to pop from the rest of the content, but at the same time, having the option to collapse the Navigation, we can keep the Navigation hidden and non obstructive. For more information on the subject, please check the Navigation pattern.
22
+
23
+ SideNav is part of the Navigation pattern proposed by Amadeus, and is always combined with the TopNav. However, TopNav may be used standalone, without the need of a SideNav.
24
+
25
+ Navigations levels can be split between the TopNav and the SideNav: having the 1st level at the TopNav, and levels 2 to 4 on the SideNav. Or relying solely on the SideNav for the Navigation, allowing to have up to three levels. If additional levels are required, other components are to be used in combination, such as Scrollspy.
26
+
27
+ Within the SideNav, items display different states depending on the current page and the user’s actions.
28
+ The example below highlights the main states you will encounter.
29
+
30
+ Visible states in the image:
31
+
32
+ - Active (No active level) **(1)** **(2)**
33
+ - Active (Active level) **(3)**
34
+ - Default (page) **(4)**
35
+ - Default (folder) **(5)**
36
+
37
+ The SideNav includes several interactions to support smooth navigation: expanding or collapsing the component, opening or closing rows, showing tooltips for long names, and loading the selected page. These behaviours follow the same motion and feedback principles used across DF components.
38
+
39
+ Clicking the expand/collapse button triggers the animation: the button flips horizontally and the SideNav grows or shrinks.
40
+ On large screens, the overlay on the right disappears when expanded, and the content adjusts to the new available width.
41
+
42
+ During expansion:
43
+
44
+ - The SideNav widens to the right.
45
+ - CTA buttons and search inputs keep their position and grow horizontally.
46
+ - Items appear progressively (icons first, then text). Parent folders open automatically to reveal the active page.
47
+ - An overlay briefly covers the page content while resizing.
48
+
49
+ During collapse:
50
+
51
+ - All open sections close before shrinking.
52
+ - The SideNav contracts to the left until only icons remain (or nothing when no icons are used).
53
+ - CTA and search inputs reduce to icon buttons.
54
+ - The overlay fades out as the SideNav shrinks.
55
+
56
+ Selecting a row with children rotates the chevron upward while revealing the nested items.
57
+ Closing the row rotates the chevron downward and collapses the sub-items back under their parent.
58
+
59
+ If a label is too long, it shows an ellipsis. Hovering displays a tooltip with the full name, aligned to the row and positioned on its right.
60
+
61
+ Clicking a page item loads its content on the right. No additional animation is required for this action.
62
+
63
+ There are two flavours to the SideNav, one adapted to most screens, present in Figma under the name SideNav v2, and another one more adapted to smaller screens, present in Figma under the name SideNav_mobile v2.
64
+
65
+ SideNav_mobile has some variation compared to the regular size that we have seen throughout this guide: the collapse/expand button is fused into the top bar, and replaced by a hamburger menu. Additionally some items from the TopNav may appear in the SideNav.
66
+
67
+ **To test the mobile experience, open your browser’s developer tools and activate mobile view instead of only adjusting the window size.**
68
+
69
+ > **Info:** For more details, on this flavour, please wait for the review of the new TopNav component, and navigation patterns.
70
+
71
+ When there is a lot of elements on the side nav, a scroll option becomes available to be able to see the whole content. This is specially relevant when the height of the viewport isn't very large.
72
+
73
+ The bottom of the SideNav containing the collapse/expand trigger is on a layer above the rest of the items of the SideNav, meaning items scroll underneath it. Additionally a small shadow appears in those cases, to show there is additional content, and scroll is needed to view the whole thing.
74
+
75
+ > **Warning:** We advise against having too many items on the SideNav (for example more than 10 items at the same level), if this is your case, you might need to review the Information Architecture of your whole ecosystem.
76
+
77
+ The possible CTA button, Search bar and Expand/Collapse trigger work as regular Button or Icon button with their corresponding states.
78
+
79
+ Items on the SideNav should contain meaningful names, allowing user to easily and uniquely identify the different parts of your UI.
80
+
81
+ We recommend using names with a maximum of 24 characters, to ensure the whole text is visible at a glance on the default size of the SideNav, even on items on Level 3 with smaller width space.
82
+
83
+ > **Tip:** For a full view on UX Writing guidelines, check the following document: [Amadeus UX Writing Style Guide (Brecht ALGOET_Marcos LLORENS).docx](<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,16 @@
1
+ Use a SideNav when your application or website requires persistent, structured access to multiple sections or features. It is especially effective in layouts with complex hierarchies, dashboards, or tools where users need to switch contexts frequently without losing their place. Sidenavs help maintain orientation and reduce cognitive load by keeping navigation visible and consistent.
2
+
3
+ - Use the SideNav when three or more levels navigation are required.
4
+ - Use the SideNav when the user has to switch between pages of the UI with frequency.
5
+ - Use the SideNav on the left, for left to right UIs, and use it on the right on right to left UIs.
6
+
7
+ - Don't use the SideNav for simple UI with a limited information architecture. In such cases it is better to rely solely on the TopNav.
8
+ - Don't use the SideNav standalone, always combine it with a TopNav (at least a basic one with only the logo).
9
+
10
+ SideNav is part of the Navigation pattern proposed by Amadeus, and is always combined with the TopNav. However, TopNav may be used standalone, without the need of a SideNav.
11
+
12
+ Navigations levels can be split between the TopNav and the SideNav: having the 1st level at the TopNav, and levels 2 to 4 on the SideNav. Or relying solely on the SideNav for the Navigation, allowing to have up to three levels. If additional levels are required, other components are to be used in combination, such as Scrollspy.
13
+
14
+ > **Info:** Not sure which component to use? Check the [Navigation pattern](/patterns/navigation-pattern) for more in depth details.
15
+
16
+ </div>
@@ -0,0 +1,11 @@
1
+ - Tooltips appear when the trigger element receives keyboard focus
2
+ - Tooltips themselves are not focusable
3
+ - Pressing Esc dismisses the tooltip
4
+ - Keyboard navigation is never trapped by the tooltip
5
+
6
+ - Tooltip content is announced by screen readers when the trigger receives focus
7
+ - Screen readers read the trigger first, followed by the tooltip content
8
+
9
+ Tooltips must not contain information required to understand or operate the interface.
10
+
11
+ The tooltip text is associated with the trigger using aria-describedby.
@@ -0,0 +1,39 @@
1
+ # Tooltip — API
2
+
3
+ ## `[dfTooltip]` — Directive
4
+
5
+ _Since 22.0_
6
+
7
+ A directive that attaches a tooltip to its host element. The tooltip is shown when the host element is hovered, receives keyboard focus or long press, and hidden when the mouse leaves, the element loses keyboard focus, or the user presses Escape. The tooltip window is rendered in document.body and positioned next to the host using the configured placement preference.
8
+
9
+ ### Inputs
10
+
11
+ | Name | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | dfTooltip | `string \| null \| undefined` | | Text content to be displayed inside the tooltip. |
14
+ | dfTooltipAnimated | `boolean \| undefined` | | Whether showing or hiding the tooltip should be animated. |
15
+ | dfTooltipDisabled | `boolean \| undefined` | | Whether the tooltip is disabled. When true, the tooltip will not be displayed, even if the reference element is focused, hovered or long-pressed. |
16
+ | dfTooltipPlacement | `DfTooltipPlacementArray \| undefined` | | List of placements, in order of preference. The first valid placement will be used. |
17
+ | dfTooltipSize | `DfTooltipSize \| undefined` | | Size of the tooltip. |
18
+
19
+ ## DfTooltipConfig — Configuration
20
+
21
+ _Since 22.0_
22
+
23
+ Configuration options supported by provideDfTooltipConfig. These defaults apply to every DfTooltip instance within the providing injector, unless explicitly overridden on the directive itself.
24
+
25
+ ### Properties
26
+
27
+ | Name | Type | Description |
28
+ |------|------|-------------|
29
+ | animated | `boolean` | Whether showing or hiding the tooltip should be animated. |
30
+
31
+ ### Methods
32
+
33
+ #### `provideDfTooltipConfig(config: Partial<DfTooltipConfig> | ((prevConfig: Partial<DfTooltipConfig>) => Partial<DfTooltipConfig>) | undefined)` => `FactoryProvider`
34
+
35
+ Provides the configuration for the tooltip component.
36
+
37
+ #### `injectDfTooltipConfig()` => `WritableSignal<Partial<DfTooltipConfig>>`
38
+
39
+ Injects the configuration for the tooltip component.
@@ -0,0 +1,16 @@
1
+ Add the `dfTooltip` directive to a focusable element and pass the tooltip content as its value.
2
+
3
+ > Demo source: [docs/demos/tooltip/basic/](../../demos/tooltip/basic/)
4
+
5
+ Use the `dfTooltipSize` input to adjust the tooltip size. Supported values are `'sm'`, `'md'` (default) and `'lg'`.
6
+
7
+ > Demo source: [docs/demos/tooltip/sizes/](../../demos/tooltip/sizes/)
8
+
9
+ It is recommended to use the default auto-placement behavior. This ensures that the tooltip is always visible and doesn't get cut off.
10
+ If you need to specify preferred placements, use the `dfTooltipPlacement` input to control where the tooltip appears relative to its reference element.
11
+ Pass either a space-separated list or an array of placements, ordered by preference. The first placement that fits the viewport will be used.
12
+
13
+ Prefer the `'auto'`, `'vertical'` and `'horizontal'` shortcuts so the positioning system can automatically adapt to the available
14
+ space. The `'start'` and `'end'` placements are direction-aware and automatically flip for right-to-left layouts.
15
+
16
+ > Demo source: [docs/demos/tooltip/placements/](../../demos/tooltip/placements/)