@atomng/ui 1.0.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 (299) hide show
  1. package/README.md +401 -0
  2. package/atomng-ui.d.ts.map +1 -0
  3. package/atoms/atomng-ui-atoms.d.ts.map +1 -0
  4. package/atoms/avatar/avatar.component.d.ts +24 -0
  5. package/atoms/avatar/avatar.component.d.ts.map +1 -0
  6. package/atoms/avatar/index.d.ts +3 -0
  7. package/atoms/avatar/index.d.ts.map +1 -0
  8. package/atoms/badge/badge.component.d.ts +23 -0
  9. package/atoms/badge/badge.component.d.ts.map +1 -0
  10. package/atoms/badge/index.d.ts +3 -0
  11. package/atoms/badge/index.d.ts.map +1 -0
  12. package/atoms/button/button.component.d.ts +47 -0
  13. package/atoms/button/button.component.d.ts.map +1 -0
  14. package/atoms/button/index.d.ts +3 -0
  15. package/atoms/button/index.d.ts.map +1 -0
  16. package/atoms/checkbox/checkbox.component.d.ts +28 -0
  17. package/atoms/checkbox/checkbox.component.d.ts.map +1 -0
  18. package/atoms/checkbox/index.d.ts +2 -0
  19. package/atoms/checkbox/index.d.ts.map +1 -0
  20. package/atoms/chip/chip.component.d.ts +17 -0
  21. package/atoms/chip/chip.component.d.ts.map +1 -0
  22. package/atoms/chip/index.d.ts +2 -0
  23. package/atoms/chip/index.d.ts.map +1 -0
  24. package/atoms/index.d.ts +14 -0
  25. package/atoms/index.d.ts.map +1 -0
  26. package/atoms/kbd/index.d.ts +2 -0
  27. package/atoms/kbd/index.d.ts.map +1 -0
  28. package/atoms/kbd/kbd.component.d.ts +14 -0
  29. package/atoms/kbd/kbd.component.d.ts.map +1 -0
  30. package/atoms/link/index.d.ts +2 -0
  31. package/atoms/link/index.d.ts.map +1 -0
  32. package/atoms/link/link.component.d.ts +15 -0
  33. package/atoms/link/link.component.d.ts.map +1 -0
  34. package/atoms/progress/index.d.ts +3 -0
  35. package/atoms/progress/index.d.ts.map +1 -0
  36. package/atoms/progress/progress.component.d.ts +20 -0
  37. package/atoms/progress/progress.component.d.ts.map +1 -0
  38. package/atoms/separator/index.d.ts +2 -0
  39. package/atoms/separator/index.d.ts.map +1 -0
  40. package/atoms/separator/separator.component.d.ts +13 -0
  41. package/atoms/separator/separator.component.d.ts.map +1 -0
  42. package/atoms/skeleton/index.d.ts +2 -0
  43. package/atoms/skeleton/index.d.ts.map +1 -0
  44. package/atoms/skeleton/skeleton.component.d.ts +13 -0
  45. package/atoms/skeleton/skeleton.component.d.ts.map +1 -0
  46. package/atoms/slider/index.d.ts +2 -0
  47. package/atoms/slider/index.d.ts.map +1 -0
  48. package/atoms/slider/slider.component.d.ts +27 -0
  49. package/atoms/slider/slider.component.d.ts.map +1 -0
  50. package/atoms/switch/index.d.ts +2 -0
  51. package/atoms/switch/index.d.ts.map +1 -0
  52. package/atoms/switch/switch.component.d.ts +25 -0
  53. package/atoms/switch/switch.component.d.ts.map +1 -0
  54. package/atoms/tooltip/index.d.ts +2 -0
  55. package/atoms/tooltip/index.d.ts.map +1 -0
  56. package/atoms/tooltip/tooltip.component.d.ts +15 -0
  57. package/atoms/tooltip/tooltip.component.d.ts.map +1 -0
  58. package/fesm2022/atomng-ui-atoms.mjs +778 -0
  59. package/fesm2022/atomng-ui-atoms.mjs.map +1 -0
  60. package/fesm2022/atomng-ui-molecules.mjs +1590 -0
  61. package/fesm2022/atomng-ui-molecules.mjs.map +1 -0
  62. package/fesm2022/atomng-ui-organisms.mjs +1346 -0
  63. package/fesm2022/atomng-ui-organisms.mjs.map +1 -0
  64. package/fesm2022/atomng-ui-tokens.mjs +499 -0
  65. package/fesm2022/atomng-ui-tokens.mjs.map +1 -0
  66. package/fesm2022/atomng-ui.mjs +4184 -0
  67. package/fesm2022/atomng-ui.mjs.map +1 -0
  68. package/index.d.ts +5 -0
  69. package/index.d.ts.map +1 -0
  70. package/lib/atoms/avatar/avatar.component.d.ts +24 -0
  71. package/lib/atoms/avatar/avatar.component.d.ts.map +1 -0
  72. package/lib/atoms/avatar/index.d.ts +3 -0
  73. package/lib/atoms/avatar/index.d.ts.map +1 -0
  74. package/lib/atoms/badge/badge.component.d.ts +23 -0
  75. package/lib/atoms/badge/badge.component.d.ts.map +1 -0
  76. package/lib/atoms/badge/index.d.ts +3 -0
  77. package/lib/atoms/badge/index.d.ts.map +1 -0
  78. package/lib/atoms/button/button.component.d.ts +47 -0
  79. package/lib/atoms/button/button.component.d.ts.map +1 -0
  80. package/lib/atoms/button/index.d.ts +3 -0
  81. package/lib/atoms/button/index.d.ts.map +1 -0
  82. package/lib/atoms/checkbox/checkbox.component.d.ts +28 -0
  83. package/lib/atoms/checkbox/checkbox.component.d.ts.map +1 -0
  84. package/lib/atoms/checkbox/index.d.ts +2 -0
  85. package/lib/atoms/checkbox/index.d.ts.map +1 -0
  86. package/lib/atoms/chip/chip.component.d.ts +17 -0
  87. package/lib/atoms/chip/chip.component.d.ts.map +1 -0
  88. package/lib/atoms/chip/index.d.ts +2 -0
  89. package/lib/atoms/chip/index.d.ts.map +1 -0
  90. package/lib/atoms/index.d.ts +14 -0
  91. package/lib/atoms/index.d.ts.map +1 -0
  92. package/lib/atoms/kbd/index.d.ts +2 -0
  93. package/lib/atoms/kbd/index.d.ts.map +1 -0
  94. package/lib/atoms/kbd/kbd.component.d.ts +14 -0
  95. package/lib/atoms/kbd/kbd.component.d.ts.map +1 -0
  96. package/lib/atoms/link/index.d.ts +2 -0
  97. package/lib/atoms/link/index.d.ts.map +1 -0
  98. package/lib/atoms/link/link.component.d.ts +15 -0
  99. package/lib/atoms/link/link.component.d.ts.map +1 -0
  100. package/lib/atoms/progress/index.d.ts +3 -0
  101. package/lib/atoms/progress/index.d.ts.map +1 -0
  102. package/lib/atoms/progress/progress.component.d.ts +20 -0
  103. package/lib/atoms/progress/progress.component.d.ts.map +1 -0
  104. package/lib/atoms/separator/index.d.ts +2 -0
  105. package/lib/atoms/separator/index.d.ts.map +1 -0
  106. package/lib/atoms/separator/separator.component.d.ts +13 -0
  107. package/lib/atoms/separator/separator.component.d.ts.map +1 -0
  108. package/lib/atoms/skeleton/index.d.ts +2 -0
  109. package/lib/atoms/skeleton/index.d.ts.map +1 -0
  110. package/lib/atoms/skeleton/skeleton.component.d.ts +13 -0
  111. package/lib/atoms/skeleton/skeleton.component.d.ts.map +1 -0
  112. package/lib/atoms/slider/index.d.ts +2 -0
  113. package/lib/atoms/slider/index.d.ts.map +1 -0
  114. package/lib/atoms/slider/slider.component.d.ts +27 -0
  115. package/lib/atoms/slider/slider.component.d.ts.map +1 -0
  116. package/lib/atoms/switch/index.d.ts +2 -0
  117. package/lib/atoms/switch/index.d.ts.map +1 -0
  118. package/lib/atoms/switch/switch.component.d.ts +25 -0
  119. package/lib/atoms/switch/switch.component.d.ts.map +1 -0
  120. package/lib/atoms/tooltip/index.d.ts +2 -0
  121. package/lib/atoms/tooltip/index.d.ts.map +1 -0
  122. package/lib/atoms/tooltip/tooltip.component.d.ts +15 -0
  123. package/lib/atoms/tooltip/tooltip.component.d.ts.map +1 -0
  124. package/lib/molecules/alert/alert.component.d.ts +22 -0
  125. package/lib/molecules/alert/alert.component.d.ts.map +1 -0
  126. package/lib/molecules/alert/index.d.ts +2 -0
  127. package/lib/molecules/alert/index.d.ts.map +1 -0
  128. package/lib/molecules/avatar-group/avatar-group.component.d.ts +22 -0
  129. package/lib/molecules/avatar-group/avatar-group.component.d.ts.map +1 -0
  130. package/lib/molecules/avatar-group/index.d.ts +2 -0
  131. package/lib/molecules/avatar-group/index.d.ts.map +1 -0
  132. package/lib/molecules/breadcrumb/breadcrumb.component.d.ts +17 -0
  133. package/lib/molecules/breadcrumb/breadcrumb.component.d.ts.map +1 -0
  134. package/lib/molecules/breadcrumb/index.d.ts +2 -0
  135. package/lib/molecules/breadcrumb/index.d.ts.map +1 -0
  136. package/lib/molecules/button-group/button-group.component.d.ts +11 -0
  137. package/lib/molecules/button-group/button-group.component.d.ts.map +1 -0
  138. package/lib/molecules/button-group/index.d.ts +2 -0
  139. package/lib/molecules/button-group/index.d.ts.map +1 -0
  140. package/lib/molecules/form-field/form-field.component.d.ts +18 -0
  141. package/lib/molecules/form-field/form-field.component.d.ts.map +1 -0
  142. package/lib/molecules/form-field/index.d.ts +2 -0
  143. package/lib/molecules/form-field/index.d.ts.map +1 -0
  144. package/lib/molecules/index.d.ts +13 -0
  145. package/lib/molecules/index.d.ts.map +1 -0
  146. package/lib/molecules/input/index.d.ts +2 -0
  147. package/lib/molecules/input/index.d.ts.map +1 -0
  148. package/lib/molecules/input/input.component.d.ts +50 -0
  149. package/lib/molecules/input/input.component.d.ts.map +1 -0
  150. package/lib/molecules/pagination/index.d.ts +2 -0
  151. package/lib/molecules/pagination/index.d.ts.map +1 -0
  152. package/lib/molecules/pagination/pagination.component.d.ts +18 -0
  153. package/lib/molecules/pagination/pagination.component.d.ts.map +1 -0
  154. package/lib/molecules/select/index.d.ts +3 -0
  155. package/lib/molecules/select/index.d.ts.map +1 -0
  156. package/lib/molecules/select/select.component.d.ts +56 -0
  157. package/lib/molecules/select/select.component.d.ts.map +1 -0
  158. package/lib/molecules/select-search/index.d.ts +2 -0
  159. package/lib/molecules/select-search/index.d.ts.map +1 -0
  160. package/lib/molecules/select-search/select-search.component.d.ts +63 -0
  161. package/lib/molecules/select-search/select-search.component.d.ts.map +1 -0
  162. package/lib/molecules/tabs/index.d.ts +2 -0
  163. package/lib/molecules/tabs/index.d.ts.map +1 -0
  164. package/lib/molecules/tabs/tabs.component.d.ts +23 -0
  165. package/lib/molecules/tabs/tabs.component.d.ts.map +1 -0
  166. package/lib/molecules/textarea/index.d.ts +2 -0
  167. package/lib/molecules/textarea/index.d.ts.map +1 -0
  168. package/lib/molecules/textarea/textarea.component.d.ts +27 -0
  169. package/lib/molecules/textarea/textarea.component.d.ts.map +1 -0
  170. package/lib/molecules/toast/index.d.ts +2 -0
  171. package/lib/molecules/toast/index.d.ts.map +1 -0
  172. package/lib/molecules/toast/toast.component.d.ts +19 -0
  173. package/lib/molecules/toast/toast.component.d.ts.map +1 -0
  174. package/lib/organisms/accordion/accordion.component.d.ts +25 -0
  175. package/lib/organisms/accordion/accordion.component.d.ts.map +1 -0
  176. package/lib/organisms/card/card.component.d.ts +14 -0
  177. package/lib/organisms/card/card.component.d.ts.map +1 -0
  178. package/lib/organisms/dropdown-menu/dropdown-menu.component.d.ts +29 -0
  179. package/lib/organisms/dropdown-menu/dropdown-menu.component.d.ts.map +1 -0
  180. package/lib/organisms/index.d.ts +8 -0
  181. package/lib/organisms/index.d.ts.map +1 -0
  182. package/lib/organisms/modal/modal.component.d.ts +19 -0
  183. package/lib/organisms/modal/modal.component.d.ts.map +1 -0
  184. package/lib/organisms/navigation-menu/navigation-menu.component.d.ts +24 -0
  185. package/lib/organisms/navigation-menu/navigation-menu.component.d.ts.map +1 -0
  186. package/lib/organisms/sidebar/sidebar.component.d.ts +68 -0
  187. package/lib/organisms/sidebar/sidebar.component.d.ts.map +1 -0
  188. package/lib/organisms/table/index.d.ts +3 -0
  189. package/lib/organisms/table/index.d.ts.map +1 -0
  190. package/lib/organisms/table/table-cell.directive.d.ts +17 -0
  191. package/lib/organisms/table/table-cell.directive.d.ts.map +1 -0
  192. package/lib/organisms/table/table.component.d.ts +50 -0
  193. package/lib/organisms/table/table.component.d.ts.map +1 -0
  194. package/lib/tokens/index.d.ts +2 -0
  195. package/lib/tokens/index.d.ts.map +1 -0
  196. package/lib/tokens/theme/color-presets.d.ts +24 -0
  197. package/lib/tokens/theme/color-presets.d.ts.map +1 -0
  198. package/lib/tokens/theme/index.d.ts +6 -0
  199. package/lib/tokens/theme/index.d.ts.map +1 -0
  200. package/lib/tokens/theme/theme-picker.component.d.ts +11 -0
  201. package/lib/tokens/theme/theme-picker.component.d.ts.map +1 -0
  202. package/lib/tokens/theme/theme-toggle.component.d.ts +15 -0
  203. package/lib/tokens/theme/theme-toggle.component.d.ts.map +1 -0
  204. package/lib/tokens/theme/theme.provider.d.ts +4 -0
  205. package/lib/tokens/theme/theme.provider.d.ts.map +1 -0
  206. package/lib/tokens/theme/theme.service.d.ts +48 -0
  207. package/lib/tokens/theme/theme.service.d.ts.map +1 -0
  208. package/molecules/alert/alert.component.d.ts +22 -0
  209. package/molecules/alert/alert.component.d.ts.map +1 -0
  210. package/molecules/alert/index.d.ts +2 -0
  211. package/molecules/alert/index.d.ts.map +1 -0
  212. package/molecules/atomng-ui-molecules.d.ts.map +1 -0
  213. package/molecules/avatar-group/avatar-group.component.d.ts +22 -0
  214. package/molecules/avatar-group/avatar-group.component.d.ts.map +1 -0
  215. package/molecules/avatar-group/index.d.ts +2 -0
  216. package/molecules/avatar-group/index.d.ts.map +1 -0
  217. package/molecules/breadcrumb/breadcrumb.component.d.ts +17 -0
  218. package/molecules/breadcrumb/breadcrumb.component.d.ts.map +1 -0
  219. package/molecules/breadcrumb/index.d.ts +2 -0
  220. package/molecules/breadcrumb/index.d.ts.map +1 -0
  221. package/molecules/button-group/button-group.component.d.ts +11 -0
  222. package/molecules/button-group/button-group.component.d.ts.map +1 -0
  223. package/molecules/button-group/index.d.ts +2 -0
  224. package/molecules/button-group/index.d.ts.map +1 -0
  225. package/molecules/form-field/form-field.component.d.ts +18 -0
  226. package/molecules/form-field/form-field.component.d.ts.map +1 -0
  227. package/molecules/form-field/index.d.ts +2 -0
  228. package/molecules/form-field/index.d.ts.map +1 -0
  229. package/molecules/index.d.ts +13 -0
  230. package/molecules/index.d.ts.map +1 -0
  231. package/molecules/input/index.d.ts +2 -0
  232. package/molecules/input/index.d.ts.map +1 -0
  233. package/molecules/input/input.component.d.ts +50 -0
  234. package/molecules/input/input.component.d.ts.map +1 -0
  235. package/molecules/pagination/index.d.ts +2 -0
  236. package/molecules/pagination/index.d.ts.map +1 -0
  237. package/molecules/pagination/pagination.component.d.ts +18 -0
  238. package/molecules/pagination/pagination.component.d.ts.map +1 -0
  239. package/molecules/select/index.d.ts +3 -0
  240. package/molecules/select/index.d.ts.map +1 -0
  241. package/molecules/select/select.component.d.ts +56 -0
  242. package/molecules/select/select.component.d.ts.map +1 -0
  243. package/molecules/select-search/index.d.ts +2 -0
  244. package/molecules/select-search/index.d.ts.map +1 -0
  245. package/molecules/select-search/select-search.component.d.ts +63 -0
  246. package/molecules/select-search/select-search.component.d.ts.map +1 -0
  247. package/molecules/tabs/index.d.ts +2 -0
  248. package/molecules/tabs/index.d.ts.map +1 -0
  249. package/molecules/tabs/tabs.component.d.ts +23 -0
  250. package/molecules/tabs/tabs.component.d.ts.map +1 -0
  251. package/molecules/textarea/index.d.ts +2 -0
  252. package/molecules/textarea/index.d.ts.map +1 -0
  253. package/molecules/textarea/textarea.component.d.ts +27 -0
  254. package/molecules/textarea/textarea.component.d.ts.map +1 -0
  255. package/molecules/toast/index.d.ts +2 -0
  256. package/molecules/toast/index.d.ts.map +1 -0
  257. package/molecules/toast/toast.component.d.ts +19 -0
  258. package/molecules/toast/toast.component.d.ts.map +1 -0
  259. package/organisms/accordion/accordion.component.d.ts +25 -0
  260. package/organisms/accordion/accordion.component.d.ts.map +1 -0
  261. package/organisms/atomng-ui-organisms.d.ts.map +1 -0
  262. package/organisms/card/card.component.d.ts +14 -0
  263. package/organisms/card/card.component.d.ts.map +1 -0
  264. package/organisms/dropdown-menu/dropdown-menu.component.d.ts +29 -0
  265. package/organisms/dropdown-menu/dropdown-menu.component.d.ts.map +1 -0
  266. package/organisms/index.d.ts +8 -0
  267. package/organisms/index.d.ts.map +1 -0
  268. package/organisms/modal/modal.component.d.ts +19 -0
  269. package/organisms/modal/modal.component.d.ts.map +1 -0
  270. package/organisms/navigation-menu/navigation-menu.component.d.ts +24 -0
  271. package/organisms/navigation-menu/navigation-menu.component.d.ts.map +1 -0
  272. package/organisms/sidebar/sidebar.component.d.ts +68 -0
  273. package/organisms/sidebar/sidebar.component.d.ts.map +1 -0
  274. package/organisms/table/index.d.ts +3 -0
  275. package/organisms/table/index.d.ts.map +1 -0
  276. package/organisms/table/table-cell.directive.d.ts +17 -0
  277. package/organisms/table/table-cell.directive.d.ts.map +1 -0
  278. package/organisms/table/table.component.d.ts +50 -0
  279. package/organisms/table/table.component.d.ts.map +1 -0
  280. package/package.json +81 -0
  281. package/tokens/_colors.scss +150 -0
  282. package/tokens/_spacing.scss +98 -0
  283. package/tokens/_typography.scss +59 -0
  284. package/tokens/atomng-ui-tokens.d.ts.map +1 -0
  285. package/tokens/index.d.ts +2 -0
  286. package/tokens/index.d.ts.map +1 -0
  287. package/tokens/index.scss +8 -0
  288. package/tokens/theme/color-presets.d.ts +24 -0
  289. package/tokens/theme/color-presets.d.ts.map +1 -0
  290. package/tokens/theme/index.d.ts +6 -0
  291. package/tokens/theme/index.d.ts.map +1 -0
  292. package/tokens/theme/theme-picker.component.d.ts +11 -0
  293. package/tokens/theme/theme-picker.component.d.ts.map +1 -0
  294. package/tokens/theme/theme-toggle.component.d.ts +15 -0
  295. package/tokens/theme/theme-toggle.component.d.ts.map +1 -0
  296. package/tokens/theme/theme.provider.d.ts +4 -0
  297. package/tokens/theme/theme.provider.d.ts.map +1 -0
  298. package/tokens/theme/theme.service.d.ts +48 -0
  299. package/tokens/theme/theme.service.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomng-ui.mjs","sources":["../../../../libs/shared-ui/src/lib/tokens/theme/color-presets.ts","../../../../libs/shared-ui/src/lib/tokens/theme/theme.service.ts","../../../../libs/shared-ui/src/lib/tokens/theme/theme.provider.ts","../../../../libs/shared-ui/src/lib/tokens/theme/theme-picker.component.ts","../../../../libs/shared-ui/src/lib/tokens/theme/theme-toggle.component.ts","../../../../libs/shared-ui/src/lib/tokens/index.ts","../../../../libs/shared-ui/src/lib/atoms/avatar/avatar.component.ts","../../../../libs/shared-ui/src/lib/atoms/badge/badge.component.ts","../../../../libs/shared-ui/src/lib/atoms/button/button.component.ts","../../../../libs/shared-ui/src/lib/atoms/checkbox/checkbox.component.ts","../../../../libs/shared-ui/src/lib/atoms/chip/chip.component.ts","../../../../libs/shared-ui/src/lib/atoms/kbd/kbd.component.ts","../../../../libs/shared-ui/src/lib/atoms/link/link.component.ts","../../../../libs/shared-ui/src/lib/atoms/progress/progress.component.ts","../../../../libs/shared-ui/src/lib/atoms/separator/separator.component.ts","../../../../libs/shared-ui/src/lib/atoms/skeleton/skeleton.component.ts","../../../../libs/shared-ui/src/lib/atoms/slider/slider.component.ts","../../../../libs/shared-ui/src/lib/atoms/switch/switch.component.ts","../../../../libs/shared-ui/src/lib/atoms/tooltip/tooltip.component.ts","../../../../libs/shared-ui/src/lib/atoms/index.ts","../../../../libs/shared-ui/src/lib/molecules/alert/alert.component.ts","../../../../libs/shared-ui/src/lib/molecules/avatar-group/avatar-group.component.ts","../../../../libs/shared-ui/src/lib/molecules/breadcrumb/breadcrumb.component.ts","../../../../libs/shared-ui/src/lib/molecules/button-group/button-group.component.ts","../../../../libs/shared-ui/src/lib/molecules/form-field/form-field.component.ts","../../../../libs/shared-ui/src/lib/molecules/input/input.component.ts","../../../../libs/shared-ui/src/lib/molecules/pagination/pagination.component.ts","../../../../libs/shared-ui/src/lib/molecules/select/select.component.ts","../../../../libs/shared-ui/src/lib/molecules/tabs/tabs.component.ts","../../../../libs/shared-ui/src/lib/molecules/textarea/textarea.component.ts","../../../../libs/shared-ui/src/lib/molecules/toast/toast.component.ts","../../../../libs/shared-ui/src/lib/molecules/select-search/select-search.component.ts","../../../../libs/shared-ui/src/lib/molecules/index.ts","../../../../libs/shared-ui/src/lib/organisms/accordion/accordion.component.ts","../../../../libs/shared-ui/src/lib/organisms/card/card.component.ts","../../../../libs/shared-ui/src/lib/organisms/dropdown-menu/dropdown-menu.component.ts","../../../../libs/shared-ui/src/lib/organisms/modal/modal.component.ts","../../../../libs/shared-ui/src/lib/organisms/navigation-menu/navigation-menu.component.ts","../../../../libs/shared-ui/src/lib/organisms/table/table-cell.directive.ts","../../../../libs/shared-ui/src/lib/organisms/table/table.component.ts","../../../../libs/shared-ui/src/lib/organisms/sidebar/sidebar.component.ts","../../../../libs/shared-ui/src/lib/organisms/index.ts","../../../../libs/shared-ui/src/index.ts","../../../../libs/shared-ui/src/atomng-ui.ts"],"sourcesContent":["// ── Color presets ─────────────────────────────────────────────────────────────\n// Full 11-step palettes (50→950).\n// Colors sourced from Tailwind CSS v3 palette — production-grade, accessible.\n// Each palette is keyed by a human-readable preset name.\n\nexport interface ColorPalette {\n 50: string;\n 100: string;\n 200: string;\n 300: string;\n 400: string;\n 500: string;\n 600: string;\n 700: string;\n 800: string;\n 900: string;\n 950: string;\n}\n\nexport type PrimaryColorPreset =\n | 'green' | 'emerald' | 'teal' | 'cyan'\n | 'sky' | 'blue' | 'indigo' | 'violet'\n | 'purple' | 'fuchsia' | 'pink' | 'rose'\n | 'red' | 'orange' | 'amber'\n | 'lime' | 'slate' | 'zinc';\n\nexport interface ColorPresetMeta {\n name: PrimaryColorPreset;\n label: string;\n swatch: string; // The 500-shade preview color\n palette: ColorPalette;\n}\n\n// ── Palette definitions ───────────────────────────────────────────────────────\n\nexport const COLOR_PRESETS: Record<PrimaryColorPreset, ColorPresetMeta> = {\n\n green: {\n name: 'green', label: 'Green', swatch: '#22c55e',\n palette: {\n 50: '#f0fdf4', 100: '#dcfce7', 200: '#bbf7d0', 300: '#86efac',\n 400: '#4ade80', 500: '#22c55e', 600: '#16a34a', 700: '#15803d',\n 800: '#166534', 900: '#14532d', 950: '#052e16',\n },\n },\n\n emerald: {\n name: 'emerald', label: 'Emerald', swatch: '#10b981',\n palette: {\n 50: '#ecfdf5', 100: '#d1fae5', 200: '#a7f3d0', 300: '#6ee7b7',\n 400: '#34d399', 500: '#10b981', 600: '#059669', 700: '#047857',\n 800: '#065f46', 900: '#064e3b', 950: '#022c22',\n },\n },\n\n teal: {\n name: 'teal', label: 'Teal', swatch: '#14b8a6',\n palette: {\n 50: '#f0fdfa', 100: '#ccfbf1', 200: '#99f6e4', 300: '#5eead4',\n 400: '#2dd4bf', 500: '#14b8a6', 600: '#0d9488', 700: '#0f766e',\n 800: '#115e59', 900: '#134e4a', 950: '#042f2e',\n },\n },\n\n cyan: {\n name: 'cyan', label: 'Cyan', swatch: '#06b6d4',\n palette: {\n 50: '#ecfeff', 100: '#cffafe', 200: '#a5f3fc', 300: '#67e8f9',\n 400: '#22d3ee', 500: '#06b6d4', 600: '#0891b2', 700: '#0e7490',\n 800: '#155e75', 900: '#164e63', 950: '#083344',\n },\n },\n\n sky: {\n name: 'sky', label: 'Sky', swatch: '#0ea5e9',\n palette: {\n 50: '#f0f9ff', 100: '#e0f2fe', 200: '#bae6fd', 300: '#7dd3fc',\n 400: '#38bdf8', 500: '#0ea5e9', 600: '#0284c7', 700: '#0369a1',\n 800: '#075985', 900: '#0c4a6e', 950: '#082f49',\n },\n },\n\n blue: {\n name: 'blue', label: 'Blue', swatch: '#3b82f6',\n palette: {\n 50: '#eff6ff', 100: '#dbeafe', 200: '#bfdbfe', 300: '#93c5fd',\n 400: '#60a5fa', 500: '#3b82f6', 600: '#2563eb', 700: '#1d4ed8',\n 800: '#1e40af', 900: '#1e3a8a', 950: '#172554',\n },\n },\n\n indigo: {\n name: 'indigo', label: 'Indigo', swatch: '#6366f1',\n palette: {\n 50: '#eef2ff', 100: '#e0e7ff', 200: '#c7d2fe', 300: '#a5b4fc',\n 400: '#818cf8', 500: '#6366f1', 600: '#4f46e5', 700: '#4338ca',\n 800: '#3730a3', 900: '#312e81', 950: '#1e1b4b',\n },\n },\n\n violet: {\n name: 'violet', label: 'Violet', swatch: '#8b5cf6',\n palette: {\n 50: '#f5f3ff', 100: '#ede9fe', 200: '#ddd6fe', 300: '#c4b5fd',\n 400: '#a78bfa', 500: '#8b5cf6', 600: '#7c3aed', 700: '#6d28d9',\n 800: '#5b21b6', 900: '#4c1d95', 950: '#2e1065',\n },\n },\n\n purple: {\n name: 'purple', label: 'Purple', swatch: '#a855f7',\n palette: {\n 50: '#faf5ff', 100: '#f3e8ff', 200: '#e9d5ff', 300: '#d8b4fe',\n 400: '#c084fc', 500: '#a855f7', 600: '#9333ea', 700: '#7e22ce',\n 800: '#6b21a8', 900: '#581c87', 950: '#3b0764',\n },\n },\n\n fuchsia: {\n name: 'fuchsia', label: 'Fuchsia', swatch: '#d946ef',\n palette: {\n 50: '#fdf4ff', 100: '#fae8ff', 200: '#f5d0fe', 300: '#f0abfc',\n 400: '#e879f9', 500: '#d946ef', 600: '#c026d3', 700: '#a21caf',\n 800: '#86198f', 900: '#701a75', 950: '#4a044e',\n },\n },\n\n pink: {\n name: 'pink', label: 'Pink', swatch: '#ec4899',\n palette: {\n 50: '#fdf2f8', 100: '#fce7f3', 200: '#fbcfe8', 300: '#f9a8d4',\n 400: '#f472b6', 500: '#ec4899', 600: '#db2777', 700: '#be185d',\n 800: '#9d174d', 900: '#831843', 950: '#500724',\n },\n },\n\n rose: {\n name: 'rose', label: 'Rose', swatch: '#f43f5e',\n palette: {\n 50: '#fff1f2', 100: '#ffe4e6', 200: '#fecdd3', 300: '#fda4af',\n 400: '#fb7185', 500: '#f43f5e', 600: '#e11d48', 700: '#be123c',\n 800: '#9f1239', 900: '#881337', 950: '#4c0519',\n },\n },\n\n red: {\n name: 'red', label: 'Red', swatch: '#ef4444',\n palette: {\n 50: '#fef2f2', 100: '#fee2e2', 200: '#fecaca', 300: '#fca5a5',\n 400: '#f87171', 500: '#ef4444', 600: '#dc2626', 700: '#b91c1c',\n 800: '#991b1b', 900: '#7f1d1d', 950: '#450a0a',\n },\n },\n\n orange: {\n name: 'orange', label: 'Orange', swatch: '#f97316',\n palette: {\n 50: '#fff7ed', 100: '#ffedd5', 200: '#fed7aa', 300: '#fdba74',\n 400: '#fb923c', 500: '#f97316', 600: '#ea580c', 700: '#c2410c',\n 800: '#9a3412', 900: '#7c2d12', 950: '#431407',\n },\n },\n\n amber: {\n name: 'amber', label: 'Amber', swatch: '#f59e0b',\n palette: {\n 50: '#fffbeb', 100: '#fef3c7', 200: '#fde68a', 300: '#fcd34d',\n 400: '#fbbf24', 500: '#f59e0b', 600: '#d97706', 700: '#b45309',\n 800: '#92400e', 900: '#78350f', 950: '#451a03',\n },\n },\n\n lime: {\n name: 'lime', label: 'Lime', swatch: '#84cc16',\n palette: {\n 50: '#f7fee7', 100: '#ecfccb', 200: '#d9f99d', 300: '#bef264',\n 400: '#a3e635', 500: '#84cc16', 600: '#65a30d', 700: '#4d7c0f',\n 800: '#3f6212', 900: '#365314', 950: '#1a2e05',\n },\n },\n\n slate: {\n name: 'slate', label: 'Slate', swatch: '#64748b',\n palette: {\n 50: '#f8fafc', 100: '#f1f5f9', 200: '#e2e8f0', 300: '#cbd5e1',\n 400: '#94a3b8', 500: '#64748b', 600: '#475569', 700: '#334155',\n 800: '#1e293b', 900: '#0f172a', 950: '#020617',\n },\n },\n\n zinc: {\n name: 'zinc', label: 'Zinc', swatch: '#71717a',\n palette: {\n 50: '#fafafa', 100: '#f4f4f5', 200: '#e4e4e7', 300: '#d4d4d8',\n 400: '#a1a1aa', 500: '#71717a', 600: '#52525b', 700: '#3f3f46',\n 800: '#27272a', 900: '#18181b', 950: '#09090b',\n },\n },\n};\n\n/** Returns all preset metas sorted for display */\nexport function getAllPresets(): ColorPresetMeta[] {\n return Object.values(COLOR_PRESETS);\n}\n","import { Injectable, PLATFORM_ID, inject, signal, computed, effect } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ColorPalette, PrimaryColorPreset,\n COLOR_PRESETS, ColorPresetMeta,\n} from './color-presets';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\nexport interface ThemeConfig {\n primaryColor?: PrimaryColorPreset | ColorPalette;\n mode?: ThemeMode;\n}\n\nconst STORAGE_KEY_MODE = 'ui-theme-mode';\nconst STORAGE_KEY_PRESET = 'ui-theme-preset';\n\n// ── ThemeService ──────────────────────────────────────────────────────────────\n// Single source of truth for:\n// · Primary color palette → overrides --color-primary-* CSS vars on :root\n// · Theme mode (light / dark / system) → sets data-theme attribute\n//\n// State is persisted to localStorage and restored on next page load.\n//\n// Usage (anywhere in the app):\n// theme = inject(ThemeService);\n// theme.setPrimary('violet');\n// theme.setMode('dark');\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private platformId = inject(PLATFORM_ID);\n\n // ── Private state ─────────────────────────────────────────────────────────\n private readonly _preset = signal<PrimaryColorPreset | null>(null);\n private readonly _palette = signal<ColorPalette | null>(null);\n private readonly _mode = signal<ThemeMode>('light');\n\n // ── Public read-only signals ──────────────────────────────────────────────\n\n /** Currently active preset name (null when a custom palette was set) */\n readonly activePreset = this._preset.asReadonly();\n\n /** Resolved full palette */\n readonly activePalette = computed<ColorPalette | null>(() => {\n const custom = this._palette();\n if (custom) return custom;\n const preset = this._preset();\n return preset ? (COLOR_PRESETS[preset]?.palette ?? null) : null;\n });\n\n /** Currently active mode */\n readonly activeMode = this._mode.asReadonly();\n\n /** Derived boolean — true when dark is currently active (including system→dark) */\n readonly isDark = computed(() => {\n if (this._mode() === 'dark') return true;\n if (this._mode() === 'system' && isPlatformBrowser(this.platformId)) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n return false;\n });\n\n /** All available presets for rendering a picker */\n readonly presets: ColorPresetMeta[] = Object.values(COLOR_PRESETS);\n\n // ── Constructor — restore from localStorage ───────────────────────────────\n\n constructor() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Restore mode\n const savedMode = localStorage.getItem(STORAGE_KEY_MODE) as ThemeMode | null;\n const initialMode: ThemeMode = (savedMode === 'light' || savedMode === 'dark' || savedMode === 'system')\n ? savedMode : 'light';\n this._mode.set(initialMode);\n this.applyMode(initialMode);\n\n // Restore preset\n const savedPreset = localStorage.getItem(STORAGE_KEY_PRESET) as PrimaryColorPreset | null;\n if (savedPreset && COLOR_PRESETS[savedPreset]) {\n this._preset.set(savedPreset);\n this.applyPalette(COLOR_PRESETS[savedPreset].palette);\n }\n\n // Persist mode changes to localStorage\n effect(() => {\n localStorage.setItem(STORAGE_KEY_MODE, this._mode());\n });\n\n // Persist preset changes to localStorage\n effect(() => {\n const p = this._preset();\n if (p) localStorage.setItem(STORAGE_KEY_PRESET, p);\n else localStorage.removeItem(STORAGE_KEY_PRESET);\n });\n }\n\n // ── Public API ─────────────────────────────────────────────────────────────\n\n /**\n * Set the primary color using a preset name or a full custom palette.\n * Immediately applies CSS custom properties to :root and persists to localStorage.\n */\n setPrimary(color: PrimaryColorPreset | ColorPalette): void {\n if (typeof color === 'string') {\n if (!COLOR_PRESETS[color]) return;\n this._preset.set(color);\n this._palette.set(null);\n this.applyPalette(COLOR_PRESETS[color].palette);\n } else {\n this._preset.set(null);\n this._palette.set(color);\n this.applyPalette(color);\n }\n }\n\n /**\n * Switch between light, dark, and system modes.\n * Persisted to localStorage automatically.\n */\n setMode(mode: ThemeMode): void {\n this._mode.set(mode);\n this.applyMode(mode);\n }\n\n /** Toggle between light ↔ dark (ignores system). */\n toggleMode(): void {\n this.setMode(this._mode() === 'dark' ? 'light' : 'dark');\n }\n\n /**\n * Apply a full ThemeConfig at once (used by provideSharedUiTheme).\n * Does NOT override values already restored from localStorage unless\n * the config explicitly provides them.\n */\n applyConfig(config: ThemeConfig): void {\n // Only apply if nothing was already restored from localStorage\n if (config.primaryColor !== undefined && this._preset() === null && this._palette() === null) {\n this.setPrimary(config.primaryColor);\n }\n if (config.mode !== undefined) {\n const saved = isPlatformBrowser(this.platformId)\n ? localStorage.getItem(STORAGE_KEY_MODE)\n : null;\n // Don't override a user's saved preference with the default config\n if (!saved) this.setMode(config.mode);\n }\n }\n\n // ── Internal helpers ──────────────────────────────────────────────────────\n\n private applyPalette(palette: ColorPalette): void {\n if (!isPlatformBrowser(this.platformId)) return;\n const root = document.documentElement;\n (Object.entries(palette) as unknown as [string, string][]).forEach(([shade, value]) => {\n root.style.setProperty(`--color-primary-${shade}`, value);\n });\n }\n\n private _mqListener?: (e: MediaQueryListEvent) => void;\n\n private applyMode(mode: ThemeMode): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const applyDark = (dark: boolean) =>\n document.documentElement.setAttribute('data-theme', dark ? 'dark' : 'light');\n\n // Remove any previous media-query listener\n if (this._mqListener) {\n window.matchMedia('(prefers-color-scheme: dark)')\n .removeEventListener('change', this._mqListener);\n this._mqListener = undefined;\n }\n\n if (mode === 'system') {\n const mq = window.matchMedia('(prefers-color-scheme: dark)');\n applyDark(mq.matches);\n this._mqListener = (e) => { if (this._mode() === 'system') applyDark(e.matches); };\n mq.addEventListener('change', this._mqListener);\n } else {\n applyDark(mode === 'dark');\n }\n }\n}\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { ThemeService, ThemeConfig } from './theme.service';\n\n// ── provideSharedUiTheme ──────────────────────────────────────────────────────\n// Call in app.config.ts to configure the design system theme at bootstrap time.\n//\n// Usage:\n// export const appConfig: ApplicationConfig = {\n// providers: [\n// provideSharedUiTheme({ primaryColor: 'indigo', mode: 'light' }),\n// ],\n// };\n\nexport function provideSharedUiTheme(config: ThemeConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: APP_INITIALIZER,\n useFactory: (theme: ThemeService) => () => theme.applyConfig(config),\n deps: [ThemeService],\n multi: true,\n },\n ]);\n}\n","import {\n ChangeDetectionStrategy, Component, inject, output,\n} from '@angular/core';\nimport { ThemeService } from './theme.service';\nimport { ColorPresetMeta, PrimaryColorPreset } from './color-presets';\n\n// ── ThemePickerComponent ──────────────────────────────────────────────────────\n// Grid of color swatches — clicking one applies the preset immediately.\n// Emits (change) for the host to react if needed.\n//\n// Usage:\n// <ui-theme-picker />\n// <ui-theme-picker (change)=\"onColorChange($event)\" />\n\n@Component({\n selector: 'ui-theme-picker',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"tp\" role=\"radiogroup\" aria-label=\"Primary color\">\n @for (preset of theme.presets; track preset.name) {\n <button\n class=\"tp__swatch\"\n type=\"button\"\n role=\"radio\"\n [attr.aria-label]=\"preset.label\"\n [attr.aria-checked]=\"theme.activePreset() === preset.name\"\n [class.tp__swatch--active]=\"theme.activePreset() === preset.name\"\n [style.background]=\"preset.swatch\"\n [title]=\"preset.label\"\n (click)=\"select(preset)\"\n >\n @if (theme.activePreset() === preset.name) {\n <svg class=\"tp__check\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 6l3 3 5-5\" stroke=\"#fff\" stroke-width=\"1.8\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n </button>\n }\n </div>\n `,\n styles: [`\n .tp {\n display: grid;\n grid-template-columns: repeat(6, 28px);\n gap: 8px;\n padding: 4px;\n }\n\n .tp__swatch {\n width: 28px;\n height: 28px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.15s, border-color 0.15s;\n padding: 0;\n\n &:hover {\n transform: scale(1.15);\n }\n }\n\n .tp__swatch--active {\n border-color: var(--color-border);\n box-shadow: 0 0 0 2px var(--color-bg), 0 0 0 4px currentColor;\n }\n\n .tp__check {\n width: 12px;\n height: 12px;\n }\n `],\n})\nexport class ThemePickerComponent {\n protected theme = inject(ThemeService);\n\n readonly change = output<PrimaryColorPreset>();\n\n protected select(preset: ColorPresetMeta): void {\n this.theme.setPrimary(preset.name);\n this.change.emit(preset.name);\n }\n}\n","import {\n ChangeDetectionStrategy, Component, inject,\n} from '@angular/core';\nimport { ThemeService, ThemeMode } from './theme.service';\n\n// ── ThemeToggleComponent ───────────────────────────────────────────────────────\n// A 3-segment pill that lets the user pick between Light / System / Dark modes.\n// Reads the current mode from ThemeService and writes back via setMode().\n//\n// Usage:\n// <ui-theme-toggle />\n\ninterface ModeOption {\n value: ThemeMode;\n label: string;\n icon: string; // inline SVG path content\n}\n\n@Component({\n selector: 'ui-theme-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"toggle\" role=\"group\" aria-label=\"Mode d'affichage\">\n @for (opt of options; track opt.value) {\n <button\n class=\"toggle__btn\"\n [class.toggle__btn--active]=\"theme.activeMode() === opt.value\"\n type=\"button\"\n [attr.aria-label]=\"opt.label\"\n [attr.title]=\"opt.label\"\n [attr.aria-pressed]=\"theme.activeMode() === opt.value\"\n (click)=\"theme.setMode(opt.value)\"\n >\n <svg\n width=\"15\" height=\"15\"\n viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n [innerHTML]=\"opt.icon\"\n ></svg>\n <span class=\"toggle__label\">{{ opt.label }}</span>\n </button>\n }\n </div>\n `,\n styles: [`\n /* ── Container ──────────────────────────────────────────── */\n .toggle {\n display: inline-flex;\n align-items: center;\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-lg, 10px);\n padding: 3px;\n gap: 2px;\n }\n\n /* ── Base button ─────────────────────────────────────────── */\n .toggle__btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 10px;\n border-radius: var(--radius-md, 8px);\n background: transparent;\n border: none;\n color: var(--color-text-muted);\n font-family: var(--font-sans);\n font-size: var(--text-xs, 11px);\n font-weight: var(--font-medium, 500);\n cursor: pointer;\n transition: background 0.15s, color 0.15s, box-shadow 0.15s;\n white-space: nowrap;\n }\n\n .toggle__label {\n line-height: 1;\n }\n\n /* ── Light mode : hover & active (élévation = plus clair) ── */\n .toggle__btn:hover:not(.toggle__btn--active) {\n background: var(--color-bg); /* neutral-0 = blanc sur fond neutral-100 */\n color: var(--color-text);\n }\n\n .toggle__btn--active {\n background: var(--color-bg); /* blanc = surface élevée en clair */\n color: var(--color-text);\n box-shadow: 0 1px 3px rgb(0 0 0 / .10), 0 0 0 1px var(--color-border);\n }\n\n /* ── Dark mode : hover & active (élévation = plus clair) ─── */\n /* En sombre, --color-bg (neutral-950) est PLUS SOMBRE que le */\n /* conteneur (neutral-800). On utilise neutral-700/600 à la place. */\n :host-context([data-theme=\"dark\"]) .toggle__btn:hover:not(.toggle__btn--active) {\n background: var(--color-neutral-700); /* #374151 — plus clair que neutral-800 */\n color: var(--color-text);\n }\n\n :host-context([data-theme=\"dark\"]) .toggle__btn--active {\n background: var(--color-neutral-600); /* #4b5563 — encore plus clair = elevated */\n color: var(--color-text);\n box-shadow: 0 1px 3px rgb(0 0 0 / .35), 0 0 0 1px var(--color-neutral-600);\n }\n `],\n})\nexport class ThemeToggleComponent {\n protected theme = inject(ThemeService);\n\n protected options: ModeOption[] = [\n {\n value: 'light',\n label: 'Clair',\n icon: `<circle cx=\"12\" cy=\"12\" r=\"4\"/>\n <path d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32 1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"/>`,\n },\n {\n value: 'system',\n label: 'Auto',\n icon: `<rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"/>\n <path d=\"M8 21h8m-4-4v4\"/>`,\n },\n {\n value: 'dark',\n label: 'Sombre',\n icon: `<path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>`,\n },\n ];\n}\n","// ── Tokens public API ─────────────────────────────────────────────────────────\n// Re-exports all TypeScript theme utilities.\n// SCSS tokens are imported separately via @use in your global styles.scss\n\nexport * from './theme/index';\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\n/**\n * Avatar Atom\n * Source: Nuxt UI v3 — ❖ Avatar\n * Shows: image → initials → icon fallback\n * Sizes: xs(20) sm(24) md(32) lg(40) xl(48) 2xl(64) 3xl(80)\n */\n@Component({\n selector: 'ui-avatar',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"classes()\" [attr.aria-label]=\"alt() ?? null\">\n @if (src() && !imgError()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt() ?? ''\"\n (error)=\"onImgError()\"\n class=\"ui-avatar__img\"\n />\n } @else if (initials()) {\n <span class=\"ui-avatar__initials\" aria-hidden=\"true\">{{ initials() }}</span>\n } @else {\n <span class=\"ui-avatar__icon\" aria-hidden=\"true\">\n <ng-content />\n </span>\n }\n\n @if (chip()) {\n <span\n class=\"ui-avatar__chip\"\n [class]=\"'ui-avatar__chip--' + chipColor()\"\n [attr.aria-label]=\"chipAlt()\"\n ></span>\n }\n </span>\n `,\n styleUrl: './avatar.component.scss',\n})\nexport class AvatarComponent {\n readonly src = input<string | null>(null);\n readonly alt = input<string | null>(null);\n readonly size = input<AvatarSize>('md');\n readonly initials = input<string | null>(null);\n readonly chip = input<boolean>(false);\n readonly chipColor = input<string>('success');\n readonly chipAlt = input<string | null>(null);\n readonly rounded = input<boolean>(true);\n\n protected readonly imgError = signal(false);\n\n protected readonly classes = computed(() => {\n const cls = ['ui-avatar', `ui-avatar--${this.size()}`];\n if (!this.rounded()) cls.push('ui-avatar--square');\n return cls.join(' ');\n });\n\n protected onImgError() { this.imgError.set(true); }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type BadgeVariant = 'solid' | 'outline' | 'soft' | 'subtle';\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type BadgeColor = 'neutral' | 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error';\n\n/**\n * Badge Atom\n * Source: Nuxt UI v3 — ❖ Badge\n * Colors: Neutral | Primary | Secondary | Success | Info | Warning | Error\n * Variants: Outline | Soft | Solid | Subtle\n * Sizes: xs | sm | md | lg | xl\n * RoundedFull: True | False\n */\n@Component({\n selector: 'ui-badge',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [class]=\"classes()\">\n @if (dot()) {\n <span class=\"ui-badge__dot\" aria-hidden=\"true\"></span>\n }\n <ng-content />\n </span>\n `,\n styleUrl: './badge.component.scss',\n})\nexport class BadgeComponent {\n readonly variant = input<BadgeVariant>('soft');\n readonly color = input<BadgeColor>('neutral');\n readonly size = input<BadgeSize>('md');\n readonly rounded = input<boolean>(false);\n readonly dot = input<boolean>(false);\n\n protected readonly classes = computed(() => {\n const cls = ['ui-badge', `ui-badge--${this.variant()}`, `ui-badge--${this.color()}`, `ui-badge--${this.size()}`];\n if (this.rounded()) cls.push('ui-badge--rounded');\n return cls.join(' ');\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ButtonVariant = 'solid' | 'outline' | 'soft' | 'subtle' | 'ghost' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type ButtonColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n\n/**\n * Button Atom\n * Source: Nuxt UI v3 Design Kit — ❖ Button\n *\n * Variants: solid | outline | soft | subtle | ghost | link\n * Sizes: xs (h:24px) | sm (h:28px) | md (h:32px) | lg (h:36px) | xl (h:40px)\n * States: default | hover | focus | disabled | loading\n *\n * @example\n * <ui-button variant=\"solid\" color=\"primary\" size=\"md\">Click me</ui-button>\n * <ui-button variant=\"outline\" [loading]=\"true\">Loading</ui-button>\n * <ui-button [square]=\"true\" leadingIcon=\"plus\" />\n */\n@Component({\n selector: 'ui-button',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"hostClasses()\"\n [attr.aria-disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-busy]=\"loading()\"\n >\n <!-- Leading icon -->\n @if (loading() && loadingPosition() === 'leading') {\n <span class=\"ui-btn__spinner\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke-opacity=\"0.25\"/>\n <path d=\"M12 2a10 10 0 0 1 10 10\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n } @else if (leadingIcon() && !square()) {\n <span class=\"ui-btn__icon ui-btn__icon--leading\" aria-hidden=\"true\">\n <ng-content select=\"[slot=leading-icon]\" />\n </span>\n }\n\n <!-- Label -->\n @if (!square()) {\n <span class=\"ui-btn__label\">\n <ng-content />\n </span>\n }\n\n <!-- Trailing icon or square icon -->\n @if (loading() && loadingPosition() === 'trailing') {\n <span class=\"ui-btn__spinner\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke-opacity=\"0.25\"/>\n <path d=\"M12 2a10 10 0 0 1 10 10\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n } @else if (trailingIcon() && !square()) {\n <span class=\"ui-btn__icon ui-btn__icon--trailing\" aria-hidden=\"true\">\n <ng-content select=\"[slot=trailing-icon]\" />\n </span>\n }\n\n <!-- Square/icon-only mode -->\n @if (square()) {\n <span class=\"ui-btn__icon\" aria-hidden=\"true\">\n <ng-content select=\"[slot=icon]\" />\n </span>\n }\n </button>\n `,\n styleUrl: './button.component.scss',\n})\nexport class ButtonComponent {\n /** Visual variant — from Figma: Solid | Outline | Soft | Subtle | Ghost | Link */\n readonly variant = input<ButtonVariant>('solid');\n /** Color theme */\n readonly color = input<ButtonColor>('primary');\n /** Size — from Figma: xs(h:24) sm(h:28) md(h:32) lg(h:36) xl(h:40) */\n readonly size = input<ButtonSize>('md');\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n /** Loading state — shows spinner */\n readonly loading = input<boolean>(false);\n /** Position of the spinner */\n readonly loadingPosition = input<'leading' | 'trailing'>('leading');\n /** Square/icon-only mode */\n readonly square = input<boolean>(false);\n /** Full width */\n readonly block = input<boolean>(false);\n /** Leading icon name (for aria/slot reference) */\n readonly leadingIcon = input<string | null>(null);\n /** Trailing icon name */\n readonly trailingIcon = input<string | null>(null);\n /** HTML button type */\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** Accessible label for icon-only buttons */\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly hostClasses = computed(() => {\n const classes = [\n 'ui-btn',\n `ui-btn--${this.variant()}`,\n `ui-btn--${this.color()}`,\n `ui-btn--${this.size()}`,\n ];\n if (this.square()) classes.push('ui-btn--square');\n if (this.block()) classes.push('ui-btn--block');\n if (this.loading()) classes.push('ui-btn--loading');\n if (this.disabled()) classes.push('ui-btn--disabled');\n return classes.join(' ');\n });\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nexport type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type CheckboxColor = 'primary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n\n/**\n * Checkbox Atom — Source: Nuxt UI v3 ❖ Checkbox\n * CVA-compatible, accessible (ARIA), indeterminate state\n */\n@Component({\n selector: 'ui-checkbox',\n standalone: true,\n imports: [CommonModule, FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],\n template: `\n <label class=\"ui-checkbox\" [class.ui-checkbox--disabled]=\"disabled()\">\n <span class=\"ui-checkbox__control ui-checkbox__control--{{ size() }} ui-checkbox__control--{{ color() }}\"\n [class.ui-checkbox__control--checked]=\"checked()\"\n [class.ui-checkbox__control--indeterminate]=\"indeterminate()\">\n <input\n type=\"checkbox\"\n class=\"ui-checkbox__input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n (change)=\"onChange($event)\"\n />\n @if (indeterminate()) {\n <span class=\"ui-checkbox__icon ui-checkbox__icon--indeterminate\" aria-hidden=\"true\">—</span>\n } @else if (checked()) {\n <span class=\"ui-checkbox__icon\" aria-hidden=\"true\">✓</span>\n }\n </span>\n @if (label()) {\n <span class=\"ui-checkbox__label ui-checkbox__label--{{ size() }}\">\n {{ label() }}\n @if (required()) { <span class=\"ui-checkbox__required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n </label>\n `,\n styleUrl: './checkbox.component.scss',\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly size = input<CheckboxSize>('md');\n readonly color = input<CheckboxColor>('primary');\n readonly label = input<string | null>(null);\n readonly disabled = input<boolean>(false);\n readonly indeterminate = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n readonly checked = model<boolean>(false);\n\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(v: boolean) { this.checked.set(v); }\n registerOnChange(fn: (v: boolean) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this._onTouched = fn; }\n setDisabledState(_: boolean) {}\n\n protected onChange(e: Event) {\n const checked = (e.target as HTMLInputElement).checked;\n this.checked.set(checked);\n this._onChange(checked);\n this._onTouched();\n }\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type ChipColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\nexport type ChipSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type ChipPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\n/**\n * Chip Atom — Source: Nuxt UI v3 ❖ Chip\n * Small indicator overlaid on another element (e.g., notification dot)\n */\n@Component({\n selector: 'ui-chip',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"ui-chip-wrap\">\n <ng-content />\n <span [class]=\"'ui-chip ui-chip--' + color() + ' ui-chip--' + size() + ' ui-chip--' + position()\">\n @if (text()) { {{ text() }} }\n </span>\n </span>\n `,\n styleUrl: './chip.component.scss',\n})\nexport class ChipComponent {\n readonly color = input<ChipColor>('primary');\n readonly size = input<ChipSize>('md');\n readonly position = input<ChipPosition>('top-right');\n readonly text = input<string | null>(null);\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type KbdSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type KbdVariant = 'solid' | 'outline' | 'subtle';\n\n/**\n * Kbd Atom — Source: Nuxt UI v3 ❖ Kbd\n * Keyboard key indicator\n */\n@Component({\n selector: 'ui-kbd',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<kbd [class]=\"'ui-kbd ui-kbd--' + size() + ' ui-kbd--' + variant()\"><ng-content /></kbd>`,\n styleUrl: './kbd.component.scss',\n})\nexport class KbdComponent {\n readonly size = input<KbdSize>('md');\n readonly variant = input<KbdVariant>('outline');\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Link Atom — Source: Nuxt UI v3 ❖ Link\n * Router-aware link with external support\n */\n@Component({\n selector: 'ui-link',\n standalone: true,\n imports: [CommonModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (external()) {\n <a [href]=\"href()\" [class]=\"classes()\" target=\"_blank\" rel=\"noopener noreferrer\">\n <ng-content />\n </a>\n } @else if (href()) {\n <a [href]=\"href()\" [class]=\"classes()\"><ng-content /></a>\n } @else {\n <a [routerLink]=\"to()\" [class]=\"classes()\"><ng-content /></a>\n }\n `,\n styleUrl: './link.component.scss',\n})\nexport class LinkComponent {\n readonly href = input<string | null>(null);\n readonly to = input<string | null>(null);\n readonly external = input<boolean>(false);\n readonly inactive = input<boolean>(false);\n readonly classes = input<string>('ui-link');\n}","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type ProgressSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type ProgressColor = 'primary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n\n/**\n * Progress Atom — Source: Nuxt UI v3 ❖ Progress\n * Linear progress bar with indeterminate support\n */\n@Component({\n selector: 'ui-progress',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-progress\" [class]=\"'ui-progress--' + size()\">\n @if (label()) {\n <div class=\"ui-progress__label\">{{ label() }}</div>\n }\n <div\n class=\"ui-progress__track\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"indeterminate() ? null : value()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-label]=\"label() ?? 'Progress'\"\n >\n <div\n class=\"ui-progress__bar\"\n [class]=\"'ui-progress__bar--' + color() + (indeterminate() ? ' ui-progress__bar--indeterminate' : '')\"\n [style.width]=\"indeterminate() ? null : percentage() + '%'\"\n ></div>\n </div>\n @if (showValue() && !indeterminate()) {\n <span class=\"ui-progress__value\">{{ percentage() }}%</span>\n }\n </div>\n `,\n styleUrl: './progress.component.scss',\n})\nexport class ProgressComponent {\n readonly value = input<number>(0);\n readonly max = input<number>(100);\n readonly size = input<ProgressSize>('md');\n readonly color = input<ProgressColor>('primary');\n readonly indeterminate = input<boolean>(false);\n readonly label = input<string | null>(null);\n readonly showValue = input<boolean>(false);\n\n protected readonly percentage = computed(() =>\n Math.min(100, Math.max(0, Math.round((this.value() / this.max()) * 100)))\n );\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Separator Atom — Source: Nuxt UI v3 ❖ Separator\n * Horizontal or vertical divider, optionally with label\n */\n@Component({\n selector: 'ui-separator',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"'ui-separator ui-separator--' + orientation() + (label() ? ' ui-separator--labeled' : '')\"\n role=\"separator\"\n [attr.aria-orientation]=\"orientation()\">\n @if (label()) {\n <span class=\"ui-separator__label\">{{ label() }}</span>\n }\n </div>\n `,\n styleUrl: './separator.component.scss',\n})\nexport class SeparatorComponent {\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly label = input<string | null>(null);\n readonly type = input<'solid' | 'dashed' | 'dotted'>('solid');\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Skeleton Atom — Source: Nuxt UI v3 ❖ Skeleton\n * Loading placeholder with shimmer animation\n */\n@Component({\n selector: 'ui-skeleton',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div [class]=\"'ui-skeleton' + (rounded() ? ' ui-skeleton--rounded' : '')\"\n [style.width]=\"width()\" [style.height]=\"height()\" role=\"status\" aria-label=\"Loading...\"></div>`,\n styleUrl: './skeleton.component.scss',\n})\nexport class SkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly rounded = input<boolean>(false);\n}","import { ChangeDetectionStrategy, Component, forwardRef, input, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type SliderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SliderColor = 'primary' | 'neutral' | 'success' | 'warning' | 'error';\n\n/**\n * Slider Atom — Source: Nuxt UI v3 ❖ Slider\n * Range input with custom styling\n */\n@Component({\n selector: 'ui-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }],\n template: `\n <div class=\"ui-slider ui-slider--{{ size() }}\">\n <input\n type=\"range\"\n class=\"ui-slider__input ui-slider__input--{{ color() }}\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput($event)\"\n />\n </div>\n `,\n styleUrl: './slider.component.scss',\n})\nexport class SliderComponent implements ControlValueAccessor {\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly size = input<SliderSize>('md');\n readonly color = input<SliderColor>('primary');\n readonly disabled = input<boolean>(false);\n readonly value = model<number>(0);\n\n private _onChange: (v: number) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInput(e: Event) {\n const val = Number((e.target as HTMLInputElement).value);\n this.value.set(val);\n this._onChange(val);\n this._onTouched();\n }\n\n writeValue(v: number) { this.value.set(v); }\n registerOnChange(fn: (v: number) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this._onTouched = fn; }\n setDisabledState(_: boolean) {}\n}","import { ChangeDetectionStrategy, Component, forwardRef, input, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type SwitchSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SwitchColor = 'primary' | 'neutral' | 'success' | 'warning' | 'error';\n\n/**\n * Switch Atom — Source: Nuxt UI v3 ❖ Switch\n * Toggle control with label support and CVA\n */\n@Component({\n selector: 'ui-switch',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SwitchComponent), multi: true }],\n template: `\n <label class=\"ui-switch\" [class.ui-switch--disabled]=\"disabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [class]=\"'ui-switch__track ui-switch__track--' + size() + ' ui-switch__track--' + color() + (checked() ? ' ui-switch__track--on' : '')\"\n [attr.aria-checked]=\"checked()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"ui-switch__thumb\" [class.ui-switch__thumb--on]=\"checked()\"></span>\n </button>\n @if (label()) {\n <span class=\"ui-switch__label\">{{ label() }}</span>\n }\n </label>\n `,\n styleUrl: './switch.component.scss',\n})\nexport class SwitchComponent implements ControlValueAccessor {\n readonly size = input<SwitchSize>('md');\n readonly color = input<SwitchColor>('primary');\n readonly label = input<string | null>(null);\n readonly disabled = input<boolean>(false);\n readonly checked = model<boolean>(false);\n\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n toggle() {\n if (this.disabled()) return;\n this.checked.update(v => !v);\n this._onChange(this.checked());\n this._onTouched();\n }\n\n writeValue(v: boolean) { this.checked.set(v); }\n registerOnChange(fn: (v: boolean) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this._onTouched = fn; }\n setDisabledState(_: boolean) {}\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Tooltip Atom — Source: Nuxt UI v3 ❖ Tooltip\n * CSS-only hover tooltip with positioning\n */\n@Component({\n selector: 'ui-tooltip',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span class=\"ui-tooltip-wrap\">\n <ng-content />\n <span class=\"ui-tooltip ui-tooltip--{{ position() }}\" role=\"tooltip\">\n {{ text() }}\n @if (shortcut()) {\n <kbd class=\"ui-tooltip__kbd\">{{ shortcut() }}</kbd>\n }\n </span>\n </span>\n `,\n styleUrl: './tooltip.component.scss',\n})\nexport class TooltipComponent {\n readonly text = input.required<string>();\n readonly position = input<TooltipPosition>('top');\n readonly shortcut = input<string | null>(null);\n readonly delay = input<number>(500);\n}","// ============================================================\n// ATOMS — Nuxt UI v3 Design Kit → Angular 19 + NX\n// Basic building blocks (no component dependencies)\n// ============================================================\n\nexport * from './avatar';\nexport * from './badge';\nexport * from './button';\nexport * from './checkbox';\nexport * from './chip';\nexport * from './kbd';\nexport * from './link';\nexport * from './progress';\nexport * from './separator';\nexport * from './skeleton';\nexport * from './slider';\nexport * from './switch';\nexport * from './tooltip';\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type AlertVariant = 'solid' | 'outline' | 'soft' | 'subtle';\nexport type AlertColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'info' | 'warning' | 'error';\n\n/**\n * Alert Molecule — Source: Nuxt UI v3 ❖ Alert\n * Contextual messages with icon, title, description, actions\n * Built from: icon (atom) + content + optional close button\n */\n@Component({\n selector: 'ui-alert',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"'ui-alert ui-alert--' + variant() + ' ui-alert--' + color()\"\n role=\"alert\" [attr.aria-live]=\"live()\">\n @if (icon()) {\n <span class=\"ui-alert__icon\" aria-hidden=\"true\">\n <ng-content select=\"[slot=icon]\" />\n </span>\n }\n <div class=\"ui-alert__body\">\n @if (title()) {\n <p class=\"ui-alert__title\">{{ title() }}</p>\n }\n @if (description()) {\n <p class=\"ui-alert__description\">{{ description() }}</p>\n }\n <ng-content />\n @if (actions()) {\n <div class=\"ui-alert__actions\">\n <ng-content select=\"[slot=actions]\" />\n </div>\n }\n </div>\n @if (closable()) {\n <button type=\"button\" class=\"ui-alert__close\" aria-label=\"Close\" (click)=\"close.emit()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n }\n </div>\n `,\n styleUrl: './alert.component.scss',\n})\nexport class AlertComponent {\n readonly variant = input<AlertVariant>('soft');\n readonly color = input<AlertColor>('info');\n readonly title = input<string | null>(null);\n readonly description = input<string | null>(null);\n readonly icon = input<boolean>(true);\n readonly closable = input<boolean>(false);\n readonly actions = input<boolean>(false);\n readonly live = input<'polite' | 'assertive'>('polite');\n\n readonly close = output<void>();\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent, AvatarSize } from \"@atomng/ui/atoms\";\n//import { AvatarComponent } from '@workspace/shared-ui/atoms';\n//import type { AvatarSize } from '@workspace/shared-ui/atoms';\n\nexport interface AvatarGroupItem {\n src?: string;\n alt?: string;\n initials?: string;\n}\n\n/**\n * AvatarGroup Molecule — Source: Nuxt UI v3 ❖ AvatarGroup\n * Stacked avatar list with overflow count\n * Depends on: AvatarComponent (atom)\n */\n@Component({\n selector: 'ui-avatar-group',\n standalone: true,\n imports: [CommonModule, AvatarComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-avatar-group\" [attr.aria-label]=\"'Group of ' + items().length + ' avatars'\">\n @for (item of visibleItems(); track item.alt) {\n <ui-avatar\n [src]=\"item.src ?? null\"\n [alt]=\"item.alt ?? null\"\n [initials]=\"item.initials ?? null\"\n [size]=\"size()\"\n class=\"ui-avatar-group__item\"\n />\n }\n @if (overflow() > 0) {\n <span class=\"ui-avatar-group__overflow ui-avatar-group__overflow--{{ size() }}\"\n [attr.aria-label]=\"overflow() + ' more'\">\n +{{ overflow() }}\n </span>\n }\n </div>\n `,\n styleUrl: './avatar-group.component.scss',\n})\nexport class AvatarGroupComponent {\n readonly items = input.required<AvatarGroupItem[]>();\n readonly max = input<number>(5);\n readonly size = input<AvatarSize>('md');\n\n get visibleItems() { return () => this.items().slice(0, this.max()); }\n get overflow() { return () => Math.max(0, this.items().length - this.max()); }\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\nexport interface BreadcrumbItem {\n label: string;\n to?: string;\n href?: string;\n}\n\n/**\n * Breadcrumb Molecule — Source: Nuxt UI v3 ❖ Breadcrumb\n * Navigation trail with router support\n */\n@Component({\n selector: 'ui-breadcrumb',\n standalone: true,\n imports: [CommonModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav aria-label=\"Breadcrumb\">\n <ol class=\"ui-breadcrumb\">\n @for (item of items(); track item.label; let last = $last) {\n <li class=\"ui-breadcrumb__item\" [class.ui-breadcrumb__item--current]=\"last\">\n @if (!last && item.to) {\n <a [routerLink]=\"item.to\" class=\"ui-breadcrumb__link\">{{ item.label }}</a>\n } @else if (!last && item.href) {\n <a [href]=\"item.href\" class=\"ui-breadcrumb__link\">{{ item.label }}</a>\n } @else {\n <span class=\"ui-breadcrumb__current\" [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>\n }\n @if (!last) {\n <span class=\"ui-breadcrumb__separator\" aria-hidden=\"true\">{{ separator() }}</span>\n }\n </li>\n }\n </ol>\n </nav>\n `,\n styleUrl: './breadcrumb.component.scss',\n})\nexport class BreadcrumbComponent {\n readonly items = input.required<BreadcrumbItem[]>();\n readonly separator = input<string>('/');\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * ButtonGroup Molecule — Source: Nuxt UI v3 ❖ ButtonGroup\n * Groups buttons in a visual row (joined borders)\n */\n@Component({\n selector: 'ui-button-group',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-button-group\" [class.ui-button-group--vertical]=\"vertical()\" role=\"group\">\n <ng-content />\n </div>\n `,\n styleUrl: './button-group.component.scss',\n})\nexport class ButtonGroupComponent {\n readonly vertical = input<boolean>(false);\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type FormFieldSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * FormField Molecule — Source: Nuxt UI v3 ❖ FormField\n * Wrapper for form controls: label + control + hint + error\n * Used with: Input, Textarea, Select, Checkbox, Radio...\n */\n@Component({\n selector: 'ui-form-field',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-form-field\" [class.ui-form-field--error]=\"!!errorMessage()\" [class.ui-form-field--required]=\"required()\">\n @if (label()) {\n <label class=\"ui-form-field__label ui-form-field__label--{{ size() }}\" [for]=\"name()\">\n {{ label() }}\n @if (required()) {\n <span class=\"ui-form-field__required\" aria-hidden=\"true\"> *</span>\n }\n </label>\n }\n\n <div class=\"ui-form-field__control\">\n <ng-content />\n </div>\n\n @if (hint() && !errorMessage()) {\n <p class=\"ui-form-field__hint\" [id]=\"name() + '-hint'\">{{ hint() }}</p>\n }\n\n @if (errorMessage()) {\n <p class=\"ui-form-field__error\" role=\"alert\" [id]=\"name() + '-error'\">\n {{ errorMessage() }}\n </p>\n }\n </div>\n `,\n styleUrl: './form-field.component.scss',\n})\nexport class FormFieldComponent {\n readonly label = input<string | null>(null);\n readonly name = input<string>('');\n readonly hint = input<string | null>(null);\n readonly errorMessage = input<string | null>(null);\n readonly required = input<boolean>(false);\n readonly size = input<FormFieldSize>('md');\n}","import { ChangeDetectionStrategy, Component, forwardRef, input, model, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type InputVariant = 'outline' | 'soft' | 'subtle' | 'none';\nexport type InputColor = 'primary' | 'neutral' | 'error' | 'success' | 'warning';\n\n/**\n * Input Molecule — Source: Nuxt UI v3 ❖ Input\n *\n * Slots :\n * [slot=leading] — icône / contenu à gauche\n * [slot=trailing] — icône / contenu à droite\n *\n * Pour rendre un slot cliquable (ex: toggle password) :\n * [trailingClickable]=\"true\" → rend le slot trailing en <button> et émet (trailingClick)\n * [leadingClickable]=\"true\" → rend le slot leading en <button> et émet (leadingClick)\n */\n@Component({\n selector: 'ui-input',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputComponent), multi: true }],\n // Un ng-content par sélecteur — jamais dupliqué dans des branches @if/@else.\n // Le slot est toujours rendu dans un <span> ; les attributs button (role, tabindex)\n // sont ajoutés conditionnellement quand `leadingClickable` / `trailingClickable` = true.\n template: `\n <div [class]=\"wrapClass()\">\n\n <!-- Leading slot -->\n @if (leading()) {\n <span\n class=\"ui-input__leading\"\n [class.ui-input__slot--clickable]=\"leadingClickable()\"\n [attr.role]=\"leadingClickable() ? 'button' : null\"\n [attr.tabindex]=\"leadingClickable() ? 0 : null\"\n [attr.aria-label]=\"leadingClickable() ? leadingLabel() : null\"\n (click)=\"leadingClickable() && leadingClick.emit()\"\n (keydown.enter)=\"leadingClickable() && leadingClick.emit()\"\n (keydown.space)=\"leadingClickable() && leadingClick.emit()\"\n >\n <ng-content select=\"[slot=leading]\" />\n </span>\n }\n\n <!-- Native input -->\n <input\n [class]=\"inputClass()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-invalid]=\"color() === 'error'\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n />\n\n <!-- Trailing slot -->\n @if (trailing()) {\n <span\n class=\"ui-input__trailing\"\n [class.ui-input__slot--clickable]=\"trailingClickable()\"\n [attr.role]=\"trailingClickable() ? 'button' : null\"\n [attr.tabindex]=\"trailingClickable() ? 0 : null\"\n [attr.aria-label]=\"trailingClickable() ? trailingLabel() : null\"\n (click)=\"trailingClickable() && trailingClick.emit()\"\n (keydown.enter)=\"trailingClickable() && trailingClick.emit()\"\n (keydown.space)=\"trailingClickable() && trailingClick.emit()\"\n >\n <ng-content select=\"[slot=trailing]\" />\n </span>\n }\n\n </div>\n `,\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements ControlValueAccessor {\n // ── Inputs ───────────────────────────────────────────────\n readonly type = input<string>('text');\n readonly placeholder = input<string>('');\n readonly size = input<InputSize>('md');\n readonly variant = input<InputVariant>('outline');\n readonly color = input<InputColor>('primary');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n\n readonly leading = input<boolean>(false);\n readonly leadingClickable = input<boolean>(false);\n /** aria-label du bouton leading quand leadingClickable=true */\n readonly leadingLabel = input<string>('');\n\n readonly trailing = input<boolean>(false);\n readonly trailingClickable = input<boolean>(false);\n /** aria-label du bouton trailing quand trailingClickable=true */\n readonly trailingLabel = input<string>('');\n\n // ── Two-way ──────────────────────────────────────────────\n readonly value = model<string>('');\n\n // ── Outputs ──────────────────────────────────────────────\n readonly leadingClick = output<void>();\n readonly trailingClick = output<void>();\n\n // ── Classes computed ─────────────────────────────────────\n protected wrapClass() {\n return [\n 'ui-input-wrap',\n `ui-input-wrap--${this.size()}`,\n this.leading() ? 'ui-input-wrap--has-leading' : '',\n this.trailing() ? 'ui-input-wrap--has-trailing' : '',\n ].filter(Boolean).join(' ');\n }\n\n protected inputClass() {\n return `ui-input ui-input--${this.variant()} ui-input--${this.color()} ui-input--${this.size()}`;\n }\n\n // ── CVA ──────────────────────────────────────────────────\n private _onChange: (v: string) => void = () => {};\n protected onTouched: () => void = () => {};\n\n protected onInput(e: Event): void {\n const val = (e.target as HTMLInputElement).value;\n this.value.set(val);\n this._onChange(val);\n }\n\n writeValue(v: string) { this.value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this.onTouched = fn; }\n setDisabledState(_: boolean) {}\n}","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type PaginationSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Pagination Molecule — Source: Nuxt UI v3 ❖ Pagination\n * Page navigation with page numbers, prev/next controls\n */\n@Component({\n selector: 'ui-pagination',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav class=\"ui-pagination ui-pagination--{{ size() }}\" aria-label=\"Pagination\">\n <button\n class=\"ui-pagination__btn\"\n [disabled]=\"page() <= 1\"\n (click)=\"prev()\"\n aria-label=\"Previous page\"\n >‹</button>\n\n @for (p of pages(); track p) {\n @if (p === '...') {\n <span class=\"ui-pagination__ellipsis\" aria-hidden=\"true\">…</span>\n } @else {\n <button\n class=\"ui-pagination__btn\"\n [class.ui-pagination__btn--active]=\"p === page()\"\n [attr.aria-current]=\"p === page() ? 'page' : null\"\n (click)=\"goTo(+p)\"\n >{{ p }}</button>\n }\n }\n\n <button\n class=\"ui-pagination__btn\"\n [disabled]=\"page() >= total()\"\n (click)=\"next()\"\n aria-label=\"Next page\"\n >›</button>\n </nav>\n `,\n styleUrl: './pagination.component.scss',\n})\nexport class PaginationComponent {\n readonly total = input.required<number>();\n readonly size = input<PaginationSize>('md');\n readonly page = model<number>(1);\n\n protected readonly pages = computed(() => {\n const current = this.page();\n const last = this.total();\n if (last <= 7) return Array.from({ length: last }, (_, i) => i + 1);\n const items: (number | string)[] = [1];\n if (current > 3) items.push('...');\n const start = Math.max(2, current - 1);\n const end = Math.min(last - 1, current + 1);\n for (let i = start; i <= end; i++) items.push(i);\n if (current < last - 2) items.push('...');\n items.push(last);\n return items;\n });\n\n prev() { if (this.page() > 1) this.page.update(p => p - 1); }\n next() { if (this.page() < this.total()) this.page.update(p => p + 1); }\n goTo(p: number) { this.page.set(p); }\n}","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nexport interface SelectOption<T = string> {\n label: string;\n value: T;\n icon?: string;\n disabled?: boolean;\n}\n\nexport type SelectSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SelectVariant = 'outline' | 'soft' | 'subtle' | 'ghost' | 'none';\nexport type SelectColor = 'primary' | 'secondary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n\n/**\n * Select Molecule — Source: Nuxt UI v3 ❖ Select\n *\n * Dropdown custom (non natif) :\n * - Trigger stylisé comme un Input (variants, couleurs, tailles Figma)\n * - Panel dropdown animé (scale + fade, 100ms ease-out)\n * - Navigation clavier : ArrowUp/Down, Enter, Space, Escape, Tab\n * - ClickOutside pour fermer\n * - Slot leading icon dans le trigger\n * - Icône + checkmark par option\n * - Compatible ControlValueAccessor\n */\n@Component({\n selector: 'ui-select',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n }],\n animations: [\n trigger('dropdown', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scale(0.96) translateY(-4px)' }),\n animate('100ms ease-out', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),\n ]),\n transition(':leave', [\n animate('80ms ease-in', style({ opacity: 0, transform: 'scale(0.96) translateY(-4px)' })),\n ]),\n ]),\n ],\n template: `\n <div\n class=\"ui-select\"\n [class.ui-select--open]=\"isOpen()\"\n [class.ui-select--disabled]=\"disabled()\"\n >\n <!-- Trigger -->\n <button\n #triggerEl\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n (click)=\"toggleOpen(); $event.stopPropagation()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (leadingIcon()) {\n <span class=\"ui-select__leading\" aria-hidden=\"true\">\n <ng-content select=\"[slot=leading]\" />\n </span>\n }\n\n <span class=\"ui-select__value\" [class.ui-select__value--placeholder]=\"!selectedOption()\">\n @if (loading()) {\n <span class=\"ui-select__spinner\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke-opacity=\"0.25\"/>\n <path d=\"M12 2a10 10 0 0 1 10 10\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n } @else {\n {{ selectedOption()?.label ?? placeholder() ?? 'Sélectionner...' }}\n }\n </span>\n\n <span class=\"ui-select__chevron\" [class.ui-select__chevron--open]=\"isOpen()\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 6l4 4 4-4\"/>\n </svg>\n </span>\n </button>\n\n <!-- Dropdown panel -->\n @if (isOpen()) {\n <div\n [@dropdown]\n class=\"ui-select__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel() ?? 'Options'\"\n (click)=\"$event.stopPropagation()\"\n >\n @for (opt of options(); track opt.value; let i = $index) {\n <button\n type=\"button\"\n class=\"ui-select__option\"\n role=\"option\"\n [class.ui-select__option--selected]=\"isSelected(opt)\"\n [class.ui-select__option--highlighted]=\"activeIndex() === i\"\n [class.ui-select__option--disabled]=\"opt.disabled\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [disabled]=\"opt.disabled\"\n (click)=\"selectOption(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (opt.icon) {\n <span class=\"ui-select__option-icon\" aria-hidden=\"true\">{{ opt.icon }}</span>\n }\n <span class=\"ui-select__option-label\">{{ opt.label }}</span>\n @if (isSelected(opt)) {\n <span class=\"ui-select__option-check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 8l3.5 3.5L13 5\"/>\n </svg>\n </span>\n }\n </button>\n }\n @if (options().length === 0) {\n <div class=\"ui-select__empty\">Aucune option disponible</div>\n }\n </div>\n }\n </div>\n `,\n styleUrl: './select.component.scss',\n})\nexport class SelectComponent implements ControlValueAccessor {\n @ViewChild('triggerEl') triggerEl!: ElementRef<HTMLButtonElement>;\n\n readonly options = input.required<SelectOption[]>();\n readonly placeholder = input<string | null>(null);\n readonly size = input<SelectSize>('md');\n readonly variant = input<SelectVariant>('outline');\n readonly color = input<SelectColor>('neutral');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly leadingIcon = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n\n readonly value = model<string>('');\n readonly change = output<SelectOption>();\n\n protected readonly isOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n\n protected readonly selectedOption = computed(() =>\n this.options().find(o => String(o.value) === String(this.value()))\n );\n\n protected readonly triggerClasses = computed(() =>\n ['ui-select__trigger',\n `ui-select__trigger--${this.size()}`,\n `ui-select__trigger--${this.variant()}`,\n `ui-select__trigger--${this.color()}`\n ].join(' ')\n );\n\n protected isSelected(opt: SelectOption): boolean {\n return String(opt.value) === String(this.value());\n }\n\n // CVA\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n writeValue(v: string) { this.value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this._onTouched = fn; }\n setDisabledState(_: boolean) {}\n\n toggleOpen() {\n if (this.disabled() || this.loading()) return;\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n const idx = this.options().findIndex(o => this.isSelected(o));\n this.activeIndex.set(idx >= 0 ? idx : 0);\n }\n }\n\n selectOption(opt: SelectOption) {\n if (opt.disabled) return;\n const val = String(opt.value);\n this.value.set(val);\n this._onChange(val);\n this._onTouched();\n this.change.emit(opt);\n this.isOpen.set(false);\n this.triggerEl?.nativeElement.focus();\n }\n\n onTriggerKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!this.isOpen()) { this.toggleOpen(); }\n else {\n const opt = this.options()[this.activeIndex()];\n if (opt && !opt.disabled) this.selectOption(opt);\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) { this.toggleOpen(); return; }\n this.activeIndex.update(i => {\n let n = i + 1;\n while (n < this.options().length && this.options()[n]?.disabled) n++;\n return Math.min(n, this.options().length - 1);\n });\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex.update(i => {\n let n = i - 1;\n while (n >= 0 && this.options()[n]?.disabled) n--;\n return Math.max(n, 0);\n });\n break;\n case 'Escape':\n case 'Tab':\n this.isOpen.set(false);\n break;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.isOpen() && !(event.target as HTMLElement).closest('ui-select')) {\n this.isOpen.set(false);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface TabItem {\n id: string;\n label: string;\n disabled?: boolean;\n count?: number;\n}\n\nexport type TabsVariant = 'pill' | 'link' | 'underline';\nexport type TabsSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Tabs Molecule — Source: Nuxt UI v3 ❖ Tabs\n * Tabbed navigation with pill, link and underline variants\n */\n@Component({\n selector: 'ui-tabs',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-tabs ui-tabs--{{ variant() }} ui-tabs--{{ size() }}\" role=\"tablist\">\n @for (tab of items(); track tab.id) {\n <button\n role=\"tab\"\n type=\"button\"\n [class]=\"'ui-tabs__tab' + (activeId() === tab.id ? ' ui-tabs__tab--active' : '') + (tab.disabled ? ' ui-tabs__tab--disabled' : '')\"\n [attr.aria-selected]=\"activeId() === tab.id\"\n [attr.aria-controls]=\"'panel-' + tab.id\"\n [disabled]=\"tab.disabled\"\n (click)=\"select(tab.id)\"\n >\n {{ tab.label }}\n @if (tab.count !== undefined) {\n <span class=\"ui-tabs__count\">{{ tab.count }}</span>\n }\n </button>\n }\n </div>\n <div class=\"ui-tabs__panels\">\n <ng-content />\n </div>\n `,\n styleUrl: './tabs.component.scss',\n})\nexport class TabsComponent {\n readonly items = input.required<TabItem[]>();\n readonly variant = input<TabsVariant>('pill');\n readonly size = input<TabsSize>('md');\n readonly activeId = model<string>('');\n\n select(id: string) { this.activeId.set(id); }\n}","import { ChangeDetectionStrategy, Component, forwardRef, input, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nexport type TextareaSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Textarea Molecule — Source: Nuxt UI v3 ❖ Textarea\n * Multi-line text input with auto-resize support\n */\n@Component({\n selector: 'ui-textarea',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaComponent), multi: true }],\n template: `\n <textarea\n [class]=\"'ui-textarea ui-textarea--' + size()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n >{{ value() }}</textarea>\n `,\n styleUrl: './textarea.component.scss',\n})\nexport class TextareaComponent implements ControlValueAccessor {\n readonly placeholder = input<string>('');\n readonly size = input<TextareaSize>('md');\n readonly rows = input<number>(4);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly autoResize = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n readonly value = model<string>('');\n\n private _onChange: (v: string) => void = () => {};\n protected onTouched: () => void = () => {};\n\n onInput(e: Event) {\n const el = e.target as HTMLTextAreaElement;\n this.value.set(el.value);\n this._onChange(el.value);\n }\n\n writeValue(v: string) { this.value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this.onTouched = fn; }\n setDisabledState(_: boolean) {}\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ToastVariant = 'solid' | 'outline' | 'soft' | 'subtle';\nexport type ToastColor = 'primary' | 'neutral' | 'success' | 'info' | 'warning' | 'error';\n\n/**\n * Toast Molecule — Source: Nuxt UI v3 ❖ Toast\n * Transient notification with auto-close\n */\n@Component({\n selector: 'ui-toast',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n [class]=\"'ui-toast ui-toast--' + variant() + ' ui-toast--' + color()\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n @if (icon()) {\n <span class=\"ui-toast__icon\" aria-hidden=\"true\">\n <ng-content select=\"[slot=icon]\" />\n </span>\n }\n <div class=\"ui-toast__body\">\n @if (title()) {\n <p class=\"ui-toast__title\">{{ title() }}</p>\n }\n @if (description()) {\n <p class=\"ui-toast__description\">{{ description() }}</p>\n }\n <ng-content />\n </div>\n @if (closable()) {\n <button type=\"button\" class=\"ui-toast__close\" aria-label=\"Dismiss\" (click)=\"close.emit()\">×</button>\n }\n </div>\n `,\n styleUrl: './toast.component.scss',\n})\nexport class ToastComponent {\n readonly variant = input<ToastVariant>('soft');\n readonly color = input<ToastColor>('neutral');\n readonly title = input<string | null>(null);\n readonly description = input<string | null>(null);\n readonly icon = input<boolean>(false);\n readonly closable = input<boolean>(true);\n\n readonly close = output<void>();\n}","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n HostListener,\n input,\n model,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { SelectOption, SelectSize, SelectVariant, SelectColor } from '../select/select.component';\n\nexport { SelectOption, SelectSize, SelectVariant, SelectColor };\n\n/**\n * SelectSearch Molecule — Source: Nuxt UI v3 ❖ SelectMenu / Combobox\n *\n * Extension du Select avec un input de recherche intégré dans le panel :\n * - Filtre les options en temps réel (case-insensitive)\n * - Highlight du terme recherché dans les labels\n * - \"Aucun résultat\" si aucune option trouvée\n * - Clavier : ↑↓ navigue, Enter sélectionne, Escape ferme, Tab ferme\n * - Focus automatique sur l'input à l'ouverture\n * - Même API / variants / couleurs / tailles que SelectComponent\n * - Compatible ControlValueAccessor\n *\n * @example\n * <ui-select-search [options]=\"pays\" placeholder=\"Rechercher un pays...\" />\n * <ui-select-search [(value)]=\"val\" variant=\"soft\" color=\"primary\" />\n */\n@Component({\n selector: 'ui-select-search',\n standalone: true,\n imports: [CommonModule, FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectSearchComponent),\n multi: true,\n }],\n animations: [\n trigger('dropdown', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scale(0.96) translateY(-4px)' }),\n animate('100ms ease-out', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),\n ]),\n transition(':leave', [\n animate('80ms ease-in', style({ opacity: 0, transform: 'scale(0.96) translateY(-4px)' })),\n ]),\n ]),\n ],\n template: `\n <div\n class=\"ui-select-search\"\n [class.ui-select-search--open]=\"isOpen()\"\n [class.ui-select-search--disabled]=\"disabled()\"\n >\n <!-- ── Trigger ──────────────────────────────────────── -->\n <button\n #triggerEl\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n (click)=\"toggleOpen(); $event.stopPropagation()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n @if (leadingIcon()) {\n <span class=\"ui-select-search__leading\" aria-hidden=\"true\">\n <ng-content select=\"[slot=leading]\" />\n </span>\n }\n\n <span\n class=\"ui-select-search__value\"\n [class.ui-select-search__value--placeholder]=\"!selectedOption()\"\n >\n @if (loading()) {\n <span class=\"ui-select-search__spinner\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke-opacity=\"0.25\"/>\n <path d=\"M12 2a10 10 0 0 1 10 10\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n } @else {\n {{ selectedOption()?.label ?? placeholder() ?? 'Sélectionner...' }}\n }\n </span>\n\n <span\n class=\"ui-select-search__chevron\"\n [class.ui-select-search__chevron--open]=\"isOpen()\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M4 6l4 4 4-4\"/>\n </svg>\n </span>\n </button>\n\n <!-- ── Dropdown panel ───────────────────────────────── -->\n @if (isOpen()) {\n <div [@dropdown] class=\"ui-select-search__panel\" (click)=\"$event.stopPropagation()\">\n\n <!-- Search input -->\n <div class=\"ui-select-search__search-wrap\">\n <span class=\"ui-select-search__search-icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"6.5\" cy=\"6.5\" r=\"4\"/>\n <path d=\"M10 10l3 3\"/>\n </svg>\n </span>\n <input\n #searchInput\n type=\"text\"\n class=\"ui-select-search__input\"\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"query()\"\n (ngModelChange)=\"query.set($event); activeIndex.set(0)\"\n (keydown)=\"onSearchKeydown($event)\"\n aria-label=\"Rechercher\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (query()) {\n <button\n type=\"button\"\n class=\"ui-select-search__clear\"\n (click)=\"clearQuery()\"\n aria-label=\"Effacer la recherche\"\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M4 4l8 8M12 4l-8 8\"/>\n </svg>\n </button>\n }\n </div>\n\n <!-- Options list -->\n <div\n class=\"ui-select-search__options\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel() ?? 'Options'\"\n >\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <button\n type=\"button\"\n class=\"ui-select-search__option\"\n role=\"option\"\n [class.ui-select-search__option--selected]=\"isSelected(opt)\"\n [class.ui-select-search__option--highlighted]=\"activeIndex() === i\"\n [class.ui-select-search__option--disabled]=\"opt.disabled\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [disabled]=\"opt.disabled\"\n (click)=\"selectOption(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (opt.icon) {\n <span class=\"ui-select-search__option-icon\" aria-hidden=\"true\">{{ opt.icon }}</span>\n }\n <!-- Highlighted label -->\n <span\n class=\"ui-select-search__option-label\"\n [innerHTML]=\"highlight(opt.label)\"\n ></span>\n\n @if (isSelected(opt)) {\n <span class=\"ui-select-search__option-check\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 8l3.5 3.5L13 5\"/>\n </svg>\n </span>\n }\n </button>\n }\n\n @if (filteredOptions().length === 0) {\n <div class=\"ui-select-search__empty\">\n <svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"10\" cy=\"10\" r=\"8\"/>\n <path d=\"M10 6v5M10 14h.01\"/>\n </svg>\n <span>{{ emptyLabel() }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n styleUrl: './select-search.component.scss',\n})\nexport class SelectSearchComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('triggerEl') triggerEl!: ElementRef<HTMLButtonElement>;\n @ViewChild('searchInput') searchInput!: ElementRef<HTMLInputElement>;\n\n // ── Inputs ───────────────────────────────────────────────\n readonly options = input.required<SelectOption[]>();\n readonly placeholder = input<string | null>(null);\n readonly searchPlaceholder = input<string>('Rechercher...');\n readonly emptyLabel = input<string>('Aucun résultat');\n readonly size = input<SelectSize>('md');\n readonly variant = input<SelectVariant>('outline');\n readonly color = input<SelectColor>('neutral');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly leadingIcon = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n\n // ── Two-way binding ──────────────────────────────────────\n readonly value = model<string>('');\n readonly change = output<SelectOption>();\n\n // ── Internal state ───────────────────────────────────────\n protected readonly isOpen = signal(false);\n protected readonly activeIndex = signal(-1);\n protected readonly query = signal('');\n\n protected readonly selectedOption = computed(() =>\n this.options().find(o => String(o.value) === String(this.value()))\n );\n\n protected readonly filteredOptions = computed(() => {\n const q = this.query().trim().toLowerCase();\n if (!q) return this.options();\n return this.options().filter(o =>\n o.label.toLowerCase().includes(q)\n );\n });\n\n protected readonly triggerClasses = computed(() =>\n ['ui-select-search__trigger',\n `ui-select-search__trigger--${this.size()}`,\n `ui-select-search__trigger--${this.variant()}`,\n `ui-select-search__trigger--${this.color()}`\n ].join(' ')\n );\n\n protected isSelected(opt: SelectOption): boolean {\n return String(opt.value) === String(this.value());\n }\n\n /** Entoure le terme recherché dans le label avec <mark> */\n protected highlight(label: string): string {\n const q = this.query().trim();\n if (!q) return label;\n const escaped = q.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return label.replace(\n new RegExp(`(${escaped})`, 'gi'),\n '<mark class=\"ui-select-search__highlight\">$1</mark>'\n );\n }\n\n // ── CVA ──────────────────────────────────────────────────\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(v: string) { this.value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void) { this._onChange = fn; }\n registerOnTouched(fn: () => void) { this._onTouched = fn; }\n setDisabledState(_: boolean) {}\n\n ngAfterViewInit() {}\n\n // ── Actions ──────────────────────────────────────────────\n toggleOpen() {\n if (this.disabled() || this.loading()) return;\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.query.set('');\n const idx = this.filteredOptions().findIndex(o => this.isSelected(o));\n this.activeIndex.set(idx >= 0 ? idx : 0);\n // Focus search input after animation\n setTimeout(() => this.searchInput?.nativeElement.focus(), 60);\n }\n }\n\n selectOption(opt: SelectOption) {\n if (opt.disabled) return;\n const val = String(opt.value);\n this.value.set(val);\n this._onChange(val);\n this._onTouched();\n this.change.emit(opt);\n this.isOpen.set(false);\n this.query.set('');\n this.triggerEl?.nativeElement.focus();\n }\n\n clearQuery() {\n this.query.set('');\n this.activeIndex.set(0);\n this.searchInput?.nativeElement.focus();\n }\n\n // ── Keyboard — trigger ───────────────────────────────────\n onTriggerKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleOpen();\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.toggleOpen();\n break;\n case 'Escape':\n this.isOpen.set(false);\n break;\n }\n }\n\n // ── Keyboard — search input ──────────────────────────────\n onSearchKeydown(event: KeyboardEvent) {\n const opts = this.filteredOptions();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.activeIndex.update(i => {\n let n = i + 1;\n while (n < opts.length && opts[n]?.disabled) n++;\n return Math.min(n, opts.length - 1);\n });\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.activeIndex.update(i => {\n let n = i - 1;\n while (n >= 0 && opts[n]?.disabled) n--;\n return Math.max(n, 0);\n });\n break;\n case 'Enter':\n event.preventDefault();\n const opt = opts[this.activeIndex()];\n if (opt && !opt.disabled) this.selectOption(opt);\n break;\n case 'Escape':\n case 'Tab':\n this.isOpen.set(false);\n this.triggerEl?.nativeElement.focus();\n break;\n }\n }\n\n // ── Close on outside click ───────────────────────────────\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.isOpen() && !(event.target as HTMLElement).closest('ui-select-search')) {\n this.isOpen.set(false);\n }\n }\n}\n","// ============================================================\n// MOLECULES — Nuxt UI v3 Design Kit → Angular 19 + NX\n// Combinations of atoms with focused single responsibility\n// ============================================================\n\nexport * from './alert';\nexport * from './avatar-group';\nexport * from './breadcrumb';\nexport * from './button-group';\nexport * from './form-field';\nexport * from './input';\nexport * from './pagination';\nexport * from './select';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './toast';\nexport * from './select-search';\n","import { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\nexport interface AccordionItem {\n id: string;\n label: string;\n content: string;\n disabled?: boolean;\n defaultOpen?: boolean;\n}\n\nexport type AccordionVariant = 'default' | 'ghost';\n\n/**\n * Accordion Organism — Source: Nuxt UI v3 ❖ Accordion\n * Collapsible content sections with animation\n * Single or multiple open panels supported\n */\n@Component({\n selector: 'ui-accordion',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expand', [\n state('void', style({ height: '0', opacity: 0, overflow: 'hidden' })),\n state('*', style({ height: '*', opacity: 1, overflow: 'hidden' })),\n transition('void <=> *', animate('200ms ease')),\n ])\n ],\n template: `\n <div class=\"ui-accordion ui-accordion--{{ variant() }}\" role=\"list\">\n @for (item of items(); track item.id) {\n <div\n class=\"ui-accordion__item\"\n [class.ui-accordion__item--open]=\"isOpen(item.id)\"\n [class.ui-accordion__item--disabled]=\"item.disabled\"\n role=\"listitem\"\n >\n <button\n type=\"button\"\n class=\"ui-accordion__trigger\"\n [attr.aria-expanded]=\"isOpen(item.id)\"\n [attr.aria-controls]=\"'panel-' + item.id\"\n [disabled]=\"item.disabled\"\n (click)=\"toggle(item.id)\"\n >\n <span class=\"ui-accordion__label\">{{ item.label }}</span>\n <span class=\"ui-accordion__icon\" [class.ui-accordion__icon--open]=\"isOpen(item.id)\" aria-hidden=\"true\">\n ▾\n </span>\n </button>\n\n @if (isOpen(item.id)) {\n <div\n [@expand]\n class=\"ui-accordion__panel\"\n [id]=\"'panel-' + item.id\"\n role=\"region\"\n [attr.aria-labelledby]=\"'trigger-' + item.id\"\n >\n <div class=\"ui-accordion__content\">{{ item.content }}</div>\n </div>\n }\n </div>\n }\n </div>\n `,\n styleUrl: './accordion.component.scss',\n})\nexport class AccordionComponent {\n readonly items = input.required<AccordionItem[]>();\n readonly variant = input<AccordionVariant>('default');\n readonly multiple = input<boolean>(true);\n readonly openIds = model<string[]>([]);\n\n isOpen(id: string): boolean { return this.openIds().includes(id); }\n\n toggle(id: string): void {\n this.openIds.update(ids => {\n if (ids.includes(id)) {\n return ids.filter(i => i !== id);\n }\n return this.multiple() ? [...ids, id] : [id];\n });\n }\n}","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type CardVariant = 'outline' | 'soft' | 'subtle' | 'ghost' | 'none';\n\n/**\n * Card Organism — Source: Nuxt UI v3 ❖ Card\n * Content container with header, body, footer slots\n */\n@Component({\n selector: 'ui-card',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div [class]=\"'ui-card ui-card--' + variant()\">\n @if (title() || description()) {\n <div class=\"ui-card__header\">\n @if (title()) {\n <h3 class=\"ui-card__title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"ui-card__description\">{{ description() }}</p>\n }\n <ng-content select=\"[slot=header]\" />\n </div>\n }\n <div class=\"ui-card__body\">\n <ng-content />\n </div>\n <ng-content select=\"[slot=footer]\" />\n </div>\n `,\n styleUrl: './card.component.scss',\n})\nexport class CardComponent {\n readonly title = input<string | null>(null);\n readonly description = input<string | null>(null);\n readonly variant = input<CardVariant>('outline');\n}","import { ChangeDetectionStrategy, Component, ElementRef, HostListener, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nexport interface DropdownMenuItem {\n id: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n separator?: boolean;\n color?: 'default' | 'error';\n}\n\n/**\n * DropdownMenu Organism — Source: Nuxt UI v3 ❖ DropdownMenu\n * Contextual action menu triggered by a slot\n */\n@Component({\n selector: 'ui-dropdown-menu',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('menu', [\n transition(':enter', [style({ opacity: 0, transform: 'scale(0.95) translateY(-5px)' }), animate('150ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' }))]),\n transition(':leave', [animate('100ms ease', style({ opacity: 0, transform: 'scale(0.95) translateY(-5px)' }))]),\n ])\n ],\n template: `\n <div class=\"ui-dropdown\" [class.ui-dropdown--open]=\"open()\">\n <div class=\"ui-dropdown__trigger\" (click)=\"toggle()\">\n <ng-content />\n </div>\n\n @if (open()) {\n <div\n [@menu]\n class=\"ui-dropdown__menu ui-dropdown__menu--{{ align() }}\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n @for (item of items(); track item.id) {\n @if (item.separator) {\n <hr class=\"ui-dropdown__separator\" role=\"separator\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [class]=\"'ui-dropdown__item' + (item.disabled ? ' ui-dropdown__item--disabled' : '') + (item.color === 'error' ? ' ui-dropdown__item--error' : '')\"\n [disabled]=\"item.disabled\"\n (click)=\"select(item)\"\n >\n @if (item.icon) {\n <span class=\"ui-dropdown__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n {{ item.label }}\n </button>\n }\n }\n </div>\n }\n </div>\n `,\n styleUrl: './dropdown-menu.component.scss',\n})\nexport class DropdownMenuComponent {\n readonly items = input.required<DropdownMenuItem[]>();\n readonly align = input<'left' | 'right'>('left');\n readonly open = model<boolean>(false);\n\n readonly itemClick = output<DropdownMenuItem>();\n\n constructor(private el: ElementRef) {}\n\n toggle() { this.open.update(v => !v); }\n\n select(item: DropdownMenuItem) {\n if (item.disabled) return;\n this.itemClick.emit(item);\n this.open.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(e: Event) {\n if (!this.el.nativeElement.contains(e.target)) {\n this.open.set(false);\n }\n }\n\n @HostListener('keydown.escape')\n onEscape() { this.open.set(false); }\n}","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nexport type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | 'full';\n\n/**\n * Modal Organism — Source: Nuxt UI v3 ❖ Modal\n * Dialog overlay with backdrop, header, body, footer\n */\n@Component({\n selector: 'ui-modal',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('overlay', [\n transition(':enter', [style({ opacity: 0 }), animate('150ms ease', style({ opacity: 1 }))]),\n transition(':leave', [animate('150ms ease', style({ opacity: 0 }))]),\n ]),\n trigger('dialog', [\n transition(':enter', [style({ opacity: 0, transform: 'scale(0.95) translateY(-10px)' }), animate('200ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' }))]),\n transition(':leave', [animate('150ms ease', style({ opacity: 0, transform: 'scale(0.95) translateY(-10px)' }))]),\n ]),\n ],\n template: `\n @if (open()) {\n <div class=\"ui-modal-overlay\" [@overlay] (click)=\"onOverlayClick()\" role=\"presentation\">\n <div\n [@dialog]\n class=\"ui-modal ui-modal--{{ size() }}\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-label]=\"title() ?? 'Dialog'\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (title() || !hideHeader()) {\n <div class=\"ui-modal__header\">\n <h2 class=\"ui-modal__title\">{{ title() }}</h2>\n @if (!hideClose()) {\n <button type=\"button\" class=\"ui-modal__close\" aria-label=\"Close\" (click)=\"close.emit()\">×</button>\n }\n </div>\n }\n <div class=\"ui-modal__body\">\n <ng-content />\n </div>\n <ng-content select=\"[slot=footer]\" />\n </div>\n </div>\n }\n `,\n styleUrl: './modal.component.scss',\n})\nexport class ModalComponent {\n readonly open = model<boolean>(false);\n readonly title = input<string | null>(null);\n readonly size = input<ModalSize>('md');\n readonly hideHeader = input<boolean>(false);\n readonly hideClose = input<boolean>(false);\n readonly dismissible = input<boolean>(true);\n\n readonly close = output<void>();\n\n onOverlayClick() {\n if (this.dismissible()) {\n this.open.set(false);\n this.close.emit();\n }\n }\n}","import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\nexport interface NavItem {\n id: string;\n label: string;\n to?: string;\n href?: string;\n icon?: string;\n badge?: string | number;\n disabled?: boolean;\n children?: NavItem[];\n}\n\nexport type NavOrientation = 'horizontal' | 'vertical';\n\n/**\n * NavigationMenu Organism — Source: Nuxt UI v3 ❖ NavigationMenu\n * Primary site navigation with active link detection\n */\n@Component({\n selector: 'ui-navigation-menu',\n standalone: true,\n imports: [CommonModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <nav\n class=\"ui-nav ui-nav--{{ orientation() }}\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @for (item of items(); track item.id) {\n @if (item.to) {\n <a\n [routerLink]=\"item.to\"\n routerLinkActive=\"ui-nav__item--active\"\n class=\"ui-nav__item\"\n [class.ui-nav__item--disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <span class=\"ui-nav__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n <span class=\"ui-nav__label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"ui-nav__badge\" [attr.aria-label]=\"item.badge + ' notifications'\">{{ item.badge }}</span>\n }\n </a>\n } @else {\n <a\n [href]=\"item.href ?? '#'\"\n class=\"ui-nav__item\"\n [class.ui-nav__item--disabled]=\"item.disabled\"\n >\n @if (item.icon) {\n <span class=\"ui-nav__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n <span class=\"ui-nav__label\">{{ item.label }}</span>\n </a>\n }\n }\n </nav>\n `,\n styleUrl: './navigation-menu.component.scss',\n})\nexport class NavigationMenuComponent {\n readonly items = input.required<NavItem[]>();\n readonly orientation = input<NavOrientation>('horizontal');\n readonly ariaLabel = input<string>('Main navigation');\n}","import { Directive, Input, TemplateRef } from '@angular/core';\n\n// ── UiTableCellDirective ──────────────────────────────────────────────────────\n// Attach to <ng-template> to provide a custom cell renderer for a given column.\n//\n// Usage:\n// <ng-template uiCell=\"status\" let-row>\n// <ui-badge [color]=\"row['statusColor']\">{{ row['status'] }}</ui-badge>\n// </ng-template>\n\nexport interface TableCellContext {\n $implicit: Record<string, unknown>;\n row: Record<string, unknown>;\n}\n\n@Directive({\n selector: 'ng-template[uiCell]',\n standalone: true,\n})\nexport class UiTableCellDirective {\n /** The column key this template handles. */\n @Input({ required: true, alias: 'uiCell' }) columnKey!: string;\n\n constructor(\n public readonly tpl: TemplateRef<TableCellContext>,\n ) {}\n\n /** Type-safe static context guard for `let-row`. */\n static ngTemplateContextGuard(\n _dir: UiTableCellDirective,\n ctx: unknown,\n ): ctx is TableCellContext {\n return true;\n }\n}\n","import {\n ChangeDetectionStrategy, Component, ContentChildren,\n QueryList, TemplateRef, computed, input, model, output,\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { UiTableCellDirective } from './table-cell.directive';\n\nexport interface TableColumn<T = unknown> {\n key: string;\n label: string;\n sortable?: boolean;\n width?: string;\n align?: 'left' | 'center' | 'right';\n}\n\nexport interface SortState {\n column: string;\n direction: 'asc' | 'desc';\n}\n\n/**\n * Table Organism — Source: Nuxt UI v3 ❖ Table\n * Data table with sorting, selection, loading state.\n *\n * Custom cell templates via UiTableCellDirective:\n * <ng-template uiCell=\"columnKey\" let-row>\n * <ui-badge>{{ row['field'] }}</ui-badge>\n * </ng-template>\n */\n@Component({\n selector: 'ui-table',\n standalone: true,\n imports: [CommonModule, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"ui-table-wrap\">\n <table class=\"ui-table\" [attr.aria-label]=\"caption()\">\n @if (caption()) {\n <caption class=\"ui-table__caption\">{{ caption() }}</caption>\n }\n <thead class=\"ui-table__head\">\n <tr>\n @if (selectable()) {\n <th class=\"ui-table__th ui-table__th--checkbox\" scope=\"col\">\n <input type=\"checkbox\" [checked]=\"allSelected()\" (change)=\"toggleAll()\" aria-label=\"Select all\" />\n </th>\n }\n @for (col of columns(); track col.key) {\n <th\n [class]=\"'ui-table__th' + (col.sortable ? ' ui-table__th--sortable' : '') + ' ui-table__th--' + (col.align ?? 'left')\"\n scope=\"col\"\n [attr.aria-sort]=\"getSortAriaLabel(col.key)\"\n [style.width]=\"col.width ?? null\"\n (click)=\"col.sortable ? sort(col.key) : null\"\n >\n <span class=\"ui-table__th-inner\">\n {{ col.label }}\n @if (col.sortable) {\n <span class=\"ui-table__sort-icon\" aria-hidden=\"true\">\n {{ getSortIcon(col.key) }}\n </span>\n }\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"ui-table__body\">\n @if (loading()) {\n @for (i of loadingRows(); track i) {\n <tr class=\"ui-table__row ui-table__row--loading\">\n @if (selectable()) {\n <td><div class=\"ui-skeleton\" style=\"width:18px;height:18px;border-radius:4px\"></div></td>\n }\n @for (col of columns(); track col.key) {\n <td class=\"ui-table__td\">\n <div class=\"ui-skeleton\" style=\"height:16px;border-radius:4px\"></div>\n </td>\n }\n </tr>\n }\n } @else if (rows().length === 0) {\n <tr>\n <td [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\" class=\"ui-table__empty\">\n <ng-content select=\"[slot=empty]\" />\n {{ emptyLabel() }}\n </td>\n </tr>\n } @else {\n @for (row of rows(); track rowId(row)) {\n <tr\n class=\"ui-table__row\"\n [class.ui-table__row--selected]=\"isSelected(rowId(row))\"\n (click)=\"onRowClick(row)\"\n >\n @if (selectable()) {\n <td class=\"ui-table__td ui-table__td--checkbox\">\n <input type=\"checkbox\" [checked]=\"isSelected(rowId(row))\"\n (change)=\"toggleRow(rowId(row))\" [attr.aria-label]=\"'Select row'\" />\n </td>\n }\n @for (col of columns(); track col.key) {\n <td [class]=\"'ui-table__td ui-table__td--' + (col.align ?? 'left')\">\n @if (getCellTpl(col.key); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row }\"\n />\n } @else {\n {{ row[col.key] }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Custom cell template slots (projected, not rendered directly) -->\n <ng-content />\n `,\n styleUrl: './table.component.scss',\n})\nexport class TableComponent {\n readonly columns = input.required<TableColumn[]>();\n readonly rows = input<Record<string, unknown>[]>([]);\n readonly loading = input<boolean>(false);\n readonly selectable = input<boolean>(false);\n readonly caption = input<string | null>(null);\n readonly emptyLabel = input<string>('No data available.');\n readonly rowIdKey = input<string>('id');\n\n readonly sortState = model<SortState | null>(null);\n readonly selectedIds = model<(string | number)[]>([]);\n\n readonly rowClick = output<Record<string, unknown>>();\n\n // ── Custom cell templates ──────────────────────────────────────────────────\n @ContentChildren(UiTableCellDirective)\n private cellDirs!: QueryList<UiTableCellDirective>;\n\n /** Returns the TemplateRef for a column key if a custom template was provided. */\n protected getCellTpl(key: string): TemplateRef<unknown> | null {\n return this.cellDirs?.find(d => d.columnKey === key)?.tpl ?? null;\n }\n\n // ── Computed ───────────────────────────────────────────────────────────────\n\n protected readonly loadingRows = computed(() => Array.from({ length: 5 }, (_, i) => i));\n protected readonly allSelected = computed(() =>\n this.rows().length > 0 && this.rows().every(r => this.isSelected(this.rowId(r)))\n );\n\n // ── Helpers ────────────────────────────────────────────────────────────────\n\n protected rowId(row: Record<string, unknown>): string | number {\n return row[this.rowIdKey()] as string | number;\n }\n\n protected isSelected(id: string | number): boolean {\n return this.selectedIds().includes(id);\n }\n\n protected toggleRow(id: string | number): void {\n this.selectedIds.update(ids =>\n ids.includes(id) ? ids.filter(i => i !== id) : [...ids, id]\n );\n }\n\n protected toggleAll(): void {\n if (this.allSelected()) {\n this.selectedIds.set([]);\n } else {\n this.selectedIds.set(this.rows().map(r => this.rowId(r)));\n }\n }\n\n protected sort(key: string): void {\n this.sortState.update(state => {\n if (state?.column === key) {\n return state.direction === 'asc'\n ? { column: key, direction: 'desc' }\n : null;\n }\n return { column: key, direction: 'asc' };\n });\n }\n\n protected getSortIcon(key: string): string {\n const s = this.sortState();\n if (!s || s.column !== key) return '↕';\n return s.direction === 'asc' ? '↑' : '↓';\n }\n\n protected getSortAriaLabel(key: string): string | null {\n const s = this.sortState();\n if (!s || s.column !== key) return 'none';\n return s.direction === 'asc' ? 'ascending' : 'descending';\n }\n\n protected onRowClick(row: Record<string, unknown>): void {\n this.rowClick.emit(row);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { filter, map, startWith } from 'rxjs';\n\nimport {\n LucideAngularModule,\n LucideIconProvider,\n LUCIDE_ICONS,\n icons,\n House,\n LayoutDashboard,\n CircleQuestionMark,\n LogOut,\n Contact,\n MessageSquare,\n} from 'lucide-angular';\n\n// ── Types ──────────────────────────────────────────────────────\n\nexport interface SidebarNavItem {\n id: string;\n label: string;\n /** Built-in icon name (e.g. 'home', 'settings') or emoji / any string */\n icon?: string;\n href?: string;\n external?: boolean;\n active?: boolean;\n disabled?: boolean;\n badge?: string | number;\n children?: SidebarNavItem[];\n}\n\nexport interface SidebarNavGroup {\n /** Optional section heading (hidden in collapsed mode) */\n label?: string;\n items: SidebarNavItem[];\n}\n\nexport interface SidebarUser {\n name: string;\n avatar?: string;\n href?: string;\n}\n\n// ── Catalogue complet des icônes Lucide + aliases pratiques ──\n// `icons` contient les 1 700+ icônes en clés PascalCase.\n// Les aliases couvrent les noms courants qui n'existent pas dans Lucide.\n// LucideAngularComponent convertit kebab-case → PascalCase avant la recherche.\n// Ex : name=\"home\" → cherche \"Home\" → House\n\nconst SIDEBAR_ICONS = {\n ...icons,\n // Aliases courants absents du catalogue Lucide officiel\n Home: House, // name=\"home\"\n Dashboard: LayoutDashboard, // name=\"dashboard\"\n Help: CircleQuestionMark, // name=\"help\"\n Logout: LogOut, // name=\"logout\"\n Contacts: Contact, // name=\"contacts\"\n Feedback: MessageSquare, // name=\"feedback\"\n};\n\n/**\n * Sidebar Organism — Source: Nuxt UI v4 ❖ DashboardSidebar\n *\n * Sidebar de dashboard avec :\n * - Mode expanded (254px) ↔ collapsed (64px) avec animation CSS\n * - Header : logo ou slot personnalisé\n * - Navigation : groupes d'items avec icônes, badges, sous-menus, liens externes\n * - Search button avec shortcut clavier (⌘ K)\n * - Footer : utilisateur courant (avatar + nom)\n * - Compatible dark mode via `[data-theme=\"dark\"]`\n *\n * @example\n * <ui-sidebar [navGroups]=\"groups\" [user]=\"currentUser\" />\n * <ui-sidebar [(collapsed)]=\"sidebarCollapsed\" [navGroups]=\"groups\" />\n */\n@Component({\n selector: 'ui-sidebar',\n standalone: true,\n imports: [RouterLink, RouterLinkActive, LucideAngularModule],\n providers: [\n { provide: LUCIDE_ICONS, multi: true, useValue: new LucideIconProvider(SIDEBAR_ICONS) },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('expand', [\n transition(':enter', [\n style({ height: '0', opacity: 0, overflow: 'hidden' }),\n animate('180ms ease', style({ height: '*', opacity: 1, overflow: 'hidden' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate('150ms ease', style({ height: '0', opacity: 0 })),\n ]),\n ]),\n ],\n template: `\n <aside\n class=\"ui-sidebar\"\n [class.ui-sidebar--collapsed]=\"collapsed()\"\n [class.ui-sidebar--collapsible]=\"collapsible()\"\n [attr.aria-label]=\"'Sidebar navigation'\"\n >\n\n <!-- ── Header ─────────────────────────────────────────────── -->\n <div class=\"ui-sidebar__header\">\n <div class=\"ui-sidebar__logo\">\n @if (logoSrc()) {\n <img [src]=\"logoSrc()\" [alt]=\"logoAlt()\" class=\"ui-sidebar__logo-img\" />\n } @else {\n <span class=\"ui-sidebar__logo-text\">{{ logoAlt() }}</span>\n }\n </div>\n\n @if (collapsible()) {\n <!-- Figma: toggle uses i-lucide-chevrons-up-down, consistent in expanded & collapsed states -->\n <button\n type=\"button\"\n class=\"ui-sidebar__toggle\"\n [attr.aria-label]=\"collapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n (click)=\"toggleCollapse()\"\n >\n <lucide-icon name=\"chevrons-up-down\" [size]=\"16\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n\n <!-- ── Body ───────────────────────────────────────────────── -->\n <div class=\"ui-sidebar__body\">\n\n <!-- Top section: search + primary nav groups -->\n <div class=\"ui-sidebar__top\">\n\n <!-- Search button -->\n @if (showSearch()) {\n <button\n type=\"button\"\n class=\"ui-sidebar__search\"\n [attr.aria-label]=\"searchPlaceholder()\"\n (click)=\"searchClick.emit()\"\n >\n <lucide-icon name=\"search\" [size]=\"20\" aria-hidden=\"true\" class=\"ui-sidebar__search-icon\" />\n <span class=\"ui-sidebar__search-label\">{{ searchPlaceholder() }}</span>\n <span class=\"ui-sidebar__search-kbd\" aria-hidden=\"true\">\n <kbd class=\"ui-sidebar__kbd\">⌘</kbd>\n <kbd class=\"ui-sidebar__kbd\">K</kbd>\n </span>\n </button>\n }\n\n <!-- Primary nav groups -->\n @for (group of navGroups(); track $index) {\n <nav class=\"ui-sidebar__group\" [attr.aria-label]=\"group.label ?? 'Navigation'\">\n @if (group.label && !collapsed()) {\n <p class=\"ui-sidebar__group-label\">{{ group.label }}</p>\n }\n @for (item of group.items; track item.id) {\n <div class=\"ui-sidebar__nav-item-wrap\">\n\n @if (item.children?.length) {\n <!-- ── Collapsible parent item ── -->\n <button\n type=\"button\"\n class=\"ui-sidebar__item\"\n [class.ui-sidebar__item--active]=\"isParentActive(item)\"\n [class.ui-sidebar__item--disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"isItemOpen(item.id)\"\n [disabled]=\"item.disabled ?? null\"\n (click)=\"toggleItem(item.id)\"\n >\n @if (item.icon) {\n <lucide-icon [name]=\"item.icon\" [size]=\"20\" aria-hidden=\"true\" class=\"ui-sidebar__item-icon\" />\n }\n <span class=\"ui-sidebar__item-label\">{{ item.label }}</span>\n @if (item.badge != null && !collapsed()) {\n <span class=\"ui-sidebar__badge\" [attr.aria-label]=\"item.badge + ' notifications'\">\n {{ item.badge }}\n </span>\n }\n @if (!collapsed()) {\n <span class=\"ui-sidebar__chevron\"\n [class.ui-sidebar__chevron--open]=\"isItemOpen(item.id)\"\n aria-hidden=\"true\">\n <lucide-icon name=\"chevron-down\" [size]=\"20\" />\n </span>\n }\n </button>\n\n <!-- Sub-items (only in expanded mode) -->\n @if (isItemOpen(item.id) && !collapsed()) {\n <div class=\"ui-sidebar__children\" [@expand]>\n @for (child of item.children; track child.id) {\n <!-- Figma: NavigationMenuItem child has border-l + px-[6px] on outer wrapper -->\n <div class=\"ui-sidebar__child-wrap\"\n [class.ui-sidebar__child-wrap--active]=\"childRla.isActive\">\n <button\n type=\"button\"\n #childRla=\"routerLinkActive\"\n routerLinkActive\n [routerLink]=\"!child.external ? (child.href ?? null) : null\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"ui-sidebar__child\"\n [class.ui-sidebar__child--active]=\"child.external ? !!child.active : childRla.isActive\"\n [class.ui-sidebar__child--disabled]=\"child.disabled\"\n [disabled]=\"child.disabled ?? null\"\n (click)=\"navigate(child)\"\n >\n @if (child.icon) {\n <lucide-icon [name]=\"child.icon\" [size]=\"16\" aria-hidden=\"true\" class=\"ui-sidebar__child-icon\" />\n }\n <span class=\"ui-sidebar__child-label\">{{ child.label }}</span>\n </button>\n </div>\n }\n </div>\n }\n\n } @else {\n <!-- ── Simple item ── -->\n <button\n type=\"button\"\n #navRla=\"routerLinkActive\"\n routerLinkActive\n [routerLink]=\"!item.external ? (item.href ?? null) : null\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n class=\"ui-sidebar__item\"\n [class.ui-sidebar__item--active]=\"item.external ? !!item.active : navRla.isActive\"\n [class.ui-sidebar__item--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled ?? null\"\n (click)=\"navigate(item)\"\n >\n @if (item.icon) {\n <lucide-icon [name]=\"item.icon\" [size]=\"20\" aria-hidden=\"true\" class=\"ui-sidebar__item-icon\" />\n }\n <span class=\"ui-sidebar__item-label\">\n {{ item.label }}\n @if (item.external) {\n <lucide-icon name=\"arrow-up-right\" [size]=\"12\" aria-hidden=\"true\" class=\"ui-sidebar__external\" />\n }\n </span>\n @if (item.badge != null && !collapsed()) {\n <span class=\"ui-sidebar__badge\" [attr.aria-label]=\"item.badge + ' notifications'\">\n {{ item.badge }}\n </span>\n }\n </button>\n }\n\n </div>\n }\n </nav>\n }\n </div>\n\n <!-- Bottom section: secondary / footer nav groups -->\n @if (footerGroups().length) {\n <div class=\"ui-sidebar__bottom\">\n @for (group of footerGroups(); track $index) {\n <nav class=\"ui-sidebar__group\" [attr.aria-label]=\"group.label ?? 'Footer navigation'\">\n @for (item of group.items; track item.id) {\n <button\n type=\"button\"\n #footerRla=\"routerLinkActive\"\n routerLinkActive\n [routerLink]=\"!item.external ? (item.href ?? null) : null\"\n [routerLinkActiveOptions]=\"{ exact: false }\"\n class=\"ui-sidebar__item\"\n [class.ui-sidebar__item--active]=\"item.external ? !!item.active : footerRla.isActive\"\n [class.ui-sidebar__item--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled ?? null\"\n (click)=\"navigate(item)\"\n >\n @if (item.icon) {\n <lucide-icon [name]=\"item.icon\" [size]=\"20\" aria-hidden=\"true\" class=\"ui-sidebar__item-icon\" />\n }\n <span class=\"ui-sidebar__item-label\">\n {{ item.label }}\n @if (item.external) {\n <lucide-icon name=\"arrow-up-right\" [size]=\"12\" aria-hidden=\"true\" class=\"ui-sidebar__external\" />\n }\n </span>\n </button>\n }\n </nav>\n }\n </div>\n }\n\n </div>\n\n <!-- ── Footer ─────────────────────────────────────────────── -->\n @if (user()) {\n <div class=\"ui-sidebar__footer\">\n <button\n type=\"button\"\n class=\"ui-sidebar__user\"\n [attr.aria-label]=\"'Account: ' + user()!.name\"\n (click)=\"userClick.emit(user()!)\"\n >\n @if (user()!.avatar) {\n <img\n class=\"ui-sidebar__avatar\"\n [src]=\"user()!.avatar\"\n [alt]=\"user()!.name\"\n />\n } @else {\n <span class=\"ui-sidebar__avatar-fallback\" aria-hidden=\"true\">\n {{ user()!.name.charAt(0).toUpperCase() }}\n </span>\n }\n <span class=\"ui-sidebar__user-name\">{{ user()!.name }}</span>\n </button>\n </div>\n }\n\n </aside>\n `,\n styleUrl: './sidebar.component.scss',\n})\nexport class SidebarComponent {\n private router = inject(Router);\n\n // ── Inputs ────────────────────────────────────────────────\n readonly navGroups = input<SidebarNavGroup[]>([]);\n readonly footerGroups = input<SidebarNavGroup[]>([]);\n readonly user = input<SidebarUser | null>(null);\n readonly logoSrc = input<string | null>(null);\n readonly logoAlt = input<string>('Logo');\n readonly collapsible = input<boolean>(true);\n readonly showSearch = input<boolean>(true);\n readonly searchPlaceholder = input<string>('Search...');\n\n // ── Two-way binding ───────────────────────────────────────\n readonly collapsed = model<boolean>(false);\n\n // ── Outputs ───────────────────────────────────────────────\n readonly searchClick = output<void>();\n readonly itemClick = output<SidebarNavItem>();\n readonly userClick = output<SidebarUser>();\n\n // ── URL courante (réactive) ───────────────────────────────\n private readonly currentUrl = toSignal(\n this.router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n map(() => this.router.url),\n startWith(this.router.url),\n ),\n { initialValue: this.router.url },\n );\n\n // ── Internal state (open sub-menus) ───────────────────────\n private openItems = signal(new Set<string>());\n\n constructor() {\n // Auto-ouvre les sous-menus dont un enfant correspond à la route active\n effect(() => {\n const url = this.currentUrl();\n const allGroups = [...this.navGroups(), ...this.footerGroups()];\n allGroups.forEach(group =>\n group.items.forEach(item => {\n const hasActiveChild = item.children?.some(\n child => child.href && url.startsWith(child.href),\n ) ?? false;\n if (hasActiveChild) {\n this.openItems.update(set => new Set(set).add(item.id));\n }\n }),\n );\n });\n }\n\n protected isItemOpen(id: string): boolean {\n return this.openItems().has(id);\n }\n\n /**\n * Un item parent (button) est actif si au moins un de ses enfants\n * correspond à l'URL courante.\n */\n protected isParentActive(item: SidebarNavItem): boolean {\n const url = this.currentUrl();\n return item.children?.some(\n child => child.href ? url.startsWith(child.href) : false,\n ) ?? false;\n }\n\n protected toggleItem(id: string): void {\n this.openItems.update(set => {\n const next = new Set(set);\n next.has(id) ? next.delete(id) : next.add(id);\n return next;\n });\n }\n\n protected toggleCollapse(): void {\n this.collapsed.update(v => !v);\n }\n\n protected navigate(item: SidebarNavItem): void {\n this.itemClick.emit(item);\n if (!item.href || item.disabled) return;\n if (item.external) {\n window.open(item.href, '_blank', 'noopener,noreferrer');\n } else {\n this.router.navigate([item.href]);\n }\n }\n}\n","// ============================================================\n// ORGANISMS — Nuxt UI v3 Design Kit → Angular 19 + NX\n// Complex components composed of atoms + molecules\n// ============================================================\n\nexport * from './accordion/accordion.component';\nexport * from './card/card.component';\nexport * from './dropdown-menu/dropdown-menu.component';\nexport * from './modal/modal.component';\nexport * from './navigation-menu/navigation-menu.component';\nexport * from './table/index';\nexport * from './sidebar/sidebar.component';\n","// ============================================================\n// SHARED-UI PUBLIC API\n// NX Angular Library — Nuxt UI v3 Design Kit\n// Atomic Design: Atoms → Molecules → Organisms\n// ============================================================\n\n// ── Theme (ThemeService, provideSharedUiTheme, ThemePickerComponent, presets) ─\nexport * from './lib/tokens/index';\n\n// ── Atoms ────────────────────────────────────────────────────\nexport * from './lib/atoms/index';\n\n// ── Molecules ────────────────────────────────────────────────\nexport * from './lib/molecules/index';\n\n// ── Organisms ────────────────────────────────────────────────\nexport * from './lib/organisms/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AvatarComponent","i1"],"mappings":"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"}