@ojiepermana/angular 22.0.1 → 22.0.29

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 (513) hide show
  1. package/README.md +61 -311
  2. package/fesm2022/ojiepermana-angular-chart.mjs +10 -0
  3. package/fesm2022/ojiepermana-angular-component.mjs +10 -0
  4. package/fesm2022/ojiepermana-angular-navigation.mjs +10 -0
  5. package/fesm2022/ojiepermana-angular-sdk.mjs +10 -0
  6. package/fesm2022/ojiepermana-angular-theme.mjs +4 -384
  7. package/fesm2022/ojiepermana-angular.mjs +15 -16
  8. package/package.json +25 -425
  9. package/types/ojiepermana-angular-chart.d.ts +1 -0
  10. package/types/ojiepermana-angular-component.d.ts +1 -0
  11. package/types/ojiepermana-angular-navigation.d.ts +1 -0
  12. package/types/ojiepermana-angular-sdk.d.ts +1 -0
  13. package/types/ojiepermana-angular-theme.d.ts +1 -116
  14. package/types/ojiepermana-angular.d.ts +5 -3
  15. package/.npmignore +0 -2
  16. package/collection.json +0 -30
  17. package/component/accordion/README.md +0 -195
  18. package/component/accordion/package.json +0 -4
  19. package/component/alert/README.md +0 -182
  20. package/component/alert/package.json +0 -4
  21. package/component/alert-dialog/README.md +0 -239
  22. package/component/alert-dialog/package.json +0 -4
  23. package/component/aspect-ratio/README.md +0 -112
  24. package/component/aspect-ratio/package.json +0 -4
  25. package/component/avatar/README.md +0 -176
  26. package/component/avatar/package.json +0 -4
  27. package/component/badge/README.md +0 -133
  28. package/component/badge/package.json +0 -4
  29. package/component/breadcrumb/README.md +0 -216
  30. package/component/breadcrumb/package.json +0 -4
  31. package/component/button/README.md +0 -139
  32. package/component/button/package.json +0 -4
  33. package/component/button-group/README.md +0 -208
  34. package/component/button-group/package.json +0 -4
  35. package/component/calendar/README.md +0 -132
  36. package/component/calendar/package.json +0 -4
  37. package/component/card/README.md +0 -220
  38. package/component/card/package.json +0 -4
  39. package/component/carousel/README.md +0 -276
  40. package/component/carousel/package.json +0 -4
  41. package/component/chart/README.md +0 -249
  42. package/component/chart/area/package.json +0 -4
  43. package/component/chart/bar/package.json +0 -4
  44. package/component/chart/line/package.json +0 -4
  45. package/component/chart/package.json +0 -4
  46. package/component/chart/pie/package.json +0 -4
  47. package/component/chart/radar/package.json +0 -4
  48. package/component/chart/radial/package.json +0 -4
  49. package/component/chart/scatter/package.json +0 -4
  50. package/component/checkbox/README.md +0 -149
  51. package/component/checkbox/package.json +0 -4
  52. package/component/collapsible/README.md +0 -195
  53. package/component/collapsible/package.json +0 -4
  54. package/component/combobox/README.md +0 -198
  55. package/component/combobox/package.json +0 -4
  56. package/component/command/README.md +0 -275
  57. package/component/command/package.json +0 -4
  58. package/component/composer/README.md +0 -235
  59. package/component/composer/package.json +0 -4
  60. package/component/context-menu/README.md +0 -267
  61. package/component/context-menu/package.json +0 -4
  62. package/component/date-picker/README.md +0 -177
  63. package/component/date-picker/package.json +0 -4
  64. package/component/dialog/README.md +0 -237
  65. package/component/dialog/package.json +0 -4
  66. package/component/drawer/README.md +0 -145
  67. package/component/drawer/package.json +0 -4
  68. package/component/dropdown-menu/README.md +0 -311
  69. package/component/dropdown-menu/package.json +0 -4
  70. package/component/editor/README.md +0 -136
  71. package/component/editor/package.json +0 -4
  72. package/component/empty/README.md +0 -183
  73. package/component/empty/package.json +0 -4
  74. package/component/form/README.md +0 -210
  75. package/component/form/package.json +0 -4
  76. package/component/hover-card/README.md +0 -146
  77. package/component/hover-card/package.json +0 -4
  78. package/component/input/README.md +0 -159
  79. package/component/input/package.json +0 -4
  80. package/component/input-group/README.md +0 -239
  81. package/component/input-group/package.json +0 -4
  82. package/component/input-otp/README.md +0 -278
  83. package/component/input-otp/package.json +0 -4
  84. package/component/item/README.md +0 -247
  85. package/component/item/package.json +0 -4
  86. package/component/kanban/README.md +0 -81
  87. package/component/kanban/package.json +0 -4
  88. package/component/kbd/README.md +0 -139
  89. package/component/kbd/package.json +0 -4
  90. package/component/label/README.md +0 -136
  91. package/component/label/package.json +0 -4
  92. package/component/menubar/README.md +0 -269
  93. package/component/menubar/package.json +0 -4
  94. package/component/native-select/README.md +0 -176
  95. package/component/native-select/package.json +0 -4
  96. package/component/navigation-menu/README.md +0 -160
  97. package/component/navigation-menu/package.json +0 -4
  98. package/component/pagination/README.md +0 -144
  99. package/component/pagination/package.json +0 -4
  100. package/component/pillbox/README.md +0 -67
  101. package/component/pillbox/package.json +0 -4
  102. package/component/popover/README.md +0 -43
  103. package/component/popover/package.json +0 -4
  104. package/component/progress/README.md +0 -160
  105. package/component/progress/package.json +0 -4
  106. package/component/radio/README.md +0 -209
  107. package/component/radio/package.json +0 -4
  108. package/component/resizable/README.md +0 -168
  109. package/component/resizable/package.json +0 -4
  110. package/component/scroll-area/README.md +0 -143
  111. package/component/scroll-area/package.json +0 -4
  112. package/component/select/README.md +0 -174
  113. package/component/select/package.json +0 -4
  114. package/component/separator/README.md +0 -170
  115. package/component/separator/package.json +0 -4
  116. package/component/sheet/README.md +0 -183
  117. package/component/sheet/package.json +0 -4
  118. package/component/skeleton/README.md +0 -158
  119. package/component/skeleton/package.json +0 -4
  120. package/component/slider/README.md +0 -207
  121. package/component/slider/package.json +0 -4
  122. package/component/spinner/README.md +0 -160
  123. package/component/spinner/package.json +0 -4
  124. package/component/switch/README.md +0 -166
  125. package/component/switch/package.json +0 -4
  126. package/component/table/README.md +0 -291
  127. package/component/table/package.json +0 -4
  128. package/component/tabs/README.md +0 -219
  129. package/component/tabs/package.json +0 -4
  130. package/component/textarea/README.md +0 -154
  131. package/component/textarea/package.json +0 -4
  132. package/component/timeline/README.md +0 -94
  133. package/component/timeline/package.json +0 -4
  134. package/component/toast/README.md +0 -321
  135. package/component/toast/package.json +0 -4
  136. package/component/toggle/README.md +0 -131
  137. package/component/toggle/package.json +0 -4
  138. package/component/toggle-group/README.md +0 -206
  139. package/component/toggle-group/package.json +0 -4
  140. package/component/tooltip/README.md +0 -211
  141. package/component/tooltip/package.json +0 -4
  142. package/component/utils/package.json +0 -4
  143. package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -189
  144. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  145. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -276
  146. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  147. package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -99
  148. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  149. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -37
  150. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  151. package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -139
  152. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  153. package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -50
  154. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  155. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -200
  156. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  157. package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -103
  158. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  159. package/fesm2022/ojiepermana-angular-component-button.mjs +0 -68
  160. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  161. package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -88
  162. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  163. package/fesm2022/ojiepermana-angular-component-card.mjs +0 -152
  164. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  165. package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -334
  166. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  167. package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
  168. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
  169. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
  170. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
  171. package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
  172. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
  173. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
  174. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
  175. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
  176. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
  177. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
  178. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
  179. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
  180. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
  181. package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3925
  182. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
  183. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -114
  184. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  185. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -124
  186. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  187. package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -272
  188. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  189. package/fesm2022/ojiepermana-angular-component-command.mjs +0 -293
  190. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  191. package/fesm2022/ojiepermana-angular-component-composer.mjs +0 -352
  192. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
  193. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -103
  194. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  195. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -170
  196. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  197. package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -279
  198. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  199. package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
  200. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  201. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -492
  202. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  203. package/fesm2022/ojiepermana-angular-component-editor.mjs +0 -717
  204. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
  205. package/fesm2022/ojiepermana-angular-component-empty.mjs +0 -145
  206. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
  207. package/fesm2022/ojiepermana-angular-component-form.mjs +0 -366
  208. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  209. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +0 -297
  210. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
  211. package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -179
  212. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  213. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +0 -514
  214. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
  215. package/fesm2022/ojiepermana-angular-component-input.mjs +0 -45
  216. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  217. package/fesm2022/ojiepermana-angular-component-item.mjs +0 -264
  218. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  219. package/fesm2022/ojiepermana-angular-component-kanban.mjs +0 -314
  220. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
  221. package/fesm2022/ojiepermana-angular-component-kbd.mjs +0 -55
  222. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
  223. package/fesm2022/ojiepermana-angular-component-label.mjs +0 -33
  224. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  225. package/fesm2022/ojiepermana-angular-component-menubar.mjs +0 -308
  226. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
  227. package/fesm2022/ojiepermana-angular-component-native-select.mjs +0 -67
  228. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
  229. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +0 -413
  230. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
  231. package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -226
  232. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  233. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +0 -812
  234. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
  235. package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -169
  236. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  237. package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -60
  238. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  239. package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -122
  240. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  241. package/fesm2022/ojiepermana-angular-component-resizable.mjs +0 -481
  242. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
  243. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -54
  244. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  245. package/fesm2022/ojiepermana-angular-component-select.mjs +0 -176
  246. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  247. package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -37
  248. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  249. package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -284
  250. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  251. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -31
  252. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  253. package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -423
  254. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  255. package/fesm2022/ojiepermana-angular-component-spinner.mjs +0 -60
  256. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
  257. package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -116
  258. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  259. package/fesm2022/ojiepermana-angular-component-table.mjs +0 -155
  260. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  261. package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -272
  262. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  263. package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -39
  264. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  265. package/fesm2022/ojiepermana-angular-component-timeline.mjs +0 -237
  266. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
  267. package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -71
  268. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  269. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +0 -289
  270. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
  271. package/fesm2022/ojiepermana-angular-component-toggle.mjs +0 -82
  272. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
  273. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -354
  274. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  275. package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
  276. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  277. package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
  278. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
  279. package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -602
  280. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
  281. package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
  282. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
  283. package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -116
  284. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
  286. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -30
  288. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
  289. package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
  290. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
  291. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs +0 -49
  292. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +0 -1
  293. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs +0 -128
  294. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +0 -1
  295. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs +0 -123
  296. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +0 -1
  297. package/fesm2022/ojiepermana-angular-layout.mjs +0 -485
  298. package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
  299. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
  300. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
  301. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -63
  302. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
  303. package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -559
  304. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
  305. package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -213
  306. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
  307. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -401
  308. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
  309. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -670
  310. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
  311. package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
  312. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
  313. package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
  314. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
  315. package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -294
  316. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
  317. package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
  318. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
  319. package/fesm2022/ojiepermana-angular-theme.mjs.map +0 -1
  320. package/fesm2022/ojiepermana-angular.mjs.map +0 -1
  321. package/generator/api/README.md +0 -252
  322. package/generator/api/bin/package.json +0 -3
  323. package/generator/api/bin/schematics/init/index.js +0 -90
  324. package/generator/api/bin/schematics/ng-add/index.js +0 -131
  325. package/generator/api/bin/schematics/sdk/index.js +0 -76
  326. package/generator/api/bin/src/config/loader.js +0 -41
  327. package/generator/api/bin/src/config/schema.js +0 -57
  328. package/generator/api/bin/src/emit/client.js +0 -248
  329. package/generator/api/bin/src/emit/metadata.js +0 -295
  330. package/generator/api/bin/src/emit/models.js +0 -106
  331. package/generator/api/bin/src/emit/navigation.js +0 -56
  332. package/generator/api/bin/src/emit/operations.js +0 -122
  333. package/generator/api/bin/src/emit/public-api.js +0 -54
  334. package/generator/api/bin/src/emit/services.js +0 -87
  335. package/generator/api/bin/src/engine.js +0 -65
  336. package/generator/api/bin/src/layout/per-domain.js +0 -359
  337. package/generator/api/bin/src/parser/bundle.js +0 -25
  338. package/generator/api/bin/src/parser/ir.js +0 -320
  339. package/generator/api/bin/src/parser/types.js +0 -7
  340. package/generator/api/bin/src/render/template.js +0 -58
  341. package/generator/api/bin/src/writer/index.js +0 -278
  342. package/generator/api/package.json +0 -4
  343. package/generator/api/schematics/init/schema.json +0 -19
  344. package/generator/api/schematics/ng-add/schema.json +0 -14
  345. package/generator/api/schematics/sdk/schema.json +0 -19
  346. package/generator/api/sdk.config.example.json +0 -24
  347. package/generator/guide/README.md +0 -84
  348. package/generator/guide/bin/package.json +0 -3
  349. package/generator/guide/bin/schematics/build/index.js +0 -36
  350. package/generator/guide/bin/schematics/init/index.js +0 -70
  351. package/generator/guide/bin/src/config/loader.js +0 -50
  352. package/generator/guide/bin/src/config/schema.js +0 -12
  353. package/generator/guide/bin/src/engine/component.js +0 -74
  354. package/generator/guide/bin/src/engine/frontmatter.js +0 -42
  355. package/generator/guide/bin/src/engine/index.js +0 -42
  356. package/generator/guide/bin/src/engine/naming.js +0 -39
  357. package/generator/guide/bin/src/engine/render.js +0 -36
  358. package/generator/guide/bin/src/engine/routes.js +0 -106
  359. package/generator/guide/bin/src/engine/walk.js +0 -35
  360. package/generator/guide/guide.config.example.json +0 -9
  361. package/generator/guide/schematics/build/schema.json +0 -14
  362. package/generator/guide/schematics/init/schema.json +0 -19
  363. package/layout/component/package.json +0 -4
  364. package/layout/package.json +0 -4
  365. package/layout/provider/package.json +0 -4
  366. package/layout/services/package.json +0 -4
  367. package/layout/shell/package.json +0 -4
  368. package/layout/token/directive/package.json +0 -4
  369. package/layout/token/package.json +0 -4
  370. package/layout/type/empty/package.json +0 -4
  371. package/layout/type/horizontal/package.json +0 -4
  372. package/layout/type/vertical/package.json +0 -4
  373. package/navigation/demo-data/package.json +0 -4
  374. package/navigation/icon/package.json +0 -4
  375. package/navigation/item/package.json +0 -4
  376. package/navigation/service/package.json +0 -4
  377. package/navigation/sidebar/package.json +0 -4
  378. package/navigation/topbar/README.md +0 -196
  379. package/navigation/topbar/package.json +0 -4
  380. package/navigation/types/package.json +0 -4
  381. package/theme/README.md +0 -174
  382. package/theme/package.json +0 -4
  383. package/theme/provider/package.json +0 -4
  384. package/theme/services/package.json +0 -4
  385. package/theme/styles/foundation/components.css +0 -81
  386. package/theme/styles/foundation/layers.css +0 -15
  387. package/theme/styles/foundation/tokens.css +0 -55
  388. package/theme/styles/index.css +0 -37
  389. package/theme/styles/integrations/material/autocomplete.css +0 -178
  390. package/theme/styles/integrations/material/button.css +0 -468
  391. package/theme/styles/integrations/material/dialog.css +0 -152
  392. package/theme/styles/integrations/material/select.css +0 -175
  393. package/theme/styles/integrations/material/slide-toggle.css +0 -234
  394. package/theme/styles/integrations/material/slider.css +0 -194
  395. package/theme/styles/integrations/material/tabs.css +0 -229
  396. package/theme/styles/integrations/material.css +0 -264
  397. package/theme/styles/integrations/tailwind.css +0 -114
  398. package/theme/styles/variants/color/amber.css +0 -31
  399. package/theme/styles/variants/color/base.css +0 -36
  400. package/theme/styles/variants/color/blue.css +0 -31
  401. package/theme/styles/variants/color/cyan.css +0 -31
  402. package/theme/styles/variants/color/emerald.css +0 -31
  403. package/theme/styles/variants/color/fuchsia.css +0 -31
  404. package/theme/styles/variants/color/green.css +0 -31
  405. package/theme/styles/variants/color/index.css +0 -22
  406. package/theme/styles/variants/color/indigo.css +0 -31
  407. package/theme/styles/variants/color/lime.css +0 -31
  408. package/theme/styles/variants/color/orange.css +0 -31
  409. package/theme/styles/variants/color/pink.css +0 -31
  410. package/theme/styles/variants/color/purple.css +0 -31
  411. package/theme/styles/variants/color/red.css +0 -31
  412. package/theme/styles/variants/color/rose.css +0 -31
  413. package/theme/styles/variants/color/sky.css +0 -31
  414. package/theme/styles/variants/color/teal.css +0 -31
  415. package/theme/styles/variants/color/violet.css +0 -31
  416. package/theme/styles/variants/color/yellow.css +0 -31
  417. package/theme/styles/variants/mode/dark.css +0 -20
  418. package/theme/styles/variants/mode/index.css +0 -6
  419. package/theme/styles/variants/mode/light.css +0 -24
  420. package/theme/styles/variants/style/brutal.css +0 -50
  421. package/theme/styles/variants/style/default.css +0 -54
  422. package/theme/styles/variants/style/index.css +0 -8
  423. package/theme/styles/variants/style/sharp.css +0 -50
  424. package/theme/styles/variants/style/soft.css +0 -50
  425. package/theme/token/package.json +0 -4
  426. package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
  427. package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
  428. package/types/ojiepermana-angular-component-alert.d.ts +0 -37
  429. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
  430. package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
  431. package/types/ojiepermana-angular-component-badge.d.ts +0 -19
  432. package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
  433. package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
  434. package/types/ojiepermana-angular-component-button.d.ts +0 -22
  435. package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
  436. package/types/ojiepermana-angular-component-card.d.ts +0 -60
  437. package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
  438. package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
  439. package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
  440. package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
  441. package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
  442. package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
  443. package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
  444. package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
  445. package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
  446. package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
  447. package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
  448. package/types/ojiepermana-angular-component-combobox.d.ts +0 -50
  449. package/types/ojiepermana-angular-component-command.d.ts +0 -99
  450. package/types/ojiepermana-angular-component-composer.d.ts +0 -90
  451. package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
  452. package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
  453. package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
  454. package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
  455. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -137
  456. package/types/ojiepermana-angular-component-editor.d.ts +0 -123
  457. package/types/ojiepermana-angular-component-empty.d.ts +0 -50
  458. package/types/ojiepermana-angular-component-form.d.ts +0 -141
  459. package/types/ojiepermana-angular-component-hover-card.d.ts +0 -74
  460. package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
  461. package/types/ojiepermana-angular-component-input-otp.d.ts +0 -136
  462. package/types/ojiepermana-angular-component-input.d.ts +0 -16
  463. package/types/ojiepermana-angular-component-item.d.ts +0 -88
  464. package/types/ojiepermana-angular-component-kanban.d.ts +0 -70
  465. package/types/ojiepermana-angular-component-kbd.d.ts +0 -16
  466. package/types/ojiepermana-angular-component-label.d.ts +0 -11
  467. package/types/ojiepermana-angular-component-menubar.d.ts +0 -67
  468. package/types/ojiepermana-angular-component-native-select.d.ts +0 -26
  469. package/types/ojiepermana-angular-component-navigation-menu.d.ts +0 -96
  470. package/types/ojiepermana-angular-component-pagination.d.ts +0 -33
  471. package/types/ojiepermana-angular-component-pillbox.d.ts +0 -157
  472. package/types/ojiepermana-angular-component-popover.d.ts +0 -43
  473. package/types/ojiepermana-angular-component-progress.d.ts +0 -17
  474. package/types/ojiepermana-angular-component-radio.d.ts +0 -40
  475. package/types/ojiepermana-angular-component-resizable.d.ts +0 -99
  476. package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
  477. package/types/ojiepermana-angular-component-select.d.ts +0 -57
  478. package/types/ojiepermana-angular-component-separator.d.ts +0 -14
  479. package/types/ojiepermana-angular-component-sheet.d.ts +0 -76
  480. package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
  481. package/types/ojiepermana-angular-component-slider.d.ts +0 -74
  482. package/types/ojiepermana-angular-component-spinner.d.ts +0 -13
  483. package/types/ojiepermana-angular-component-switch.d.ts +0 -40
  484. package/types/ojiepermana-angular-component-table.d.ts +0 -52
  485. package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
  486. package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
  487. package/types/ojiepermana-angular-component-timeline.d.ts +0 -63
  488. package/types/ojiepermana-angular-component-toast.d.ts +0 -38
  489. package/types/ojiepermana-angular-component-toggle-group.d.ts +0 -89
  490. package/types/ojiepermana-angular-component-toggle.d.ts +0 -25
  491. package/types/ojiepermana-angular-component-tooltip.d.ts +0 -89
  492. package/types/ojiepermana-angular-component-utils.d.ts +0 -5
  493. package/types/ojiepermana-angular-generator-api.d.ts +0 -86
  494. package/types/ojiepermana-angular-layout-component.d.ts +0 -205
  495. package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
  496. package/types/ojiepermana-angular-layout-services.d.ts +0 -25
  497. package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
  498. package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
  499. package/types/ojiepermana-angular-layout-token.d.ts +0 -36
  500. package/types/ojiepermana-angular-layout-type-empty.d.ts +0 -22
  501. package/types/ojiepermana-angular-layout-type-horizontal.d.ts +0 -36
  502. package/types/ojiepermana-angular-layout-type-vertical.d.ts +0 -38
  503. package/types/ojiepermana-angular-layout.d.ts +0 -164
  504. package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
  505. package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
  506. package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
  507. package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
  508. package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
  509. package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -74
  510. package/types/ojiepermana-angular-navigation-types.d.ts +0 -135
  511. package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
  512. package/types/ojiepermana-angular-theme-services.d.ts +0 -55
  513. package/types/ojiepermana-angular-theme-token.d.ts +0 -57
@@ -1,559 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { RouterLink, RouterLinkActive } from '@angular/router';
4
- import { MatTooltip } from '@angular/material/tooltip';
5
- import { UiNavIconComponent } from '@ojiepermana/angular/navigation/icon';
6
- import { NavigationService } from '@ojiepermana/angular/navigation/service';
7
- import { clsx } from 'clsx';
8
- import { twMerge } from 'tailwind-merge';
9
-
10
- /** Concatenate and dedupe Tailwind class names. */
11
- function cn(...inputs) {
12
- return twMerge(clsx(inputs));
13
- }
14
-
15
- /**
16
- * Recursive navigation item renderer (vertical context).
17
- *
18
- * Menerima item polymorphic dan delegasi ke template sesuai `type`.
19
- * Mega dirender sebagai group biasa saat muncul di konteks vertical.
20
- */
21
- class UiNavItemComponent {
22
- nav = inject(NavigationService);
23
- cn = cn;
24
- item = input.required(/* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []));
26
- level = input(0, /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []));
28
- /** Compact / icon-only rendering (sidebar `docked`). */
29
- compact = input(false, /* @ts-ignore */
30
- ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
31
- /** True when this branch sits inside a collapsable rail and can draw a connector back to it. */
32
- railConnector = input(false, /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "railConnector" }] : /* istanbul ignore next */ []));
34
- railConnectorDotClasses = 'pointer-events-none absolute -left-[11px] top-1/2 z-10 h-1 w-1 -translate-x-1/2 -translate-y-1/2 rounded-full bg-foreground/80';
35
- exactMatch = {
36
- exact: true,
37
- paths: 'exact',
38
- queryParams: 'exact',
39
- fragment: 'exact',
40
- matrixParams: 'exact',
41
- };
42
- inexactMatch = {
43
- paths: 'subset',
44
- queryParams: 'subset',
45
- fragment: 'ignored',
46
- matrixParams: 'ignored',
47
- };
48
- type = computed(() => this.item().type, /* @ts-ignore */
49
- ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
50
- groupItem = computed(() => this.item(), /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "groupItem" }] : /* istanbul ignore next */ []));
52
- collapsableItem = computed(() => this.item(), /* @ts-ignore */
53
- ...(ngDevMode ? [{ debugName: "collapsableItem" }] : /* istanbul ignore next */ []));
54
- megaItem = computed(() => this.item(), /* @ts-ignore */
55
- ...(ngDevMode ? [{ debugName: "megaItem" }] : /* istanbul ignore next */ []));
56
- asideItem = computed(() => this.item(), /* @ts-ignore */
57
- ...(ngDevMode ? [{ debugName: "asideItem" }] : /* istanbul ignore next */ []));
58
- basicItem = computed(() => this.item(), /* @ts-ignore */
59
- ...(ngDevMode ? [{ debugName: "basicItem" }] : /* istanbul ignore next */ []));
60
- headingId = computed(() => {
61
- const id = this.item().id ?? '';
62
- return `nav-group-${id}`;
63
- }, /* @ts-ignore */
64
- ...(ngDevMode ? [{ debugName: "headingId" }] : /* istanbul ignore next */ []));
65
- isGroupOpen() {
66
- const id = this.item().id;
67
- if (!id)
68
- return false;
69
- // auto-open when any descendant is active
70
- if (this.nav.isActive(id) && 'children' in this.item())
71
- return true;
72
- return this.nav.isGroupOpen(id);
73
- }
74
- isTrailActive() {
75
- return this.nav.isActive(this.item().id);
76
- }
77
- railConnectorClasses(active) {
78
- if (!active || !this.railConnector())
79
- return '';
80
- return ('relative after:pointer-events-none after:absolute after:-left-3 after:top-1/2 after:z-0 after:h-px ' +
81
- "after:w-3 after:-translate-y-1/2 after:rounded-full after:bg-primary/30 after:content-['']");
82
- }
83
- showRailConnector(active) {
84
- return active && this.railConnector();
85
- }
86
- toggleGroup() {
87
- const id = this.item().id;
88
- if (id)
89
- this.nav.toggleGroup(id);
90
- }
91
- runAction() {
92
- const item = this.item();
93
- if ('action' in item && typeof item.action === 'function') {
94
- item.action(item);
95
- }
96
- }
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: UiNavItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: UiNavItemComponent, isStandalone: true, selector: "ui-nav-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, railConnector: { classPropertyName: "railConnector", publicName: "railConnector", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
99
- @switch (type()) {
100
- @case ('divider') {
101
- <hr class="my-2 border-t border-border" role="separator" />
102
- }
103
- @case ('spacer') {
104
- <div class="flex-1"></div>
105
- }
106
- @case ('group') {
107
- <div role="group" [attr.aria-labelledby]="headingId()">
108
- @if (!compact()) {
109
- <div class="sticky top-0 z-10 p-3 text-muted-foreground backdrop-blur-3xl bg-transparent">
110
- <div [id]="headingId()" [class]="cn('ui-nav-heading text-muted-foreground', item().classes?.title)">
111
- {{ item().title }}
112
- </div>
113
- </div>
114
- }
115
- <div class="flex flex-col gap-0.5">
116
- @for (child of groupItem().children; track child.id) {
117
- <ui-nav-item
118
- [item]="child"
119
- [level]="level() + 1"
120
- [compact]="compact()"
121
- [railConnector]="railConnector()" />
122
- }
123
- </div>
124
- </div>
125
- }
126
- @case ('collapsable') {
127
- @let id = collapsableItem().id ?? '';
128
- @let open = isGroupOpen();
129
- @let active = isTrailActive();
130
- <button
131
- type="button"
132
- [class]="
133
- cn(
134
- 'ui-nav-text ui-nav-hover-surface group/ni flex w-full items-center gap-3 rounded p-3 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
135
- active && 'text-primary',
136
- railConnectorClasses(active),
137
- item().classes?.wrapper
138
- )
139
- "
140
- [attr.aria-expanded]="open"
141
- [attr.aria-controls]="id + '-panel'"
142
- [disabled]="collapsableItem().disabled || null"
143
- [matTooltip]="compact() ? (collapsableItem().title ?? '') : ''"
144
- matTooltipPosition="right"
145
- [matTooltipDisabled]="!compact()"
146
- (click)="toggleGroup()">
147
- @if (showRailConnector(active)) {
148
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
149
- }
150
- @if (collapsableItem().icon) {
151
- <span
152
- [class]="
153
- cn(
154
- 'inline-flex shrink-0 items-center justify-center',
155
- open && 'h-7 w-7 rounded-full border border-brand'
156
- )
157
- ">
158
- <ui-nav-icon [name]="collapsableItem().icon!" [size]="18" [class]="item().classes?.icon ?? ''" />
159
- </span>
160
- }
161
- @if (!compact()) {
162
- <span [class]="cn('flex-1 truncate text-left', item().classes?.title)">
163
- {{ collapsableItem().title }}
164
- </span>
165
- @if (collapsableItem().badge; as badge) {
166
- <span [class]="badge.classes ?? 'ui-nav-badge ml-auto'">{{ badge.title }}</span>
167
- }
168
- <ui-nav-icon
169
- [name]="'chevron_right'"
170
- [size]="18"
171
- [class]="cn('transition-transform duration-200', open && 'rotate-90')" />
172
- }
173
- </button>
174
- @if (!compact() && open) {
175
- <div
176
- [id]="id + '-panel'"
177
- role="region"
178
- class="relative ml-6.5 mt-0.5 flex flex-col gap-0.5 pl-3 before:absolute before:bottom-0 before:left-0 before:-top-3.5 before:w-px before:bg-primary/30 before:content-['']">
179
- @for (child of collapsableItem().children; track child.id) {
180
- <ui-nav-item [item]="child" [level]="level() + 1" [compact]="false" [railConnector]="true" />
181
- }
182
- </div>
183
- }
184
- }
185
- @case ('mega') {
186
- <!-- Mega direndahkan ke group saat berada di sidebar vertical. -->
187
- <div class="mt-4 py-3 first:mt-0" role="group">
188
- @if (!compact()) {
189
- <div class="ui-nav-heading sticky top-0 z-10 bg-background px-3 pb-1 text-muted-foreground">
190
- {{ item().title }}
191
- </div>
192
- }
193
- <div class="flex flex-col gap-0.5">
194
- @for (child of megaItem().children; track child.id) {
195
- <ui-nav-item
196
- [item]="child"
197
- [level]="level() + 1"
198
- [compact]="compact()"
199
- [railConnector]="railConnector()" />
200
- }
201
- </div>
202
- </div>
203
- }
204
- @case ('aside') {
205
- <a
206
- [class]="
207
- cn(
208
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary',
209
- railConnectorClasses(rla.isActive),
210
- item().classes?.wrapper
211
- )
212
- "
213
- routerLinkActive="text-primary"
214
- #rla="routerLinkActive"
215
- [attr.aria-current]="rla.isActive ? 'page' : null"
216
- [routerLink]="asideItem().link"
217
- [queryParams]="asideItem().queryParams"
218
- [fragment]="asideItem().fragment ?? undefined"
219
- [target]="asideItem().target ?? undefined"
220
- [matTooltip]="compact() ? (asideItem().title ?? '') : ''"
221
- matTooltipPosition="right"
222
- [matTooltipDisabled]="!compact()">
223
- @if (showRailConnector(rla.isActive)) {
224
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
225
- }
226
- @if (asideItem().icon) {
227
- <ui-nav-icon [name]="asideItem().icon!" [size]="18" />
228
- }
229
- @if (!compact()) {
230
- <span class="flex-1 truncate">{{ asideItem().title }}</span>
231
- }
232
- </a>
233
- }
234
- @default {
235
- <!-- basic -->
236
- @if (basicItem().link && !basicItem().externalLink) {
237
- <a
238
- [class]="
239
- cn(
240
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary aria-disabled:pointer-events-none aria-disabled:opacity-50',
241
- railConnectorClasses(rla.isActive),
242
- item().classes?.wrapper
243
- )
244
- "
245
- routerLinkActive="text-primary"
246
- #rla="routerLinkActive"
247
- [routerLinkActiveOptions]="
248
- basicItem().isActiveMatchOptions ?? (basicItem().exactMatch ? exactMatch : inexactMatch)
249
- "
250
- [attr.aria-current]="rla.isActive ? 'page' : null"
251
- [attr.aria-disabled]="basicItem().disabled || null"
252
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
253
- matTooltipPosition="right"
254
- [matTooltipDisabled]="!compact()"
255
- [routerLink]="basicItem().link"
256
- [queryParams]="basicItem().queryParams"
257
- [queryParamsHandling]="basicItem().queryParamsHandling ?? null"
258
- [fragment]="basicItem().fragment ?? undefined"
259
- [preserveFragment]="basicItem().preserveFragment ?? false"
260
- [target]="basicItem().target ?? undefined"
261
- (click)="runAction()">
262
- @if (showRailConnector(rla.isActive)) {
263
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
264
- }
265
- @if (basicItem().icon) {
266
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" [class]="item().classes?.icon ?? ''" />
267
- }
268
- @if (!compact()) {
269
- <span [class]="cn('flex-1 truncate', item().classes?.title)">{{ basicItem().title }}</span>
270
- @if (basicItem().badge; as badge) {
271
- <span [class]="badge.classes ?? 'ui-nav-badge ml-auto'">{{ badge.title }}</span>
272
- }
273
- }
274
- </a>
275
- } @else if (basicItem().link && basicItem().externalLink) {
276
- <a
277
- [class]="
278
- cn(
279
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
280
- item().classes?.wrapper
281
- )
282
- "
283
- [attr.href]="basicItem().link"
284
- [attr.target]="basicItem().target ?? '_blank'"
285
- rel="noopener noreferrer"
286
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
287
- matTooltipPosition="right"
288
- [matTooltipDisabled]="!compact()">
289
- @if (basicItem().icon) {
290
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" />
291
- }
292
- @if (!compact()) {
293
- <span class="flex-1 truncate">{{ basicItem().title }}</span>
294
- }
295
- </a>
296
- } @else {
297
- <button
298
- type="button"
299
- [class]="
300
- cn(
301
- 'ui-nav-text ui-nav-hover-surface flex w-full items-center gap-3 rounded px-3 py-2 text-left text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',
302
- item().classes?.wrapper
303
- )
304
- "
305
- [disabled]="basicItem().disabled || null"
306
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
307
- matTooltipPosition="right"
308
- [matTooltipDisabled]="!compact()"
309
- (click)="runAction()">
310
- @if (basicItem().icon) {
311
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" />
312
- }
313
- @if (!compact()) {
314
- <span class="flex-1 truncate">{{ basicItem().title }}</span>
315
- }
316
- </button>
317
- }
318
- }
319
- }
320
- `, isInline: true, dependencies: [{ kind: "component", type: UiNavItemComponent, selector: "ui-nav-item", inputs: ["item", "level", "compact", "railConnector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: UiNavIconComponent, selector: "ui-nav-icon", inputs: ["name", "class", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
321
- }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: UiNavItemComponent, decorators: [{
323
- type: Component,
324
- args: [{
325
- selector: 'ui-nav-item',
326
- changeDetection: ChangeDetectionStrategy.OnPush,
327
- imports: [RouterLink, RouterLinkActive, MatTooltip, UiNavIconComponent],
328
- template: `
329
- @switch (type()) {
330
- @case ('divider') {
331
- <hr class="my-2 border-t border-border" role="separator" />
332
- }
333
- @case ('spacer') {
334
- <div class="flex-1"></div>
335
- }
336
- @case ('group') {
337
- <div role="group" [attr.aria-labelledby]="headingId()">
338
- @if (!compact()) {
339
- <div class="sticky top-0 z-10 p-3 text-muted-foreground backdrop-blur-3xl bg-transparent">
340
- <div [id]="headingId()" [class]="cn('ui-nav-heading text-muted-foreground', item().classes?.title)">
341
- {{ item().title }}
342
- </div>
343
- </div>
344
- }
345
- <div class="flex flex-col gap-0.5">
346
- @for (child of groupItem().children; track child.id) {
347
- <ui-nav-item
348
- [item]="child"
349
- [level]="level() + 1"
350
- [compact]="compact()"
351
- [railConnector]="railConnector()" />
352
- }
353
- </div>
354
- </div>
355
- }
356
- @case ('collapsable') {
357
- @let id = collapsableItem().id ?? '';
358
- @let open = isGroupOpen();
359
- @let active = isTrailActive();
360
- <button
361
- type="button"
362
- [class]="
363
- cn(
364
- 'ui-nav-text ui-nav-hover-surface group/ni flex w-full items-center gap-3 rounded p-3 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
365
- active && 'text-primary',
366
- railConnectorClasses(active),
367
- item().classes?.wrapper
368
- )
369
- "
370
- [attr.aria-expanded]="open"
371
- [attr.aria-controls]="id + '-panel'"
372
- [disabled]="collapsableItem().disabled || null"
373
- [matTooltip]="compact() ? (collapsableItem().title ?? '') : ''"
374
- matTooltipPosition="right"
375
- [matTooltipDisabled]="!compact()"
376
- (click)="toggleGroup()">
377
- @if (showRailConnector(active)) {
378
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
379
- }
380
- @if (collapsableItem().icon) {
381
- <span
382
- [class]="
383
- cn(
384
- 'inline-flex shrink-0 items-center justify-center',
385
- open && 'h-7 w-7 rounded-full border border-brand'
386
- )
387
- ">
388
- <ui-nav-icon [name]="collapsableItem().icon!" [size]="18" [class]="item().classes?.icon ?? ''" />
389
- </span>
390
- }
391
- @if (!compact()) {
392
- <span [class]="cn('flex-1 truncate text-left', item().classes?.title)">
393
- {{ collapsableItem().title }}
394
- </span>
395
- @if (collapsableItem().badge; as badge) {
396
- <span [class]="badge.classes ?? 'ui-nav-badge ml-auto'">{{ badge.title }}</span>
397
- }
398
- <ui-nav-icon
399
- [name]="'chevron_right'"
400
- [size]="18"
401
- [class]="cn('transition-transform duration-200', open && 'rotate-90')" />
402
- }
403
- </button>
404
- @if (!compact() && open) {
405
- <div
406
- [id]="id + '-panel'"
407
- role="region"
408
- class="relative ml-6.5 mt-0.5 flex flex-col gap-0.5 pl-3 before:absolute before:bottom-0 before:left-0 before:-top-3.5 before:w-px before:bg-primary/30 before:content-['']">
409
- @for (child of collapsableItem().children; track child.id) {
410
- <ui-nav-item [item]="child" [level]="level() + 1" [compact]="false" [railConnector]="true" />
411
- }
412
- </div>
413
- }
414
- }
415
- @case ('mega') {
416
- <!-- Mega direndahkan ke group saat berada di sidebar vertical. -->
417
- <div class="mt-4 py-3 first:mt-0" role="group">
418
- @if (!compact()) {
419
- <div class="ui-nav-heading sticky top-0 z-10 bg-background px-3 pb-1 text-muted-foreground">
420
- {{ item().title }}
421
- </div>
422
- }
423
- <div class="flex flex-col gap-0.5">
424
- @for (child of megaItem().children; track child.id) {
425
- <ui-nav-item
426
- [item]="child"
427
- [level]="level() + 1"
428
- [compact]="compact()"
429
- [railConnector]="railConnector()" />
430
- }
431
- </div>
432
- </div>
433
- }
434
- @case ('aside') {
435
- <a
436
- [class]="
437
- cn(
438
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary',
439
- railConnectorClasses(rla.isActive),
440
- item().classes?.wrapper
441
- )
442
- "
443
- routerLinkActive="text-primary"
444
- #rla="routerLinkActive"
445
- [attr.aria-current]="rla.isActive ? 'page' : null"
446
- [routerLink]="asideItem().link"
447
- [queryParams]="asideItem().queryParams"
448
- [fragment]="asideItem().fragment ?? undefined"
449
- [target]="asideItem().target ?? undefined"
450
- [matTooltip]="compact() ? (asideItem().title ?? '') : ''"
451
- matTooltipPosition="right"
452
- [matTooltipDisabled]="!compact()">
453
- @if (showRailConnector(rla.isActive)) {
454
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
455
- }
456
- @if (asideItem().icon) {
457
- <ui-nav-icon [name]="asideItem().icon!" [size]="18" />
458
- }
459
- @if (!compact()) {
460
- <span class="flex-1 truncate">{{ asideItem().title }}</span>
461
- }
462
- </a>
463
- }
464
- @default {
465
- <!-- basic -->
466
- @if (basicItem().link && !basicItem().externalLink) {
467
- <a
468
- [class]="
469
- cn(
470
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary aria-disabled:pointer-events-none aria-disabled:opacity-50',
471
- railConnectorClasses(rla.isActive),
472
- item().classes?.wrapper
473
- )
474
- "
475
- routerLinkActive="text-primary"
476
- #rla="routerLinkActive"
477
- [routerLinkActiveOptions]="
478
- basicItem().isActiveMatchOptions ?? (basicItem().exactMatch ? exactMatch : inexactMatch)
479
- "
480
- [attr.aria-current]="rla.isActive ? 'page' : null"
481
- [attr.aria-disabled]="basicItem().disabled || null"
482
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
483
- matTooltipPosition="right"
484
- [matTooltipDisabled]="!compact()"
485
- [routerLink]="basicItem().link"
486
- [queryParams]="basicItem().queryParams"
487
- [queryParamsHandling]="basicItem().queryParamsHandling ?? null"
488
- [fragment]="basicItem().fragment ?? undefined"
489
- [preserveFragment]="basicItem().preserveFragment ?? false"
490
- [target]="basicItem().target ?? undefined"
491
- (click)="runAction()">
492
- @if (showRailConnector(rla.isActive)) {
493
- <span aria-hidden="true" data-nav-rail-dot [class]="railConnectorDotClasses"></span>
494
- }
495
- @if (basicItem().icon) {
496
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" [class]="item().classes?.icon ?? ''" />
497
- }
498
- @if (!compact()) {
499
- <span [class]="cn('flex-1 truncate', item().classes?.title)">{{ basicItem().title }}</span>
500
- @if (basicItem().badge; as badge) {
501
- <span [class]="badge.classes ?? 'ui-nav-badge ml-auto'">{{ badge.title }}</span>
502
- }
503
- }
504
- </a>
505
- } @else if (basicItem().link && basicItem().externalLink) {
506
- <a
507
- [class]="
508
- cn(
509
- 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
510
- item().classes?.wrapper
511
- )
512
- "
513
- [attr.href]="basicItem().link"
514
- [attr.target]="basicItem().target ?? '_blank'"
515
- rel="noopener noreferrer"
516
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
517
- matTooltipPosition="right"
518
- [matTooltipDisabled]="!compact()">
519
- @if (basicItem().icon) {
520
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" />
521
- }
522
- @if (!compact()) {
523
- <span class="flex-1 truncate">{{ basicItem().title }}</span>
524
- }
525
- </a>
526
- } @else {
527
- <button
528
- type="button"
529
- [class]="
530
- cn(
531
- 'ui-nav-text ui-nav-hover-surface flex w-full items-center gap-3 rounded px-3 py-2 text-left text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',
532
- item().classes?.wrapper
533
- )
534
- "
535
- [disabled]="basicItem().disabled || null"
536
- [matTooltip]="compact() ? (basicItem().title ?? '') : ''"
537
- matTooltipPosition="right"
538
- [matTooltipDisabled]="!compact()"
539
- (click)="runAction()">
540
- @if (basicItem().icon) {
541
- <ui-nav-icon [name]="basicItem().icon!" [size]="18" />
542
- }
543
- @if (!compact()) {
544
- <span class="flex-1 truncate">{{ basicItem().title }}</span>
545
- }
546
- </button>
547
- }
548
- }
549
- }
550
- `,
551
- }]
552
- }], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], railConnector: [{ type: i0.Input, args: [{ isSignal: true, alias: "railConnector", required: false }] }] } });
553
-
554
- /**
555
- * Generated bundle index. Do not edit.
556
- */
557
-
558
- export { UiNavItemComponent };
559
- //# sourceMappingURL=ojiepermana-angular-navigation-item.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-navigation-item.mjs","sources":["../../../projects/angular/navigation/item/cn.util.ts","../../../projects/angular/navigation/item/nav-item.component.ts","../../../projects/angular/navigation/item/ojiepermana-angular-navigation-item.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/** Concatenate and dedupe Tailwind class names. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { UiNavIconComponent } from '@ojiepermana/angular/navigation/icon';\nimport { NavigationService } from '@ojiepermana/angular/navigation/service';\nimport type {\n NavigationAsideItem,\n NavigationBasicItem,\n NavigationCollapsableItem,\n NavigationGroupItem,\n NavigationItem,\n NavigationMegaItem,\n} from '@ojiepermana/angular/navigation/types';\nimport { cn } from './cn.util';\n\n/**\n * Recursive navigation item renderer (vertical context).\n *\n * Menerima item polymorphic dan delegasi ke template sesuai `type`.\n * Mega dirender sebagai group biasa saat muncul di konteks vertical.\n */\n@Component({\n selector: 'ui-nav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, MatTooltip, UiNavIconComponent],\n template: `\n @switch (type()) {\n @case ('divider') {\n <hr class=\"my-2 border-t border-border\" role=\"separator\" />\n }\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n @case ('group') {\n <div role=\"group\" [attr.aria-labelledby]=\"headingId()\">\n @if (!compact()) {\n <div class=\"sticky top-0 z-10 p-3 text-muted-foreground backdrop-blur-3xl bg-transparent\">\n <div [id]=\"headingId()\" [class]=\"cn('ui-nav-heading text-muted-foreground', item().classes?.title)\">\n {{ item().title }}\n </div>\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of groupItem().children; track child.id) {\n <ui-nav-item\n [item]=\"child\"\n [level]=\"level() + 1\"\n [compact]=\"compact()\"\n [railConnector]=\"railConnector()\" />\n }\n </div>\n </div>\n }\n @case ('collapsable') {\n @let id = collapsableItem().id ?? '';\n @let open = isGroupOpen();\n @let active = isTrailActive();\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text ui-nav-hover-surface group/ni flex w-full items-center gap-3 rounded p-3 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n active && 'text-primary',\n railConnectorClasses(active),\n item().classes?.wrapper\n )\n \"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"id + '-panel'\"\n [disabled]=\"collapsableItem().disabled || null\"\n [matTooltip]=\"compact() ? (collapsableItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"toggleGroup()\">\n @if (showRailConnector(active)) {\n <span aria-hidden=\"true\" data-nav-rail-dot [class]=\"railConnectorDotClasses\"></span>\n }\n @if (collapsableItem().icon) {\n <span\n [class]=\"\n cn(\n 'inline-flex shrink-0 items-center justify-center',\n open && 'h-7 w-7 rounded-full border border-brand'\n )\n \">\n <ui-nav-icon [name]=\"collapsableItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n </span>\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate text-left', item().classes?.title)\">\n {{ collapsableItem().title }}\n </span>\n @if (collapsableItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n <ui-nav-icon\n [name]=\"'chevron_right'\"\n [size]=\"18\"\n [class]=\"cn('transition-transform duration-200', open && 'rotate-90')\" />\n }\n </button>\n @if (!compact() && open) {\n <div\n [id]=\"id + '-panel'\"\n role=\"region\"\n class=\"relative ml-6.5 mt-0.5 flex flex-col gap-0.5 pl-3 before:absolute before:bottom-0 before:left-0 before:-top-3.5 before:w-px before:bg-primary/30 before:content-['']\">\n @for (child of collapsableItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"false\" [railConnector]=\"true\" />\n }\n </div>\n }\n }\n @case ('mega') {\n <!-- Mega direndahkan ke group saat berada di sidebar vertical. -->\n <div class=\"mt-4 py-3 first:mt-0\" role=\"group\">\n @if (!compact()) {\n <div class=\"ui-nav-heading sticky top-0 z-10 bg-background px-3 pb-1 text-muted-foreground\">\n {{ item().title }}\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of megaItem().children; track child.id) {\n <ui-nav-item\n [item]=\"child\"\n [level]=\"level() + 1\"\n [compact]=\"compact()\"\n [railConnector]=\"railConnector()\" />\n }\n </div>\n </div>\n }\n @case ('aside') {\n <a\n [class]=\"\n cn(\n 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary',\n railConnectorClasses(rla.isActive),\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [routerLink]=\"asideItem().link\"\n [queryParams]=\"asideItem().queryParams\"\n [fragment]=\"asideItem().fragment ?? undefined\"\n [target]=\"asideItem().target ?? undefined\"\n [matTooltip]=\"compact() ? (asideItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (showRailConnector(rla.isActive)) {\n <span aria-hidden=\"true\" data-nav-rail-dot [class]=\"railConnectorDotClasses\"></span>\n }\n @if (asideItem().icon) {\n <ui-nav-icon [name]=\"asideItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ asideItem().title }}</span>\n }\n </a>\n }\n @default {\n <!-- basic -->\n @if (basicItem().link && !basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary aria-disabled:pointer-events-none aria-disabled:opacity-50',\n railConnectorClasses(rla.isActive),\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"\n basicItem().isActiveMatchOptions ?? (basicItem().exactMatch ? exactMatch : inexactMatch)\n \"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n [routerLink]=\"basicItem().link\"\n [queryParams]=\"basicItem().queryParams\"\n [queryParamsHandling]=\"basicItem().queryParamsHandling ?? null\"\n [fragment]=\"basicItem().fragment ?? undefined\"\n [preserveFragment]=\"basicItem().preserveFragment ?? false\"\n [target]=\"basicItem().target ?? undefined\"\n (click)=\"runAction()\">\n @if (showRailConnector(rla.isActive)) {\n <span aria-hidden=\"true\" data-nav-rail-dot [class]=\"railConnectorDotClasses\"></span>\n }\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate', item().classes?.title)\">{{ basicItem().title }}</span>\n @if (basicItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n }\n </a>\n } @else if (basicItem().link && basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text ui-nav-hover-surface flex items-center gap-3 rounded px-3 py-2 text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n item().classes?.wrapper\n )\n \"\n [attr.href]=\"basicItem().link\"\n [attr.target]=\"basicItem().target ?? '_blank'\"\n rel=\"noopener noreferrer\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text ui-nav-hover-surface flex w-full items-center gap-3 rounded px-3 py-2 text-left text-foreground/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n item().classes?.wrapper\n )\n \"\n [disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"runAction()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </button>\n }\n }\n }\n `,\n})\nexport class UiNavItemComponent {\n private readonly nav = inject(NavigationService);\n protected readonly cn = cn;\n\n readonly item = input.required<NavigationItem>();\n readonly level = input<number>(0);\n /** Compact / icon-only rendering (sidebar `docked`). */\n readonly compact = input<boolean>(false);\n /** True when this branch sits inside a collapsable rail and can draw a connector back to it. */\n readonly railConnector = input<boolean>(false);\n\n protected readonly railConnectorDotClasses =\n 'pointer-events-none absolute -left-[11px] top-1/2 z-10 h-1 w-1 -translate-x-1/2 -translate-y-1/2 rounded-full bg-foreground/80';\n\n protected readonly exactMatch = {\n exact: true,\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n } as const;\n protected readonly inexactMatch = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n } as const;\n\n protected readonly type = computed(() => this.item().type);\n\n protected readonly groupItem = computed(() => this.item() as NavigationGroupItem);\n protected readonly collapsableItem = computed(() => this.item() as NavigationCollapsableItem);\n protected readonly megaItem = computed(() => this.item() as NavigationMegaItem);\n protected readonly asideItem = computed(() => this.item() as NavigationAsideItem);\n protected readonly basicItem = computed(() => this.item() as NavigationBasicItem);\n\n protected readonly headingId = computed(() => {\n const id = this.item().id ?? '';\n return `nav-group-${id}`;\n });\n\n protected isGroupOpen(): boolean {\n const id = this.item().id;\n if (!id) return false;\n // auto-open when any descendant is active\n if (this.nav.isActive(id) && 'children' in this.item()) return true;\n return this.nav.isGroupOpen(id);\n }\n\n protected isTrailActive(): boolean {\n return this.nav.isActive(this.item().id);\n }\n\n protected railConnectorClasses(active: boolean): string {\n if (!active || !this.railConnector()) return '';\n\n return (\n 'relative after:pointer-events-none after:absolute after:-left-3 after:top-1/2 after:z-0 after:h-px ' +\n \"after:w-3 after:-translate-y-1/2 after:rounded-full after:bg-primary/30 after:content-['']\"\n );\n }\n\n protected showRailConnector(active: boolean): boolean {\n return active && this.railConnector();\n }\n\n protected toggleGroup(): void {\n const id = this.item().id;\n if (id) this.nav.toggleGroup(id);\n }\n\n protected runAction(): void {\n const item = this.item();\n if ('action' in item && typeof item.action === 'function') {\n item.action(item);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}