@ojiepermana/angular 21.3.0 → 21.3.4

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 (442) hide show
  1. package/README.md +76 -12
  2. package/component/accordion/package.json +4 -0
  3. package/component/alert/package.json +4 -0
  4. package/component/alert-dialog/package.json +4 -0
  5. package/component/aspect-ratio/package.json +4 -0
  6. package/component/avatar/package.json +4 -0
  7. package/component/badge/package.json +4 -0
  8. package/component/breadcrumb/package.json +4 -0
  9. package/component/button/package.json +4 -0
  10. package/component/button-group/package.json +4 -0
  11. package/component/calendar/package.json +4 -0
  12. package/component/card/package.json +4 -0
  13. package/component/carousel/package.json +4 -0
  14. package/component/chart/area/package.json +4 -0
  15. package/component/chart/bar/package.json +4 -0
  16. package/component/chart/line/package.json +4 -0
  17. package/component/chart/package.json +4 -0
  18. package/component/chart/pie/package.json +4 -0
  19. package/component/chart/radar/package.json +4 -0
  20. package/component/chart/radial/package.json +4 -0
  21. package/component/chart/scatter/package.json +4 -0
  22. package/component/checkbox/package.json +4 -0
  23. package/component/collapsible/package.json +4 -0
  24. package/component/combobox/package.json +4 -0
  25. package/component/command/package.json +4 -0
  26. package/component/context-menu/package.json +4 -0
  27. package/component/date-picker/package.json +4 -0
  28. package/component/dialog/package.json +4 -0
  29. package/component/drawer/package.json +4 -0
  30. package/component/dropdown-menu/package.json +4 -0
  31. package/component/form/package.json +4 -0
  32. package/component/input/package.json +4 -0
  33. package/component/input-group/package.json +4 -0
  34. package/component/item/package.json +4 -0
  35. package/component/label/package.json +4 -0
  36. package/component/pagination/package.json +4 -0
  37. package/component/popover/package.json +4 -0
  38. package/component/progress/package.json +4 -0
  39. package/component/radio/package.json +4 -0
  40. package/component/scroll-area/package.json +4 -0
  41. package/component/select/package.json +4 -0
  42. package/component/separator/package.json +4 -0
  43. package/component/sheet/package.json +4 -0
  44. package/component/skeleton/package.json +4 -0
  45. package/component/slider/package.json +4 -0
  46. package/component/switch/package.json +4 -0
  47. package/component/table/package.json +4 -0
  48. package/component/tabs/package.json +4 -0
  49. package/component/textarea/package.json +4 -0
  50. package/component/toast/package.json +4 -0
  51. package/component/tooltip/package.json +4 -0
  52. package/component/utils/package.json +4 -0
  53. package/fesm2022/{ojiepermana-angular-ui-component-accordion.mjs → ojiepermana-angular-component-accordion.mjs} +1 -1
  54. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +1 -0
  55. package/fesm2022/{ojiepermana-angular-ui-component-alert-dialog.mjs → ojiepermana-angular-component-alert-dialog.mjs} +1 -1
  56. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +1 -0
  57. package/fesm2022/{ojiepermana-angular-ui-component-alert.mjs → ojiepermana-angular-component-alert.mjs} +1 -1
  58. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +1 -0
  59. package/fesm2022/{ojiepermana-angular-ui-component-aspect-ratio.mjs → ojiepermana-angular-component-aspect-ratio.mjs} +1 -1
  60. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +1 -0
  61. package/fesm2022/{ojiepermana-angular-ui-component-avatar.mjs → ojiepermana-angular-component-avatar.mjs} +1 -1
  62. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +1 -0
  63. package/fesm2022/{ojiepermana-angular-ui-component-badge.mjs → ojiepermana-angular-component-badge.mjs} +1 -1
  64. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +1 -0
  65. package/fesm2022/{ojiepermana-angular-ui-component-breadcrumb.mjs → ojiepermana-angular-component-breadcrumb.mjs} +1 -1
  66. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +1 -0
  67. package/fesm2022/{ojiepermana-angular-ui-component-button-group.mjs → ojiepermana-angular-component-button-group.mjs} +1 -1
  68. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +1 -0
  69. package/fesm2022/{ojiepermana-angular-ui-component-button.mjs → ojiepermana-angular-component-button.mjs} +1 -1
  70. package/fesm2022/ojiepermana-angular-component-button.mjs.map +1 -0
  71. package/fesm2022/{ojiepermana-angular-ui-component-calendar.mjs → ojiepermana-angular-component-calendar.mjs} +1 -1
  72. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +1 -0
  73. package/fesm2022/{ojiepermana-angular-ui-component-card.mjs → ojiepermana-angular-component-card.mjs} +1 -1
  74. package/fesm2022/ojiepermana-angular-component-card.mjs.map +1 -0
  75. package/fesm2022/{ojiepermana-angular-ui-component-carousel.mjs → ojiepermana-angular-component-carousel.mjs} +1 -1
  76. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +1 -0
  77. package/fesm2022/{ojiepermana-angular-ui-component-chart-area.mjs → ojiepermana-angular-component-chart-area.mjs} +1 -1
  78. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +1 -0
  79. package/fesm2022/{ojiepermana-angular-ui-component-chart-bar.mjs → ojiepermana-angular-component-chart-bar.mjs} +1 -1
  80. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +1 -0
  81. package/fesm2022/{ojiepermana-angular-ui-component-chart-line.mjs → ojiepermana-angular-component-chart-line.mjs} +1 -1
  82. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +1 -0
  83. package/fesm2022/{ojiepermana-angular-ui-component-chart-pie.mjs → ojiepermana-angular-component-chart-pie.mjs} +1 -1
  84. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +1 -0
  85. package/fesm2022/{ojiepermana-angular-ui-component-chart-radar.mjs → ojiepermana-angular-component-chart-radar.mjs} +1 -1
  86. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +1 -0
  87. package/fesm2022/{ojiepermana-angular-ui-component-chart-radial.mjs → ojiepermana-angular-component-chart-radial.mjs} +1 -1
  88. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +1 -0
  89. package/fesm2022/{ojiepermana-angular-ui-component-chart-scatter.mjs → ojiepermana-angular-component-chart-scatter.mjs} +1 -1
  90. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +1 -0
  91. package/fesm2022/{ojiepermana-angular-ui-component-chart.mjs → ojiepermana-angular-component-chart.mjs} +1 -1
  92. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +1 -0
  93. package/fesm2022/{ojiepermana-angular-ui-component-checkbox.mjs → ojiepermana-angular-component-checkbox.mjs} +1 -1
  94. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +1 -0
  95. package/fesm2022/{ojiepermana-angular-ui-component-collapsible.mjs → ojiepermana-angular-component-collapsible.mjs} +1 -1
  96. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +1 -0
  97. package/fesm2022/{ojiepermana-angular-ui-component-combobox.mjs → ojiepermana-angular-component-combobox.mjs} +1 -1
  98. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +1 -0
  99. package/fesm2022/{ojiepermana-angular-ui-component-command.mjs → ojiepermana-angular-component-command.mjs} +1 -1
  100. package/fesm2022/ojiepermana-angular-component-command.mjs.map +1 -0
  101. package/fesm2022/{ojiepermana-angular-ui-component-context-menu.mjs → ojiepermana-angular-component-context-menu.mjs} +1 -1
  102. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +1 -0
  103. package/fesm2022/{ojiepermana-angular-ui-component-date-picker.mjs → ojiepermana-angular-component-date-picker.mjs} +1 -1
  104. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +1 -0
  105. package/fesm2022/{ojiepermana-angular-ui-component-dialog.mjs → ojiepermana-angular-component-dialog.mjs} +1 -1
  106. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +1 -0
  107. package/fesm2022/{ojiepermana-angular-ui-component-drawer.mjs → ojiepermana-angular-component-drawer.mjs} +1 -1
  108. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +1 -0
  109. package/fesm2022/{ojiepermana-angular-ui-component-dropdown-menu.mjs → ojiepermana-angular-component-dropdown-menu.mjs} +1 -1
  110. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +1 -0
  111. package/fesm2022/{ojiepermana-angular-ui-component-form.mjs → ojiepermana-angular-component-form.mjs} +1 -1
  112. package/fesm2022/ojiepermana-angular-component-form.mjs.map +1 -0
  113. package/fesm2022/{ojiepermana-angular-ui-component-input-group.mjs → ojiepermana-angular-component-input-group.mjs} +1 -1
  114. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +1 -0
  115. package/fesm2022/{ojiepermana-angular-ui-component-input.mjs → ojiepermana-angular-component-input.mjs} +1 -1
  116. package/fesm2022/ojiepermana-angular-component-input.mjs.map +1 -0
  117. package/fesm2022/{ojiepermana-angular-ui-component-item.mjs → ojiepermana-angular-component-item.mjs} +1 -1
  118. package/fesm2022/ojiepermana-angular-component-item.mjs.map +1 -0
  119. package/fesm2022/{ojiepermana-angular-ui-component-label.mjs → ojiepermana-angular-component-label.mjs} +1 -1
  120. package/fesm2022/ojiepermana-angular-component-label.mjs.map +1 -0
  121. package/fesm2022/{ojiepermana-angular-ui-component-pagination.mjs → ojiepermana-angular-component-pagination.mjs} +1 -1
  122. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +1 -0
  123. package/fesm2022/{ojiepermana-angular-ui-component-popover.mjs → ojiepermana-angular-component-popover.mjs} +1 -1
  124. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +1 -0
  125. package/fesm2022/{ojiepermana-angular-ui-component-progress.mjs → ojiepermana-angular-component-progress.mjs} +1 -1
  126. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +1 -0
  127. package/fesm2022/{ojiepermana-angular-ui-component-radio.mjs → ojiepermana-angular-component-radio.mjs} +1 -1
  128. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +1 -0
  129. package/fesm2022/{ojiepermana-angular-ui-component-scroll-area.mjs → ojiepermana-angular-component-scroll-area.mjs} +1 -1
  130. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +1 -0
  131. package/fesm2022/{ojiepermana-angular-ui-component-select.mjs → ojiepermana-angular-component-select.mjs} +1 -1
  132. package/fesm2022/ojiepermana-angular-component-select.mjs.map +1 -0
  133. package/fesm2022/{ojiepermana-angular-ui-component-separator.mjs → ojiepermana-angular-component-separator.mjs} +1 -1
  134. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +1 -0
  135. package/fesm2022/{ojiepermana-angular-ui-component-sheet.mjs → ojiepermana-angular-component-sheet.mjs} +1 -1
  136. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +1 -0
  137. package/fesm2022/{ojiepermana-angular-ui-component-skeleton.mjs → ojiepermana-angular-component-skeleton.mjs} +1 -1
  138. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +1 -0
  139. package/fesm2022/{ojiepermana-angular-ui-component-slider.mjs → ojiepermana-angular-component-slider.mjs} +1 -1
  140. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +1 -0
  141. package/fesm2022/{ojiepermana-angular-ui-component-switch.mjs → ojiepermana-angular-component-switch.mjs} +1 -1
  142. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +1 -0
  143. package/fesm2022/{ojiepermana-angular-ui-component-table.mjs → ojiepermana-angular-component-table.mjs} +1 -1
  144. package/fesm2022/ojiepermana-angular-component-table.mjs.map +1 -0
  145. package/fesm2022/{ojiepermana-angular-ui-component-tabs.mjs → ojiepermana-angular-component-tabs.mjs} +1 -1
  146. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +1 -0
  147. package/fesm2022/{ojiepermana-angular-ui-component-textarea.mjs → ojiepermana-angular-component-textarea.mjs} +1 -1
  148. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +1 -0
  149. package/fesm2022/{ojiepermana-angular-ui-component-toast.mjs → ojiepermana-angular-component-toast.mjs} +1 -1
  150. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +1 -0
  151. package/fesm2022/{ojiepermana-angular-ui-component-tooltip.mjs → ojiepermana-angular-component-tooltip.mjs} +1 -1
  152. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +1 -0
  153. package/fesm2022/{ojiepermana-angular-ui-component-utils.mjs → ojiepermana-angular-component-utils.mjs} +1 -1
  154. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +1 -0
  155. package/fesm2022/ojiepermana-angular-generator-api.mjs +2 -1
  156. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +1 -1
  157. package/fesm2022/{ojiepermana-angular-layout-theme.mjs → ojiepermana-angular-layout-component.mjs} +1 -1
  158. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +1 -0
  159. package/fesm2022/ojiepermana-angular-layout-empty.mjs +49 -0
  160. package/fesm2022/ojiepermana-angular-layout-empty.mjs.map +1 -0
  161. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs +119 -0
  162. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs.map +1 -0
  163. package/fesm2022/ojiepermana-angular-layout-provider.mjs +21 -0
  164. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +1 -0
  165. package/fesm2022/ojiepermana-angular-layout-services.mjs +114 -0
  166. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +1 -0
  167. package/fesm2022/ojiepermana-angular-layout-shell.mjs +48 -0
  168. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +1 -0
  169. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +27 -0
  170. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +1 -0
  171. package/fesm2022/ojiepermana-angular-layout-token.mjs +33 -0
  172. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +1 -0
  173. package/fesm2022/ojiepermana-angular-layout-vertical.mjs +113 -0
  174. package/fesm2022/ojiepermana-angular-layout-vertical.mjs.map +1 -0
  175. package/fesm2022/ojiepermana-angular-layout.mjs +140 -137
  176. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  177. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +334 -0
  178. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +1 -0
  179. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +1 -1
  180. package/fesm2022/ojiepermana-angular-navigation-item.mjs +548 -0
  181. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +1 -0
  182. package/fesm2022/ojiepermana-angular-navigation-service.mjs +204 -0
  183. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +1 -0
  184. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +373 -0
  185. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +1 -0
  186. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +433 -0
  187. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +1 -0
  188. package/fesm2022/ojiepermana-angular-navigation-types.mjs +4 -0
  189. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +1 -0
  190. package/fesm2022/ojiepermana-angular-theme-provider.mjs +35 -0
  191. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +1 -0
  192. package/fesm2022/ojiepermana-angular-theme-services.mjs +286 -0
  193. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +1 -0
  194. package/fesm2022/ojiepermana-angular-theme-token.mjs +56 -0
  195. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +1 -0
  196. package/fesm2022/ojiepermana-angular-theme.mjs +31 -56
  197. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  198. package/fesm2022/ojiepermana-angular.mjs +3 -4
  199. package/fesm2022/ojiepermana-angular.mjs.map +1 -1
  200. package/generator/api/README.md +25 -19
  201. package/generator/api/bin/schematics/init/index.js +4 -2
  202. package/generator/api/bin/src/config/schema.js +2 -1
  203. package/generator/api/bin/src/emit/navigation.js +1 -1
  204. package/generator/api/bin/src/layout/per-domain.js +7 -3
  205. package/generator/api/bin/src/writer/index.js +45 -3
  206. package/generator/api/sdk.config.example.json +4 -2
  207. package/layout/component/package.json +4 -0
  208. package/layout/empty/package.json +4 -0
  209. package/layout/horizontal/package.json +4 -0
  210. package/layout/provider/package.json +4 -0
  211. package/layout/services/package.json +4 -0
  212. package/layout/shell/package.json +4 -0
  213. package/layout/token/directive/package.json +4 -0
  214. package/layout/token/package.json +4 -0
  215. package/layout/vertical/package.json +4 -0
  216. package/navigation/demo-data/package.json +4 -0
  217. package/navigation/icon/package.json +4 -0
  218. package/navigation/item/package.json +4 -0
  219. package/navigation/service/package.json +4 -0
  220. package/navigation/sidebar/package.json +4 -0
  221. package/navigation/topbar/package.json +4 -0
  222. package/navigation/types/package.json +4 -0
  223. package/package.json +196 -128
  224. package/theme/README.md +67 -0
  225. package/theme/provider/package.json +4 -0
  226. package/theme/services/package.json +4 -0
  227. package/theme/styles/index.css +12 -7
  228. package/theme/token/package.json +4 -0
  229. package/types/{ojiepermana-angular-ui-component-chart.d.ts → ojiepermana-angular-component-chart.d.ts} +15 -15
  230. package/types/ojiepermana-angular-generator-api.d.ts +2 -1
  231. package/types/ojiepermana-angular-layout-empty.d.ts +22 -0
  232. package/types/ojiepermana-angular-layout-horizontal.d.ts +36 -0
  233. package/types/ojiepermana-angular-layout-provider.d.ts +6 -0
  234. package/types/ojiepermana-angular-layout-services.d.ts +25 -0
  235. package/types/ojiepermana-angular-layout-shell.d.ts +8 -0
  236. package/types/ojiepermana-angular-layout-token-directive.d.ts +13 -0
  237. package/types/ojiepermana-angular-layout-token.d.ts +36 -0
  238. package/types/ojiepermana-angular-layout-vertical.d.ts +38 -0
  239. package/types/ojiepermana-angular-layout.d.ts +26 -25
  240. package/types/ojiepermana-angular-navigation-demo-data.d.ts +5 -0
  241. package/types/ojiepermana-angular-navigation-item.d.ts +54 -0
  242. package/types/ojiepermana-angular-navigation-service.d.ts +77 -0
  243. package/types/ojiepermana-angular-navigation-sidebar.d.ts +75 -0
  244. package/types/ojiepermana-angular-navigation-topbar.d.ts +54 -0
  245. package/types/ojiepermana-angular-navigation-types.d.ts +129 -0
  246. package/types/ojiepermana-angular-theme-provider.d.ts +11 -0
  247. package/types/ojiepermana-angular-theme-services.d.ts +55 -0
  248. package/types/ojiepermana-angular-theme-token.d.ts +57 -0
  249. package/types/ojiepermana-angular-theme.d.ts +11 -66
  250. package/fesm2022/ojiepermana-angular-layout-theme.mjs.map +0 -1
  251. package/fesm2022/ojiepermana-angular-navigation.mjs +0 -2317
  252. package/fesm2022/ojiepermana-angular-navigation.mjs.map +0 -1
  253. package/fesm2022/ojiepermana-angular-ui-component-accordion.mjs.map +0 -1
  254. package/fesm2022/ojiepermana-angular-ui-component-alert-dialog.mjs.map +0 -1
  255. package/fesm2022/ojiepermana-angular-ui-component-alert.mjs.map +0 -1
  256. package/fesm2022/ojiepermana-angular-ui-component-aspect-ratio.mjs.map +0 -1
  257. package/fesm2022/ojiepermana-angular-ui-component-avatar.mjs.map +0 -1
  258. package/fesm2022/ojiepermana-angular-ui-component-badge.mjs.map +0 -1
  259. package/fesm2022/ojiepermana-angular-ui-component-breadcrumb.mjs.map +0 -1
  260. package/fesm2022/ojiepermana-angular-ui-component-button-group.mjs.map +0 -1
  261. package/fesm2022/ojiepermana-angular-ui-component-button.mjs.map +0 -1
  262. package/fesm2022/ojiepermana-angular-ui-component-calendar.mjs.map +0 -1
  263. package/fesm2022/ojiepermana-angular-ui-component-card.mjs.map +0 -1
  264. package/fesm2022/ojiepermana-angular-ui-component-carousel.mjs.map +0 -1
  265. package/fesm2022/ojiepermana-angular-ui-component-chart-area.mjs.map +0 -1
  266. package/fesm2022/ojiepermana-angular-ui-component-chart-bar.mjs.map +0 -1
  267. package/fesm2022/ojiepermana-angular-ui-component-chart-line.mjs.map +0 -1
  268. package/fesm2022/ojiepermana-angular-ui-component-chart-pie.mjs.map +0 -1
  269. package/fesm2022/ojiepermana-angular-ui-component-chart-radar.mjs.map +0 -1
  270. package/fesm2022/ojiepermana-angular-ui-component-chart-radial.mjs.map +0 -1
  271. package/fesm2022/ojiepermana-angular-ui-component-chart-scatter.mjs.map +0 -1
  272. package/fesm2022/ojiepermana-angular-ui-component-chart.mjs.map +0 -1
  273. package/fesm2022/ojiepermana-angular-ui-component-checkbox.mjs.map +0 -1
  274. package/fesm2022/ojiepermana-angular-ui-component-collapsible.mjs.map +0 -1
  275. package/fesm2022/ojiepermana-angular-ui-component-combobox.mjs.map +0 -1
  276. package/fesm2022/ojiepermana-angular-ui-component-command.mjs.map +0 -1
  277. package/fesm2022/ojiepermana-angular-ui-component-context-menu.mjs.map +0 -1
  278. package/fesm2022/ojiepermana-angular-ui-component-date-picker.mjs.map +0 -1
  279. package/fesm2022/ojiepermana-angular-ui-component-dialog.mjs.map +0 -1
  280. package/fesm2022/ojiepermana-angular-ui-component-drawer.mjs.map +0 -1
  281. package/fesm2022/ojiepermana-angular-ui-component-dropdown-menu.mjs.map +0 -1
  282. package/fesm2022/ojiepermana-angular-ui-component-form.mjs.map +0 -1
  283. package/fesm2022/ojiepermana-angular-ui-component-input-group.mjs.map +0 -1
  284. package/fesm2022/ojiepermana-angular-ui-component-input.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-ui-component-item.mjs.map +0 -1
  286. package/fesm2022/ojiepermana-angular-ui-component-label.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-ui-component-pagination.mjs.map +0 -1
  288. package/fesm2022/ojiepermana-angular-ui-component-popover.mjs.map +0 -1
  289. package/fesm2022/ojiepermana-angular-ui-component-progress.mjs.map +0 -1
  290. package/fesm2022/ojiepermana-angular-ui-component-radio.mjs.map +0 -1
  291. package/fesm2022/ojiepermana-angular-ui-component-scroll-area.mjs.map +0 -1
  292. package/fesm2022/ojiepermana-angular-ui-component-select.mjs.map +0 -1
  293. package/fesm2022/ojiepermana-angular-ui-component-separator.mjs.map +0 -1
  294. package/fesm2022/ojiepermana-angular-ui-component-sheet.mjs.map +0 -1
  295. package/fesm2022/ojiepermana-angular-ui-component-skeleton.mjs.map +0 -1
  296. package/fesm2022/ojiepermana-angular-ui-component-slider.mjs.map +0 -1
  297. package/fesm2022/ojiepermana-angular-ui-component-switch.mjs.map +0 -1
  298. package/fesm2022/ojiepermana-angular-ui-component-table.mjs.map +0 -1
  299. package/fesm2022/ojiepermana-angular-ui-component-tabs.mjs.map +0 -1
  300. package/fesm2022/ojiepermana-angular-ui-component-textarea.mjs.map +0 -1
  301. package/fesm2022/ojiepermana-angular-ui-component-toast.mjs.map +0 -1
  302. package/fesm2022/ojiepermana-angular-ui-component-tooltip.mjs.map +0 -1
  303. package/fesm2022/ojiepermana-angular-ui-component-utils.mjs.map +0 -1
  304. package/layout/theme/package.json +0 -4
  305. package/navigation/package.json +0 -4
  306. package/navigation-icon/package.json +0 -4
  307. package/types/ojiepermana-angular-navigation.d.ts +0 -375
  308. package/ui/component/accordion/package.json +0 -4
  309. package/ui/component/alert/package.json +0 -4
  310. package/ui/component/alert-dialog/package.json +0 -4
  311. package/ui/component/aspect-ratio/package.json +0 -4
  312. package/ui/component/avatar/package.json +0 -4
  313. package/ui/component/badge/package.json +0 -4
  314. package/ui/component/breadcrumb/package.json +0 -4
  315. package/ui/component/button/package.json +0 -4
  316. package/ui/component/button-group/package.json +0 -4
  317. package/ui/component/calendar/package.json +0 -4
  318. package/ui/component/card/package.json +0 -4
  319. package/ui/component/carousel/package.json +0 -4
  320. package/ui/component/chart/area/package.json +0 -4
  321. package/ui/component/chart/bar/package.json +0 -4
  322. package/ui/component/chart/line/package.json +0 -4
  323. package/ui/component/chart/package.json +0 -4
  324. package/ui/component/chart/pie/package.json +0 -4
  325. package/ui/component/chart/radar/package.json +0 -4
  326. package/ui/component/chart/radial/package.json +0 -4
  327. package/ui/component/chart/scatter/package.json +0 -4
  328. package/ui/component/checkbox/package.json +0 -4
  329. package/ui/component/collapsible/package.json +0 -4
  330. package/ui/component/combobox/package.json +0 -4
  331. package/ui/component/command/package.json +0 -4
  332. package/ui/component/context-menu/package.json +0 -4
  333. package/ui/component/date-picker/package.json +0 -4
  334. package/ui/component/dialog/package.json +0 -4
  335. package/ui/component/drawer/package.json +0 -4
  336. package/ui/component/dropdown-menu/package.json +0 -4
  337. package/ui/component/form/package.json +0 -4
  338. package/ui/component/input/package.json +0 -4
  339. package/ui/component/input-group/package.json +0 -4
  340. package/ui/component/item/package.json +0 -4
  341. package/ui/component/label/package.json +0 -4
  342. package/ui/component/pagination/package.json +0 -4
  343. package/ui/component/popover/package.json +0 -4
  344. package/ui/component/progress/package.json +0 -4
  345. package/ui/component/radio/package.json +0 -4
  346. package/ui/component/scroll-area/package.json +0 -4
  347. package/ui/component/select/package.json +0 -4
  348. package/ui/component/separator/package.json +0 -4
  349. package/ui/component/sheet/package.json +0 -4
  350. package/ui/component/skeleton/package.json +0 -4
  351. package/ui/component/slider/package.json +0 -4
  352. package/ui/component/switch/package.json +0 -4
  353. package/ui/component/table/package.json +0 -4
  354. package/ui/component/tabs/package.json +0 -4
  355. package/ui/component/textarea/package.json +0 -4
  356. package/ui/component/toast/package.json +0 -4
  357. package/ui/component/tooltip/package.json +0 -4
  358. package/ui/component/utils/package.json +0 -4
  359. /package/{ui/component → component}/chart/README.md +0 -0
  360. /package/theme/styles/{themes/library/_components.css → foundation/components.css} +0 -0
  361. /package/theme/styles/{themes/library/_layers.css → foundation/layers.css} +0 -0
  362. /package/theme/styles/{themes/library/_tokens.css → foundation/tokens.css} +0 -0
  363. /package/theme/styles/{themes/library/_material-overrides.css → integrations/material.css} +0 -0
  364. /package/theme/styles/{themes → integrations}/tailwind.css +0 -0
  365. /package/theme/styles/{themes/library → variants}/color/amber.css +0 -0
  366. /package/theme/styles/{themes/library → variants}/color/base.css +0 -0
  367. /package/theme/styles/{themes/library → variants}/color/blue.css +0 -0
  368. /package/theme/styles/{themes/library → variants}/color/cyan.css +0 -0
  369. /package/theme/styles/{themes/library → variants}/color/emerald.css +0 -0
  370. /package/theme/styles/{themes/library → variants}/color/fuchsia.css +0 -0
  371. /package/theme/styles/{themes/library → variants}/color/green.css +0 -0
  372. /package/theme/styles/{themes/library → variants}/color/index.css +0 -0
  373. /package/theme/styles/{themes/library → variants}/color/indigo.css +0 -0
  374. /package/theme/styles/{themes/library → variants}/color/lime.css +0 -0
  375. /package/theme/styles/{themes/library → variants}/color/orange.css +0 -0
  376. /package/theme/styles/{themes/library → variants}/color/pink.css +0 -0
  377. /package/theme/styles/{themes/library → variants}/color/purple.css +0 -0
  378. /package/theme/styles/{themes/library → variants}/color/red.css +0 -0
  379. /package/theme/styles/{themes/library → variants}/color/rose.css +0 -0
  380. /package/theme/styles/{themes/library → variants}/color/sky.css +0 -0
  381. /package/theme/styles/{themes/library → variants}/color/teal.css +0 -0
  382. /package/theme/styles/{themes/library → variants}/color/violet.css +0 -0
  383. /package/theme/styles/{themes/library → variants}/color/yellow.css +0 -0
  384. /package/theme/styles/{themes → variants}/mode/dark.css +0 -0
  385. /package/theme/styles/{themes → variants}/mode/index.css +0 -0
  386. /package/theme/styles/{themes → variants}/mode/light.css +0 -0
  387. /package/theme/styles/{themes/library → variants}/style/brutal.css +0 -0
  388. /package/theme/styles/{themes/library → variants}/style/default.css +0 -0
  389. /package/theme/styles/{themes/library → variants}/style/index.css +0 -0
  390. /package/theme/styles/{themes/library → variants}/style/sharp.css +0 -0
  391. /package/theme/styles/{themes/library → variants}/style/soft.css +0 -0
  392. /package/types/{ojiepermana-angular-ui-component-accordion.d.ts → ojiepermana-angular-component-accordion.d.ts} +0 -0
  393. /package/types/{ojiepermana-angular-ui-component-alert-dialog.d.ts → ojiepermana-angular-component-alert-dialog.d.ts} +0 -0
  394. /package/types/{ojiepermana-angular-ui-component-alert.d.ts → ojiepermana-angular-component-alert.d.ts} +0 -0
  395. /package/types/{ojiepermana-angular-ui-component-aspect-ratio.d.ts → ojiepermana-angular-component-aspect-ratio.d.ts} +0 -0
  396. /package/types/{ojiepermana-angular-ui-component-avatar.d.ts → ojiepermana-angular-component-avatar.d.ts} +0 -0
  397. /package/types/{ojiepermana-angular-ui-component-badge.d.ts → ojiepermana-angular-component-badge.d.ts} +0 -0
  398. /package/types/{ojiepermana-angular-ui-component-breadcrumb.d.ts → ojiepermana-angular-component-breadcrumb.d.ts} +0 -0
  399. /package/types/{ojiepermana-angular-ui-component-button-group.d.ts → ojiepermana-angular-component-button-group.d.ts} +0 -0
  400. /package/types/{ojiepermana-angular-ui-component-button.d.ts → ojiepermana-angular-component-button.d.ts} +0 -0
  401. /package/types/{ojiepermana-angular-ui-component-calendar.d.ts → ojiepermana-angular-component-calendar.d.ts} +0 -0
  402. /package/types/{ojiepermana-angular-ui-component-card.d.ts → ojiepermana-angular-component-card.d.ts} +0 -0
  403. /package/types/{ojiepermana-angular-ui-component-carousel.d.ts → ojiepermana-angular-component-carousel.d.ts} +0 -0
  404. /package/types/{ojiepermana-angular-ui-component-chart-area.d.ts → ojiepermana-angular-component-chart-area.d.ts} +0 -0
  405. /package/types/{ojiepermana-angular-ui-component-chart-bar.d.ts → ojiepermana-angular-component-chart-bar.d.ts} +0 -0
  406. /package/types/{ojiepermana-angular-ui-component-chart-line.d.ts → ojiepermana-angular-component-chart-line.d.ts} +0 -0
  407. /package/types/{ojiepermana-angular-ui-component-chart-pie.d.ts → ojiepermana-angular-component-chart-pie.d.ts} +0 -0
  408. /package/types/{ojiepermana-angular-ui-component-chart-radar.d.ts → ojiepermana-angular-component-chart-radar.d.ts} +0 -0
  409. /package/types/{ojiepermana-angular-ui-component-chart-radial.d.ts → ojiepermana-angular-component-chart-radial.d.ts} +0 -0
  410. /package/types/{ojiepermana-angular-ui-component-chart-scatter.d.ts → ojiepermana-angular-component-chart-scatter.d.ts} +0 -0
  411. /package/types/{ojiepermana-angular-ui-component-checkbox.d.ts → ojiepermana-angular-component-checkbox.d.ts} +0 -0
  412. /package/types/{ojiepermana-angular-ui-component-collapsible.d.ts → ojiepermana-angular-component-collapsible.d.ts} +0 -0
  413. /package/types/{ojiepermana-angular-ui-component-combobox.d.ts → ojiepermana-angular-component-combobox.d.ts} +0 -0
  414. /package/types/{ojiepermana-angular-ui-component-command.d.ts → ojiepermana-angular-component-command.d.ts} +0 -0
  415. /package/types/{ojiepermana-angular-ui-component-context-menu.d.ts → ojiepermana-angular-component-context-menu.d.ts} +0 -0
  416. /package/types/{ojiepermana-angular-ui-component-date-picker.d.ts → ojiepermana-angular-component-date-picker.d.ts} +0 -0
  417. /package/types/{ojiepermana-angular-ui-component-dialog.d.ts → ojiepermana-angular-component-dialog.d.ts} +0 -0
  418. /package/types/{ojiepermana-angular-ui-component-drawer.d.ts → ojiepermana-angular-component-drawer.d.ts} +0 -0
  419. /package/types/{ojiepermana-angular-ui-component-dropdown-menu.d.ts → ojiepermana-angular-component-dropdown-menu.d.ts} +0 -0
  420. /package/types/{ojiepermana-angular-ui-component-form.d.ts → ojiepermana-angular-component-form.d.ts} +0 -0
  421. /package/types/{ojiepermana-angular-ui-component-input-group.d.ts → ojiepermana-angular-component-input-group.d.ts} +0 -0
  422. /package/types/{ojiepermana-angular-ui-component-input.d.ts → ojiepermana-angular-component-input.d.ts} +0 -0
  423. /package/types/{ojiepermana-angular-ui-component-item.d.ts → ojiepermana-angular-component-item.d.ts} +0 -0
  424. /package/types/{ojiepermana-angular-ui-component-label.d.ts → ojiepermana-angular-component-label.d.ts} +0 -0
  425. /package/types/{ojiepermana-angular-ui-component-pagination.d.ts → ojiepermana-angular-component-pagination.d.ts} +0 -0
  426. /package/types/{ojiepermana-angular-ui-component-popover.d.ts → ojiepermana-angular-component-popover.d.ts} +0 -0
  427. /package/types/{ojiepermana-angular-ui-component-progress.d.ts → ojiepermana-angular-component-progress.d.ts} +0 -0
  428. /package/types/{ojiepermana-angular-ui-component-radio.d.ts → ojiepermana-angular-component-radio.d.ts} +0 -0
  429. /package/types/{ojiepermana-angular-ui-component-scroll-area.d.ts → ojiepermana-angular-component-scroll-area.d.ts} +0 -0
  430. /package/types/{ojiepermana-angular-ui-component-select.d.ts → ojiepermana-angular-component-select.d.ts} +0 -0
  431. /package/types/{ojiepermana-angular-ui-component-separator.d.ts → ojiepermana-angular-component-separator.d.ts} +0 -0
  432. /package/types/{ojiepermana-angular-ui-component-sheet.d.ts → ojiepermana-angular-component-sheet.d.ts} +0 -0
  433. /package/types/{ojiepermana-angular-ui-component-skeleton.d.ts → ojiepermana-angular-component-skeleton.d.ts} +0 -0
  434. /package/types/{ojiepermana-angular-ui-component-slider.d.ts → ojiepermana-angular-component-slider.d.ts} +0 -0
  435. /package/types/{ojiepermana-angular-ui-component-switch.d.ts → ojiepermana-angular-component-switch.d.ts} +0 -0
  436. /package/types/{ojiepermana-angular-ui-component-table.d.ts → ojiepermana-angular-component-table.d.ts} +0 -0
  437. /package/types/{ojiepermana-angular-ui-component-tabs.d.ts → ojiepermana-angular-component-tabs.d.ts} +0 -0
  438. /package/types/{ojiepermana-angular-ui-component-textarea.d.ts → ojiepermana-angular-component-textarea.d.ts} +0 -0
  439. /package/types/{ojiepermana-angular-ui-component-toast.d.ts → ojiepermana-angular-component-toast.d.ts} +0 -0
  440. /package/types/{ojiepermana-angular-ui-component-tooltip.d.ts → ojiepermana-angular-component-tooltip.d.ts} +0 -0
  441. /package/types/{ojiepermana-angular-ui-component-utils.d.ts → ojiepermana-angular-component-utils.d.ts} +0 -0
  442. /package/types/{ojiepermana-angular-layout-theme.d.ts → ojiepermana-angular-layout-component.d.ts} +0 -0
@@ -0,0 +1,113 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { RouterOutlet } from '@angular/router';
4
+ import { LayoutService } from '@ojiepermana/angular/layout/services';
5
+ import { SidebarComponent } from '@ojiepermana/angular/navigation/sidebar';
6
+ import { ThemeService } from '@ojiepermana/angular/theme';
7
+
8
+ /**
9
+ * Vertical layout — sidebar + main (scrollable).
10
+ *
11
+ * Data navigasi diambil dari `NavigationService` (register via
12
+ * `NavigationService.registerItems()` di bootstrap). Main memegang
13
+ * `<router-outlet>` dan scroll jika konten panjang.
14
+ *
15
+ * Markup:
16
+ * ```html
17
+ * <vertical>
18
+ * <a ui-layout-brand>Brand</a>
19
+ * <button ui-layout-profile type="button">Profile</button>
20
+ * </vertical>
21
+ * ```
22
+ */
23
+ class VerticalLayoutComponent {
24
+ layout = inject(LayoutService);
25
+ theme = inject(ThemeService);
26
+ sidebarAppearance = input('default', ...(ngDevMode ? [{ debugName: "sidebarAppearance" }] : /* istanbul ignore next */ []));
27
+ sidebarPosition = input('left', ...(ngDevMode ? [{ debugName: "sidebarPosition" }] : /* istanbul ignore next */ []));
28
+ sidebarMode = input('side', ...(ngDevMode ? [{ debugName: "sidebarMode" }] : /* istanbul ignore next */ []));
29
+ ariaLabel = input('Primary', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
30
+ layoutWidth = this.layout.width;
31
+ themeStyle = this.theme.style;
32
+ isConstrainedWidth = computed(() => this.layoutWidth() !== 'full', ...(ngDevMode ? [{ debugName: "isConstrainedWidth" }] : /* istanbul ignore next */ []));
33
+ isWideWidth = computed(() => this.layoutWidth() === 'wide', ...(ngDevMode ? [{ debugName: "isWideWidth" }] : /* istanbul ignore next */ []));
34
+ shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null), ...(ngDevMode ? [{ debugName: "shellBorderWidth" }] : /* istanbul ignore next */ []));
35
+ hostClasses = computed(() => {
36
+ const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];
37
+ if (this.isConstrainedWidth()) {
38
+ classes.push('bg-primary/10', 'box-border', 'lg:p-8');
39
+ }
40
+ else {
41
+ classes.push('bg-background');
42
+ }
43
+ return classes.join(' ');
44
+ }, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
45
+ frameClasses = computed(() => {
46
+ const classes = ['flex', 'h-full', 'w-full', 'overflow-hidden', 'bg-background'];
47
+ if (this.isConstrainedWidth()) {
48
+ classes.push('lg:mx-auto', this.isWideWidth() ? 'lg:max-w-[calc(17.5rem+96rem)]' : 'lg:max-w-[calc(17.5rem+80rem)]', 'lg:border', 'lg:border-primary/30', 'lg:rounded-lg', 'lg:shadow-sm');
49
+ }
50
+ return classes.join(' ');
51
+ }, ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
52
+ mainClasses = computed(() => {
53
+ const classes = ['min-w-0', 'flex-1', 'overflow-auto'];
54
+ if (this.layoutWidth() === 'container') {
55
+ classes.push('w-full', 'max-w-7xl');
56
+ }
57
+ else if (this.isWideWidth()) {
58
+ classes.push('w-full', 'max-w-screen-2xl');
59
+ }
60
+ return classes.join(' ');
61
+ }, ...(ngDevMode ? [{ debugName: "mainClasses" }] : /* istanbul ignore next */ []));
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: VerticalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: VerticalLayoutComponent, isStandalone: true, selector: "vertical", inputs: { sidebarAppearance: { classPropertyName: "sidebarAppearance", publicName: "sidebarAppearance", isSignal: true, isRequired: false, transformFunction: null }, sidebarPosition: { classPropertyName: "sidebarPosition", publicName: "sidebarPosition", isSignal: true, isRequired: false, transformFunction: null }, sidebarMode: { classPropertyName: "sidebarMode", publicName: "sidebarMode", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.data-layout-width": "layoutWidth()", "attr.data-style": "themeStyle()" } }, ngImport: i0, template: `
64
+ <div [class]="frameClasses()" [style.border-width]="shellBorderWidth()">
65
+ <sidebar [appearance]="sidebarAppearance()" [position]="sidebarPosition()" [ariaLabel]="ariaLabel()">
66
+ <div sidebar-header class="contents">
67
+ <ng-content select="[ui-layout-brand],[sidebar-header]" />
68
+ </div>
69
+ <div sidebar-footer class="contents">
70
+ <ng-content select="[ui-layout-profile],[sidebar-footer]" />
71
+ </div>
72
+ </sidebar>
73
+ <main [class]="mainClasses()">
74
+ <router-outlet />
75
+ </main>
76
+ </div>
77
+ `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: SidebarComponent, selector: "sidebar", inputs: ["items", "navigationId", "appearance", "borderSource", "position", "ariaLabel", "header", "class", "autoMobile", "autoRegister"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: VerticalLayoutComponent, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ selector: 'vertical',
83
+ changeDetection: ChangeDetectionStrategy.OnPush,
84
+ imports: [RouterOutlet, SidebarComponent],
85
+ host: {
86
+ '[class]': 'hostClasses()',
87
+ '[attr.data-layout-width]': 'layoutWidth()',
88
+ '[attr.data-style]': 'themeStyle()',
89
+ },
90
+ template: `
91
+ <div [class]="frameClasses()" [style.border-width]="shellBorderWidth()">
92
+ <sidebar [appearance]="sidebarAppearance()" [position]="sidebarPosition()" [ariaLabel]="ariaLabel()">
93
+ <div sidebar-header class="contents">
94
+ <ng-content select="[ui-layout-brand],[sidebar-header]" />
95
+ </div>
96
+ <div sidebar-footer class="contents">
97
+ <ng-content select="[ui-layout-profile],[sidebar-footer]" />
98
+ </div>
99
+ </sidebar>
100
+ <main [class]="mainClasses()">
101
+ <router-outlet />
102
+ </main>
103
+ </div>
104
+ `,
105
+ }]
106
+ }], propDecorators: { sidebarAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarAppearance", required: false }] }], sidebarPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarPosition", required: false }] }], sidebarMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarMode", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
107
+
108
+ /**
109
+ * Generated bundle index. Do not edit.
110
+ */
111
+
112
+ export { VerticalLayoutComponent };
113
+ //# sourceMappingURL=ojiepermana-angular-layout-vertical.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ojiepermana-angular-layout-vertical.mjs","sources":["../../../projects/angular/layout/vertical/src/lib/vertical.component.ts","../../../projects/angular/layout/vertical/ojiepermana-angular-layout-vertical.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { LayoutService } from '@ojiepermana/angular/layout/services';\nimport { SidebarComponent } from '@ojiepermana/angular/navigation/sidebar';\nimport type { SidebarAppearance, SidebarMode, SidebarPosition } from '@ojiepermana/angular/navigation/types';\nimport { ThemeService } from '@ojiepermana/angular/theme';\n\n/**\n * Vertical layout — sidebar + main (scrollable).\n *\n * Data navigasi diambil dari `NavigationService` (register via\n * `NavigationService.registerItems()` di bootstrap). Main memegang\n * `<router-outlet>` dan scroll jika konten panjang.\n *\n * Markup:\n * ```html\n * <vertical>\n * <a ui-layout-brand>Brand</a>\n * <button ui-layout-profile type=\"button\">Profile</button>\n * </vertical>\n * ```\n */\n@Component({\n selector: 'vertical',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet, SidebarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-layout-width]': 'layoutWidth()',\n '[attr.data-style]': 'themeStyle()',\n },\n template: `\n <div [class]=\"frameClasses()\" [style.border-width]=\"shellBorderWidth()\">\n <sidebar [appearance]=\"sidebarAppearance()\" [position]=\"sidebarPosition()\" [ariaLabel]=\"ariaLabel()\">\n <div sidebar-header class=\"contents\">\n <ng-content select=\"[ui-layout-brand],[sidebar-header]\" />\n </div>\n <div sidebar-footer class=\"contents\">\n <ng-content select=\"[ui-layout-profile],[sidebar-footer]\" />\n </div>\n </sidebar>\n <main [class]=\"mainClasses()\">\n <router-outlet />\n </main>\n </div>\n `,\n})\nexport class VerticalLayoutComponent {\n private readonly layout = inject(LayoutService);\n private readonly theme = inject(ThemeService);\n\n readonly sidebarAppearance = input<SidebarAppearance>('default');\n readonly sidebarPosition = input<SidebarPosition>('left');\n readonly sidebarMode = input<SidebarMode>('side');\n readonly ariaLabel = input<string>('Primary');\n\n protected readonly layoutWidth = this.layout.width;\n protected readonly themeStyle = this.theme.style;\n protected readonly isConstrainedWidth = computed(() => this.layoutWidth() !== 'full');\n protected readonly isWideWidth = computed(() => this.layoutWidth() === 'wide');\n protected readonly shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null));\n\n protected readonly hostClasses = computed(() => {\n const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];\n if (this.isConstrainedWidth()) {\n classes.push('bg-primary/10', 'box-border', 'lg:p-8');\n } else {\n classes.push('bg-background');\n }\n return classes.join(' ');\n });\n\n protected readonly frameClasses = computed(() => {\n const classes = ['flex', 'h-full', 'w-full', 'overflow-hidden', 'bg-background'];\n if (this.isConstrainedWidth()) {\n classes.push(\n 'lg:mx-auto',\n this.isWideWidth() ? 'lg:max-w-[calc(17.5rem+96rem)]' : 'lg:max-w-[calc(17.5rem+80rem)]',\n 'lg:border',\n 'lg:border-primary/30',\n 'lg:rounded-lg',\n 'lg:shadow-sm',\n );\n }\n return classes.join(' ');\n });\n\n protected readonly mainClasses = computed(() => {\n const classes = ['min-w-0', 'flex-1', 'overflow-auto'];\n if (this.layoutWidth() === 'container') {\n classes.push('w-full', 'max-w-7xl');\n } else if (this.isWideWidth()) {\n classes.push('w-full', 'max-w-screen-2xl');\n }\n return classes.join(' ');\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,140 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, effect, Injectable, input, computed, ChangeDetectionStrategy, Component, makeEnvironmentProviders, provideEnvironmentInitializer, Directive } from '@angular/core';
2
+ import { inject, input, computed, ChangeDetectionStrategy, Component, makeEnvironmentProviders, provideEnvironmentInitializer, signal, effect, Injectable, InjectionToken, Directive } from '@angular/core';
3
3
  import { RouterOutlet } from '@angular/router';
4
- import { SidebarComponent, TopbarComponent } from '@ojiepermana/angular/navigation';
4
+ import { LayoutService as LayoutService$1 } from '@ojiepermana/angular/layout/services';
5
+ import { SidebarComponent } from '@ojiepermana/angular/navigation/sidebar';
5
6
  import { ThemeService } from '@ojiepermana/angular/theme';
7
+ import { TopbarComponent } from '@ojiepermana/angular/navigation/topbar';
8
+ import { THEME_PANEL_LAYOUT_PORT } from '@ojiepermana/angular/layout/component';
9
+ import { MATERIAL_LAYOUT_CONFIG as MATERIAL_LAYOUT_CONFIG$1, LAYOUT_WIDTHS as LAYOUT_WIDTHS$1, DEFAULT_MATERIAL_LAYOUT_CONFIG as DEFAULT_MATERIAL_LAYOUT_CONFIG$1, normalizeLayoutWidth as normalizeLayoutWidth$1, isLayoutMode as isLayoutMode$1 } from '@ojiepermana/angular/layout/token';
6
10
  import { DOCUMENT } from '@angular/common';
7
- import { THEME_PANEL_LAYOUT_PORT } from '@ojiepermana/angular/layout/theme';
8
11
  import { POPOVER_TRIGGER_DEFAULTS } from '@ojiepermana/angular/component/popover';
9
12
 
10
- const LAYOUT_MODES = ['vertical', 'horizontal', 'empty'];
11
- const LAYOUT_WIDTHS = ['full', 'container', 'wide'];
12
- const MATERIAL_LAYOUT_CONFIG = new InjectionToken('MATERIAL_LAYOUT_CONFIG');
13
- const DEFAULT_MATERIAL_LAYOUT_CONFIG = {
14
- defaultMode: 'vertical',
15
- defaultWidth: 'wide',
16
- storageKey: 'layout-mode',
17
- widthStorageKey: 'layout-width',
18
- };
19
- function isLayoutMode(value) {
20
- return LAYOUT_MODES.some((mode) => mode === value);
21
- }
22
- function isLayoutWidth(value) {
23
- return LAYOUT_WIDTHS.some((width) => width === value);
24
- }
25
- function normalizeLayoutWidth(value) {
26
- if (isLayoutWidth(value)) {
27
- return value;
28
- }
29
- if (value === 'fixed') {
30
- return 'container';
31
- }
32
- return null;
33
- }
34
-
35
- class LayoutService {
36
- document = inject(DOCUMENT);
37
- config = this.resolveConfig();
38
- _mode = signal(this.readPersistedMode() ?? this.config.defaultMode, ...(ngDevMode ? [{ debugName: "_mode" }] : /* istanbul ignore next */ []));
39
- _width = signal(this.readPersistedWidth() ?? this.config.defaultWidth, ...(ngDevMode ? [{ debugName: "_width" }] : /* istanbul ignore next */ []));
40
- mode = this._mode.asReadonly();
41
- width = this._width.asReadonly();
42
- constructor() {
43
- effect(() => {
44
- this.persistMode(this._mode());
45
- });
46
- effect(() => {
47
- this.persistWidth(this._width());
48
- });
49
- }
50
- setMode(mode) {
51
- this._mode.set(mode);
52
- }
53
- toggleMode() {
54
- this._mode.update((mode) => {
55
- if (mode === 'vertical') {
56
- return 'horizontal';
57
- }
58
- if (mode === 'horizontal') {
59
- return 'vertical';
60
- }
61
- return 'vertical';
62
- });
63
- }
64
- setWidth(width) {
65
- this._width.set(width);
66
- }
67
- toggleWidth() {
68
- this._width.update((width) => {
69
- const currentIndex = LAYOUT_WIDTHS.indexOf(width);
70
- return LAYOUT_WIDTHS[(currentIndex + 1) % LAYOUT_WIDTHS.length] ?? LAYOUT_WIDTHS[0];
71
- });
72
- }
73
- resolveConfig() {
74
- const config = inject(MATERIAL_LAYOUT_CONFIG, { optional: true }) ?? {};
75
- const configuredMode = config.mode ?? config.defaultMode;
76
- const configuredWidth = config.width;
77
- return {
78
- defaultMode: isLayoutMode(configuredMode) ? configuredMode : DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultMode,
79
- defaultWidth: normalizeLayoutWidth(configuredWidth) ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultWidth,
80
- storageKey: config.storageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.storageKey,
81
- widthStorageKey: config.widthStorageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.widthStorageKey,
82
- };
83
- }
84
- readPersistedMode() {
85
- const key = this.config.storageKey;
86
- if (!key)
87
- return null;
88
- try {
89
- const value = this.document.defaultView?.localStorage?.getItem(key);
90
- return isLayoutMode(value) ? value : null;
91
- }
92
- catch {
93
- return null;
94
- }
95
- }
96
- readPersistedWidth() {
97
- const key = this.config.widthStorageKey;
98
- if (!key)
99
- return null;
100
- try {
101
- const value = this.document.defaultView?.localStorage?.getItem(key);
102
- return normalizeLayoutWidth(value);
103
- }
104
- catch {
105
- return null;
106
- }
107
- }
108
- persistMode(mode) {
109
- const key = this.config.storageKey;
110
- if (!key)
111
- return;
112
- try {
113
- this.document.defaultView?.localStorage?.setItem(key, mode);
114
- }
115
- catch {
116
- /* ignore */
117
- }
118
- }
119
- persistWidth(width) {
120
- const key = this.config.widthStorageKey;
121
- if (!key)
122
- return;
123
- try {
124
- this.document.defaultView?.localStorage?.setItem(key, width);
125
- }
126
- catch {
127
- /* ignore */
128
- }
129
- }
130
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
131
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, providedIn: 'root' });
132
- }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, decorators: [{
134
- type: Injectable,
135
- args: [{ providedIn: 'root' }]
136
- }], ctorParameters: () => [] });
137
-
138
13
  /**
139
14
  * Vertical layout — sidebar + main (scrollable).
140
15
  *
@@ -151,7 +26,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
151
26
  * ```
152
27
  */
153
28
  class VerticalLayoutComponent {
154
- layout = inject(LayoutService);
29
+ layout = inject(LayoutService$1);
155
30
  theme = inject(ThemeService);
156
31
  sidebarAppearance = input('default', ...(ngDevMode ? [{ debugName: "sidebarAppearance" }] : /* istanbul ignore next */ []));
157
32
  sidebarPosition = input('left', ...(ngDevMode ? [{ debugName: "sidebarPosition" }] : /* istanbul ignore next */ []));
@@ -250,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
250
125
  * ```
251
126
  */
252
127
  class HorizontalLayoutComponent {
253
- layout = inject(LayoutService);
128
+ layout = inject(LayoutService$1);
254
129
  theme = inject(ThemeService);
255
130
  topbarAppearance = input('default', ...(ngDevMode ? [{ debugName: "topbarAppearance" }] : /* istanbul ignore next */ []));
256
131
  ariaLabel = input('Primary', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
@@ -421,16 +296,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
421
296
 
422
297
  function provideMaterialLayout(config = {}) {
423
298
  return makeEnvironmentProviders([
424
- { provide: MATERIAL_LAYOUT_CONFIG, useValue: config },
425
- { provide: THEME_PANEL_LAYOUT_PORT, useExisting: LayoutService },
299
+ { provide: MATERIAL_LAYOUT_CONFIG$1, useValue: config },
300
+ { provide: THEME_PANEL_LAYOUT_PORT, useExisting: LayoutService$1 },
426
301
  provideEnvironmentInitializer(() => {
427
- inject(LayoutService);
302
+ inject(LayoutService$1);
428
303
  }),
429
304
  ]);
430
305
  }
431
306
 
307
+ class LayoutService {
308
+ document = inject(DOCUMENT);
309
+ config = this.resolveConfig();
310
+ _mode = signal(this.readPersistedMode() ?? this.config.defaultMode, ...(ngDevMode ? [{ debugName: "_mode" }] : /* istanbul ignore next */ []));
311
+ _width = signal(this.readPersistedWidth() ?? this.config.defaultWidth, ...(ngDevMode ? [{ debugName: "_width" }] : /* istanbul ignore next */ []));
312
+ mode = this._mode.asReadonly();
313
+ width = this._width.asReadonly();
314
+ constructor() {
315
+ effect(() => {
316
+ this.persistMode(this._mode());
317
+ });
318
+ effect(() => {
319
+ this.persistWidth(this._width());
320
+ });
321
+ }
322
+ setMode(mode) {
323
+ this._mode.set(mode);
324
+ }
325
+ toggleMode() {
326
+ this._mode.update((mode) => {
327
+ if (mode === 'vertical') {
328
+ return 'horizontal';
329
+ }
330
+ if (mode === 'horizontal') {
331
+ return 'vertical';
332
+ }
333
+ return 'vertical';
334
+ });
335
+ }
336
+ setWidth(width) {
337
+ this._width.set(width);
338
+ }
339
+ toggleWidth() {
340
+ this._width.update((width) => {
341
+ const currentIndex = LAYOUT_WIDTHS$1.indexOf(width);
342
+ return LAYOUT_WIDTHS$1[(currentIndex + 1) % LAYOUT_WIDTHS$1.length] ?? LAYOUT_WIDTHS$1[0];
343
+ });
344
+ }
345
+ resolveConfig() {
346
+ const config = inject(MATERIAL_LAYOUT_CONFIG$1, { optional: true }) ?? {};
347
+ const configuredMode = config.mode ?? config.defaultMode;
348
+ const configuredWidth = config.width;
349
+ return {
350
+ defaultMode: isLayoutMode$1(configuredMode) ? configuredMode : DEFAULT_MATERIAL_LAYOUT_CONFIG$1.defaultMode,
351
+ defaultWidth: normalizeLayoutWidth$1(configuredWidth) ?? DEFAULT_MATERIAL_LAYOUT_CONFIG$1.defaultWidth,
352
+ storageKey: config.storageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG$1.storageKey,
353
+ widthStorageKey: config.widthStorageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG$1.widthStorageKey,
354
+ };
355
+ }
356
+ readPersistedMode() {
357
+ const key = this.config.storageKey;
358
+ if (!key)
359
+ return null;
360
+ try {
361
+ const value = this.document.defaultView?.localStorage?.getItem(key);
362
+ return isLayoutMode$1(value) ? value : null;
363
+ }
364
+ catch {
365
+ return null;
366
+ }
367
+ }
368
+ readPersistedWidth() {
369
+ const key = this.config.widthStorageKey;
370
+ if (!key)
371
+ return null;
372
+ try {
373
+ const value = this.document.defaultView?.localStorage?.getItem(key);
374
+ return normalizeLayoutWidth$1(value);
375
+ }
376
+ catch {
377
+ return null;
378
+ }
379
+ }
380
+ persistMode(mode) {
381
+ const key = this.config.storageKey;
382
+ if (!key)
383
+ return;
384
+ try {
385
+ this.document.defaultView?.localStorage?.setItem(key, mode);
386
+ }
387
+ catch {
388
+ /* ignore */
389
+ }
390
+ }
391
+ persistWidth(width) {
392
+ const key = this.config.widthStorageKey;
393
+ if (!key)
394
+ return;
395
+ try {
396
+ this.document.defaultView?.localStorage?.setItem(key, width);
397
+ }
398
+ catch {
399
+ /* ignore */
400
+ }
401
+ }
402
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
403
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, providedIn: 'root' });
404
+ }
405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayoutService, decorators: [{
406
+ type: Injectable,
407
+ args: [{ providedIn: 'root' }]
408
+ }], ctorParameters: () => [] });
409
+
410
+ const LAYOUT_MODES = ['vertical', 'horizontal', 'empty'];
411
+ const LAYOUT_WIDTHS = ['full', 'container', 'wide'];
412
+ const MATERIAL_LAYOUT_CONFIG = new InjectionToken('MATERIAL_LAYOUT_CONFIG');
413
+ const DEFAULT_MATERIAL_LAYOUT_CONFIG = {
414
+ defaultMode: 'vertical',
415
+ defaultWidth: 'wide',
416
+ storageKey: 'layout-mode',
417
+ widthStorageKey: 'layout-width',
418
+ };
419
+ function isLayoutMode(value) {
420
+ return LAYOUT_MODES.some((mode) => mode === value);
421
+ }
422
+ function isLayoutWidth(value) {
423
+ return LAYOUT_WIDTHS.some((width) => width === value);
424
+ }
425
+ function normalizeLayoutWidth(value) {
426
+ if (isLayoutWidth(value)) {
427
+ return value;
428
+ }
429
+ if (value === 'fixed') {
430
+ return 'container';
431
+ }
432
+ return null;
433
+ }
434
+
432
435
  class LayoutProfilePopoverDefaultsDirective {
433
- layout = inject(LayoutService);
436
+ layout = inject(LayoutService$1);
434
437
  side = computed(() => (this.layout.mode() === 'horizontal' ? 'bottom' : 'right'), ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
435
438
  align = computed(() => 'end', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
436
439
  sideOffset = computed(() => (this.layout.mode() === 'horizontal' ? -20 : 12), ...(ngDevMode ? [{ debugName: "sideOffset" }] : /* istanbul ignore next */ []));
@@ -1 +1 @@
1
- {"version":3,"file":"ojiepermana-angular-layout.mjs","sources":["../../../projects/angular/layout/src/lib/core/layout.tokens.ts","../../../projects/angular/layout/src/lib/core/layout.service.ts","../../../projects/angular/layout/src/lib/vertical/vertical.component.ts","../../../projects/angular/layout/src/lib/horizontal/horizontal.component.ts","../../../projects/angular/layout/src/lib/empty/empty.component.ts","../../../projects/angular/layout/src/lib/shell/pages/shell-pages.ts","../../../projects/angular/layout/src/lib/core/layout.provider.ts","../../../projects/angular/layout/src/lib/core/layout-profile-popover-defaults.directive.ts","../../../projects/angular/layout/public-api.ts","../../../projects/angular/layout/ojiepermana-angular-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const LAYOUT_MODES = ['vertical', 'horizontal', 'empty'] as const;\n\nexport type LayoutMode = (typeof LAYOUT_MODES)[number];\n\nexport const LAYOUT_WIDTHS = ['full', 'container', 'wide'] as const;\n\nexport type LayoutWidth = (typeof LAYOUT_WIDTHS)[number];\n\n/** @deprecated Use `container` instead. */\nexport type LegacyLayoutWidth = 'fixed';\n\nexport type ConfiguredLayoutWidth = LayoutWidth | LegacyLayoutWidth;\n\nexport interface MaterialLayoutConfig {\n /** Initial layout mode. */\n readonly mode?: LayoutMode;\n /** Initial layout width. */\n readonly width?: ConfiguredLayoutWidth;\n /** @deprecated Use `mode` instead. */\n /** Initial layout mode. Defaults to `vertical`. */\n readonly defaultMode?: LayoutMode;\n /** localStorage key used to persist the layout mode. Set to `null` to disable persistence. */\n readonly storageKey?: string | null;\n /** localStorage key used to persist the layout width. Set to `null` to disable persistence. */\n readonly widthStorageKey?: string | null;\n}\n\nexport interface ResolvedMaterialLayoutConfig {\n readonly defaultMode: LayoutMode;\n readonly defaultWidth: LayoutWidth;\n readonly storageKey: string | null;\n readonly widthStorageKey: string | null;\n}\n\nexport const MATERIAL_LAYOUT_CONFIG = new InjectionToken<MaterialLayoutConfig>('MATERIAL_LAYOUT_CONFIG');\n\nexport const DEFAULT_MATERIAL_LAYOUT_CONFIG: ResolvedMaterialLayoutConfig = {\n defaultMode: 'vertical',\n defaultWidth: 'wide',\n storageKey: 'layout-mode',\n widthStorageKey: 'layout-width',\n};\n\nexport function isLayoutMode(value: string | null | undefined): value is LayoutMode {\n return LAYOUT_MODES.some((mode) => mode === value);\n}\n\nexport function isLayoutWidth(value: string | null | undefined): value is LayoutWidth {\n return LAYOUT_WIDTHS.some((width) => width === value);\n}\n\nexport function normalizeLayoutWidth(value: string | null | undefined): LayoutWidth | null {\n if (isLayoutWidth(value)) {\n return value;\n }\n\n if (value === 'fixed') {\n return 'container';\n }\n\n return null;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, effect, inject, signal } from '@angular/core';\nimport {\n DEFAULT_MATERIAL_LAYOUT_CONFIG,\n LAYOUT_WIDTHS,\n MATERIAL_LAYOUT_CONFIG,\n isLayoutMode,\n normalizeLayoutWidth,\n type LayoutMode,\n type LayoutWidth,\n type ResolvedMaterialLayoutConfig,\n} from './layout.tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutService {\n private readonly document = inject(DOCUMENT);\n private readonly config = this.resolveConfig();\n\n private readonly _mode = signal<LayoutMode>(this.readPersistedMode() ?? this.config.defaultMode);\n private readonly _width = signal<LayoutWidth>(this.readPersistedWidth() ?? this.config.defaultWidth);\n\n readonly mode = this._mode.asReadonly();\n readonly width = this._width.asReadonly();\n\n constructor() {\n effect(() => {\n this.persistMode(this._mode());\n });\n\n effect(() => {\n this.persistWidth(this._width());\n });\n }\n\n setMode(mode: LayoutMode): void {\n this._mode.set(mode);\n }\n\n toggleMode(): void {\n this._mode.update((mode) => {\n if (mode === 'vertical') {\n return 'horizontal';\n }\n\n if (mode === 'horizontal') {\n return 'vertical';\n }\n\n return 'vertical';\n });\n }\n\n setWidth(width: LayoutWidth): void {\n this._width.set(width);\n }\n\n toggleWidth(): void {\n this._width.update((width) => {\n const currentIndex = LAYOUT_WIDTHS.indexOf(width);\n return LAYOUT_WIDTHS[(currentIndex + 1) % LAYOUT_WIDTHS.length] ?? LAYOUT_WIDTHS[0];\n });\n }\n\n private resolveConfig(): ResolvedMaterialLayoutConfig {\n const config = inject(MATERIAL_LAYOUT_CONFIG, { optional: true }) ?? {};\n const configuredMode = config.mode ?? config.defaultMode;\n const configuredWidth = config.width;\n\n return {\n defaultMode: isLayoutMode(configuredMode) ? configuredMode : DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultMode,\n defaultWidth: normalizeLayoutWidth(configuredWidth) ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultWidth,\n storageKey: config.storageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.storageKey,\n widthStorageKey: config.widthStorageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.widthStorageKey,\n };\n }\n\n private readPersistedMode(): LayoutMode | null {\n const key = this.config.storageKey;\n if (!key) return null;\n try {\n const value = this.document.defaultView?.localStorage?.getItem(key);\n return isLayoutMode(value) ? value : null;\n } catch {\n return null;\n }\n }\n\n private readPersistedWidth(): LayoutWidth | null {\n const key = this.config.widthStorageKey;\n if (!key) return null;\n try {\n const value = this.document.defaultView?.localStorage?.getItem(key);\n return normalizeLayoutWidth(value);\n } catch {\n return null;\n }\n }\n\n private persistMode(mode: LayoutMode): void {\n const key = this.config.storageKey;\n if (!key) return;\n try {\n this.document.defaultView?.localStorage?.setItem(key, mode);\n } catch {\n /* ignore */\n }\n }\n\n private persistWidth(width: LayoutWidth): void {\n const key = this.config.widthStorageKey;\n if (!key) return;\n try {\n this.document.defaultView?.localStorage?.setItem(key, width);\n } catch {\n /* ignore */\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport {\n SidebarComponent,\n type SidebarAppearance,\n type SidebarMode,\n type SidebarPosition,\n} from '@ojiepermana/angular/navigation';\nimport { ThemeService } from '@ojiepermana/angular/theme';\nimport { LayoutService } from '../core/layout.service';\n\n/**\n * Vertical layout — sidebar + main (scrollable).\n *\n * Data navigasi diambil dari `NavigationService` (register via\n * `NavigationService.registerItems()` di bootstrap). Main memegang\n * `<router-outlet>` dan scroll jika konten panjang.\n *\n * Markup:\n * ```html\n * <vertical>\n * <a ui-layout-brand>Brand</a>\n * <button ui-layout-profile type=\"button\">Profile</button>\n * </vertical>\n * ```\n */\n@Component({\n selector: 'vertical',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet, SidebarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-layout-width]': 'layoutWidth()',\n '[attr.data-style]': 'themeStyle()',\n },\n template: `\n <div [class]=\"frameClasses()\" [style.border-width]=\"shellBorderWidth()\">\n <sidebar [appearance]=\"sidebarAppearance()\" [position]=\"sidebarPosition()\" [ariaLabel]=\"ariaLabel()\">\n <div sidebar-header class=\"contents\">\n <ng-content select=\"[ui-layout-brand],[sidebar-header]\" />\n </div>\n <div sidebar-footer class=\"contents\">\n <ng-content select=\"[ui-layout-profile],[sidebar-footer]\" />\n </div>\n </sidebar>\n <main [class]=\"mainClasses()\">\n <router-outlet />\n </main>\n </div>\n `,\n})\nexport class VerticalLayoutComponent {\n private readonly layout = inject(LayoutService);\n private readonly theme = inject(ThemeService);\n\n readonly sidebarAppearance = input<SidebarAppearance>('default');\n readonly sidebarPosition = input<SidebarPosition>('left');\n readonly sidebarMode = input<SidebarMode>('side');\n readonly ariaLabel = input<string>('Primary');\n\n protected readonly layoutWidth = this.layout.width;\n protected readonly themeStyle = this.theme.style;\n protected readonly isConstrainedWidth = computed(() => this.layoutWidth() !== 'full');\n protected readonly isWideWidth = computed(() => this.layoutWidth() === 'wide');\n protected readonly shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null));\n\n protected readonly hostClasses = computed(() => {\n const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];\n if (this.isConstrainedWidth()) {\n classes.push('bg-primary/10', 'box-border', 'lg:p-8');\n } else {\n classes.push('bg-background');\n }\n return classes.join(' ');\n });\n\n protected readonly frameClasses = computed(() => {\n const classes = ['flex', 'h-full', 'w-full', 'overflow-hidden', 'bg-background'];\n if (this.isConstrainedWidth()) {\n classes.push(\n 'lg:mx-auto',\n this.isWideWidth() ? 'lg:max-w-[calc(17.5rem+96rem)]' : 'lg:max-w-[calc(17.5rem+80rem)]',\n 'lg:border',\n 'lg:border-primary/30',\n 'lg:rounded-lg',\n 'lg:shadow-sm',\n );\n }\n return classes.join(' ');\n });\n\n protected readonly mainClasses = computed(() => {\n const classes = ['min-w-0', 'flex-1', 'overflow-auto'];\n if (this.layoutWidth() === 'container') {\n classes.push('w-full', 'max-w-7xl');\n } else if (this.isWideWidth()) {\n classes.push('w-full', 'max-w-screen-2xl');\n }\n return classes.join(' ');\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { TopbarComponent, type TopbarAppearance } from '@ojiepermana/angular/navigation';\nimport { ThemeService } from '@ojiepermana/angular/theme';\nimport { LayoutService } from '../core/layout.service';\n\n/**\n * Horizontal layout — themed topbar + main (scrollable).\n *\n * Data navigasi diambil dari `NavigationService`.\n * Consumer app dapat memproyeksikan brand kiri dan profile kanan.\n *\n * Markup:\n * ```html\n * <horizontal>\n * <a ui-layout-brand>Brand</a>\n * <button ui-layout-profile type=\"button\">Profile</button>\n * </horizontal>\n * ```\n */\n@Component({\n selector: 'horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet, TopbarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-layout-width]': 'layoutWidth()',\n '[attr.data-style]': 'themeStyle()',\n },\n template: `\n <div [class]=\"frameClasses()\" [style.border-width]=\"shellBorderWidth()\">\n <topbar\n class=\"w-full shrink-0 border-b border-border\"\n [style.border-bottom-width]=\"dividerBorderWidth()\"\n [appearance]=\"topbarAppearance()\"\n [ariaLabel]=\"ariaLabel()\">\n <div topbar-start class=\"flex min-w-0 items-center\">\n <ng-content select=\"[ui-layout-brand],[topbar-start]\" />\n </div>\n <div topbar-end class=\"flex min-w-0 items-center\">\n <ng-content select=\"[ui-layout-profile],[topbar-end]\" />\n </div>\n </topbar>\n <main [class]=\"mainClasses()\">\n <router-outlet />\n </main>\n </div>\n `,\n})\nexport class HorizontalLayoutComponent {\n private readonly layout = inject(LayoutService);\n private readonly theme = inject(ThemeService);\n\n readonly topbarAppearance = input<TopbarAppearance>('default');\n readonly ariaLabel = input<string>('Primary');\n\n protected readonly layoutWidth = this.layout.width;\n protected readonly themeStyle = this.theme.style;\n protected readonly isConstrainedWidth = computed(() => this.layoutWidth() !== 'full');\n protected readonly isWideWidth = computed(() => this.layoutWidth() === 'wide');\n protected readonly shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null));\n protected readonly dividerBorderWidth = computed(() => 'var(--border-width)');\n\n protected readonly hostClasses = computed(() => {\n const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];\n if (this.isConstrainedWidth()) {\n classes.push('bg-primary/10', 'box-border', 'lg:p-8');\n } else {\n classes.push('bg-background');\n }\n return classes.join(' ');\n });\n\n protected readonly frameClasses = computed(() => {\n const classes = ['flex', 'h-full', 'w-full', 'flex-col', 'overflow-hidden', 'bg-background'];\n if (this.isConstrainedWidth()) {\n classes.push('lg:border', 'lg:border-primary/30', 'lg:rounded-lg', 'lg:shadow-sm');\n }\n return classes.join(' ');\n });\n\n protected readonly mainClasses = computed(() => {\n const classes = ['min-w-0', 'flex-1', 'overflow-auto'];\n if (this.layoutWidth() === 'container') {\n classes.push('mx-auto', 'w-full', 'max-w-7xl');\n } else if (this.isWideWidth()) {\n classes.push('mx-auto', 'w-full', 'max-w-screen-2xl');\n }\n return classes.join(' ');\n });\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n/**\n * Empty layout — full-viewport, flex-centered main.\n *\n * Cocok untuk halaman login / error / onboarding (pola shadcn `login-05`).\n * Konten dirender lewat `<router-outlet>`; consumer men-style card / form\n * milik halaman route sendiri.\n *\n * Markup:\n * ```html\n * <empty>\n * <!-- router-outlet dirender oleh komponen -->\n * </empty>\n * ```\n */\n@Component({\n selector: 'empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet],\n host: {\n class: 'flex min-h-dvh w-full items-center justify-center bg-background p-6 text-foreground',\n },\n template: `\n <main class=\"w-full max-w-sm\">\n <router-outlet />\n </main>\n `,\n})\nexport class EmptyLayoutComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'shell-pages',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block h-full min-h-0',\n },\n template: `\n <div class=\"flex h-full flex-col overflow-hidden\">\n <header class=\"flex h-12 min-w-0 shrink-0 items-center gap-2 border-b border-primary/30 px-2\">\n <ng-content select=\"[shell-pages-header]\" />\n </header>\n\n <main class=\"min-h-0 flex-1 overflow-y-auto scrollbar-thin scrollbar-thumb-primary scrollbar-track-primary/10\">\n <ng-content select=\"[shell-pages-main]\" />\n </main>\n\n <footer class=\"flex h-12 min-w-0 shrink-0 items-center gap-2 border-t border-primary/30 px-2\">\n <ng-content select=\"[shell-pages-footer]\" />\n </footer>\n </div>\n `,\n styles: `\n footer:empty {\n display: none;\n }\n `,\n})\nexport class ShellPagesComponent {}\n","import {\n inject,\n type EnvironmentProviders,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { THEME_PANEL_LAYOUT_PORT } from '@ojiepermana/angular/layout/theme';\nimport { LayoutService } from './layout.service';\nimport { MATERIAL_LAYOUT_CONFIG, type MaterialLayoutConfig } from './layout.tokens';\n\nexport function provideMaterialLayout(config: MaterialLayoutConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: MATERIAL_LAYOUT_CONFIG, useValue: config },\n { provide: THEME_PANEL_LAYOUT_PORT, useExisting: LayoutService },\n provideEnvironmentInitializer(() => {\n inject(LayoutService);\n }),\n ]);\n}\n","import { Directive, computed, inject } from '@angular/core';\nimport {\n POPOVER_TRIGGER_DEFAULTS,\n type PopoverAlign,\n type PopoverSide,\n type PopoverTriggerDefaults,\n} from '@ojiepermana/angular/component/popover';\nimport { LayoutService } from './layout.service';\n\n@Directive({\n selector: '[ui-layout-profile][uiPopoverTrigger]',\n providers: [{ provide: POPOVER_TRIGGER_DEFAULTS, useExisting: LayoutProfilePopoverDefaultsDirective }],\n})\nexport class LayoutProfilePopoverDefaultsDirective implements PopoverTriggerDefaults {\n private readonly layout = inject(LayoutService);\n\n readonly side = computed<PopoverSide>(() => (this.layout.mode() === 'horizontal' ? 'bottom' : 'right'));\n readonly align = computed<PopoverAlign>(() => 'end');\n readonly sideOffset = computed(() => (this.layout.mode() === 'horizontal' ? -20 : 12));\n}\n","/*\n * Public API Surface of @ojiepermana/angular/layout\n */\n\nexport * from './src/lib/vertical/vertical.component';\nexport * from './src/lib/horizontal/horizontal.component';\nexport * from './src/lib/empty/empty.component';\nexport * from './src/lib/shell/pages';\nexport * from './src/lib/core/layout.tokens';\nexport * from './src/lib/core/layout.service';\nexport * from './src/lib/core/layout.provider';\nexport * from './src/lib/core/layout-profile-popover-defaults.directive';\n\nexport const LAYOUT_VERSION = '0.0.1';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ojiepermana-angular-layout.mjs","sources":["../../../projects/angular/layout/vertical/src/lib/vertical.component.ts","../../../projects/angular/layout/horizontal/src/lib/horizontal.component.ts","../../../projects/angular/layout/empty/src/lib/empty.component.ts","../../../projects/angular/layout/shell/src/lib/shell-pages.ts","../../../projects/angular/layout/provider/src/lib/layout.provider.ts","../../../projects/angular/layout/services/src/lib/layout.service.ts","../../../projects/angular/layout/token/src/lib/layout.tokens.ts","../../../projects/angular/layout/token/directive/src/lib/layout-profile-popover-defaults.directive.ts","../../../projects/angular/layout/public-api.ts","../../../projects/angular/layout/ojiepermana-angular-layout.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { LayoutService } from '@ojiepermana/angular/layout/services';\nimport { SidebarComponent } from '@ojiepermana/angular/navigation/sidebar';\nimport type { SidebarAppearance, SidebarMode, SidebarPosition } from '@ojiepermana/angular/navigation/types';\nimport { ThemeService } from '@ojiepermana/angular/theme';\n\n/**\n * Vertical layout — sidebar + main (scrollable).\n *\n * Data navigasi diambil dari `NavigationService` (register via\n * `NavigationService.registerItems()` di bootstrap). Main memegang\n * `<router-outlet>` dan scroll jika konten panjang.\n *\n * Markup:\n * ```html\n * <vertical>\n * <a ui-layout-brand>Brand</a>\n * <button ui-layout-profile type=\"button\">Profile</button>\n * </vertical>\n * ```\n */\n@Component({\n selector: 'vertical',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet, SidebarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-layout-width]': 'layoutWidth()',\n '[attr.data-style]': 'themeStyle()',\n },\n template: `\n <div [class]=\"frameClasses()\" [style.border-width]=\"shellBorderWidth()\">\n <sidebar [appearance]=\"sidebarAppearance()\" [position]=\"sidebarPosition()\" [ariaLabel]=\"ariaLabel()\">\n <div sidebar-header class=\"contents\">\n <ng-content select=\"[ui-layout-brand],[sidebar-header]\" />\n </div>\n <div sidebar-footer class=\"contents\">\n <ng-content select=\"[ui-layout-profile],[sidebar-footer]\" />\n </div>\n </sidebar>\n <main [class]=\"mainClasses()\">\n <router-outlet />\n </main>\n </div>\n `,\n})\nexport class VerticalLayoutComponent {\n private readonly layout = inject(LayoutService);\n private readonly theme = inject(ThemeService);\n\n readonly sidebarAppearance = input<SidebarAppearance>('default');\n readonly sidebarPosition = input<SidebarPosition>('left');\n readonly sidebarMode = input<SidebarMode>('side');\n readonly ariaLabel = input<string>('Primary');\n\n protected readonly layoutWidth = this.layout.width;\n protected readonly themeStyle = this.theme.style;\n protected readonly isConstrainedWidth = computed(() => this.layoutWidth() !== 'full');\n protected readonly isWideWidth = computed(() => this.layoutWidth() === 'wide');\n protected readonly shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null));\n\n protected readonly hostClasses = computed(() => {\n const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];\n if (this.isConstrainedWidth()) {\n classes.push('bg-primary/10', 'box-border', 'lg:p-8');\n } else {\n classes.push('bg-background');\n }\n return classes.join(' ');\n });\n\n protected readonly frameClasses = computed(() => {\n const classes = ['flex', 'h-full', 'w-full', 'overflow-hidden', 'bg-background'];\n if (this.isConstrainedWidth()) {\n classes.push(\n 'lg:mx-auto',\n this.isWideWidth() ? 'lg:max-w-[calc(17.5rem+96rem)]' : 'lg:max-w-[calc(17.5rem+80rem)]',\n 'lg:border',\n 'lg:border-primary/30',\n 'lg:rounded-lg',\n 'lg:shadow-sm',\n );\n }\n return classes.join(' ');\n });\n\n protected readonly mainClasses = computed(() => {\n const classes = ['min-w-0', 'flex-1', 'overflow-auto'];\n if (this.layoutWidth() === 'container') {\n classes.push('w-full', 'max-w-7xl');\n } else if (this.isWideWidth()) {\n classes.push('w-full', 'max-w-screen-2xl');\n }\n return classes.join(' ');\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { LayoutService } from '@ojiepermana/angular/layout/services';\nimport { TopbarComponent } from '@ojiepermana/angular/navigation/topbar';\nimport type { TopbarAppearance } from '@ojiepermana/angular/navigation/types';\nimport { ThemeService } from '@ojiepermana/angular/theme';\n\n/**\n * Horizontal layout — themed topbar + main (scrollable).\n *\n * Data navigasi diambil dari `NavigationService`.\n * Consumer app dapat memproyeksikan brand kiri dan profile kanan.\n *\n * Markup:\n * ```html\n * <horizontal>\n * <a ui-layout-brand>Brand</a>\n * <button ui-layout-profile type=\"button\">Profile</button>\n * </horizontal>\n * ```\n */\n@Component({\n selector: 'horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet, TopbarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-layout-width]': 'layoutWidth()',\n '[attr.data-style]': 'themeStyle()',\n },\n template: `\n <div [class]=\"frameClasses()\" [style.border-width]=\"shellBorderWidth()\">\n <topbar\n class=\"w-full shrink-0 border-b border-border\"\n [style.border-bottom-width]=\"dividerBorderWidth()\"\n [appearance]=\"topbarAppearance()\"\n [ariaLabel]=\"ariaLabel()\">\n <div topbar-start class=\"flex min-w-0 items-center\">\n <ng-content select=\"[ui-layout-brand],[topbar-start]\" />\n </div>\n <div topbar-end class=\"flex min-w-0 items-center\">\n <ng-content select=\"[ui-layout-profile],[topbar-end]\" />\n </div>\n </topbar>\n <main [class]=\"mainClasses()\">\n <router-outlet />\n </main>\n </div>\n `,\n})\nexport class HorizontalLayoutComponent {\n private readonly layout = inject(LayoutService);\n private readonly theme = inject(ThemeService);\n\n readonly topbarAppearance = input<TopbarAppearance>('default');\n readonly ariaLabel = input<string>('Primary');\n\n protected readonly layoutWidth = this.layout.width;\n protected readonly themeStyle = this.theme.style;\n protected readonly isConstrainedWidth = computed(() => this.layoutWidth() !== 'full');\n protected readonly isWideWidth = computed(() => this.layoutWidth() === 'wide');\n protected readonly shellBorderWidth = computed(() => (this.isConstrainedWidth() ? 'var(--border-width)' : null));\n protected readonly dividerBorderWidth = computed(() => 'var(--border-width)');\n\n protected readonly hostClasses = computed(() => {\n const classes = ['block', 'h-dvh', 'w-full', 'overflow-hidden', 'text-foreground'];\n if (this.isConstrainedWidth()) {\n classes.push('bg-primary/10', 'box-border', 'lg:p-8');\n } else {\n classes.push('bg-background');\n }\n return classes.join(' ');\n });\n\n protected readonly frameClasses = computed(() => {\n const classes = ['flex', 'h-full', 'w-full', 'flex-col', 'overflow-hidden', 'bg-background'];\n if (this.isConstrainedWidth()) {\n classes.push('lg:border', 'lg:border-primary/30', 'lg:rounded-lg', 'lg:shadow-sm');\n }\n return classes.join(' ');\n });\n\n protected readonly mainClasses = computed(() => {\n const classes = ['min-w-0', 'flex-1', 'overflow-auto'];\n if (this.layoutWidth() === 'container') {\n classes.push('mx-auto', 'w-full', 'max-w-7xl');\n } else if (this.isWideWidth()) {\n classes.push('mx-auto', 'w-full', 'max-w-screen-2xl');\n }\n return classes.join(' ');\n });\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n/**\n * Empty layout — full-viewport, flex-centered main.\n *\n * Cocok untuk halaman login / error / onboarding (pola shadcn `login-05`).\n * Konten dirender lewat `<router-outlet>`; consumer men-style card / form\n * milik halaman route sendiri.\n *\n * Markup:\n * ```html\n * <empty>\n * <!-- router-outlet dirender oleh komponen -->\n * </empty>\n * ```\n */\n@Component({\n selector: 'empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterOutlet],\n host: {\n class: 'flex min-h-dvh w-full items-center justify-center bg-background p-6 text-foreground',\n },\n template: `\n <main class=\"w-full max-w-sm\">\n <router-outlet />\n </main>\n `,\n})\nexport class EmptyLayoutComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'shell-pages',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block h-full min-h-0',\n },\n template: `\n <div class=\"flex h-full flex-col overflow-hidden\">\n <header class=\"flex h-12 min-w-0 shrink-0 items-center gap-2 border-b border-primary/30 px-2\">\n <ng-content select=\"[shell-pages-header]\" />\n </header>\n\n <main class=\"min-h-0 flex-1 overflow-y-auto scrollbar-thin scrollbar-thumb-primary scrollbar-track-primary/10\">\n <ng-content select=\"[shell-pages-main]\" />\n </main>\n\n <footer class=\"flex h-12 min-w-0 shrink-0 items-center gap-2 border-t border-primary/30 px-2\">\n <ng-content select=\"[shell-pages-footer]\" />\n </footer>\n </div>\n `,\n styles: `\n footer:empty {\n display: none;\n }\n `,\n})\nexport class ShellPagesComponent {}\n","import {\n inject,\n type EnvironmentProviders,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { THEME_PANEL_LAYOUT_PORT } from '@ojiepermana/angular/layout/component';\nimport { LayoutService } from '@ojiepermana/angular/layout/services';\nimport { MATERIAL_LAYOUT_CONFIG, type MaterialLayoutConfig } from '@ojiepermana/angular/layout/token';\n\nexport function provideMaterialLayout(config: MaterialLayoutConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: MATERIAL_LAYOUT_CONFIG, useValue: config },\n { provide: THEME_PANEL_LAYOUT_PORT, useExisting: LayoutService },\n provideEnvironmentInitializer(() => {\n inject(LayoutService);\n }),\n ]);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, effect, inject, signal } from '@angular/core';\nimport {\n DEFAULT_MATERIAL_LAYOUT_CONFIG,\n LAYOUT_WIDTHS,\n MATERIAL_LAYOUT_CONFIG,\n isLayoutMode,\n normalizeLayoutWidth,\n type LayoutMode,\n type LayoutWidth,\n type ResolvedMaterialLayoutConfig,\n} from '@ojiepermana/angular/layout/token';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutService {\n private readonly document = inject(DOCUMENT);\n private readonly config = this.resolveConfig();\n\n private readonly _mode = signal<LayoutMode>(this.readPersistedMode() ?? this.config.defaultMode);\n private readonly _width = signal<LayoutWidth>(this.readPersistedWidth() ?? this.config.defaultWidth);\n\n readonly mode = this._mode.asReadonly();\n readonly width = this._width.asReadonly();\n\n constructor() {\n effect(() => {\n this.persistMode(this._mode());\n });\n\n effect(() => {\n this.persistWidth(this._width());\n });\n }\n\n setMode(mode: LayoutMode): void {\n this._mode.set(mode);\n }\n\n toggleMode(): void {\n this._mode.update((mode) => {\n if (mode === 'vertical') {\n return 'horizontal';\n }\n\n if (mode === 'horizontal') {\n return 'vertical';\n }\n\n return 'vertical';\n });\n }\n\n setWidth(width: LayoutWidth): void {\n this._width.set(width);\n }\n\n toggleWidth(): void {\n this._width.update((width) => {\n const currentIndex = LAYOUT_WIDTHS.indexOf(width);\n return LAYOUT_WIDTHS[(currentIndex + 1) % LAYOUT_WIDTHS.length] ?? LAYOUT_WIDTHS[0];\n });\n }\n\n private resolveConfig(): ResolvedMaterialLayoutConfig {\n const config = inject(MATERIAL_LAYOUT_CONFIG, { optional: true }) ?? {};\n const configuredMode = config.mode ?? config.defaultMode;\n const configuredWidth = config.width;\n\n return {\n defaultMode: isLayoutMode(configuredMode) ? configuredMode : DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultMode,\n defaultWidth: normalizeLayoutWidth(configuredWidth) ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.defaultWidth,\n storageKey: config.storageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.storageKey,\n widthStorageKey: config.widthStorageKey ?? DEFAULT_MATERIAL_LAYOUT_CONFIG.widthStorageKey,\n };\n }\n\n private readPersistedMode(): LayoutMode | null {\n const key = this.config.storageKey;\n if (!key) return null;\n try {\n const value = this.document.defaultView?.localStorage?.getItem(key);\n return isLayoutMode(value) ? value : null;\n } catch {\n return null;\n }\n }\n\n private readPersistedWidth(): LayoutWidth | null {\n const key = this.config.widthStorageKey;\n if (!key) return null;\n try {\n const value = this.document.defaultView?.localStorage?.getItem(key);\n return normalizeLayoutWidth(value);\n } catch {\n return null;\n }\n }\n\n private persistMode(mode: LayoutMode): void {\n const key = this.config.storageKey;\n if (!key) return;\n try {\n this.document.defaultView?.localStorage?.setItem(key, mode);\n } catch {\n /* ignore */\n }\n }\n\n private persistWidth(width: LayoutWidth): void {\n const key = this.config.widthStorageKey;\n if (!key) return;\n try {\n this.document.defaultView?.localStorage?.setItem(key, width);\n } catch {\n /* ignore */\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LAYOUT_MODES = ['vertical', 'horizontal', 'empty'] as const;\n\nexport type LayoutMode = (typeof LAYOUT_MODES)[number];\n\nexport const LAYOUT_WIDTHS = ['full', 'container', 'wide'] as const;\n\nexport type LayoutWidth = (typeof LAYOUT_WIDTHS)[number];\n\n/** @deprecated Use `container` instead. */\nexport type LegacyLayoutWidth = 'fixed';\n\nexport type ConfiguredLayoutWidth = LayoutWidth | LegacyLayoutWidth;\n\nexport interface MaterialLayoutConfig {\n /** Initial layout mode. */\n readonly mode?: LayoutMode;\n /** Initial layout width. */\n readonly width?: ConfiguredLayoutWidth;\n /** @deprecated Use `mode` instead. */\n /** Initial layout mode. Defaults to `vertical`. */\n readonly defaultMode?: LayoutMode;\n /** localStorage key used to persist the layout mode. Set to `null` to disable persistence. */\n readonly storageKey?: string | null;\n /** localStorage key used to persist the layout width. Set to `null` to disable persistence. */\n readonly widthStorageKey?: string | null;\n}\n\nexport interface ResolvedMaterialLayoutConfig {\n readonly defaultMode: LayoutMode;\n readonly defaultWidth: LayoutWidth;\n readonly storageKey: string | null;\n readonly widthStorageKey: string | null;\n}\n\nexport const MATERIAL_LAYOUT_CONFIG = new InjectionToken<MaterialLayoutConfig>('MATERIAL_LAYOUT_CONFIG');\n\nexport const DEFAULT_MATERIAL_LAYOUT_CONFIG: ResolvedMaterialLayoutConfig = {\n defaultMode: 'vertical',\n defaultWidth: 'wide',\n storageKey: 'layout-mode',\n widthStorageKey: 'layout-width',\n};\n\nexport function isLayoutMode(value: string | null | undefined): value is LayoutMode {\n return LAYOUT_MODES.some((mode) => mode === value);\n}\n\nexport function isLayoutWidth(value: string | null | undefined): value is LayoutWidth {\n return LAYOUT_WIDTHS.some((width) => width === value);\n}\n\nexport function normalizeLayoutWidth(value: string | null | undefined): LayoutWidth | null {\n if (isLayoutWidth(value)) {\n return value;\n }\n\n if (value === 'fixed') {\n return 'container';\n }\n\n return null;\n}\n","import { Directive, computed, inject } from '@angular/core';\nimport {\n POPOVER_TRIGGER_DEFAULTS,\n type PopoverAlign,\n type PopoverSide,\n type PopoverTriggerDefaults,\n} from '@ojiepermana/angular/component/popover';\nimport { LayoutService } from '@ojiepermana/angular/layout/services';\n\n@Directive({\n selector: '[ui-layout-profile][uiPopoverTrigger]',\n providers: [{ provide: POPOVER_TRIGGER_DEFAULTS, useExisting: LayoutProfilePopoverDefaultsDirective }],\n})\nexport class LayoutProfilePopoverDefaultsDirective implements PopoverTriggerDefaults {\n private readonly layout = inject(LayoutService);\n\n readonly side = computed<PopoverSide>(() => (this.layout.mode() === 'horizontal' ? 'bottom' : 'right'));\n readonly align = computed<PopoverAlign>(() => 'end');\n readonly sideOffset = computed(() => (this.layout.mode() === 'horizontal' ? -20 : 12));\n}\n","/*\n * Public API Surface of @ojiepermana/angular/layout\n */\n\nexport * from './vertical/public-api';\nexport * from './horizontal/public-api';\nexport * from './empty/public-api';\nexport * from './shell/public-api';\nexport * from './provider/public-api';\nexport * from './services/public-api';\nexport * from './token/public-api';\nexport * from './token/directive/public-api';\n\nexport const LAYOUT_VERSION = '0.0.1';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LayoutService","MATERIAL_LAYOUT_CONFIG","LAYOUT_WIDTHS","isLayoutMode","DEFAULT_MATERIAL_LAYOUT_CONFIG","normalizeLayoutWidth"],"mappings":"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"}