@ojiepermana/angular 22.1.10 → 22.1.12

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 (340) hide show
  1. package/README.md +32 -26
  2. package/chart/README.md +272 -0
  3. package/component/README.md +89 -0
  4. package/component/accordion/README.md +195 -0
  5. package/component/alert/README.md +184 -0
  6. package/component/alert-dialog/README.md +255 -0
  7. package/component/aspect-ratio/README.md +116 -0
  8. package/component/avatar/README.md +182 -0
  9. package/component/badge/README.md +143 -0
  10. package/component/breadcrumb/README.md +223 -0
  11. package/component/button/README.md +141 -0
  12. package/component/button-group/README.md +214 -0
  13. package/component/calendar/README.md +137 -0
  14. package/component/card/README.md +232 -0
  15. package/component/carousel/README.md +276 -0
  16. package/component/checkbox/README.md +153 -0
  17. package/component/collapsible/README.md +216 -0
  18. package/component/combobox/README.md +202 -0
  19. package/component/command/README.md +287 -0
  20. package/component/composer/README.md +241 -0
  21. package/component/context-menu/README.md +268 -0
  22. package/component/date-picker/README.md +202 -0
  23. package/component/dialog/README.md +276 -0
  24. package/component/drawer/README.md +147 -0
  25. package/component/dropdown-menu/README.md +336 -0
  26. package/component/editor/README.md +152 -0
  27. package/component/empty/README.md +193 -0
  28. package/component/form/README.md +216 -0
  29. package/component/hover-card/README.md +150 -0
  30. package/component/icon/README.md +25 -0
  31. package/component/input/README.md +160 -0
  32. package/component/input-group/README.md +245 -0
  33. package/component/input-otp/README.md +331 -0
  34. package/component/item/README.md +254 -0
  35. package/component/kanban/README.md +81 -0
  36. package/component/kbd/README.md +141 -0
  37. package/component/label/README.md +137 -0
  38. package/component/menubar/README.md +270 -0
  39. package/component/native-select/README.md +176 -0
  40. package/component/navigation-menu/README.md +165 -0
  41. package/component/pagination/README.md +151 -0
  42. package/component/pillbox/README.md +68 -0
  43. package/component/popover/README.md +54 -0
  44. package/component/progress/README.md +160 -0
  45. package/component/radio/README.md +212 -0
  46. package/component/resizable/README.md +178 -0
  47. package/component/scroll-area/README.md +150 -0
  48. package/component/select/README.md +228 -0
  49. package/component/separator/README.md +175 -0
  50. package/component/sheet/README.md +190 -0
  51. package/component/skeleton/README.md +158 -0
  52. package/component/slider/README.md +207 -0
  53. package/component/spinner/README.md +160 -0
  54. package/component/switch/README.md +170 -0
  55. package/component/table/README.md +292 -0
  56. package/component/tabs/README.md +220 -0
  57. package/component/textarea/README.md +169 -0
  58. package/component/timeline/README.md +94 -0
  59. package/component/toast/README.md +173 -0
  60. package/component/toggle/README.md +133 -0
  61. package/component/toggle-group/README.md +234 -0
  62. package/component/tooltip/README.md +230 -0
  63. package/fesm2022/ojiepermana-angular-chart-area.mjs +289 -3
  64. package/fesm2022/ojiepermana-angular-chart-bar.mjs +722 -3
  65. package/fesm2022/ojiepermana-angular-chart-core.mjs +1482 -3
  66. package/fesm2022/ojiepermana-angular-chart-line.mjs +294 -3
  67. package/fesm2022/ojiepermana-angular-chart-pie.mjs +291 -3
  68. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1301 -3
  69. package/fesm2022/ojiepermana-angular-chart-radar.mjs +421 -3
  70. package/fesm2022/ojiepermana-angular-chart-radial.mjs +295 -3
  71. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +306 -3
  72. package/fesm2022/ojiepermana-angular-chart.mjs +12 -3
  73. package/fesm2022/ojiepermana-angular-component-accordion.mjs +267 -3
  74. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +359 -3
  75. package/fesm2022/ojiepermana-angular-component-alert.mjs +101 -3
  76. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +31 -3
  77. package/fesm2022/ojiepermana-angular-component-avatar.mjs +139 -3
  78. package/fesm2022/ojiepermana-angular-component-badge.mjs +57 -3
  79. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +192 -3
  80. package/fesm2022/ojiepermana-angular-component-button-group.mjs +95 -3
  81. package/fesm2022/ojiepermana-angular-component-button.mjs +73 -3
  82. package/fesm2022/ojiepermana-angular-component-calendar.mjs +718 -3
  83. package/fesm2022/ojiepermana-angular-component-card.mjs +167 -3
  84. package/fesm2022/ojiepermana-angular-component-carousel.mjs +326 -3
  85. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +190 -3
  86. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +117 -3
  87. package/fesm2022/ojiepermana-angular-component-combobox.mjs +327 -3
  88. package/fesm2022/ojiepermana-angular-component-command.mjs +351 -3
  89. package/fesm2022/ojiepermana-angular-component-composer.mjs +359 -3
  90. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +158 -3
  91. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +482 -3
  92. package/fesm2022/ojiepermana-angular-component-dialog.mjs +400 -3
  93. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -3
  94. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +689 -3
  95. package/fesm2022/ojiepermana-angular-component-editor.mjs +511 -3
  96. package/fesm2022/ojiepermana-angular-component-empty.mjs +134 -3
  97. package/fesm2022/ojiepermana-angular-component-form.mjs +438 -3
  98. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +273 -3
  99. package/fesm2022/ojiepermana-angular-component-icon.mjs +139 -3
  100. package/fesm2022/ojiepermana-angular-component-input-group.mjs +176 -3
  101. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +550 -3
  102. package/fesm2022/ojiepermana-angular-component-input.mjs +52 -3
  103. package/fesm2022/ojiepermana-angular-component-item.mjs +264 -3
  104. package/fesm2022/ojiepermana-angular-component-kanban.mjs +310 -3
  105. package/fesm2022/ojiepermana-angular-component-kbd.mjs +48 -3
  106. package/fesm2022/ojiepermana-angular-component-label.mjs +27 -3
  107. package/fesm2022/ojiepermana-angular-component-menubar.mjs +327 -3
  108. package/fesm2022/ojiepermana-angular-component-native-select.mjs +62 -3
  109. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +378 -3
  110. package/fesm2022/ojiepermana-angular-component-pagination.mjs +238 -3
  111. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +999 -3
  112. package/fesm2022/ojiepermana-angular-component-popover.mjs +201 -3
  113. package/fesm2022/ojiepermana-angular-component-progress.mjs +57 -3
  114. package/fesm2022/ojiepermana-angular-component-radio.mjs +180 -3
  115. package/fesm2022/ojiepermana-angular-component-resizable.mjs +493 -3
  116. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +51 -3
  117. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +227 -3
  118. package/fesm2022/ojiepermana-angular-component-select.mjs +609 -3
  119. package/fesm2022/ojiepermana-angular-component-separator.mjs +31 -3
  120. package/fesm2022/ojiepermana-angular-component-sheet.mjs +407 -3
  121. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +25 -3
  122. package/fesm2022/ojiepermana-angular-component-slider.mjs +456 -3
  123. package/fesm2022/ojiepermana-angular-component-spinner.mjs +56 -3
  124. package/fesm2022/ojiepermana-angular-component-switch.mjs +145 -3
  125. package/fesm2022/ojiepermana-angular-component-table.mjs +155 -3
  126. package/fesm2022/ojiepermana-angular-component-tabs.mjs +315 -3
  127. package/fesm2022/ojiepermana-angular-component-textarea.mjs +46 -3
  128. package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -3
  129. package/fesm2022/ojiepermana-angular-component-toast.mjs +241 -3
  130. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +290 -3
  131. package/fesm2022/ojiepermana-angular-component-toggle.mjs +76 -3
  132. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +519 -3
  133. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +310 -3
  134. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +62 -3
  135. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +34 -3
  136. package/fesm2022/ojiepermana-angular-component-utils.mjs +3 -2
  137. package/fesm2022/ojiepermana-angular-component.mjs +4 -4
  138. package/fesm2022/ojiepermana-angular-navigation-core.mjs +21 -3
  139. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +20 -3
  140. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +91 -0
  141. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +512 -0
  142. package/fesm2022/ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs +623 -0
  143. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +404 -0
  144. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +466 -0
  145. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +2642 -0
  146. package/fesm2022/ojiepermana-angular-navigation-service.mjs +725 -3
  147. package/fesm2022/ojiepermana-angular-navigation-types.mjs +65 -4
  148. package/fesm2022/ojiepermana-angular-navigation.mjs +4 -10
  149. package/fesm2022/ojiepermana-angular-sdk.mjs +204 -4
  150. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1387 -3
  151. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +331 -3
  152. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +45 -4
  153. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1044 -3
  154. package/fesm2022/ojiepermana-angular-theme-layout.mjs +729 -3
  155. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +381 -3
  156. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +267 -3
  157. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +361 -3
  158. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +198 -3
  159. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +110 -3
  160. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -2
  161. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +338 -3
  162. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +160 -4
  163. package/fesm2022/ojiepermana-angular-theme-shell.mjs +811 -3
  164. package/fesm2022/ojiepermana-angular-theme-styles.mjs +783 -3
  165. package/fesm2022/ojiepermana-angular-theme.mjs +4 -4
  166. package/fesm2022/ojiepermana-angular.mjs +6 -11
  167. package/navigation/README.md +374 -0
  168. package/package.json +81 -20
  169. package/sdk/README.md +212 -0
  170. package/sdk/schematics/collection.json +20 -0
  171. package/sdk/schematics/init/index.js +83 -0
  172. package/sdk/schematics/init/schema.json +19 -0
  173. package/sdk/schematics/ng-add/index.js +147 -0
  174. package/sdk/schematics/ng-add/schema.json +14 -0
  175. package/sdk/schematics/package.json +3 -0
  176. package/sdk/schematics/sdk/index.js +175 -0
  177. package/sdk/schematics/sdk/schema.json +19 -0
  178. package/sdk/sdk.config.example.json +24 -0
  179. package/sdk/src/config/loader.js +43 -0
  180. package/sdk/src/config/schema.js +59 -0
  181. package/sdk/src/emit/client.js +251 -0
  182. package/sdk/src/emit/metadata.js +310 -0
  183. package/sdk/src/emit/models.js +104 -0
  184. package/sdk/src/emit/navigation.js +56 -0
  185. package/sdk/src/emit/operations.js +118 -0
  186. package/sdk/src/emit/public-api.js +54 -0
  187. package/sdk/src/emit/services.js +110 -0
  188. package/sdk/src/engine.js +67 -0
  189. package/sdk/src/layout/per-domain.js +360 -0
  190. package/sdk/src/package.json +3 -0
  191. package/sdk/src/parser/bundle.js +25 -0
  192. package/sdk/src/parser/ir.js +429 -0
  193. package/sdk/src/parser/types.js +7 -0
  194. package/sdk/src/render/template.js +152 -0
  195. package/sdk/src/writer/index.js +286 -0
  196. package/theme/README.md +126 -0
  197. package/theme/component/settings/README.md +135 -0
  198. package/theme/layout/README.md +539 -0
  199. package/theme/page/README.md +453 -0
  200. package/theme/shell/README.md +340 -0
  201. package/theme/styles/README.md +178 -0
  202. package/theme/styles/css/base/components.css +553 -0
  203. package/theme/styles/css/base/index.css +14 -0
  204. package/theme/styles/css/base/package.css +9 -0
  205. package/theme/styles/css/base/prefers-dark.css +86 -0
  206. package/theme/styles/css/base/print.css +62 -0
  207. package/theme/styles/css/base/status.css +38 -0
  208. package/theme/styles/css/base/tailwind.css +165 -0
  209. package/theme/styles/css/base/theme.css +373 -0
  210. package/theme/styles/css/base/tokens.css +361 -0
  211. package/theme/styles/css/color/amber.css +72 -0
  212. package/theme/styles/css/color/blue.css +72 -0
  213. package/theme/styles/css/color/brand.css +38 -0
  214. package/theme/styles/css/color/cyan.css +72 -0
  215. package/theme/styles/css/color/emerald.css +72 -0
  216. package/theme/styles/css/color/fuchsia.css +72 -0
  217. package/theme/styles/css/color/green.css +72 -0
  218. package/theme/styles/css/color/index.css +19 -0
  219. package/theme/styles/css/color/indigo.css +72 -0
  220. package/theme/styles/css/color/lime.css +72 -0
  221. package/theme/styles/css/color/orange.css +72 -0
  222. package/theme/styles/css/color/pink.css +72 -0
  223. package/theme/styles/css/color/purple.css +72 -0
  224. package/theme/styles/css/color/red.css +72 -0
  225. package/theme/styles/css/color/rose.css +72 -0
  226. package/theme/styles/css/color/sky.css +72 -0
  227. package/theme/styles/css/color/teal.css +72 -0
  228. package/theme/styles/css/color/violet.css +72 -0
  229. package/theme/styles/css/color/yellow.css +72 -0
  230. package/theme/styles/css/index.css +18 -0
  231. package/theme/styles/css/neutral/gray.css +63 -0
  232. package/theme/styles/css/neutral/index.css +11 -0
  233. package/theme/styles/css/neutral/mauve.css +63 -0
  234. package/theme/styles/css/neutral/mist.css +63 -0
  235. package/theme/styles/css/neutral/neutral.css +63 -0
  236. package/theme/styles/css/neutral/olive.css +63 -0
  237. package/theme/styles/css/neutral/slate.css +63 -0
  238. package/theme/styles/css/neutral/stone.css +63 -0
  239. package/theme/styles/css/neutral/taupe.css +63 -0
  240. package/theme/styles/css/neutral/zinc.css +63 -0
  241. package/theme/styles/css/radius/index.css +30 -0
  242. package/theme/styles/css/space/index.css +20 -0
  243. package/types/ojiepermana-angular-chart-area.d.ts +76 -1
  244. package/types/ojiepermana-angular-chart-bar.d.ts +201 -1
  245. package/types/ojiepermana-angular-chart-core.d.ts +811 -1
  246. package/types/ojiepermana-angular-chart-line.d.ts +75 -1
  247. package/types/ojiepermana-angular-chart-pie.d.ts +131 -1
  248. package/types/ojiepermana-angular-chart-primitives.d.ts +291 -1
  249. package/types/ojiepermana-angular-chart-radar.d.ts +116 -1
  250. package/types/ojiepermana-angular-chart-radial.d.ts +116 -1
  251. package/types/ojiepermana-angular-chart-scatter.d.ts +125 -1
  252. package/types/ojiepermana-angular-chart.d.ts +2 -1
  253. package/types/ojiepermana-angular-component-accordion.d.ts +85 -1
  254. package/types/ojiepermana-angular-component-alert-dialog.d.ts +140 -1
  255. package/types/ojiepermana-angular-component-alert.d.ts +42 -1
  256. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +12 -1
  257. package/types/ojiepermana-angular-component-avatar.d.ts +56 -1
  258. package/types/ojiepermana-angular-component-badge.d.ts +24 -1
  259. package/types/ojiepermana-angular-component-breadcrumb.d.ts +46 -1
  260. package/types/ojiepermana-angular-component-button-group.d.ts +26 -1
  261. package/types/ojiepermana-angular-component-button.d.ts +27 -1
  262. package/types/ojiepermana-angular-component-calendar.d.ts +111 -1
  263. package/types/ojiepermana-angular-component-card.d.ts +69 -1
  264. package/types/ojiepermana-angular-component-carousel.d.ts +86 -1
  265. package/types/ojiepermana-angular-component-checkbox.d.ts +42 -1
  266. package/types/ojiepermana-angular-component-collapsible.d.ts +42 -1
  267. package/types/ojiepermana-angular-component-combobox.d.ts +60 -1
  268. package/types/ojiepermana-angular-component-command.d.ts +130 -1
  269. package/types/ojiepermana-angular-component-composer.d.ts +90 -1
  270. package/types/ojiepermana-angular-component-context-menu.d.ts +54 -1
  271. package/types/ojiepermana-angular-component-date-picker.d.ts +109 -1
  272. package/types/ojiepermana-angular-component-dialog.d.ts +136 -1
  273. package/types/ojiepermana-angular-component-drawer.d.ts +1 -1
  274. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +248 -1
  275. package/types/ojiepermana-angular-component-editor.d.ts +135 -1
  276. package/types/ojiepermana-angular-component-empty.d.ts +50 -1
  277. package/types/ojiepermana-angular-component-form.d.ts +159 -1
  278. package/types/ojiepermana-angular-component-hover-card.d.ts +75 -1
  279. package/types/ojiepermana-angular-component-icon.d.ts +89 -1
  280. package/types/ojiepermana-angular-component-input-group.d.ts +51 -1
  281. package/types/ojiepermana-angular-component-input-otp.d.ts +155 -1
  282. package/types/ojiepermana-angular-component-input.d.ts +21 -1
  283. package/types/ojiepermana-angular-component-item.d.ts +93 -1
  284. package/types/ojiepermana-angular-component-kanban.d.ts +70 -1
  285. package/types/ojiepermana-angular-component-kbd.d.ts +16 -1
  286. package/types/ojiepermana-angular-component-label.d.ts +11 -1
  287. package/types/ojiepermana-angular-component-menubar.d.ts +93 -1
  288. package/types/ojiepermana-angular-component-native-select.d.ts +26 -1
  289. package/types/ojiepermana-angular-component-navigation-menu.d.ts +104 -1
  290. package/types/ojiepermana-angular-component-pagination.d.ts +33 -1
  291. package/types/ojiepermana-angular-component-pillbox.d.ts +222 -1
  292. package/types/ojiepermana-angular-component-popover.d.ts +66 -1
  293. package/types/ojiepermana-angular-component-progress.d.ts +17 -1
  294. package/types/ojiepermana-angular-component-radio.d.ts +60 -1
  295. package/types/ojiepermana-angular-component-resizable.d.ts +117 -1
  296. package/types/ojiepermana-angular-component-scroll-area.d.ts +19 -1
  297. package/types/ojiepermana-angular-component-segmented-control.d.ts +58 -1
  298. package/types/ojiepermana-angular-component-select.d.ts +122 -1
  299. package/types/ojiepermana-angular-component-separator.d.ts +14 -1
  300. package/types/ojiepermana-angular-component-sheet.d.ts +130 -1
  301. package/types/ojiepermana-angular-component-skeleton.d.ts +10 -1
  302. package/types/ojiepermana-angular-component-slider.d.ts +83 -1
  303. package/types/ojiepermana-angular-component-spinner.d.ts +13 -1
  304. package/types/ojiepermana-angular-component-switch.d.ts +44 -1
  305. package/types/ojiepermana-angular-component-table.d.ts +57 -1
  306. package/types/ojiepermana-angular-component-tabs.d.ts +124 -1
  307. package/types/ojiepermana-angular-component-textarea.d.ts +17 -1
  308. package/types/ojiepermana-angular-component-timeline.d.ts +64 -1
  309. package/types/ojiepermana-angular-component-toast.d.ts +64 -1
  310. package/types/ojiepermana-angular-component-toggle-group.d.ts +90 -1
  311. package/types/ojiepermana-angular-component-toggle.d.ts +25 -1
  312. package/types/ojiepermana-angular-component-tooltip.d.ts +143 -1
  313. package/types/ojiepermana-angular-component-utils-core.d.ts +184 -1
  314. package/types/ojiepermana-angular-component-utils-overlay.d.ts +21 -1
  315. package/types/ojiepermana-angular-component-utils-scale.d.ts +19 -1
  316. package/types/ojiepermana-angular-component-utils.d.ts +2 -1
  317. package/types/ojiepermana-angular-component.d.ts +2 -1
  318. package/types/ojiepermana-angular-navigation-core.d.ts +59 -1
  319. package/types/ojiepermana-angular-navigation-icon.d.ts +12 -1
  320. package/types/ojiepermana-angular-navigation-service.d.ts +116 -1
  321. package/types/ojiepermana-angular-navigation-types.d.ts +144 -1
  322. package/types/ojiepermana-angular-navigation.d.ts +507 -1
  323. package/types/ojiepermana-angular-sdk.d.ts +89 -1
  324. package/types/ojiepermana-angular-theme-component-settings.d.ts +154 -1
  325. package/types/ojiepermana-angular-theme-layout-services.d.ts +147 -1
  326. package/types/ojiepermana-angular-theme-layout-types.d.ts +40 -1
  327. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +299 -1
  328. package/types/ojiepermana-angular-theme-layout.d.ts +129 -1
  329. package/types/ojiepermana-angular-theme-page-core.d.ts +157 -1
  330. package/types/ojiepermana-angular-theme-page-filter.d.ts +77 -1
  331. package/types/ojiepermana-angular-theme-page-root.d.ts +88 -1
  332. package/types/ojiepermana-angular-theme-page-side.d.ts +50 -1
  333. package/types/ojiepermana-angular-theme-page-slots.d.ts +40 -1
  334. package/types/ojiepermana-angular-theme-page.d.ts +5 -1
  335. package/types/ojiepermana-angular-theme-shell-services.d.ts +193 -1
  336. package/types/ojiepermana-angular-theme-shell-types.d.ts +105 -1
  337. package/types/ojiepermana-angular-theme-shell.d.ts +100 -1
  338. package/types/ojiepermana-angular-theme-styles.d.ts +319 -1
  339. package/types/ojiepermana-angular-theme.d.ts +2 -1
  340. package/types/ojiepermana-angular.d.ts +5 -5
@@ -1 +1,154 @@
1
- export * from '@ojiepermana/angular-theme/component/settings';
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, Signal, Provider, EnvironmentProviders } from '@angular/core';
3
+ import * as _ojiepermana_angular_theme_component_settings from '@ojiepermana/angular/theme/component/settings';
4
+ import { DrawerSide } from '@ojiepermana/angular/component/drawer';
5
+ import { LayoutAppearance, LayoutSurface, LayoutType, LayoutWidth } from '@ojiepermana/angular/theme/layout/types';
6
+ import { NavigationType } from '@ojiepermana/angular/navigation/types';
7
+ import { ShellMode } from '@ojiepermana/angular/theme/shell/types';
8
+
9
+ /** Native control styling exposed by the settings trigger. */
10
+ type ThemeSettingsTrigger = 'button' | 'link';
11
+ /** A navigation-aligned, right-side inspector for runtime theme and shell settings. */
12
+ declare class ThemeSettingsComponent {
13
+ /**
14
+ * Present only when the app provided an adapter. It is a render gate here: the
15
+ * Layout and Navigation sections inject the token non-optionally, so a
16
+ * theme-only consumer simply gets the Theme and Shell sections.
17
+ */
18
+ protected readonly settings: _ojiepermana_angular_theme_component_settings.ThemeSettingsAdapter | null;
19
+ readonly open: _angular_core.ModelSignal<boolean>;
20
+ readonly trigger: _angular_core.InputSignal<ThemeSettingsTrigger>;
21
+ readonly triggerLabel: _angular_core.InputSignal<string>;
22
+ readonly triggerIconOnly: _angular_core.InputSignal<boolean>;
23
+ readonly showTrigger: _angular_core.InputSignal<boolean>;
24
+ readonly side: _angular_core.InputSignal<DrawerSide>;
25
+ readonly class: _angular_core.InputSignal<string>;
26
+ protected readonly triggerClasses: _angular_core.Signal<string>;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeSettingsComponent, never>;
28
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeSettingsComponent, "ThemeSettings", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "triggerIconOnly": { "alias": "trigger-icon-only"; "required": false; "isSignal": true; }; "showTrigger": { "alias": "show-trigger"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, never, true, never>;
29
+ }
30
+
31
+ /**
32
+ * Navigation choices exposed by an application shell.
33
+ *
34
+ * `desktop` is intentionally not part of the navigation primitive's
35
+ * `NavigationType`: it does not register a fifth navigation renderer. It tells
36
+ * the horizontal desktop shell to use its native titlebar and render the
37
+ * content-focused path used by an empty layout.
38
+ */
39
+ type ThemeSettingsNavigationType = NavigationType | 'desktop';
40
+ /**
41
+ * The presentation modes meaningful to the currently selected navigation type.
42
+ * Sidebar uses `default`/`collapsed`; dockbar uses `default` (sticky) / `drawer`.
43
+ */
44
+ type ThemeSettingsNavigationMode = 'default' | 'collapsed' | 'drawer';
45
+ /**
46
+ * Optional consumer bridge for the layout and navigation portions of
47
+ * `ThemeSettings`. Keeping this contract at the edge lets the component remain
48
+ * portable: theme-only consumers do not need to provide application shell state.
49
+ */
50
+ interface ThemeSettingsAdapter {
51
+ readonly appearance: Signal<LayoutAppearance>;
52
+ readonly surface: Signal<LayoutSurface>;
53
+ readonly layoutType: Signal<LayoutType>;
54
+ readonly width: Signal<LayoutWidth>;
55
+ readonly navType: Signal<ThemeSettingsNavigationType>;
56
+ readonly navTypeMode: Signal<ThemeSettingsNavigationMode>;
57
+ setAppearance(value: LayoutAppearance): void;
58
+ setSurface(value: LayoutSurface): void;
59
+ setLayoutType(value: LayoutType): void;
60
+ setWidth(value: LayoutWidth): void;
61
+ setNavType(value: ThemeSettingsNavigationType): void;
62
+ setNavTypeMode(value: ThemeSettingsNavigationMode): void;
63
+ }
64
+ /** Provide this from an application's persisted layout-settings facade. */
65
+ declare const THEME_SETTINGS_ADAPTER: InjectionToken<ThemeSettingsAdapter>;
66
+
67
+ /** Storage key for the persisted navigation type. Owned by the package. */
68
+ declare const NAV_TYPE_STORAGE_KEY = "nav-type";
69
+ /** Storage key for the persisted navigation presentation mode. Owned by the package. */
70
+ declare const NAV_TYPE_MODE_STORAGE_KEY = "nav-type-mode";
71
+ /**
72
+ * Nav types valid for a layout/shell pair — mirrors `LayoutWrapperDefault`
73
+ * (`navbar`/`flyout` → web horizontal, `sidebar`/`dockbar` → vertical).
74
+ * A desktop-mode horizontal shell owns exactly one navigation shape: `desktop`.
75
+ * `empty` and `fluid` shells are brand-only, so no nav type applies.
76
+ */
77
+ declare function allowedNavTypes(layoutType: LayoutType, shellMode: ShellMode): readonly ThemeSettingsNavigationType[];
78
+ /**
79
+ * Presentation modes meaningful to a navigation type: sidebar collapses, dockbar
80
+ * turns into a drawer, and every other type has one presentation only.
81
+ */
82
+ declare function allowedNavTypeModes(navType: ThemeSettingsNavigationType): readonly ThemeSettingsNavigationMode[];
83
+ /** `fluid` width only has an effect when the layout type is also `fluid`. */
84
+ declare function isWidthEnabled(layoutType: LayoutType, width: LayoutWidth): boolean;
85
+ /**
86
+ * Default `ThemeSettingsAdapter`: the axis coherence rules that make runtime
87
+ * layout and navigation switching safe, published so every consumer shares one
88
+ * tested implementation instead of copying it.
89
+ *
90
+ * - `surface` / `appearance` / `width` delegate to the library `LayoutService`
91
+ * (already reactive and persisted, with no nav-derived override to drift from).
92
+ * - `layoutType` / `navType` / `navTypeMode` are owned here: `<Layout>` writes
93
+ * `type` back to the service (`persist: false`) to follow nav orientation, so
94
+ * reading `layout.type()` would drift from the operator's choice. Nav type is
95
+ * not `LayoutService` territory at all.
96
+ *
97
+ * Incoherent axis pairs auto-correct, so the shell never renders an impossible
98
+ * state. Only presentation choices are stored, never identity or session data,
99
+ * and storage that is unavailable or holds a foreign value falls back to the
100
+ * default without throwing.
101
+ *
102
+ * Install with {@link provideThemeSettingsAdapter}.
103
+ */
104
+ declare class ThemeSettingsDefaultAdapter implements ThemeSettingsAdapter {
105
+ private readonly platformId;
106
+ private readonly storage;
107
+ private readonly layout;
108
+ private readonly shell;
109
+ readonly surface: _angular_core.Signal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
110
+ readonly appearance: _angular_core.Signal<"flat" | "border-rail">;
111
+ readonly width: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
112
+ private readonly layoutTypeState;
113
+ private readonly navTypeState;
114
+ private readonly navTypeModeState;
115
+ readonly layoutType: _angular_core.Signal<"vertical" | "horizontal" | "empty" | "fluid">;
116
+ readonly navType: _angular_core.Signal<ThemeSettingsNavigationType>;
117
+ readonly navTypeMode: _angular_core.Signal<ThemeSettingsNavigationMode>;
118
+ /** Shell mode the nav-type constraints are resolved against. */
119
+ readonly shellMode: _angular_core.Signal<"desktop" | "web" | "tablet" | "mobile">;
120
+ constructor();
121
+ setSurface(surface: LayoutSurface): void;
122
+ setAppearance(appearance: LayoutAppearance): void;
123
+ setWidth(width: LayoutWidth): void;
124
+ setLayoutType(type: LayoutType): void;
125
+ setNavType(type: ThemeSettingsNavigationType): void;
126
+ setNavTypeMode(mode: ThemeSettingsNavigationMode): void;
127
+ /**
128
+ * Auto-correct the lower-priority axes a layout type invalidates, so the
129
+ * rendered shell never lands in an inconsistent state (e.g. `vertical` +
130
+ * `navbar`). Idempotent — only writes when a value is actually out of range.
131
+ */
132
+ private enforceConstraints;
133
+ private enforceNavTypeMode;
134
+ private readStoredNavType;
135
+ private readStoredNavTypeMode;
136
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeSettingsDefaultAdapter, never>;
137
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeSettingsDefaultAdapter>;
138
+ }
139
+ /**
140
+ * Install the published {@link ThemeSettingsDefaultAdapter} on
141
+ * `THEME_SETTINGS_ADAPTER`, which turns on the layout and navigation sections of
142
+ * `<ThemeSettings>`:
143
+ *
144
+ * ```ts
145
+ * providers: [provideThemeSettingsAdapter()];
146
+ * ```
147
+ *
148
+ * Additive: consumers that provide their own adapter, or none at all, are
149
+ * unaffected.
150
+ */
151
+ declare function provideThemeSettingsAdapter(): (Provider | EnvironmentProviders)[];
152
+
153
+ export { NAV_TYPE_MODE_STORAGE_KEY, NAV_TYPE_STORAGE_KEY, THEME_SETTINGS_ADAPTER, ThemeSettingsComponent, ThemeSettingsDefaultAdapter, allowedNavTypeModes, allowedNavTypes, isWidthEnabled, provideThemeSettingsAdapter };
154
+ export type { ThemeSettingsAdapter, ThemeSettingsNavigationMode, ThemeSettingsNavigationType, ThemeSettingsTrigger };
@@ -1 +1,147 @@
1
- export * from '@ojiepermana/angular-theme/layout/services';
1
+ import * as _angular_core from '@angular/core';
2
+ import { LayoutSurface, LayoutAppearance, LayoutType, LayoutWidth } from '@ojiepermana/angular/theme/layout/types';
3
+ import { HttpContextToken, HttpInterceptorFn } from '@angular/common/http';
4
+
5
+ interface LayoutMutationOptions {
6
+ persist?: boolean;
7
+ }
8
+ declare class LayoutService {
9
+ private readonly platformId;
10
+ private readonly storage;
11
+ private readonly shell;
12
+ private readonly surfaceState;
13
+ private readonly typeState;
14
+ private readonly appearanceState;
15
+ private readonly widthState;
16
+ readonly surface: _angular_core.Signal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
17
+ readonly type: _angular_core.Signal<"vertical" | "horizontal" | "empty" | "fluid">;
18
+ readonly appearance: _angular_core.Signal<"flat" | "border-rail">;
19
+ /**
20
+ * `true` on every shell mode but `web`. An app that owns its whole surface has
21
+ * no page to be inset within, so the width axis is not the user's to choose
22
+ * there — see {@link LAYOUT_LOCKED_WIDTH}.
23
+ */
24
+ readonly widthLocked: _angular_core.Signal<boolean>;
25
+ /**
26
+ * The width in effect. While `widthLocked()`, this reports the locked width and
27
+ * `widthState` keeps the user's own choice aside, so returning to `web` restores
28
+ * it instead of silently flattening it to `full`.
29
+ */
30
+ readonly width: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
31
+ /** The stored preference, ignoring the lock. */
32
+ readonly preferredWidth: _angular_core.Signal<"fluid" | "full" | "wide" | "container">;
33
+ /**
34
+ * Seed several axes at once. See {@link registerSurface} for what "register"
35
+ * means here — an omitted axis is left exactly as it was.
36
+ */
37
+ registerDefaults(defaults: {
38
+ surface?: LayoutSurface;
39
+ appearance?: LayoutAppearance;
40
+ type?: LayoutType;
41
+ width?: LayoutWidth;
42
+ }): this;
43
+ /**
44
+ * Seed the axis with a default, unless the user already stored a choice of
45
+ * their own — that one always wins.
46
+ *
47
+ * Registering deliberately does NOT persist. Storage is the record of what the
48
+ * USER picked, and writing a seeded default into it would make the two
49
+ * indistinguishable: a bare `<Layout>` would record a library default nobody
50
+ * asked for, and neither the library nor the consumer could ever change their
51
+ * own default again for anyone who had merely rendered the component once.
52
+ * Only {@link setSurface} and its siblings — the settings UI — write.
53
+ */
54
+ registerSurface(surface: LayoutSurface): void;
55
+ /** Seeds the axis without persisting — see {@link registerSurface}. */
56
+ registerType(type: LayoutType): void;
57
+ /** Seeds the axis without persisting — see {@link registerSurface}. */
58
+ registerAppearance(appearance: LayoutAppearance): void;
59
+ /** Seeds the axis without persisting — see {@link registerSurface}. */
60
+ registerWidth(width: LayoutWidth): void;
61
+ setSurface(surface: LayoutSurface, options?: LayoutMutationOptions): void;
62
+ setType(type: LayoutType, options?: LayoutMutationOptions): void;
63
+ setAppearance(appearance: LayoutAppearance, options?: LayoutMutationOptions): void;
64
+ setWidth(width: LayoutWidth, options?: LayoutMutationOptions): void;
65
+ getStoredSurface(): LayoutSurface;
66
+ getStoredType(): LayoutType;
67
+ getStoredAppearance(): LayoutAppearance;
68
+ getStoredWidth(): LayoutWidth;
69
+ private readStoredAppearance;
70
+ private getStoredAppearanceOrDefault;
71
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutService, never>;
72
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
73
+ }
74
+
75
+ /** Progress the bar starts at, so the line is visibly moving the moment it appears. */
76
+ declare const LAYOUT_LOADING_INITIAL_PROGRESS = 8;
77
+ /** Batas atas progres trickle; sisanya menunggu seluruh pekerjaan selesai. */
78
+ declare const LAYOUT_LOADING_TRICKLE_CEILING = 90;
79
+ /** How often the trickle raises progress while work is still outstanding. */
80
+ declare const LAYOUT_LOADING_TRICKLE_INTERVAL_MS = 250;
81
+ /** Delay after progress reaches 100% before the bar is hidden, so the finish reads. */
82
+ declare const LAYOUT_LOADING_HIDE_DELAY_MS = 200;
83
+ /**
84
+ * Global loading tracker behind the progress line at the top of the viewport.
85
+ *
86
+ * It turns on by itself when the router starts a navigation and while an HTTP
87
+ * request runs through `layoutLoadingInterceptor`. Any other source — a manual
88
+ * data load, say — can join in through the ref-counted `start()`/`done()` pair.
89
+ */
90
+ declare class LayoutLoadingService {
91
+ private readonly platformId;
92
+ private readonly router;
93
+ private readonly pendingCount;
94
+ private readonly activeState;
95
+ private readonly progressState;
96
+ /** The bar is on screen, including the short finish to 100%. */
97
+ readonly active: _angular_core.Signal<boolean>;
98
+ /** Progres garis 0–100. */
99
+ readonly progress: _angular_core.Signal<number>;
100
+ /** Work (a navigation, a request, a data load) is still outstanding. */
101
+ readonly pending: _angular_core.Signal<boolean>;
102
+ private readonly hostRegistry;
103
+ /**
104
+ * The earliest registered `LayoutLoading` host, which is the one that draws the
105
+ * bar. Every other instance — the one inside `Layout` when the app root also
106
+ * mounts `LayoutLoading` — goes inert, so the line is never drawn twice.
107
+ */
108
+ readonly primaryHostId: _angular_core.Signal<number>;
109
+ private trickleTimer;
110
+ private hideTimer;
111
+ private navigationPending;
112
+ private nextHostId;
113
+ constructor();
114
+ /** Mark one unit of work started; the bar appears with the first one. */
115
+ start(): void;
116
+ /** Mark one unit of work finished; the bar completes when the count returns to zero. */
117
+ done(): void;
118
+ /** Register one `LayoutLoading` host; returns the id used to unregister it. */
119
+ registerHost(): number;
120
+ /** Release a host; the next registered one becomes primary on its own. */
121
+ unregisterHost(hostId: number): void;
122
+ /** Force the progress value (0–100) while the bar is active, e.g. for a large upload. */
123
+ setProgress(value: number): void;
124
+ private observeRouterNavigation;
125
+ private show;
126
+ private finish;
127
+ private hide;
128
+ private startTrickle;
129
+ private stopTrickle;
130
+ private cancelScheduledHide;
131
+ private isBrowser;
132
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutLoadingService, never>;
133
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutLoadingService>;
134
+ }
135
+
136
+ /**
137
+ * Set `true` on a request's `HttpContext` to keep it out of the progress line —
138
+ * a poll or a heartbeat that must not raise a loading indicator.
139
+ */
140
+ declare const LAYOUT_LOADING_SKIP: HttpContextToken<boolean>;
141
+ /**
142
+ * Interceptor that lights the `LayoutLoading` progress line while an HTTP
143
+ * request is in flight. Register it through `withInterceptors([...])`.
144
+ */
145
+ declare const layoutLoadingInterceptor: HttpInterceptorFn;
146
+
147
+ export { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutService, layoutLoadingInterceptor };
@@ -1 +1,40 @@
1
- export * from '@ojiepermana/angular-theme/layout/types';
1
+ import { Signal } from '@angular/core';
2
+
3
+ declare const LAYOUT_TYPES: readonly ["vertical", "horizontal", "empty", "fluid"];
4
+ declare const LAYOUT_SURFACES: readonly ["flat", "grid", "grid-line", "honeycomb", "matrix", "circuit", "line-vertical", "line-horizontal"];
5
+ declare const LAYOUT_APPEARANCES: readonly ["flat", "border-rail"];
6
+ declare const LAYOUT_WIDTHS: readonly ["full", "wide", "container", "fluid"];
7
+ type LayoutType = (typeof LAYOUT_TYPES)[number];
8
+ type LayoutSurface = (typeof LAYOUT_SURFACES)[number];
9
+ type LayoutAppearance = (typeof LAYOUT_APPEARANCES)[number];
10
+ type LayoutWidth = (typeof LAYOUT_WIDTHS)[number];
11
+ declare const LAYOUT_DEFAULT_SURFACE: LayoutSurface;
12
+ declare const LAYOUT_DEFAULT_TYPE: LayoutType;
13
+ declare const LAYOUT_DEFAULT_APPEARANCE: LayoutAppearance;
14
+ declare const LAYOUT_DEFAULT_WIDTH: LayoutWidth;
15
+ /**
16
+ * The width forced whenever the shell mode is not `web`.
17
+ *
18
+ * Only a browser page can be narrower than the surface it sits on. On desktop,
19
+ * tablet, and mobile the app *is* the surface, so a wide/container/fluid frame
20
+ * would leave dead canvas inside the window — `LayoutService` locks the axis here
21
+ * and keeps the user's own choice aside for when they return to `web`.
22
+ */
23
+ declare const LAYOUT_LOCKED_WIDTH: LayoutWidth;
24
+ declare const LAYOUT_SURFACE_STORAGE_KEY = "layout-surface";
25
+ declare const LAYOUT_APPEARANCE_STORAGE_KEY = "layout-appearance";
26
+ declare const LAYOUT_TYPE_STORAGE_KEY = "layout-type";
27
+ declare const LAYOUT_WIDTH_STORAGE_KEY = "layout-width";
28
+ interface LayoutContextValue {
29
+ surface: Signal<LayoutSurface>;
30
+ type: Signal<LayoutType>;
31
+ appearance: Signal<LayoutAppearance>;
32
+ width: Signal<LayoutWidth>;
33
+ }
34
+ declare function isUiLayoutSurface(value: string | null): value is LayoutSurface;
35
+ declare function isUiLayoutType(value: string | null): value is LayoutType;
36
+ declare function isUiLayoutAppearance(value: string | null): value is LayoutAppearance;
37
+ declare function isUiLayoutWidth(value: string | null): value is LayoutWidth;
38
+
39
+ export { LAYOUT_APPEARANCES, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACES, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPES, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTHS, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth };
40
+ export type { LayoutAppearance, LayoutContextValue, LayoutSurface, LayoutType, LayoutWidth };
@@ -1 +1,299 @@
1
- export * from '@ojiepermana/angular-theme/layout/wrapper';
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+ import { ThemeSettingsNavigationMode, ThemeSettingsNavigationType } from '@ojiepermana/angular/theme/component/settings';
4
+ import * as _ojiepermana_angular_navigation from '@ojiepermana/angular/navigation';
5
+ import { NavigationDockbarRouteContext } from '@ojiepermana/angular/navigation';
6
+ import { NavigationDockbarRouteContext as NavigationDockbarRouteContext$1, NavigationItem, NavigationType } from '@ojiepermana/angular/navigation/types';
7
+
8
+ /**
9
+ * The identity shape the layout wrappers consume. The library defines the structure
10
+ * only; the concrete brand and user values come from the consumer as inputs.
11
+ */
12
+ interface BrandIdentity {
13
+ /** Name behind the initials and the accessible name in the header slot. */
14
+ readonly name: string;
15
+ /** Material symbol used as the logo; `null` falls back to initials from `name`. */
16
+ readonly icon: string | null;
17
+ /** Judul brand. */
18
+ readonly title: string;
19
+ /** Subjudul brand. */
20
+ readonly subtitle: string;
21
+ }
22
+ interface UserIdentity {
23
+ /** Nama lengkap user (inisial + judul footer). */
24
+ readonly name: string;
25
+ /** Email, or the footer's secondary line. */
26
+ readonly email: string;
27
+ }
28
+
29
+ /** Registry key used only while `LayoutWrapperDefault` renders its desktop nav. */
30
+ declare const LAYOUT_DESKTOP_NAVIGATION_DATA_ID = "__layout-desktop-navigation";
31
+ /**
32
+ * Registry of the brand and user identity a shell publishes (`LayoutWrapperDefault`, for
33
+ * one). Other surfaces — the apps launcher in `Page`, say — read it so they show the same
34
+ * brand and user as the nav flyout without taking inputs of their own.
35
+ */
36
+ declare class LayoutIdentityService {
37
+ private readonly brandState;
38
+ private readonly userState;
39
+ readonly brand: _angular_core.Signal<BrandIdentity | null>;
40
+ readonly user: _angular_core.Signal<UserIdentity | null>;
41
+ setBrand(brand: BrandIdentity | null): void;
42
+ setUser(user: UserIdentity | null): void;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutIdentityService, never>;
44
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutIdentityService>;
45
+ }
46
+
47
+ /**
48
+ * The brand slot for `<NavigationHeader>`: initials or logo plus a title. Purely
49
+ * input-driven.
50
+ *
51
+ * `compact` (dockbar, or an icon-only rail) hides the title. `host.class = 'contents'`
52
+ * keeps `NavigationHeaderInitial` and `NavigationHeaderTitle` as direct flex children of
53
+ * the header row; the title still auto-hides on a collapsed sidebar, because
54
+ * `NAVIGATION_SHELL` reaches `<Navigation>` through the live injector tree.
55
+ */
56
+ declare class LayoutBrand {
57
+ /** Identitas brand (nama, ikon, judul, subjudul). */
58
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
59
+ /** Sembunyikan judul, sisakan inisial saja (dockbar / rail ikon-only). */
60
+ readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutBrand, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutBrand, "LayoutBrand", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
63
+ }
64
+
65
+ /**
66
+ * The user slot for `<NavigationFooter>`: an optional identity plus the logout action.
67
+ * Purely input-driven.
68
+ *
69
+ * `detailed` shows initials and name (a full sidebar); without it, only the logout
70
+ * button. `host.class = 'contents'` makes the children direct flex children of the
71
+ * footer, so `ml-auto` and the auto-hide on collapse (through `NAVIGATION_SHELL`) still
72
+ * apply.
73
+ *
74
+ * The logout button only emits `(logout)`. Endpoint, cookie, and redirect target differ
75
+ * per application, so the effect is entirely the consumer's — the library calls no
76
+ * endpoint and performs no navigation. A consumer that never binds `(logout)` still
77
+ * renders without error; the button simply does nothing, exactly as before this output
78
+ * existed.
79
+ */
80
+ declare class LayoutUser {
81
+ /** Identitas user (nama + email). */
82
+ readonly user: _angular_core.InputSignal<UserIdentity>;
83
+ /** Show the user identity (initials and name), not only the logout button. */
84
+ readonly detailed: _angular_core.InputSignalWithTransform<boolean, unknown>;
85
+ /** Accessible name for the logout button. */
86
+ readonly logoutLabel: _angular_core.InputSignal<string>;
87
+ /** Material symbol for the logout button. */
88
+ readonly logoutIcon: _angular_core.InputSignal<string>;
89
+ /** The user pressed logout. The effect is the consumer's; the library does not navigate. */
90
+ readonly logout: _angular_core.OutputEmitterRef<void>;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutUser, never>;
92
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutUser, "LayoutUser", never, { "user": { "alias": "user"; "required": true; "isSignal": true; }; "detailed": { "alias": "detailed"; "required": false; "isSignal": true; }; "logoutLabel": { "alias": "logoutLabel"; "required": false; "isSignal": true; }; "logoutIcon": { "alias": "logoutIcon"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
93
+ }
94
+
95
+ /**
96
+ * Nav type: a collapsible vertical sidebar (the default). Brand in the header, user
97
+ * identity in the footer.
98
+ *
99
+ * Horizontal dividers: the sidebar ALWAYS uses the borders `NavigationHeader`
100
+ * (`border-b`) and `NavigationFooter` (`border-t`) bring, `border-rail` included.
101
+ * Layout's inset accent rail (`top-12`/`bottom-12`) sits behind a frame that is now
102
+ * solid (`bg-background`) and is therefore invisible inside it; those explicit borders
103
+ * are what keep the header and footer lines visible and running straight into the
104
+ * content column (both `h-12`), consistent with {@link LayoutNavDockbar}.
105
+ *
106
+ * `host.class = 'contents'` makes `<NavigationSidebar>` an effective child of
107
+ * `<Navigation>` (h-full, shell classes), while `NAVIGATION_SHELL` still reaches it
108
+ * through the live injector tree and `<NavigationHeader>` stays a direct child for the
109
+ * library's content projection.
110
+ */
111
+ declare class LayoutNavSidebar {
112
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
113
+ readonly user: _angular_core.InputSignal<UserIdentity>;
114
+ /** Appearance from the shell (`[appearance]`); decides the separator border weight. */
115
+ readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
116
+ readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
117
+ /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
118
+ readonly logout: _angular_core.OutputEmitterRef<void>;
119
+ protected readonly isBorderRail: _angular_core.Signal<boolean>;
120
+ protected readonly isCollapsed: _angular_core.Signal<boolean>;
121
+ /** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
122
+ protected readonly shellClass: _angular_core.Signal<"border-r-[length:var(--layout-rail-width)] border-border" | "border-r border-border">;
123
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavSidebar, never>;
124
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavSidebar, "LayoutNavSidebar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
125
+ }
126
+
127
+ /**
128
+ * Nav type: a vertical icon rail (dockbar). A compact brand (initials only) in the
129
+ * header, the user's initials in the rail footer (title and actions auto-hide, because
130
+ * the rail is always collapsed), and the full identity (name, email, logout) in the
131
+ * aside footer — together with the rail initials they form one footer row, like an
132
+ * expanded sidebar.
133
+ *
134
+ * Horizontal dividers: unlike the sidebar, which leaves the separator to Layout's inset
135
+ * accent rail at `top-12`/`bottom-12` under `border-rail`, the dockbar ALWAYS uses the
136
+ * borders `NavigationHeader`/`NavigationFooter` bring. The dockbar aside covers the inset
137
+ * rail line with its own opaque background, so those explicit borders are what keep the
138
+ * separator running straight from rail to aside (header and footer are both `h-12`).
139
+ * See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
140
+ */
141
+ declare class LayoutNavDockbar {
142
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
143
+ readonly user: _angular_core.InputSignal<UserIdentity>;
144
+ /** Appearance from the shell (`[appearance]`); decides the separator border weight. */
145
+ readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
146
+ readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
147
+ /** Opt-in route-aware header; ketika aktif, header route menggantikan compact brand. */
148
+ readonly dockbarRouteContext: _angular_core.InputSignal<NavigationDockbarRouteContext | null>;
149
+ /** The generic badge registry forwarded to `NavigationDockbar`. */
150
+ readonly dockbarBadgeContext: _angular_core.InputSignal<Readonly<Record<string, _ojiepermana_angular_navigation.NavigationBadgeSource>>>;
151
+ /** Forwarded from the rail and aside footer logout buttons; the effect is the consumer's. */
152
+ readonly logout: _angular_core.OutputEmitterRef<void>;
153
+ protected readonly isBorderRail: _angular_core.Signal<boolean>;
154
+ protected readonly dockbarMode: _angular_core.Signal<"drawer" | "sticky">;
155
+ protected readonly routeContextEnabled: _angular_core.Signal<boolean>;
156
+ /** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
157
+ protected readonly shellClass: _angular_core.Signal<"border-r-[length:var(--layout-rail-width)] border-border" | "border-r border-border">;
158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavDockbar, never>;
159
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavDockbar, "LayoutNavDockbar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; "dockbarRouteContext": { "alias": "dockbar-route-context"; "required": false; "isSignal": true; }; "dockbarBadgeContext": { "alias": "dockbar-badge"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
160
+ }
161
+
162
+ /**
163
+ * Nav type: a top bar with inline items (navbar, horizontal). `appearance` follows the
164
+ * shell (`flat | border-rail`). See {@link LayoutNavSidebar} for why
165
+ * `host.class = 'contents'`.
166
+ */
167
+ declare class LayoutNavNavbar {
168
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
169
+ readonly user: _angular_core.InputSignal<UserIdentity>;
170
+ /** Appearance from the shell (`[nav-type-style]`). */
171
+ readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
172
+ /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
173
+ readonly logout: _angular_core.OutputEmitterRef<void>;
174
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavNavbar, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavNavbar, "LayoutNavNavbar", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
176
+ }
177
+
178
+ /**
179
+ * Nav type: a top bar with a flyout trigger button (horizontal). `appearance` follows the
180
+ * shell. See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
181
+ */
182
+ declare class LayoutNavFlyout {
183
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
184
+ readonly user: _angular_core.InputSignal<UserIdentity>;
185
+ /** Appearance from the shell (`[nav-type-style]`). */
186
+ readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
187
+ /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
188
+ readonly logout: _angular_core.OutputEmitterRef<void>;
189
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavFlyout, never>;
190
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavFlyout, "LayoutNavFlyout", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "logout": "logout"; }, never, never, true, never>;
191
+ }
192
+
193
+ /**
194
+ * Nav type: a brand-only sidebar for the `empty` and `fluid` variants, where
195
+ * `LayoutNavigation` hides the nav — so no collapse and no footer. See
196
+ * {@link LayoutNavSidebar} for why `host.class = 'contents'`.
197
+ */
198
+ declare class LayoutNavMinimal {
199
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
200
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutNavMinimal, never>;
201
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutNavMinimal, "LayoutNavMinimal", never, { "brand": { "alias": "brand"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
202
+ }
203
+
204
+ /** The nav type `@switch (navKind())` renders. `brand` = header-only sidebar (empty/fluid). */
205
+ type NavKind = NavigationType | 'brand';
206
+ /**
207
+ * A ready-made layout shell — the consumer supplies data through inputs instead of
208
+ * assembling `Layout > LayoutVertical/Horizontal/Empty/Fluid > LayoutNavigation >
209
+ * Navigation > nav type` by hand.
210
+ *
211
+ * ```html
212
+ * <LayoutWrapperDefault
213
+ * [surface]="surface" [layout-appearance]="appearance" [width]="width"
214
+ * [layout-type]="layoutType" [nav-type]="navType"
215
+ * [data]="navItems" [brand]="brand" [user]="user"
216
+ * (logout)="signOut()"
217
+ * >
218
+ * <router-outlet /> <!-- page content is projected into LayoutContent -->
219
+ * </LayoutWrapperDefault>
220
+ * ```
221
+ *
222
+ * The `register*` defaults (LayoutService) stay the consumer's job; this wrapper is purely
223
+ * presentational — two axes (`effectiveLayoutType` → wrapper, `navKind` → nav type) over one
224
+ * shared skeleton. Injection stays sound: `<Navigation>` provides `NAVIGATION_SHELL` inside
225
+ * `#body`, and each nav type is `display:contents`, so `<NavigationXxx>` is an effective child
226
+ * of `<Navigation>`.
227
+ */
228
+ declare class LayoutWrapperDefault {
229
+ /** Surface latar shell (mis. `grid`, `flat`). */
230
+ readonly surface: _angular_core.InputSignal<"flat" | "grid" | "grid-line" | "honeycomb" | "matrix" | "circuit" | "line-vertical" | "line-horizontal">;
231
+ /** Appearance shell & nav (`flat | border-rail`). */
232
+ readonly appearance: _angular_core.InputSignal<"flat" | "border-rail">;
233
+ /** Frame width (`full`, `container`, and so on). */
234
+ readonly width: _angular_core.InputSignal<"full" | "wide" | "container" | "fluid">;
235
+ /** Tipe layout dasar (`vertical | horizontal | empty | fluid`); `empty`/`fluid` override nav. */
236
+ readonly layoutType: _angular_core.InputSignal<"fluid" | "vertical" | "horizontal" | "empty">;
237
+ /**
238
+ * The shell's navigation type. `desktop` only means anything on a horizontal frame:
239
+ * the titlebar becomes the primary chrome and the navigation area follows the
240
+ * content-focused `empty` behaviour.
241
+ */
242
+ readonly navType: _angular_core.InputSignal<ThemeSettingsNavigationType>;
243
+ /** Presentation mode for the active nav type (`collapsed` sidebar / `drawer` dockbar). */
244
+ readonly navTypeMode: _angular_core.InputSignal<ThemeSettingsNavigationMode>;
245
+ /** Opt-in route-aware dockbar state; ignored by other navigation types. */
246
+ readonly dockbarRouteContext: _angular_core.InputSignal<NavigationDockbarRouteContext$1 | null>;
247
+ /** Generic dockbar badge registry; ignored by sidebar/navbar/flyout. */
248
+ readonly dockbarBadgeContext: _angular_core.InputSignal<Readonly<Record<string, _ojiepermana_angular_navigation.NavigationBadgeSource>>>;
249
+ /** Item navigasi. */
250
+ readonly data: _angular_core.InputSignal<readonly NavigationItem[]>;
251
+ /** Identitas brand. */
252
+ readonly brand: _angular_core.InputSignal<BrandIdentity>;
253
+ /** Identitas user. */
254
+ readonly user: _angular_core.InputSignal<UserIdentity>;
255
+ /** Id landmark konten utama sekaligus target skip link. */
256
+ readonly contentId: _angular_core.InputSignal<string>;
257
+ /** Skip-link label; the consumer can localise it. */
258
+ readonly skipLinkLabel: _angular_core.InputSignal<string>;
259
+ /** Fokuskan landmark utama setelah route selesai berubah. */
260
+ readonly focusOnNavigation: _angular_core.InputSignal<boolean>;
261
+ /** Controlled/uncontrolled state drawer navigasi mobile. */
262
+ readonly mobileNavOpen: _angular_core.ModelSignal<boolean>;
263
+ readonly mobileNavLabel: _angular_core.InputSignal<string>;
264
+ readonly closeMobileNavLabel: _angular_core.InputSignal<string>;
265
+ /**
266
+ * The user pressed logout in the navigation footer. Forwarded from every nav type that
267
+ * shows the user identity (`sidebar`, `dockbar`, `navbar`, `flyout`), the mobile drawer
268
+ * included, so one binding covers all of them. The library calls no endpoint and performs
269
+ * no navigation; what happens next is entirely the consumer's.
270
+ */
271
+ readonly logout: _angular_core.OutputEmitterRef<void>;
272
+ private readonly identity;
273
+ private readonly navigation;
274
+ private readonly desktopNavigationDataOwner;
275
+ private readonly document;
276
+ protected readonly mobileNavTriggerRef: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
277
+ constructor();
278
+ /**
279
+ * Classes for `<LayoutContent>`, chosen by the consumer (padding, say). Empty by
280
+ * default: the library no longer forces `p-6`; the consumer or `<Page>` decides spacing.
281
+ */
282
+ readonly contentClassInput: _angular_core.InputSignal<string>;
283
+ /** Wrapper layout & nilai `<Layout [layout-type]>`: navbar/flyout = horizontal, sisanya vertical. */
284
+ protected readonly effectiveLayoutType: _angular_core.Signal<"fluid" | "vertical" | "horizontal" | "empty">;
285
+ /** Tipe nav di dalam `#body`: `empty`/`fluid` → `brand` (header-only); selain itu `nav-type`. */
286
+ protected readonly navKind: _angular_core.Signal<NavKind>;
287
+ /** Lebar host `<Navigation>`: penuh-tinggi (vertical) atau penuh-lebar (horizontal). */
288
+ protected readonly navClass: _angular_core.Signal<"w-full" | "h-full">;
289
+ protected readonly showsMobileNavigation: _angular_core.Signal<boolean>;
290
+ /** Internal shell owns responsive placement while primitives remain composition-safe. */
291
+ protected readonly defaultShellClasses: _angular_core.Signal<string>;
292
+ /** Kelas `<LayoutContent>`: `fluid` membatasi lebar & memusatkan; padding diserahkan ke consumer. */
293
+ protected readonly contentClass: _angular_core.Signal<string>;
294
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutWrapperDefault, never>;
295
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayoutWrapperDefault, "LayoutWrapperDefault", never, { "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "appearance": { "alias": "layout-appearance"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "layoutType": { "alias": "layout-type"; "required": false; "isSignal": true; }; "navType": { "alias": "nav-type"; "required": false; "isSignal": true; }; "navTypeMode": { "alias": "nav-type-mode"; "required": false; "isSignal": true; }; "dockbarRouteContext": { "alias": "dockbar-route-context"; "required": false; "isSignal": true; }; "dockbarBadgeContext": { "alias": "dockbar-badge"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "brand": { "alias": "brand"; "required": true; "isSignal": true; }; "user": { "alias": "user"; "required": true; "isSignal": true; }; "contentId": { "alias": "content-id"; "required": false; "isSignal": true; }; "skipLinkLabel": { "alias": "skip-link-label"; "required": false; "isSignal": true; }; "focusOnNavigation": { "alias": "focus-on-navigation"; "required": false; "isSignal": true; }; "mobileNavOpen": { "alias": "mobile-nav-open"; "required": false; "isSignal": true; }; "mobileNavLabel": { "alias": "mobile-nav-label"; "required": false; "isSignal": true; }; "closeMobileNavLabel": { "alias": "close-mobile-nav-label"; "required": false; "isSignal": true; }; "contentClassInput": { "alias": "content-class"; "required": false; "isSignal": true; }; }, { "mobileNavOpen": "mobile-nav-openChange"; "logout": "logout"; }, never, ["*"], true, never>;
296
+ }
297
+
298
+ export { LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutIdentityService, LayoutNavDockbar, LayoutNavFlyout, LayoutNavMinimal, LayoutNavNavbar, LayoutNavSidebar, LayoutUser, LayoutWrapperDefault };
299
+ export type { BrandIdentity, UserIdentity };