@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-organisms.mjs","sources":["../../../../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/lib/organisms/atomng-ui-organisms.ts"],"sourcesContent":["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 * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}