@design-system-rte/angular 0.2.2 → 0.4.2

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 (568) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +8 -18
  4. package/src/lib/components/button/button.component.html +10 -0
  5. package/src/lib/components/button/button.component.scss +154 -0
  6. package/src/lib/components/button/button.component.spec.ts +22 -0
  7. package/src/lib/components/button/button.component.stories.ts +99 -0
  8. package/src/lib/components/button/button.component.ts +28 -0
  9. package/src/lib/components/checkbox/checkbox.component.html +31 -0
  10. package/src/lib/components/checkbox/checkbox.component.scss +176 -0
  11. package/src/lib/components/checkbox/checkbox.component.stories.ts +126 -0
  12. package/src/lib/components/checkbox/checkbox.component.ts +34 -0
  13. package/src/lib/components/checkbox-group/checkbox-group.component.html +46 -0
  14. package/src/lib/components/checkbox-group/checkbox-group.component.scss +82 -0
  15. package/src/lib/components/checkbox-group/checkbox-group.component.stories.ts +121 -0
  16. package/src/lib/components/checkbox-group/checkbox-group.component.ts +28 -0
  17. package/src/lib/components/grid/col/col.directive.ts +35 -0
  18. package/src/lib/components/grid/grid.directive.stories.ts +150 -0
  19. package/src/lib/components/grid/grid.directive.ts +22 -0
  20. package/src/lib/components/icon/icon-map.ts +305 -0
  21. package/src/lib/components/icon/icon.component.html +1 -0
  22. package/src/lib/components/icon/icon.component.scss +3 -0
  23. package/src/lib/components/icon/icon.component.ts +58 -0
  24. package/src/lib/components/icon/icon.service.ts +33 -0
  25. package/src/lib/components/icon/icon.stories.ts +84 -0
  26. package/src/lib/components/icon-button/icon-button.component.html +16 -0
  27. package/src/lib/components/icon-button/icon-button.component.scss +165 -0
  28. package/src/lib/components/icon-button/icon-button.component.ts +40 -0
  29. package/src/lib/components/icon-button/icon-button.stories.ts +200 -0
  30. package/src/lib/components/icon-button-toggle/icon-button-toggle.component.html +12 -0
  31. package/src/lib/components/icon-button-toggle/icon-button-toggle.component.ts +36 -0
  32. package/src/lib/components/icon-button-toggle/icon-button-toggle.stories.ts +197 -0
  33. package/src/lib/components/link/link.component.html +6 -0
  34. package/src/lib/components/link/link.component.scss +108 -0
  35. package/src/lib/components/link/link.component.stories.ts +61 -0
  36. package/src/lib/components/link/link.component.ts +18 -0
  37. package/src/lib/components/radio-button/radio-button.component.html +24 -0
  38. package/src/lib/components/radio-button/radio-button.component.scss +135 -0
  39. package/src/lib/components/radio-button/radio-button.component.stories.ts +76 -0
  40. package/src/lib/components/radio-button/radio-button.component.ts +22 -0
  41. package/src/lib/components/radio-button-group/radio-button-group.component.html +45 -0
  42. package/src/lib/components/radio-button-group/radio-button-group.component.scss +82 -0
  43. package/src/lib/components/radio-button-group/radio-button-group.component.stories.ts +121 -0
  44. package/src/lib/components/radio-button-group/radio-button-group.component.ts +28 -0
  45. package/src/lib/components/split-button/split-button.component.html +56 -0
  46. package/src/lib/components/split-button/split-button.component.scss +288 -0
  47. package/src/lib/components/split-button/split-button.component.stories.ts +227 -0
  48. package/src/lib/components/split-button/split-button.component.ts +55 -0
  49. package/src/lib/components/tooltip/tooltip.component.html +7 -0
  50. package/src/lib/components/tooltip/tooltip.component.scss +116 -0
  51. package/src/lib/components/tooltip/tooltip.component.ts +16 -0
  52. package/src/lib/components/tooltip/tooltip.directive.stories.ts +218 -0
  53. package/src/lib/components/tooltip/tooltip.directive.ts +187 -0
  54. package/{public-api.d.ts → src/public-api.ts} +0 -1
  55. package/tsconfig.lib.json +20 -0
  56. package/tsconfig.lib.prod.json +10 -0
  57. package/tsconfig.spec.json +14 -0
  58. package/design-system-rte-angular.d.ts.map +0 -1
  59. package/esm2022/design-system-rte-angular.mjs +0 -5
  60. package/esm2022/lib/components/button/button.component.mjs +0 -26
  61. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -35
  62. package/esm2022/lib/components/checkbox-group/checkbox-group.component.mjs +0 -29
  63. package/esm2022/lib/components/grid/col/col.directive.mjs +0 -41
  64. package/esm2022/lib/components/grid/grid.directive.mjs +0 -30
  65. package/esm2022/lib/components/icon/icon-map.mjs +0 -301
  66. package/esm2022/lib/components/icon/icon.component.mjs +0 -39
  67. package/esm2022/lib/components/icon/icon.service.mjs +0 -33
  68. package/esm2022/lib/components/link/link.component.mjs +0 -20
  69. package/esm2022/lib/components/radio-button/radio-button.component.mjs +0 -24
  70. package/esm2022/lib/components/radio-button-group/radio-button-group.component.mjs +0 -29
  71. package/esm2022/public-api.mjs +0 -10
  72. package/fesm2022/design-system-rte-angular.mjs +0 -581
  73. package/fesm2022/design-system-rte-angular.mjs.map +0 -1
  74. package/index.d.ts +0 -6
  75. package/lib/assets/icons/add.svg +0 -3
  76. package/lib/assets/icons/add_circle_filled.svg +0 -3
  77. package/lib/assets/icons/add_circle_outlined.svg +0 -3
  78. package/lib/assets/icons/admin_panel_settings_filled.svg +0 -3
  79. package/lib/assets/icons/admin_panel_settings_outlined.svg +0 -3
  80. package/lib/assets/icons/alt_route.svg +0 -3
  81. package/lib/assets/icons/analytics_filled.svg +0 -3
  82. package/lib/assets/icons/analytics_outlined.svg +0 -3
  83. package/lib/assets/icons/apps.svg +0 -3
  84. package/lib/assets/icons/archive_filled.svg +0 -3
  85. package/lib/assets/icons/archive_outlined.svg +0 -3
  86. package/lib/assets/icons/arrow_alt_down.svg +0 -3
  87. package/lib/assets/icons/arrow_alt_down_left.svg +0 -3
  88. package/lib/assets/icons/arrow_alt_down_right.svg +0 -3
  89. package/lib/assets/icons/arrow_alt_left.svg +0 -3
  90. package/lib/assets/icons/arrow_alt_right.svg +0 -3
  91. package/lib/assets/icons/arrow_alt_up.svg +0 -3
  92. package/lib/assets/icons/arrow_alt_up_left.svg +0 -3
  93. package/lib/assets/icons/arrow_alt_up_right.svg +0 -3
  94. package/lib/assets/icons/arrow_angle_down_left.svg +0 -3
  95. package/lib/assets/icons/arrow_angle_down_right.svg +0 -3
  96. package/lib/assets/icons/arrow_angle_up_left.svg +0 -3
  97. package/lib/assets/icons/arrow_angle_up_right.svg +0 -3
  98. package/lib/assets/icons/arrow_chevron_down.svg +0 -3
  99. package/lib/assets/icons/arrow_chevron_left.svg +0 -3
  100. package/lib/assets/icons/arrow_chevron_right.svg +0 -3
  101. package/lib/assets/icons/arrow_chevron_up.svg +0 -3
  102. package/lib/assets/icons/arrow_circle_chevron_down_filled.svg +0 -3
  103. package/lib/assets/icons/arrow_circle_chevron_down_outlined.svg +0 -3
  104. package/lib/assets/icons/arrow_circle_chevron_left_filled.svg +0 -3
  105. package/lib/assets/icons/arrow_circle_chevron_left_outlined.svg +0 -3
  106. package/lib/assets/icons/arrow_circle_chevron_right_filled.svg +0 -3
  107. package/lib/assets/icons/arrow_circle_chevron_right_outlined.svg +0 -3
  108. package/lib/assets/icons/arrow_circle_chevron_up_filled.svg +0 -3
  109. package/lib/assets/icons/arrow_circle_chevron_up_outlined.svg +0 -3
  110. package/lib/assets/icons/arrow_circle_down_filled.svg +0 -3
  111. package/lib/assets/icons/arrow_circle_down_outlined.svg +0 -3
  112. package/lib/assets/icons/arrow_circle_left_filled.svg +0 -3
  113. package/lib/assets/icons/arrow_circle_left_outlined.svg +0 -3
  114. package/lib/assets/icons/arrow_circle_right_filled.svg +0 -3
  115. package/lib/assets/icons/arrow_circle_right_outlined.svg +0 -3
  116. package/lib/assets/icons/arrow_circle_up_filled.svg +0 -3
  117. package/lib/assets/icons/arrow_circle_up_outlined.svg +0 -3
  118. package/lib/assets/icons/arrow_double_down.svg +0 -3
  119. package/lib/assets/icons/arrow_double_left.svg +0 -3
  120. package/lib/assets/icons/arrow_double_right.svg +0 -3
  121. package/lib/assets/icons/arrow_double_up.svg +0 -3
  122. package/lib/assets/icons/arrow_down.svg +0 -3
  123. package/lib/assets/icons/arrow_down_left.svg +0 -3
  124. package/lib/assets/icons/arrow_down_right.svg +0 -3
  125. package/lib/assets/icons/arrow_drop_down.svg +0 -3
  126. package/lib/assets/icons/arrow_drop_up.svg +0 -3
  127. package/lib/assets/icons/arrow_left.svg +0 -3
  128. package/lib/assets/icons/arrow_right.svg +0 -3
  129. package/lib/assets/icons/arrow_up.svg +0 -3
  130. package/lib/assets/icons/arrow_up_left.svg +0 -3
  131. package/lib/assets/icons/arrow_up_right.svg +0 -3
  132. package/lib/assets/icons/article_filled.svg +0 -3
  133. package/lib/assets/icons/article_outlined.svg +0 -3
  134. package/lib/assets/icons/assignment_complete_filled.svg +0 -3
  135. package/lib/assets/icons/assignment_complete_outlined.svg +0 -3
  136. package/lib/assets/icons/assignment_filled.svg +0 -3
  137. package/lib/assets/icons/assignment_outlined.svg +0 -3
  138. package/lib/assets/icons/asterisk.svg +0 -3
  139. package/lib/assets/icons/attach_file.svg +0 -3
  140. package/lib/assets/icons/battery_alert_filled.svg +0 -3
  141. package/lib/assets/icons/battery_alert_outlined.svg +0 -3
  142. package/lib/assets/icons/battery_alt_empty.svg +0 -3
  143. package/lib/assets/icons/battery_alt_full.svg +0 -3
  144. package/lib/assets/icons/battery_charging.svg +0 -3
  145. package/lib/assets/icons/battery_charging_full_filled.svg +0 -3
  146. package/lib/assets/icons/battery_charging_full_outlined.svg +0 -3
  147. package/lib/assets/icons/battery_empty.svg +0 -3
  148. package/lib/assets/icons/battery_full.svg +0 -3
  149. package/lib/assets/icons/bluetooth.svg +0 -3
  150. package/lib/assets/icons/bluetooth_off.svg +0 -3
  151. package/lib/assets/icons/bolt_alt_circle_filled.svg +0 -3
  152. package/lib/assets/icons/bolt_alt_circle_outlined.svg +0 -3
  153. package/lib/assets/icons/bolt_alt_filled.svg +0 -3
  154. package/lib/assets/icons/bolt_alt_outlined.svg +0 -3
  155. package/lib/assets/icons/bolt_circle_filled.svg +0 -3
  156. package/lib/assets/icons/bolt_circle_outlined.svg +0 -3
  157. package/lib/assets/icons/bolt_filled.svg +0 -3
  158. package/lib/assets/icons/bolt_outlined.svg +0 -3
  159. package/lib/assets/icons/bookmark_filled.svg +0 -3
  160. package/lib/assets/icons/bookmark_outlined.svg +0 -3
  161. package/lib/assets/icons/bookmarks_filled.svg +0 -3
  162. package/lib/assets/icons/bookmarks_outlined.svg +0 -3
  163. package/lib/assets/icons/build_filled.svg +0 -3
  164. package/lib/assets/icons/build_outlined.svg +0 -3
  165. package/lib/assets/icons/calendar_available_filled.svg +0 -3
  166. package/lib/assets/icons/calendar_available_outlined.svg +0 -3
  167. package/lib/assets/icons/calendar_busy_filled.svg +0 -3
  168. package/lib/assets/icons/calendar_busy_outlined.svg +0 -3
  169. package/lib/assets/icons/calendar_month_filled.svg +0 -3
  170. package/lib/assets/icons/calendar_month_outlined.svg +0 -3
  171. package/lib/assets/icons/calendar_today_filled.svg +0 -3
  172. package/lib/assets/icons/calendar_today_outlined.svg +0 -3
  173. package/lib/assets/icons/call_filled.svg +0 -3
  174. package/lib/assets/icons/call_outlined.svg +0 -3
  175. package/lib/assets/icons/category_filled.svg +0 -3
  176. package/lib/assets/icons/category_outlined.svg +0 -3
  177. package/lib/assets/icons/chart_add_filled.svg +0 -3
  178. package/lib/assets/icons/chart_add_outlined.svg +0 -3
  179. package/lib/assets/icons/chart_area_filled.svg +0 -3
  180. package/lib/assets/icons/chart_area_outlined.svg +0 -3
  181. package/lib/assets/icons/chart_bar.svg +0 -3
  182. package/lib/assets/icons/chart_bar_stacked.svg +0 -3
  183. package/lib/assets/icons/chart_pie_filled.svg +0 -3
  184. package/lib/assets/icons/chart_pie_outlined.svg +0 -3
  185. package/lib/assets/icons/chart_table_filled.svg +0 -3
  186. package/lib/assets/icons/chart_table_outlined.svg +0 -3
  187. package/lib/assets/icons/chat_alt_filled.svg +0 -3
  188. package/lib/assets/icons/chat_alt_outlined.svg +0 -3
  189. package/lib/assets/icons/chat_alt_unread_filled.svg +0 -3
  190. package/lib/assets/icons/chat_alt_unread_outlined.svg +0 -3
  191. package/lib/assets/icons/chat_filled.svg +0 -3
  192. package/lib/assets/icons/chat_outlined.svg +0 -3
  193. package/lib/assets/icons/chat_unread_filled.svg +0 -3
  194. package/lib/assets/icons/chat_unread_outlined.svg +0 -3
  195. package/lib/assets/icons/check.svg +0 -3
  196. package/lib/assets/icons/check_circle_filled.svg +0 -3
  197. package/lib/assets/icons/check_circle_outlined.svg +0 -3
  198. package/lib/assets/icons/check_indeterminate.svg +0 -3
  199. package/lib/assets/icons/check_small.svg +0 -3
  200. package/lib/assets/icons/checkbox_empty.svg +0 -3
  201. package/lib/assets/icons/checkbox_filled.svg +0 -3
  202. package/lib/assets/icons/checkbox_indeterminate_filled.svg +0 -3
  203. package/lib/assets/icons/checkbox_indeterminate_outlined.svg +0 -3
  204. package/lib/assets/icons/checkbox_outlined.svg +0 -3
  205. package/lib/assets/icons/clock_filled.svg +0 -3
  206. package/lib/assets/icons/clock_outlined.svg +0 -3
  207. package/lib/assets/icons/close.svg +0 -3
  208. package/lib/assets/icons/cloud_download_filled.svg +0 -3
  209. package/lib/assets/icons/cloud_download_outlined.svg +0 -3
  210. package/lib/assets/icons/cloud_filled.svg +0 -3
  211. package/lib/assets/icons/cloud_off_filled.svg +0 -3
  212. package/lib/assets/icons/cloud_off_outlined.svg +0 -3
  213. package/lib/assets/icons/cloud_outlined.svg +0 -3
  214. package/lib/assets/icons/cloud_upload_filled.svg +0 -3
  215. package/lib/assets/icons/cloud_upload_outlined.svg +0 -3
  216. package/lib/assets/icons/comment_add_filled.svg +0 -3
  217. package/lib/assets/icons/comment_add_outlined.svg +0 -3
  218. package/lib/assets/icons/comment_filled.svg +0 -3
  219. package/lib/assets/icons/comment_outlined.svg +0 -3
  220. package/lib/assets/icons/compare.svg +0 -3
  221. package/lib/assets/icons/copy_all.svg +0 -3
  222. package/lib/assets/icons/copy_filled.svg +0 -3
  223. package/lib/assets/icons/copy_outlined.svg +0 -3
  224. package/lib/assets/icons/crisis_alert.svg +0 -3
  225. package/lib/assets/icons/cut.svg +0 -3
  226. package/lib/assets/icons/dangerous_filled.svg +0 -3
  227. package/lib/assets/icons/dangerous_outlined.svg +0 -3
  228. package/lib/assets/icons/dashboard_filled.svg +0 -3
  229. package/lib/assets/icons/dashboard_outlined.svg +0 -3
  230. package/lib/assets/icons/database_filled.svg +0 -3
  231. package/lib/assets/icons/database_outlined.svg +0 -3
  232. package/lib/assets/icons/delete_filled.svg +0 -3
  233. package/lib/assets/icons/delete_outlined.svg +0 -3
  234. package/lib/assets/icons/desktop_filled.svg +0 -3
  235. package/lib/assets/icons/desktop_outlined.svg +0 -3
  236. package/lib/assets/icons/devices_filled.svg +0 -3
  237. package/lib/assets/icons/devices_outlined.svg +0 -3
  238. package/lib/assets/icons/download.svg +0 -3
  239. package/lib/assets/icons/download_done.svg +0 -3
  240. package/lib/assets/icons/draft_filled.svg +0 -3
  241. package/lib/assets/icons/draft_outlined.svg +0 -3
  242. package/lib/assets/icons/drag_handle.svg +0 -3
  243. package/lib/assets/icons/drag_indicator.svg +0 -3
  244. package/lib/assets/icons/eco_filled.svg +0 -3
  245. package/lib/assets/icons/eco_outlined.svg +0 -3
  246. package/lib/assets/icons/edit_filled.svg +0 -3
  247. package/lib/assets/icons/edit_outlined.svg +0 -3
  248. package/lib/assets/icons/electric_meter_filled.svg +0 -3
  249. package/lib/assets/icons/electric_meter_outlined.svg +0 -3
  250. package/lib/assets/icons/error_filled.svg +0 -3
  251. package/lib/assets/icons/error_outlined.svg +0 -3
  252. package/lib/assets/icons/exclamation.svg +0 -3
  253. package/lib/assets/icons/explore_filled.svg +0 -3
  254. package/lib/assets/icons/explore_off_filled.svg +0 -3
  255. package/lib/assets/icons/explore_off_outlined.svg +0 -3
  256. package/lib/assets/icons/explore_outlined.svg +0 -3
  257. package/lib/assets/icons/explore_travel.svg +0 -3
  258. package/lib/assets/icons/external_link.svg +0 -3
  259. package/lib/assets/icons/fast_forward_filled.svg +0 -3
  260. package/lib/assets/icons/fast_forward_outlined.svg +0 -3
  261. package/lib/assets/icons/fast_rewind_filled.svg +0 -3
  262. package/lib/assets/icons/fast_rewind_outlined.svg +0 -3
  263. package/lib/assets/icons/feedback_filled.svg +0 -3
  264. package/lib/assets/icons/feedback_outlined.svg +0 -3
  265. package/lib/assets/icons/file_copy_filled.svg +0 -3
  266. package/lib/assets/icons/file_copy_outlined.svg +0 -3
  267. package/lib/assets/icons/file_download_filled.svg +0 -3
  268. package/lib/assets/icons/file_download_outlined.svg +0 -3
  269. package/lib/assets/icons/file_upload_filled.svg +0 -3
  270. package/lib/assets/icons/file_upload_outlined.svg +0 -3
  271. package/lib/assets/icons/filter.svg +0 -3
  272. package/lib/assets/icons/filter_alt_filled.svg +0 -3
  273. package/lib/assets/icons/filter_alt_off_filled.svg +0 -3
  274. package/lib/assets/icons/filter_alt_off_outlined.svg +0 -3
  275. package/lib/assets/icons/filter_alt_outlined.svg +0 -3
  276. package/lib/assets/icons/filter_off.svg +0 -3
  277. package/lib/assets/icons/fire_filled.svg +0 -3
  278. package/lib/assets/icons/fire_outlined.svg +0 -3
  279. package/lib/assets/icons/first_page.svg +0 -3
  280. package/lib/assets/icons/fit_screen_filled.svg +0 -3
  281. package/lib/assets/icons/fit_screen_outlined.svg +0 -3
  282. package/lib/assets/icons/flag_filled.svg +0 -3
  283. package/lib/assets/icons/flag_outlined.svg +0 -3
  284. package/lib/assets/icons/flash_filled.svg +0 -3
  285. package/lib/assets/icons/flash_off_filled.svg +0 -3
  286. package/lib/assets/icons/flash_off_outlined.svg +0 -3
  287. package/lib/assets/icons/flash_outlined.svg +0 -3
  288. package/lib/assets/icons/folder_add_filled.svg +0 -3
  289. package/lib/assets/icons/folder_add_outlined.svg +0 -3
  290. package/lib/assets/icons/folder_filled.svg +0 -3
  291. package/lib/assets/icons/folder_move_filled.svg +0 -3
  292. package/lib/assets/icons/folder_move_outlined.svg +0 -3
  293. package/lib/assets/icons/folder_open_filled.svg +0 -3
  294. package/lib/assets/icons/folder_open_outlined.svg +0 -3
  295. package/lib/assets/icons/folder_outlined.svg +0 -3
  296. package/lib/assets/icons/folder_shared_filled.svg +0 -3
  297. package/lib/assets/icons/folder_shared_outlined.svg +0 -3
  298. package/lib/assets/icons/forum_filled.svg +0 -3
  299. package/lib/assets/icons/forum_outlined.svg +0 -3
  300. package/lib/assets/icons/forward.svg +0 -3
  301. package/lib/assets/icons/fullscreen.svg +0 -3
  302. package/lib/assets/icons/fullscreen_exit.svg +0 -3
  303. package/lib/assets/icons/group_add_filled.svg +0 -3
  304. package/lib/assets/icons/group_add_outlined.svg +0 -3
  305. package/lib/assets/icons/group_filled.svg +0 -3
  306. package/lib/assets/icons/group_outlined.svg +0 -3
  307. package/lib/assets/icons/groups_filled.svg +0 -3
  308. package/lib/assets/icons/groups_outlined.svg +0 -3
  309. package/lib/assets/icons/headphones_filled.svg +0 -3
  310. package/lib/assets/icons/headphones_outlined.svg +0 -3
  311. package/lib/assets/icons/heart_filled.svg +0 -3
  312. package/lib/assets/icons/heart_outlined.svg +0 -3
  313. package/lib/assets/icons/help_filled.svg +0 -3
  314. package/lib/assets/icons/help_outlined.svg +0 -3
  315. package/lib/assets/icons/history.svg +0 -3
  316. package/lib/assets/icons/home_filled.svg +0 -3
  317. package/lib/assets/icons/home_outlined.svg +0 -3
  318. package/lib/assets/icons/hourglass_empty.svg +0 -3
  319. package/lib/assets/icons/hourglass_filled.svg +0 -3
  320. package/lib/assets/icons/hourglass_outlined.svg +0 -3
  321. package/lib/assets/icons/image_broken_filled.svg +0 -3
  322. package/lib/assets/icons/image_broken_outlined.svg +0 -3
  323. package/lib/assets/icons/image_filled.svg +0 -3
  324. package/lib/assets/icons/image_gallery_filled.svg +0 -3
  325. package/lib/assets/icons/image_gallery_outlined.svg +0 -3
  326. package/lib/assets/icons/image_outlined.svg +0 -3
  327. package/lib/assets/icons/inbox_filled.svg +0 -3
  328. package/lib/assets/icons/inbox_outlined.svg +0 -3
  329. package/lib/assets/icons/info_filled.svg +0 -3
  330. package/lib/assets/icons/info_i.svg +0 -3
  331. package/lib/assets/icons/info_outlined.svg +0 -3
  332. package/lib/assets/icons/keep_filled.svg +0 -3
  333. package/lib/assets/icons/keep_off_filled.svg +0 -3
  334. package/lib/assets/icons/keep_off_outlined.svg +0 -3
  335. package/lib/assets/icons/keep_outlined.svg +0 -3
  336. package/lib/assets/icons/label_filled.svg +0 -3
  337. package/lib/assets/icons/label_outlined.svg +0 -3
  338. package/lib/assets/icons/language.svg +0 -3
  339. package/lib/assets/icons/laptop_filled.svg +0 -3
  340. package/lib/assets/icons/laptop_outlined.svg +0 -3
  341. package/lib/assets/icons/last_page.svg +0 -3
  342. package/lib/assets/icons/left_panel_close_filled.svg +0 -3
  343. package/lib/assets/icons/left_panel_close_outlined.svg +0 -3
  344. package/lib/assets/icons/left_panel_open_filled.svg +0 -3
  345. package/lib/assets/icons/left_panel_open_outlined.svg +0 -3
  346. package/lib/assets/icons/light_off_filled.svg +0 -3
  347. package/lib/assets/icons/light_off_outlined.svg +0 -3
  348. package/lib/assets/icons/lightbulb_alt_filled.svg +0 -3
  349. package/lib/assets/icons/lightbulb_alt_outlined.svg +0 -3
  350. package/lib/assets/icons/lightbulb_circle_filled.svg +0 -3
  351. package/lib/assets/icons/lightbulb_circle_outlined.svg +0 -3
  352. package/lib/assets/icons/lightbulb_filled.svg +0 -3
  353. package/lib/assets/icons/lightbulb_outlined.svg +0 -3
  354. package/lib/assets/icons/link.svg +0 -3
  355. package/lib/assets/icons/link_off.svg +0 -3
  356. package/lib/assets/icons/list.svg +0 -3
  357. package/lib/assets/icons/list_alt_filled.svg +0 -3
  358. package/lib/assets/icons/list_alt_outlined.svg +0 -3
  359. package/lib/assets/icons/location_disabled.svg +0 -10
  360. package/lib/assets/icons/location_me_filled.svg +0 -3
  361. package/lib/assets/icons/location_me_outlined.svg +0 -3
  362. package/lib/assets/icons/location_off_filled.svg +0 -3
  363. package/lib/assets/icons/location_off_outlined.svg +0 -3
  364. package/lib/assets/icons/location_on_filled.svg +0 -3
  365. package/lib/assets/icons/location_on_outlined.svg +0 -3
  366. package/lib/assets/icons/lock_filled.svg +0 -3
  367. package/lib/assets/icons/lock_open_filled.svg +0 -3
  368. package/lib/assets/icons/lock_open_outlined.svg +0 -3
  369. package/lib/assets/icons/lock_open_right_filled.svg +0 -3
  370. package/lib/assets/icons/lock_open_right_outlined.svg +0 -3
  371. package/lib/assets/icons/lock_outlined.svg +0 -3
  372. package/lib/assets/icons/login.svg +0 -3
  373. package/lib/assets/icons/logout.svg +0 -3
  374. package/lib/assets/icons/mail_filled.svg +0 -3
  375. package/lib/assets/icons/mail_outlined.svg +0 -3
  376. package/lib/assets/icons/mail_unread_filled.svg +0 -3
  377. package/lib/assets/icons/mail_unread_outlined.svg +0 -3
  378. package/lib/assets/icons/map_filled.svg +0 -3
  379. package/lib/assets/icons/map_outlined.svg +0 -3
  380. package/lib/assets/icons/menu.svg +0 -3
  381. package/lib/assets/icons/menu_open.svg +0 -3
  382. package/lib/assets/icons/mic_filled.svg +0 -3
  383. package/lib/assets/icons/mic_off_filled.svg +0 -3
  384. package/lib/assets/icons/mic_off_outlined.svg +0 -3
  385. package/lib/assets/icons/mic_outlined.svg +0 -3
  386. package/lib/assets/icons/mode_dark_filled.svg +0 -3
  387. package/lib/assets/icons/mode_dark_outlined.svg +0 -3
  388. package/lib/assets/icons/mode_light_filled.svg +0 -10
  389. package/lib/assets/icons/mode_light_outlined.svg +0 -10
  390. package/lib/assets/icons/monitoring.svg +0 -3
  391. package/lib/assets/icons/more_down.svg +0 -3
  392. package/lib/assets/icons/more_horiz.svg +0 -3
  393. package/lib/assets/icons/more_up.svg +0 -3
  394. package/lib/assets/icons/more_vert.svg +0 -3
  395. package/lib/assets/icons/notification_filled.svg +0 -3
  396. package/lib/assets/icons/notification_important_filled.svg +0 -3
  397. package/lib/assets/icons/notification_important_outlined.svg +0 -3
  398. package/lib/assets/icons/notification_off_filled.svg +0 -3
  399. package/lib/assets/icons/notification_off_outlined.svg +0 -3
  400. package/lib/assets/icons/notification_outlined.svg +0 -3
  401. package/lib/assets/icons/notification_unread_filled.svg +0 -3
  402. package/lib/assets/icons/notification_unread_outlined.svg +0 -3
  403. package/lib/assets/icons/ohm.svg +0 -3
  404. package/lib/assets/icons/open_in_full.svg +0 -3
  405. package/lib/assets/icons/palette_filled.svg +0 -3
  406. package/lib/assets/icons/palette_outlined.svg +0 -3
  407. package/lib/assets/icons/paste.svg +0 -3
  408. package/lib/assets/icons/pause_circle_filled.svg +0 -3
  409. package/lib/assets/icons/pause_circle_outlined.svg +0 -3
  410. package/lib/assets/icons/pause_filled.svg +0 -3
  411. package/lib/assets/icons/pause_outlined.svg +0 -3
  412. package/lib/assets/icons/photo_camera_filled.svg +0 -3
  413. package/lib/assets/icons/photo_camera_outlined.svg +0 -3
  414. package/lib/assets/icons/play_circle_filled.svg +0 -3
  415. package/lib/assets/icons/play_circle_outlined.svg +0 -3
  416. package/lib/assets/icons/play_filled.svg +0 -3
  417. package/lib/assets/icons/play_outlined.svg +0 -3
  418. package/lib/assets/icons/play_pause.svg +0 -3
  419. package/lib/assets/icons/power_filled.svg +0 -3
  420. package/lib/assets/icons/power_input.svg +0 -3
  421. package/lib/assets/icons/power_off_filled.svg +0 -3
  422. package/lib/assets/icons/power_off_outlined.svg +0 -3
  423. package/lib/assets/icons/power_outlined.svg +0 -3
  424. package/lib/assets/icons/power_plug.svg +0 -3
  425. package/lib/assets/icons/power_plug_connect_filled.svg +0 -3
  426. package/lib/assets/icons/power_plug_connect_outlined.svg +0 -3
  427. package/lib/assets/icons/power_settings.svg +0 -3
  428. package/lib/assets/icons/power_settings_circle_filled.svg +0 -3
  429. package/lib/assets/icons/power_settings_circle_outlined.svg +0 -3
  430. package/lib/assets/icons/power_solar_filled.svg +0 -3
  431. package/lib/assets/icons/power_solar_outlined.svg +0 -3
  432. package/lib/assets/icons/power_switch_filled.svg +0 -3
  433. package/lib/assets/icons/power_switch_outlined.svg +0 -3
  434. package/lib/assets/icons/power_wind_filled.svg +0 -3
  435. package/lib/assets/icons/power_wind_outlined.svg +0 -3
  436. package/lib/assets/icons/print_filled.svg +0 -3
  437. package/lib/assets/icons/print_outlined.svg +0 -3
  438. package/lib/assets/icons/priority_high.svg +0 -3
  439. package/lib/assets/icons/public.svg +0 -3
  440. package/lib/assets/icons/publish.svg +0 -3
  441. package/lib/assets/icons/question_mark.svg +0 -3
  442. package/lib/assets/icons/radar.svg +0 -3
  443. package/lib/assets/icons/radio_button_empty.svg +0 -3
  444. package/lib/assets/icons/redo.svg +0 -3
  445. package/lib/assets/icons/reload.svg +0 -3
  446. package/lib/assets/icons/remove.svg +0 -3
  447. package/lib/assets/icons/reply.svg +0 -3
  448. package/lib/assets/icons/reply_all.svg +0 -3
  449. package/lib/assets/icons/right_panel_close_filled.svg +0 -3
  450. package/lib/assets/icons/right_panel_close_outlined.svg +0 -3
  451. package/lib/assets/icons/right_panel_open_filled.svg +0 -3
  452. package/lib/assets/icons/right_panel_open_outlined.svg +0 -3
  453. package/lib/assets/icons/route.svg +0 -3
  454. package/lib/assets/icons/save_filled.svg +0 -3
  455. package/lib/assets/icons/save_outlined.svg +0 -3
  456. package/lib/assets/icons/search.svg +0 -3
  457. package/lib/assets/icons/send_filled.svg +0 -3
  458. package/lib/assets/icons/send_outlined.svg +0 -3
  459. package/lib/assets/icons/settings_filled.svg +0 -3
  460. package/lib/assets/icons/settings_outlined.svg +0 -3
  461. package/lib/assets/icons/share_filled.svg +0 -3
  462. package/lib/assets/icons/share_outlined.svg +0 -3
  463. package/lib/assets/icons/side_navigation.svg +0 -3
  464. package/lib/assets/icons/skip_next_filled.svg +0 -3
  465. package/lib/assets/icons/skip_next_outlined.svg +0 -3
  466. package/lib/assets/icons/skip_previous_filled.svg +0 -3
  467. package/lib/assets/icons/skip_previous_outlined.svg +0 -3
  468. package/lib/assets/icons/smartphone_filled.svg +0 -3
  469. package/lib/assets/icons/smartphone_outlined.svg +0 -3
  470. package/lib/assets/icons/sort.svg +0 -3
  471. package/lib/assets/icons/star_filled.svg +0 -3
  472. package/lib/assets/icons/star_outlined.svg +0 -3
  473. package/lib/assets/icons/sticky_note_filled.svg +0 -3
  474. package/lib/assets/icons/sticky_note_outlined.svg +0 -3
  475. package/lib/assets/icons/stop_circle_filled.svg +0 -3
  476. package/lib/assets/icons/stop_circle_outlined.svg +0 -3
  477. package/lib/assets/icons/stop_filled.svg +0 -3
  478. package/lib/assets/icons/stop_outlined.svg +0 -3
  479. package/lib/assets/icons/subtitles_filled.svg +0 -3
  480. package/lib/assets/icons/subtitles_outlined.svg +0 -3
  481. package/lib/assets/icons/support_agent.svg +0 -3
  482. package/lib/assets/icons/text_snippet_filled.svg +0 -3
  483. package/lib/assets/icons/text_snippet_outlined.svg +0 -3
  484. package/lib/assets/icons/timeline.svg +0 -3
  485. package/lib/assets/icons/trash_restore_filled.svg +0 -3
  486. package/lib/assets/icons/trash_restore_outlined.svg +0 -3
  487. package/lib/assets/icons/trending_down.svg +0 -3
  488. package/lib/assets/icons/trending_flat.svg +0 -3
  489. package/lib/assets/icons/trending_up.svg +0 -3
  490. package/lib/assets/icons/tune.svg +0 -3
  491. package/lib/assets/icons/unarchive_filled.svg +0 -3
  492. package/lib/assets/icons/unarchive_outlined.svg +0 -3
  493. package/lib/assets/icons/undo.svg +0 -3
  494. package/lib/assets/icons/upload.svg +0 -3
  495. package/lib/assets/icons/user_add_filled.svg +0 -3
  496. package/lib/assets/icons/user_add_outlined.svg +0 -3
  497. package/lib/assets/icons/user_circle_filled.svg +0 -3
  498. package/lib/assets/icons/user_circle_outlined.svg +0 -3
  499. package/lib/assets/icons/user_filled.svg +0 -3
  500. package/lib/assets/icons/user_outlined.svg +0 -3
  501. package/lib/assets/icons/user_settings_filled.svg +0 -3
  502. package/lib/assets/icons/user_settings_outlined.svg +0 -3
  503. package/lib/assets/icons/verified_filled.svg +0 -3
  504. package/lib/assets/icons/verified_outlined.svg +0 -3
  505. package/lib/assets/icons/video_camera_filled.svg +0 -3
  506. package/lib/assets/icons/video_camera_off_filled.svg +0 -3
  507. package/lib/assets/icons/video_camera_off_outlined.svg +0 -3
  508. package/lib/assets/icons/video_camera_outlined.svg +0 -3
  509. package/lib/assets/icons/video_gallery_filled.svg +0 -3
  510. package/lib/assets/icons/video_gallery_outlined.svg +0 -3
  511. package/lib/assets/icons/view_agenda_filled.svg +0 -3
  512. package/lib/assets/icons/view_agenda_outlined.svg +0 -3
  513. package/lib/assets/icons/view_column_filled.svg +0 -3
  514. package/lib/assets/icons/view_column_outlined.svg +0 -3
  515. package/lib/assets/icons/view_grid_filled.svg +0 -3
  516. package/lib/assets/icons/view_grid_outlined.svg +0 -3
  517. package/lib/assets/icons/view_kanban_filled.svg +0 -3
  518. package/lib/assets/icons/view_kanban_outlined.svg +0 -3
  519. package/lib/assets/icons/view_module_filled.svg +0 -3
  520. package/lib/assets/icons/view_module_outlined.svg +0 -3
  521. package/lib/assets/icons/view_timeline_filled.svg +0 -3
  522. package/lib/assets/icons/view_timeline_outlined.svg +0 -3
  523. package/lib/assets/icons/visibility_hide_filled.svg +0 -3
  524. package/lib/assets/icons/visibility_hide_outlined.svg +0 -3
  525. package/lib/assets/icons/visibility_show_filled.svg +0 -3
  526. package/lib/assets/icons/visibility_show_outlined.svg +0 -3
  527. package/lib/assets/icons/volume_down_filled.svg +0 -3
  528. package/lib/assets/icons/volume_down_outlined.svg +0 -3
  529. package/lib/assets/icons/volume_mute_filled.svg +0 -3
  530. package/lib/assets/icons/volume_mute_outlined.svg +0 -3
  531. package/lib/assets/icons/volume_off_filled.svg +0 -3
  532. package/lib/assets/icons/volume_off_outlined.svg +0 -3
  533. package/lib/assets/icons/volume_up_filled.svg +0 -3
  534. package/lib/assets/icons/volume_up_outlined.svg +0 -3
  535. package/lib/assets/icons/warning_filled.svg +0 -3
  536. package/lib/assets/icons/warning_outlined.svg +0 -3
  537. package/lib/assets/icons/water.svg +0 -3
  538. package/lib/assets/icons/water_alt.svg +0 -3
  539. package/lib/assets/icons/waterdrop_filled.svg +0 -3
  540. package/lib/assets/icons/waterdrop_outlined.svg +0 -3
  541. package/lib/assets/icons/wifi.svg +0 -3
  542. package/lib/assets/icons/wifi_off.svg +0 -3
  543. package/lib/assets/icons/windmill.svg +0 -3
  544. package/lib/assets/icons/zoom_in.svg +0 -3
  545. package/lib/assets/icons/zoom_out.svg +0 -3
  546. package/lib/components/button/button.component.d.ts +0 -17
  547. package/lib/components/button/button.component.d.ts.map +0 -1
  548. package/lib/components/checkbox/checkbox.component.d.ts +0 -19
  549. package/lib/components/checkbox/checkbox.component.d.ts.map +0 -1
  550. package/lib/components/checkbox-group/checkbox-group.component.d.ts +0 -19
  551. package/lib/components/checkbox-group/checkbox-group.component.d.ts.map +0 -1
  552. package/lib/components/grid/col/col.directive.d.ts +0 -15
  553. package/lib/components/grid/col/col.directive.d.ts.map +0 -1
  554. package/lib/components/grid/grid.directive.d.ts +0 -11
  555. package/lib/components/grid/grid.directive.d.ts.map +0 -1
  556. package/lib/components/icon/icon-map.d.ts +0 -301
  557. package/lib/components/icon/icon-map.d.ts.map +0 -1
  558. package/lib/components/icon/icon.component.d.ts +0 -22
  559. package/lib/components/icon/icon.component.d.ts.map +0 -1
  560. package/lib/components/icon/icon.service.d.ts +0 -12
  561. package/lib/components/icon/icon.service.d.ts.map +0 -1
  562. package/lib/components/link/link.component.d.ts +0 -10
  563. package/lib/components/link/link.component.d.ts.map +0 -1
  564. package/lib/components/radio-button/radio-button.component.d.ts +0 -14
  565. package/lib/components/radio-button/radio-button.component.d.ts.map +0 -1
  566. package/lib/components/radio-button-group/radio-button-group.component.d.ts +0 -19
  567. package/lib/components/radio-button-group/radio-button-group.component.d.ts.map +0 -1
  568. package/public-api.d.ts.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { ChangeDetectionStrategy, Component, computed, input, output } from "@angular/core";
3
+ import { ButtonType } from "@design-system-rte/core/components/button/button.interface";
4
+ import { ButtonSize, ButtonVariant } from "@design-system-rte/core/components/button/common/common-button";
5
+ import { buttonIconSize } from "@design-system-rte/core/components/button/common/common-button.constants";
6
+
7
+ import { isValidIconName } from "../icon/icon-map";
8
+ import { IconComponent } from "../icon/icon.component";
9
+ import { RegularIconIdKey, TogglableIconIdKey } from "../icon/icon.service";
10
+
11
+ @Component({
12
+ selector: "rte-icon-button",
13
+ imports: [CommonModule, IconComponent],
14
+ standalone: true,
15
+ templateUrl: "./icon-button.component.html",
16
+ styleUrl: "./icon-button.component.scss",
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ })
19
+ export class IconButtonComponent {
20
+ readonly disabled = input<boolean>(false);
21
+ readonly name = input.required<RegularIconIdKey | TogglableIconIdKey>();
22
+ readonly size = input<ButtonSize>("m");
23
+ readonly variant = input<ButtonVariant>("primary");
24
+ readonly type = input<ButtonType>("button");
25
+ readonly appearance = input<"outlined" | "filled">("outlined");
26
+ readonly compactSpacing = input<boolean>(false);
27
+ readonly ariaLabel = input<string | undefined>(undefined);
28
+ readonly ariaLabelledBy = input<string | undefined>(undefined);
29
+
30
+ readonly buttonIconSize = computed(() => buttonIconSize[this.size()]);
31
+
32
+ readonly isValidIconName = computed(() => isValidIconName(this.name()));
33
+
34
+ readonly click = output<MouseEvent | KeyboardEvent>();
35
+
36
+ onClick(event: MouseEvent | KeyboardEvent): void {
37
+ event.stopPropagation();
38
+ this.click.emit(event);
39
+ }
40
+ }
@@ -0,0 +1,200 @@
1
+ import { ENTER_KEY, SPACE_KEY, TAB_KEY } from "@design-system-rte/core/constants/keyboard.constants";
2
+ import { Meta, StoryObj } from "@storybook/angular";
3
+ import { fn, userEvent, within, expect } from "@storybook/test";
4
+
5
+ import { regularIcons as RegularIconsList, togglableIcons as TogglableIconsList } from "../icon/icon-map";
6
+
7
+ import { IconButtonComponent } from "./icon-button.component";
8
+
9
+ const RegularIconIds = Object.keys(RegularIconsList);
10
+ const TogglableIconIds = Object.keys(TogglableIconsList);
11
+
12
+ const meta = {
13
+ title: "IconButton",
14
+ component: IconButtonComponent,
15
+ tags: ["autodocs"],
16
+ argTypes: {
17
+ name: {
18
+ control: "select",
19
+ options: [...RegularIconIds, ...TogglableIconIds].sort((a, b) => a.localeCompare(b)),
20
+ description: "Nom de l’icône à afficher",
21
+ defaultValue: "check",
22
+ },
23
+ variant: {
24
+ control: "select",
25
+ options: ["primary", "secondary", "text", "transparent", "danger"],
26
+ },
27
+ appearance: {
28
+ control: "select",
29
+ options: ["outlined", "filled"],
30
+ description: "Apparence de l’icône (pour les icônes togglables)",
31
+ defaultValue: "outlined",
32
+ },
33
+ size: {
34
+ control: "select",
35
+ options: ["s", "m", "l"],
36
+ },
37
+ compactSpacing: {
38
+ control: "boolean",
39
+ description: "Utiliser un espacement compact",
40
+ },
41
+ disabled: {
42
+ control: "boolean",
43
+ },
44
+ },
45
+ } satisfies Meta<IconButtonComponent>;
46
+
47
+ export default meta;
48
+
49
+ type Story = StoryObj<IconButtonComponent>;
50
+
51
+ const mockFn = fn();
52
+
53
+ export const Default: Story = {
54
+ args: {
55
+ name: "settings",
56
+ size: "m",
57
+ appearance: "outlined",
58
+ disabled: false,
59
+ compactSpacing: false,
60
+ variant: "primary",
61
+ ariaLabel: "icon button aria label",
62
+ click: mockFn,
63
+ },
64
+
65
+ play: async ({ canvasElement }) => {
66
+ const canvas = within(canvasElement);
67
+ const iconButton = canvas.getByRole("button");
68
+ await userEvent.click(iconButton);
69
+ expect(mockFn).toHaveBeenCalled();
70
+ iconButton.blur();
71
+ },
72
+ };
73
+
74
+ export const Sizing: Story = {
75
+ args: {
76
+ ...Default.args,
77
+ compactSpacing: false,
78
+ },
79
+ render: (args) => ({
80
+ props: { ...args },
81
+ template: `
82
+ <div style="display: flex; gap: 8px">
83
+ <rte-icon-button
84
+ size="s"
85
+ name=${args.name}
86
+ data-testid="small-icon-button"
87
+ [compactSpacing]="${args.compactSpacing}"
88
+ [disabled]="${args.disabled}"
89
+ [appearance]="${args.appearance}"
90
+ [ariaLabel]="'Small Icon Button'"
91
+ [type]="'${args.type}'"
92
+ [variant]="'${args.variant}'"
93
+ />
94
+ <rte-icon-button
95
+ name=${args.name}
96
+ data-testid="medium-icon-button"
97
+ [compactSpacing]="${args.compactSpacing}"
98
+ [disabled]="${args.disabled}"
99
+ [appearance]="${args.appearance}"
100
+ [ariaLabel]="'Small Icon Button'"
101
+ [type]="'${args.type}'"
102
+ [variant]="'${args.variant}'"
103
+ />
104
+ <rte-icon-button
105
+ size="l"
106
+ name=${args.name}
107
+ data-testid="large-icon-button"
108
+ [compactSpacing]="${args.compactSpacing}"
109
+ [disabled]="${args.disabled}"
110
+ [appearance]="${args.appearance}"
111
+ [ariaLabel]="'Small Icon Button'"
112
+ [type]="'${args.type}'"
113
+ [variant]="'${args.variant}'"
114
+ />
115
+ </div>
116
+ `,
117
+ }),
118
+ play: async ({ canvasElement }) => {
119
+ const canvas = within(canvasElement);
120
+ const smallIconButton = canvas.getByTestId("small-icon-button").getElementsByTagName("button")[0];
121
+ const mediumIconButton = canvas.getByTestId("medium-icon-button").getElementsByTagName("button")[0];
122
+ const largeIconButton = canvas.getByTestId("large-icon-button").getElementsByTagName("button")[0];
123
+
124
+ expect(smallIconButton.clientHeight).toBe(24);
125
+ expect(mediumIconButton.clientHeight).toBe(32);
126
+ expect(largeIconButton.clientHeight).toBe(40);
127
+ },
128
+ };
129
+
130
+ export const CompactSizing: Story = {
131
+ args: {
132
+ ...Default.args,
133
+ compactSpacing: true,
134
+ },
135
+ render: (args) => ({
136
+ props: { ...args },
137
+ template: `
138
+ <div style="display: flex; gap: 8px">
139
+ <rte-icon-button
140
+ size="s"
141
+ name=${args.name}
142
+ data-testid="small-icon-button"
143
+ [compactSpacing]="${args.compactSpacing}"
144
+ [disabled]="${args.disabled}"
145
+ [appearance]="${args.appearance}"
146
+ [ariaLabel]="'Small Icon Button'"
147
+ [type]="'${args.type}'"
148
+ [variant]="'${args.variant}'"
149
+ />
150
+ <rte-icon-button
151
+ name=${args.name}
152
+ data-testid="medium-icon-button"
153
+ [compactSpacing]="${args.compactSpacing}"
154
+ [disabled]="${args.disabled}"
155
+ [appearance]="${args.appearance}"
156
+ [ariaLabel]="'Small Icon Button'"
157
+ [type]="'${args.type}'"
158
+ [variant]="'${args.variant}'"
159
+ />
160
+ <rte-icon-button
161
+ size="l"
162
+ name=${args.name}
163
+ data-testid="large-icon-button"
164
+ [compactSpacing]="${args.compactSpacing}"
165
+ [disabled]="${args.disabled}"
166
+ [appearance]="${args.appearance}"
167
+ [ariaLabel]="'Small Icon Button'"
168
+ [type]="'${args.type}'"
169
+ [variant]="'${args.variant}'"
170
+ />
171
+ </div>
172
+ `,
173
+ }),
174
+ play: async ({ canvasElement }) => {
175
+ const canvas = within(canvasElement);
176
+ const smallIconButton = canvas.getByTestId("small-icon-button").getElementsByTagName("button")[0];
177
+ const mediumIconButton = canvas.getByTestId("medium-icon-button").getElementsByTagName("button")[0];
178
+ const largeIconButton = canvas.getByTestId("large-icon-button").getElementsByTagName("button")[0];
179
+
180
+ expect(smallIconButton.clientHeight).toBe(16);
181
+ expect(mediumIconButton.clientHeight).toBe(20);
182
+ expect(largeIconButton.clientHeight).toBe(24);
183
+ },
184
+ };
185
+
186
+ export const KeyboardInteraction: Story = {
187
+ args: {
188
+ ...Default.args,
189
+ },
190
+ play: async ({ canvasElement }) => {
191
+ const canvas = within(canvasElement);
192
+ const button = canvas.getByRole("button");
193
+ await userEvent.keyboard(TAB_KEY);
194
+ expect(button).toHaveFocus();
195
+ await userEvent.keyboard(ENTER_KEY);
196
+ await userEvent.keyboard(SPACE_KEY);
197
+ expect(mockFn).toHaveBeenCalledTimes(2);
198
+ button.blur();
199
+ },
200
+ };
@@ -0,0 +1,12 @@
1
+ <rte-icon-button
2
+ [size]="size()"
3
+ [name]="name()"
4
+ [compactSpacing]="compactSpacing()"
5
+ [disabled]="disabled()"
6
+ [ariaLabel]="ariaLabel()"
7
+ [ariaLabelledBy]="ariaLabelledBy()"
8
+ [type]="type()"
9
+ [variant]="variant()"
10
+ [appearance]="selected() ? 'filled' : 'outlined'"
11
+ (click)="onClick($event)"
12
+ />
@@ -0,0 +1,36 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { ChangeDetectionStrategy, Component, computed, input, output } from "@angular/core";
3
+ import { ButtonType } from "@design-system-rte/core/components/button/button.interface";
4
+ import { ButtonSize, ButtonVariant } from "@design-system-rte/core/components/button/common/common-button";
5
+ import { buttonIconSize } from "@design-system-rte/core/components/button/common/common-button.constants";
6
+
7
+ import { RegularIconIdKey, TogglableIconIdKey } from "../icon/icon.service";
8
+ import { IconButtonComponent } from "../icon-button/icon-button.component";
9
+
10
+ @Component({
11
+ selector: "rte-icon-button-toggle",
12
+ imports: [CommonModule, IconButtonComponent],
13
+ standalone: true,
14
+ templateUrl: "./icon-button-toggle.component.html",
15
+ changeDetection: ChangeDetectionStrategy.OnPush,
16
+ })
17
+ export class IconButtonToggleComponent {
18
+ readonly disabled = input<boolean>(false);
19
+ readonly name = input.required<RegularIconIdKey | TogglableIconIdKey>();
20
+ readonly size = input<ButtonSize>("m");
21
+ readonly variant = input<ButtonVariant>("primary");
22
+ readonly type = input<ButtonType>("button");
23
+ readonly compactSpacing = input<boolean>(false);
24
+ readonly ariaLabel = input<string | undefined>(undefined);
25
+ readonly ariaLabelledBy = input<string | undefined>(undefined);
26
+ readonly selected = input<boolean>(false);
27
+
28
+ readonly click = output<void>();
29
+
30
+ onClick(event: MouseEvent | KeyboardEvent): void {
31
+ event.stopPropagation();
32
+ this.click.emit();
33
+ }
34
+
35
+ readonly buttonIconSize = computed(() => buttonIconSize[this.size()]);
36
+ }
@@ -0,0 +1,197 @@
1
+ import { ENTER_KEY, SPACE_KEY } from "@design-system-rte/core/constants/keyboard.constants";
2
+ import { Meta, StoryObj } from "@storybook/angular";
3
+ import { fn, userEvent, within, expect } from "@storybook/test";
4
+
5
+ import { togglableIcons as TogglableIconsList } from "../icon/icon-map";
6
+
7
+ import { IconButtonToggleComponent } from "./icon-button-toggle.component";
8
+
9
+ const TogglableIconIds = Object.keys(TogglableIconsList);
10
+
11
+ const meta = {
12
+ title: "IconButtonToggle",
13
+ component: IconButtonToggleComponent,
14
+ tags: ["autodocs"],
15
+ argTypes: {
16
+ name: {
17
+ control: "select",
18
+ options: [...TogglableIconIds].sort((a, b) => a.localeCompare(b)),
19
+ description: "Nom de l’icône à afficher",
20
+ defaultValue: "check",
21
+ },
22
+ variant: {
23
+ control: "select",
24
+ options: ["primary", "secondary", "text", "transparent", "danger"],
25
+ },
26
+ size: {
27
+ control: "select",
28
+ options: ["s", "m", "l"],
29
+ },
30
+ compactSpacing: {
31
+ control: "boolean",
32
+ description: "Utiliser un espacement compact",
33
+ },
34
+ disabled: {
35
+ control: "boolean",
36
+ },
37
+ selected: {
38
+ control: "boolean",
39
+ description: "Indique si l'icône est sélectionnée",
40
+ },
41
+ },
42
+ } satisfies Meta<IconButtonToggleComponent>;
43
+
44
+ export default meta;
45
+
46
+ type Story = StoryObj<IconButtonToggleComponent>;
47
+
48
+ const mockFn = fn();
49
+
50
+ export const Default: Story = {
51
+ args: {
52
+ name: "settings",
53
+ size: "m",
54
+ disabled: false,
55
+ compactSpacing: false,
56
+ variant: "primary",
57
+ ariaLabel: "icon button aria label",
58
+ click: mockFn,
59
+ selected: false,
60
+ },
61
+
62
+ play: async ({ canvasElement }) => {
63
+ const canvas = within(canvasElement);
64
+ const iconButton = canvas.getByRole("button");
65
+ await userEvent.click(iconButton);
66
+ expect(mockFn).toHaveBeenCalled();
67
+ iconButton.blur();
68
+ },
69
+ };
70
+
71
+ export const Sizing: Story = {
72
+ args: {
73
+ ...Default.args,
74
+ compactSpacing: false,
75
+ },
76
+ render: (args) => ({
77
+ props: { ...args },
78
+ template: `
79
+ <div style="display: flex; gap: 8px">
80
+ <rte-icon-button-toggle
81
+ size="s"
82
+ name=${args.name}
83
+ data-testid="small-icon-button"
84
+ [compactSpacing]="${args.compactSpacing}"
85
+ [disabled]="${args.disabled}"
86
+ [selected]="${args.selected}"
87
+ [ariaLabel]="'Small Icon Button'"
88
+ [type]="'${args.type}'"
89
+ [variant]="'${args.variant}'"
90
+ />
91
+ <rte-icon-button-toggle
92
+ name=${args.name}
93
+ data-testid="medium-icon-button"
94
+ [compactSpacing]="${args.compactSpacing}"
95
+ [disabled]="${args.disabled}"
96
+ [selected]="${args.selected}"
97
+ [ariaLabel]="'Small Icon Button'"
98
+ [type]="'${args.type}'"
99
+ [variant]="'${args.variant}'"
100
+ />
101
+ <rte-icon-button-toggle
102
+ size="l"
103
+ name=${args.name}
104
+ data-testid="large-icon-button"
105
+ [compactSpacing]="${args.compactSpacing}"
106
+ [disabled]="${args.disabled}"
107
+ [selected]="${args.selected}"
108
+ [ariaLabel]="'Small Icon Button'"
109
+ [type]="'${args.type}'"
110
+ [variant]="'${args.variant}'"
111
+ />
112
+ </div>
113
+ `,
114
+ }),
115
+ play: async ({ canvasElement }) => {
116
+ const canvas = within(canvasElement);
117
+ const smallIconButton = canvas.getByTestId("small-icon-button").getElementsByTagName("button")[0];
118
+ const mediumIconButton = canvas.getByTestId("medium-icon-button").getElementsByTagName("button")[0];
119
+ const largeIconButton = canvas.getByTestId("large-icon-button").getElementsByTagName("button")[0];
120
+
121
+ expect(smallIconButton.clientHeight).toBe(24);
122
+ expect(mediumIconButton.clientHeight).toBe(32);
123
+ expect(largeIconButton.clientHeight).toBe(40);
124
+ },
125
+ };
126
+
127
+ export const CompactSizing: Story = {
128
+ args: {
129
+ ...Default.args,
130
+ compactSpacing: true,
131
+ },
132
+ render: (args) => ({
133
+ props: { ...args },
134
+ template: `
135
+ <div style="display: flex; gap: 8px">
136
+ <rte-icon-button-toggle
137
+ size="s"
138
+ name=${args.name}
139
+ data-testid="small-icon-button"
140
+ [compactSpacing]="${args.compactSpacing}"
141
+ [disabled]="${args.disabled}"
142
+ [selected]="${args.selected}"
143
+ [ariaLabel]="'Small Icon Button'"
144
+ [type]="'${args.type}'"
145
+ [variant]="'${args.variant}'"
146
+ />
147
+ <rte-icon-button-toggle
148
+ name=${args.name}
149
+ data-testid="medium-icon-button"
150
+ [compactSpacing]="${args.compactSpacing}"
151
+ [disabled]="${args.disabled}"
152
+ [selected]="${args.selected}"
153
+ [ariaLabel]="'Small Icon Button'"
154
+ [type]="'${args.type}'"
155
+ [variant]="'${args.variant}'"
156
+ />
157
+ <rte-icon-button-toggle
158
+ size="l"
159
+ name=${args.name}
160
+ data-testid="large-icon-button"
161
+ [compactSpacing]="${args.compactSpacing}"
162
+ [disabled]="${args.disabled}"
163
+ [selected]="${args.selected}"
164
+ [ariaLabel]="'Small Icon Button'"
165
+ [type]="'${args.type}'"
166
+ [variant]="'${args.variant}'"
167
+ />
168
+ </div>
169
+ `,
170
+ }),
171
+ play: async ({ canvasElement }) => {
172
+ const canvas = within(canvasElement);
173
+ const smallIconButton = canvas.getByTestId("small-icon-button").getElementsByTagName("button")[0];
174
+ const mediumIconButton = canvas.getByTestId("medium-icon-button").getElementsByTagName("button")[0];
175
+ const largeIconButton = canvas.getByTestId("large-icon-button").getElementsByTagName("button")[0];
176
+
177
+ expect(smallIconButton.clientHeight).toBe(16);
178
+ expect(mediumIconButton.clientHeight).toBe(20);
179
+ expect(largeIconButton.clientHeight).toBe(24);
180
+ },
181
+ };
182
+
183
+ export const KeyboardInteraction: Story = {
184
+ args: {
185
+ ...Default.args,
186
+ },
187
+ play: async ({ canvasElement }) => {
188
+ const canvas = within(canvasElement);
189
+ const button = canvas.getByRole("button");
190
+ await userEvent.tab();
191
+ expect(button).toHaveFocus();
192
+ await userEvent.keyboard(ENTER_KEY);
193
+ await userEvent.keyboard(SPACE_KEY);
194
+ expect(mockFn).toHaveBeenCalledTimes(2);
195
+ button.blur();
196
+ },
197
+ };
@@ -0,0 +1,6 @@
1
+ <a href="{{ href() }}" class="rte-link" role="link" [ngClass]="{'subtle': subtle()}">
2
+ <span class="rte-link-label">
3
+ {{ label() }}
4
+ </span>
5
+ <rte-icon *ngIf="externalLink()" name="external-link" [size]="12"></rte-icon>
6
+ </a>
@@ -0,0 +1,108 @@
1
+ @use '@design-system-rte/core/design-tokens/main.scss' as *;
2
+
3
+ .rte-link {
4
+
5
+ @include typography-link-m;
6
+ align-items: center;
7
+ cursor: pointer;
8
+ display: inline-flex;
9
+ justify-content: center;
10
+
11
+ &:visited {
12
+
13
+ color: var(--content-link-visited);
14
+ text-decoration: underline;
15
+
16
+ &:hover {
17
+ color: var(--content-link-visited-hover);
18
+ text-decoration: none;
19
+ }
20
+
21
+ &:active {
22
+ color: var(--content-link-visited-press);
23
+ text-decoration: underline;
24
+ }
25
+
26
+ &:focus-visible {
27
+ color: var(--content-link-visited);
28
+ text-decoration: underline;
29
+ outline: 1px solid var(--border-brand-focused);
30
+ outline-offset: $radius-s;
31
+ border-radius: $radius-s;
32
+ }
33
+ }
34
+
35
+ &:not(:visited) {
36
+
37
+ color: var(--content-link-default);
38
+
39
+ &:hover {
40
+ color: var(--content-link-hover);
41
+ text-decoration: none;
42
+ }
43
+
44
+ &:active {
45
+ color: var(--content-link-press);
46
+ text-decoration: underline;
47
+ }
48
+
49
+ &:focus-visible {
50
+ color: var(--content-link-default);
51
+ text-decoration: underline;
52
+ outline: 1px solid var(--border-brand-focused);
53
+ outline-offset: $radius-s;
54
+ border-radius: $radius-s;
55
+ }
56
+ }
57
+
58
+ &.subtle {
59
+
60
+ &:visited {
61
+
62
+ color: var(--content-primary);
63
+ text-decoration: none;
64
+
65
+ &:hover {
66
+ color: var(--content-link-secondary);
67
+ text-decoration: underline;
68
+ }
69
+
70
+ &:active {
71
+ color: var(--content-link-primary);
72
+ text-decoration: none;
73
+ }
74
+
75
+ &:focus-visible {
76
+ color: var(--content-link-primary);
77
+ text-decoration: none;
78
+ outline: 1px solid var(--border-brand-focused);
79
+ outline-offset: $radius-s;
80
+ border-radius: $radius-s;
81
+ }
82
+ }
83
+
84
+ &:not(:visited) {
85
+
86
+ color: var(--content-primary);
87
+ text-decoration: none;
88
+
89
+ &:hover {
90
+ color: var(--content-secondary);
91
+ text-decoration: underline;
92
+ }
93
+
94
+ &:active {
95
+ color: var(--content-primary);
96
+ text-decoration: none;
97
+ }
98
+
99
+ &:focus-visible {
100
+ color: var(--content-primary);
101
+ text-decoration: none;
102
+ outline: 1px solid var(--border-brand-focused);
103
+ outline-offset: $radius-s;
104
+ border-radius: $radius-s;
105
+ }
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,61 @@
1
+ import { Meta, StoryObj } from "@storybook/angular";
2
+ import { userEvent, within, expect } from "@storybook/test";
3
+
4
+ import { LinkComponent } from "./link.component";
5
+
6
+ const meta: Meta<LinkComponent> = {
7
+ title: "Link",
8
+ component: LinkComponent,
9
+ tags: ["autodocs"],
10
+ argTypes: {
11
+ subtle: {
12
+ control: "boolean",
13
+ },
14
+ externalLink: {
15
+ control: "boolean",
16
+ },
17
+ },
18
+ };
19
+ export default meta;
20
+ type Story = StoryObj<LinkComponent>;
21
+
22
+ export const Default: Story = {
23
+ args: {
24
+ label: "Link",
25
+ href: "#",
26
+ },
27
+ };
28
+
29
+ export const SubtleLink: Story = {
30
+ args: {
31
+ ...Default.args,
32
+ subtle: true,
33
+ },
34
+ };
35
+
36
+ export const SubtleLinkExternal: Story = {
37
+ args: {
38
+ ...SubtleLink.args,
39
+ externalLink: true,
40
+ },
41
+ };
42
+
43
+ export const ExternalLink: Story = {
44
+ args: {
45
+ ...Default.args,
46
+ externalLink: true,
47
+ },
48
+ };
49
+
50
+ export const KeyboardInteraction: Story = {
51
+ args: {
52
+ ...Default.args,
53
+ href: "#",
54
+ },
55
+ play: async ({ canvasElement }) => {
56
+ const canvas = within(canvasElement);
57
+ const link = canvas.getByRole("link");
58
+ await userEvent.tab();
59
+ expect(link).toHaveFocus();
60
+ },
61
+ };
@@ -0,0 +1,18 @@
1
+ import { CommonModule } from "@angular/common";
2
+ import { Component, input } from "@angular/core";
3
+
4
+ import { IconComponent } from "../icon/icon.component";
5
+
6
+ @Component({
7
+ selector: "rte-link",
8
+ imports: [CommonModule, IconComponent],
9
+ standalone: true,
10
+ templateUrl: "./link.component.html",
11
+ styleUrl: "./link.component.scss",
12
+ })
13
+ export class LinkComponent {
14
+ readonly label = input("");
15
+ readonly href = input<string>("#");
16
+ readonly subtle = input<boolean>(false);
17
+ readonly externalLink = input<boolean>(false);
18
+ }