@ojiepermana/angular 22.1.14 → 22.2.1

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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs +812 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-COQ-60DS.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-YIz0IsIb.mjs} +392 -207
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-CUb68MZH.mjs +1219 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs +327 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +544 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +139 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3256 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1125 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1928 -553
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -496
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +69 -18
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +166 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +708 -375
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +120 -86
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +446 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -113
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-Be3IqzG4.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-Bc7DWK3R.mjs +0 -522
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-DA8VPEn7.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-U2TJTzlW.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs +0 -2668
@@ -1,10 +0,0 @@
1
- /*
2
- * Public API Surface of @ojiepermana/angular/theme
3
- *
4
- * Layout, page, dan styles diekspos lewat secondary entry point di dalam
5
- * library/theme.
6
- */
7
-
8
- /**
9
- * Generated bundle index. Do not edit.
10
- */
@@ -1,24 +1,5 @@
1
- export * from '@ojiepermana/angular/chart';
2
- export * from '@ojiepermana/angular/component';
3
- export * from '@ojiepermana/angular/navigation';
4
- export * from '@ojiepermana/angular/sdk';
5
- export * from '@ojiepermana/angular/theme';
6
-
7
- /*
8
- * Public API of @ojiepermana/angular
9
- *
10
- * PRODUCTION IMPORTS — always import from a subpath entry point. Subpaths are
11
- * tree-shakeable and pull in only what you use:
12
- * import { BarChart } from '@ojiepermana/angular/chart/bar';
13
- * import { Button } from '@ojiepermana/angular/component/button';
14
- * import { provideUiTheme } from '@ojiepermana/angular/theme/styles';
15
- *
16
- * CONVENIENCE ONLY — the root barrel below re-exports the entire design system
17
- * (chart + component + navigation + sdk + theme). Importing from the bare
18
- * `@ojiepermana/angular` specifier drags in everything, so reserve it for tests,
19
- * demos, or prototypes. Never use the root barrel in production code.
20
- */
21
-
22
- /**
23
- * Generated bundle index. Do not edit.
24
- */
1
+ export * from "@ojiepermana/angular/chart";
2
+ export * from "@ojiepermana/angular/component";
3
+ export * from "@ojiepermana/angular/navigation";
4
+ export * from "@ojiepermana/angular/sdk";
5
+ export * from "@ojiepermana/angular/theme";
@@ -5,7 +5,7 @@
5
5
  ```ts
6
6
  import {
7
7
  NavigationContainerComponent,
8
- NavigationSidebarComponent, // type: NavigationDockbar/Navbar/FlyoutComponent
8
+ NavigationSidebarComponent, // type: NavigationDockbar/Minidock/Navbar/FlyoutComponent
9
9
  NavigationHeaderComponent,
10
10
  NavigationContentComponent,
11
11
  NavigationFooterComponent,
@@ -44,17 +44,17 @@ const items: NavigationItem[] = [
44
44
  </Navigation>
45
45
  ```
46
46
 
47
- Type dipilih lewat komponen anak deklaratif — `NavigationSidebar`, `NavigationDockbar`, `NavigationNavbar`, atau `NavigationFlyout` — satu type hidup per `<Navigation>`. Di dalam type, `NavigationHeader` dan `NavigationFooter` opsional, sedangkan `NavigationContent` selalu dirender (otomatis dibuat bila tidak diproyeksikan).
47
+ Type dipilih lewat komponen anak deklaratif (`NavigationSidebar`, `NavigationDockbar`, `NavigationMinidock`, `NavigationNavbar`, atau `NavigationFlyout`), satu type hidup per `<Navigation>`. Di dalam type, `NavigationHeader` dan `NavigationFooter` opsional, sedangkan `NavigationContent` selalu dirender (otomatis dibuat bila tidak diproyeksikan).
48
48
 
49
49
  ## API Notes
50
50
 
51
51
  - `data` is the source of navigation data.
52
- - Type is declared by the child component: `NavigationSidebar`/`NavigationDockbar` (vertical), `NavigationNavbar`/`NavigationFlyout` (horizontal). Orientation is implied by the type child.
52
+ - Type is declared by the child component: `NavigationSidebar`/`NavigationDockbar`/`NavigationMinidock` (vertical), `NavigationNavbar`/`NavigationFlyout` (horizontal). Orientation is implied by the type child.
53
53
  - `id` identifies a navigation instance so multiple navs can keep distinct service state.
54
54
  - `data-id` optionally publishes the input data under a different registry id. This lets a
55
55
  mobile mirror use isolated state (`id="main-mobile"`) while exposing the same data contract
56
56
  as the desktop navigation (`data-id="main"`).
57
- - `position` on `NavigationSidebar`/`NavigationDockbar` accepts `left` or `right` (vertical).
57
+ - `position` on `NavigationSidebar`/`NavigationDockbar`/`NavigationMinidock` accepts `left` or `right` (vertical).
58
58
  - `collapsed` on `NavigationSidebar` controls the icon-only sidebar state.
59
59
  - `mode` on `NavigationDockbar` accepts `sticky` or `drawer`.
60
60
  - `dockbar-route-context` on `NavigationDockbar` opts into Router-aware header, rail deduplication,
@@ -109,19 +109,20 @@ Inputs pada `<Navigation>` (container):
109
109
 
110
110
  Inputs pada komponen type:
111
111
 
112
- | Component | API | Type | Notes |
113
- | ------------------- | ----------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- |
114
- | `NavigationSidebar` | `position` | `left \| right \| null` | Side the rail docks to. |
115
- | `NavigationSidebar` | `collapsed` | `boolean \| null` | Controls collapsed vertical sidebar state. |
116
- | `NavigationSidebar` | `nav-sidebar-collapse` | `boolean` | Enables hover-driven preview expansion on collapsed sidebars. |
117
- | `NavigationSidebar` | `previewExpanded` | `boolean` | Forces a collapsed sidebar to render expanded for preview. |
118
- | `NavigationDockbar` | `mode` | `sticky \| drawer \| null` | Docked aside beside the rail, or overlay drawer. |
119
- | `NavigationDockbar` | `position` | `left \| right \| null` | Side the rail docks to. |
120
- | `NavigationDockbar` | `dockbar-route-context` | `boolean \| NavigationDockbarRouteConfig \| null` | Opt-in Router context and optional overrides. |
121
- | `NavigationDockbar` | `dockbar-badge` | `NavigationBadgeContext` | Reactive badge sources keyed by item or route metadata. |
122
- | `NavigationNavbar` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
123
- | `NavigationFlyout` | `label` | `string` | Trigger label. Defaults to `Menu`. |
124
- | `NavigationFlyout` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
112
+ | Component | API | Type | Notes |
113
+ | -------------------- | ----------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- |
114
+ | `NavigationSidebar` | `position` | `left \| right \| null` | Side the rail docks to. |
115
+ | `NavigationSidebar` | `collapsed` | `boolean \| null` | Controls collapsed vertical sidebar state. |
116
+ | `NavigationSidebar` | `nav-sidebar-collapse` | `boolean` | Enables hover-driven preview expansion on collapsed sidebars. |
117
+ | `NavigationSidebar` | `previewExpanded` | `boolean` | Forces a collapsed sidebar to render expanded for preview. |
118
+ | `NavigationDockbar` | `mode` | `sticky \| drawer \| null` | Docked aside beside the rail, or overlay drawer. |
119
+ | `NavigationDockbar` | `position` | `left \| right \| null` | Side the rail docks to. |
120
+ | `NavigationDockbar` | `dockbar-route-context` | `boolean \| NavigationDockbarRouteConfig \| null` | Opt-in Router context and optional overrides. |
121
+ | `NavigationDockbar` | `dockbar-badge` | `NavigationBadgeContext` | Reactive badge sources keyed by item or route metadata. |
122
+ | `NavigationMinidock` | `position` | `left \| right \| null` | Side the rail docks to. The separating border is set through `class`. |
123
+ | `NavigationNavbar` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
124
+ | `NavigationFlyout` | `label` | `string` | Trigger label. Defaults to `Menu`. |
125
+ | `NavigationFlyout` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
125
126
 
126
127
  Semua type juga menerima `class` untuk kelas tambahan pada elemen shell-nya.
127
128
 
@@ -149,6 +150,56 @@ Semua type juga menerima `class` untuk kelas tambahan pada elemen shell-nya.
149
150
  | `columns` | `number` | Column count for `mega` style items. |
150
151
  | `children` | `readonly NavigationItem[]` | Nested items. Trees can be deeper than one level. |
151
152
 
153
+ ## Minidock
154
+
155
+ `NavigationMinidock` is a permanent vertical icon rail. It renders exactly like a collapsed
156
+ sidebar (`--layout-sidebar-collapsed-width`, `--nav-rail-item-size`, a tooltip per item, a two
157
+ letter fallback for items without an icon), but it never expands: there is no `collapsed` input,
158
+ no `nav-sidebar-collapse`, no hover or focus preview, no header toggle, and
159
+ `NavigationService.toggleCollapsed()` does nothing for it. Its stored `nav-type-mode` is always
160
+ `default`.
161
+
162
+ ```html
163
+ <Navigation id="app-rail" [data]="items" class="h-full">
164
+ <NavigationMinidock class="border-r border-border" />
165
+ </Navigation>
166
+ ```
167
+
168
+ The data contract is strict. Minidock only accepts `basic`, `item`, or untyped items without
169
+ children, plus `divider` and `spacer`. Any `group`, `collapsible`, `collapsable`, `mega`, or
170
+ `aside` item, or any item with non empty `children` (hidden items included), throws an `Error`
171
+ in development **and production**. The error reaches Angular's `ErrorHandler` and names the item
172
+ index, its title, and the rejected type, for example
173
+ `Item [2] "Component" bertipe "group".`
174
+
175
+ Flatten grouped data with `toMinidockItems()` from `@ojiepermana/angular/navigation/types`.
176
+ It is a pure function whose output always passes that check, and it is the safe path for data
177
+ that comes from a backend:
178
+
179
+ ```ts
180
+ import { toMinidockItems } from '@ojiepermana/angular/navigation/types';
181
+
182
+ protected readonly railItems = computed(() => toMinidockItems(this.items()));
183
+ ```
184
+
185
+ - Leaves are kept as the same object, unless a parent's `isHidden` has to be merged in.
186
+ - `group` and `mega` (at any level) become a divider boundary and their content is flattened;
187
+ an empty group adds no divider.
188
+ - `collapsible`, `collapsable`, and `aside` are dropped as parents; their children are lifted.
189
+ - Leading, trailing, and repeated dividers are compacted; `spacer` survives only at the top level.
190
+ - A leaf whose `id` repeats is kept once (first occurrence wins).
191
+ - A lifted leaf is hidden when any of its parents is hidden, and a group's boundary divider hides
192
+ with that group.
193
+
194
+ A `spacer` pushes every item after it to the bottom of the rail. `LayoutWrapperDefault` offers
195
+ the type as `nav-type="minidock"` on a vertical layout: it renders `LayoutNavMinidock` with
196
+ `toMinidockItems(data())` under the data id `main-minidock`, and keeps publishing the full
197
+ `data()` under `main`.
198
+
199
+ Adding `'minidock'` widens `NavigationVerticalType` (and so `NavigationType`). The change is
200
+ additive, but a consumer `switch` that is exhaustive over `NavigationType` needs a `minidock`
201
+ branch before it compiles again.
202
+
152
203
  ## Route-aware dockbar
153
204
 
154
205
  The feature is opt-in so existing dockbar, sidebar, navbar, and flyout consumers keep their
@@ -369,6 +420,6 @@ tetap sama; hanya distribusi chunk di sisi consumer yang lebih ringan.
369
420
 
370
421
  ## Support and security
371
422
 
372
- Angular 22.1–22.x CSR/browser usage is supported; SSR, prerendering, and hydration are not. See the
423
+ Angular 22.2–22.x CSR/browser usage is supported; SSR, prerendering, and hydration are not. See the
373
424
  bundled `SUPPORT.md`. Report suspected vulnerabilities privately using the instructions in the
374
425
  bundled `SECURITY.md`. This package is MIT licensed; see the bundled `LICENSE`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ojiepermana/angular",
3
- "version": "22.1.14",
3
+ "version": "22.2.1",
4
4
  "description": "Accessible, tree-shakable Angular 22 design system from ojiepermana: UI components, charts, navigation shells, theme tokens, and an OpenAPI SDK generator.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -23,12 +23,12 @@
23
23
  "code-generation"
24
24
  ],
25
25
  "engines": {
26
- "node": "^20.19.0 || ^22.12.0 || >=24.0.0 <25.0.0 || >=26.0.0 <27.0.0"
26
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0 <27.0.0"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",
30
30
  "url": "git+https://github.com/ojiepermana/angular.git",
31
- "directory": "library"
31
+ "directory": "packages/angular"
32
32
  },
33
33
  "homepage": "https://github.com/ojiepermana/angular#readme",
34
34
  "bugs": {
@@ -36,13 +36,13 @@
36
36
  "email": "me@ojiepermana.com"
37
37
  },
38
38
  "peerDependencies": {
39
- "@angular/cdk": ">=22.1.0 <23.0.0",
40
- "@angular/common": ">=22.1.0 <23.0.0",
41
- "@angular/core": ">=22.1.0 <23.0.0",
42
- "@angular/forms": ">=22.1.0 <23.0.0",
43
- "@angular/material": ">=22.1.0 <23.0.0",
44
- "@angular/platform-browser": ">=22.1.0 <23.0.0",
45
- "@angular/router": ">=22.1.0 <23.0.0",
39
+ "@angular/cdk": ">=22.2.0 <23.0.0",
40
+ "@angular/common": ">=22.2.0 <23.0.0",
41
+ "@angular/core": ">=22.2.0 <23.0.0",
42
+ "@angular/forms": ">=22.2.0 <23.0.0",
43
+ "@angular/material": ">=22.2.0 <23.0.0",
44
+ "@angular/platform-browser": ">=22.2.0 <23.0.0",
45
+ "@angular/router": ">=22.2.0 <23.0.0",
46
46
  "rxjs": ">=7.8.0 <8.0.0"
47
47
  },
48
48
  "peerDependenciesMeta": {
@@ -60,7 +60,7 @@
60
60
  }
61
61
  },
62
62
  "dependencies": {
63
- "@angular-devkit/schematics": ">=22.1.0 <23.0.0",
63
+ "@angular-devkit/schematics": ">=22.2.0 <23.0.0",
64
64
  "@types/d3-array": "^3.2.2",
65
65
  "@types/d3-scale": "^4.0.9",
66
66
  "@types/d3-shape": "^3.1.8",
@@ -455,6 +455,10 @@
455
455
  "types": "./types/ojiepermana-angular-theme-page-filter.d.ts",
456
456
  "default": "./fesm2022/ojiepermana-angular-theme-page-filter.mjs"
457
457
  },
458
+ "./theme/page/overview": {
459
+ "types": "./types/ojiepermana-angular-theme-page-overview.d.ts",
460
+ "default": "./fesm2022/ojiepermana-angular-theme-page-overview.mjs"
461
+ },
458
462
  "./theme/page/root": {
459
463
  "types": "./types/ojiepermana-angular-theme-page-root.d.ts",
460
464
  "default": "./fesm2022/ojiepermana-angular-theme-page-root.mjs"
@@ -498,5 +502,5 @@
498
502
  "module": "fesm2022/ojiepermana-angular.mjs",
499
503
  "typings": "types/ojiepermana-angular.d.ts",
500
504
  "type": "module",
501
- "gitHead": "5c91b71dd0fd6c851de7ef47a2e772b615062263"
505
+ "gitHead": "1d9e13ff98804f60ee81765a22a6b5a814d0f374"
502
506
  }
package/sdk/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @ojiepermana/angular/sdk
2
2
 
3
3
  OpenAPI 3.x → Angular SDK generator for the `@ojiepermana/angular` design system.
4
- Source lives in [`library/sdk`](.); it ships as the `sdk` subpath of the single
4
+ Source lives in [`packages/angular/sdk`](.); it ships as the `sdk` subpath of the single
5
5
  `@ojiepermana/angular` package, and its schematic collection is the package's own
6
6
  `ng add` / `ng generate` collection.
7
7
 
@@ -32,8 +32,8 @@ function writeLibrary(files, ir, target, workspaceRoot, outputDir) {
32
32
  version: target.packageVersion,
33
33
  description: `Generated SDK for ${ir.title} ${ir.version}`,
34
34
  peerDependencies: {
35
- '@angular/common': '>=22.1.0',
36
- '@angular/core': '>=22.1.0',
35
+ '@angular/common': '>=22.2.0',
36
+ '@angular/core': '>=22.2.0',
37
37
  rxjs: '>=7.8.0',
38
38
  },
39
39
  sideEffects: false,
package/theme/README.md CHANGED
@@ -121,6 +121,6 @@ font in your own stylesheet if you need it.
121
121
 
122
122
  ## Support and security
123
123
 
124
- Angular 22.1–22.x CSR/browser usage is supported; SSR, prerendering, and hydration are not. See the
124
+ Angular 22.2–22.x CSR/browser usage is supported; SSR, prerendering, and hydration are not. See the
125
125
  bundled `SUPPORT.md`. Report suspected vulnerabilities privately using the instructions in the
126
126
  bundled `SECURITY.md`. This package is MIT licensed; see the bundled `LICENSE`.
@@ -136,7 +136,7 @@ Aturan penggunaannya:
136
136
  Untuk halaman yang memiliki default sendiri tetapi tetap harus tunduk pada nilai local storage yang sudah tersimpan, pakai `LayoutService.registerDefaults(...)` sekali di level page, lalu bind root `Layout` ke signal service.
137
137
 
138
138
  ```ts
139
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
139
+ import { Component, inject } from '@angular/core';
140
140
  import {
141
141
  LayoutService,
142
142
  LayoutComponent,
@@ -147,7 +147,6 @@ import {
147
147
 
148
148
  @Component({
149
149
  selector: 'demo-board',
150
- changeDetection: ChangeDetectionStrategy.OnPush,
151
150
  imports: [
152
151
  LayoutComponent,
153
152
  LayoutHorizontalComponent,
@@ -470,12 +469,11 @@ Persistence behavior:
470
469
  Contoh penggunaan:
471
470
 
472
471
  ```ts
473
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
472
+ import { Component, inject } from '@angular/core';
474
473
  import { LayoutService } from '@ojiepermana/angular/theme/layout/services';
475
474
 
476
475
  @Component({
477
476
  selector: 'demo-layout-toggle',
478
- changeDetection: ChangeDetectionStrategy.OnPush,
479
477
  template: `
480
478
  <button type="button" (click)="layout.setAppearance('flat')">Flat</button>
481
479
  <button type="button" (click)="layout.setAppearance('border-rail')">Border rail</button>
@@ -17,6 +17,7 @@ import {
17
17
  PageFilterComponent,
18
18
  PageFilterToggleComponent,
19
19
  } from '@ojiepermana/angular/theme/page/filter';
20
+ import { PageOverviewComponent } from '@ojiepermana/angular/theme/page/overview';
20
21
  import { PageSideComponent, PageSideToggleComponent } from '@ojiepermana/angular/theme/page/side';
21
22
  ```
22
23
 
@@ -33,11 +34,13 @@ Semua entrypoint bersifat additive; import lama dari `/page` tetap valid.
33
34
  - `PageSideToggle`
34
35
  - `PageFilter`
35
36
  - `PageFilterToggle`
37
+ - `PageOverview`
36
38
 
37
39
  `PageSideToggle` menerima projected content untuk label atau ikon kustom. Jika tidak ada projected content, komponen akan memakai ikon fallback bawaan.
38
40
  `PageHeader` dan `PageFooter` memakai `--section-border-opacity`, token separator yang sama dengan header/footer Navigation, sehingga garis section konsisten tanpa mengubah border frame utama Layout.
39
41
  `PageDashboard` mengikuti perilaku layout dan scroll yang sama dengan `PageContent`, tetapi disediakan sebagai slot semantik untuk dashboard, board, dan surface analitik.
40
42
  `PageFilter` adalah slot filter yang bisa diletakkan **stacked** (bar di antara `PageHeader` dan `PageContent`) atau **side** (kolom di samping `PageContent`). `PageFilterToggle` mengontrol `PageFilter` saat memakai mode `drawer`/`overlay`.
43
+ `PageOverview` adalah pita ringkasan untuk card, KPI, dan chart. Letaknya stacked di bawah `PageFilter` dan di atas `PageContent`, dan selalu tampil tanpa toggle.
41
44
 
42
45
  ## Root API
43
46
 
@@ -132,6 +135,8 @@ Tombol hanya muncul ketika layout aktif `empty` dan nav target punya data. Di la
132
135
  | `ariaLabel` | `string` | `'Filters'` | Nama aksesibilitas panel saat `drawer`/`overlay` (dipasang sebagai `aria-label` pada `role="dialog"`). |
133
136
  | `class` | `string` | `''` | Class tambahan pada host `PageFilter`. |
134
137
 
138
+ Latar `PageFilter` memakai token neutral tema yang dilembutkan, `bg-surface/50 text-surface-foreground`, sehingga ikut berganti mengikuti `theme-neutral` dan mode terang/gelap. Saat filter menumpuk di atas content (`drawer`, `overlay`, atau bar stacked yang sticky di `scroll="page"`), warnanya sama tetapi opak agar content tidak tembus. Timpa lewat input `class` bila perlu latar lain.
139
+
135
140
  `PageFilter` menambahkan atribut host `data-page-slot="filter"`, `data-page-filter-placement`, `data-page-filter-mode`, `data-page-filter-open`, dan `data-page-position`.
136
141
 
137
142
  Aksesibilitas: pada mode `drawer`/`overlay`, panel menjadi `role="dialog"` (dengan `aria-modal`
@@ -149,6 +154,18 @@ mengklik backdrop overlay) menutup panel mengambang yang sedang terbuka.
149
154
  | `class` | `string` | `''` | Class tambahan pada host toggle. |
150
155
  | `toggled` | `boolean` | - | Emit nilai open state terbaru setelah tombol toggle diklik. |
151
156
 
157
+ ### `PageOverview`
158
+
159
+ | Input | Type | Default | Keterangan |
160
+ | ----------- | ---------------- | ------- | ------------------------------------------------------------------------------- |
161
+ | `ariaLabel` | `string \| null` | `null` | Bila diisi, host menjadi landmark `role="region"` dengan `aria-label` tersebut. |
162
+ | `class` | `string` | `''` | Class tambahan pada host, misalnya grid dan padding untuk deret card. |
163
+
164
+ `PageOverview` menambahkan atribut host `data-page-slot="overview"`, dan `Page` mendapat
165
+ `data-page-overview` selama slot ini dipakai. Latarnya sama dengan `PageFilter`,
166
+ `bg-surface/50 text-surface-foreground`, dengan `border-b` sebagai pemisah dari content.
167
+ Slot ini tidak punya padding sendiri; jarak dan tata letak card milik konsumen lewat `class`.
168
+
152
169
  ## Variants
153
170
 
154
171
  - `stacked`
@@ -195,6 +212,15 @@ Saat memakai `height="fix"`, slot berikut tidak boleh melebihi tinggi tetap yang
195
212
 
196
213
  Karena independen dari `variant`, side filter bisa hidup berdampingan dengan `PageSide` — `PageSide` tetap menjadi rail terluar dan `PageFilter` menjadi kolom yang lebih dekat ke content (`[PageSide | PageFilter | PageContent]`).
197
214
 
215
+ ## Overview Band
216
+
217
+ `PageOverview` selalu stacked, selebar content, dan tingginya mengikuti isi:
218
+
219
+ - Urutannya `PageFilter` (stacked) → `PageOverview` → `PageContent`. Tanpa filter, overview langsung berada di bawah `PageHeader`.
220
+ - `scroll="content"`: overview diam di tempat, content mengisi tinggi sisa dan scroll sendiri. Overview yang tinggi ikut memakan ruang content, jadi untuk deret chart yang besar pertimbangkan `scroll="page"`.
221
+ - `scroll="page"`: overview ikut ter-scroll bersama page dan tidak pernah sticky; filter stacked tetap dipin di atas.
222
+ - Dengan `PageFilter placement="side"` mode `sticky`, filter menjadi kolom setinggi overview + content. Pada mode `drawer`/`overlay`, filter mengambang di atas keduanya, dan overlay ikut membuat overview inert.
223
+
198
224
  ## Examples
199
225
 
200
226
  ### Stacked with content scroll
@@ -451,3 +477,27 @@ Karena independen dari `variant`, side filter bisa hidup berdampingan dengan `Pa
451
477
  </PageContent>
452
478
  </Page>
453
479
  ```
480
+
481
+ ### Overview berisi card di bawah filter
482
+
483
+ ```html
484
+ <Page variant="stacked" height="fix" scroll="content">
485
+ <PageHeader>
486
+ <h1>Sales</h1>
487
+ </PageHeader>
488
+
489
+ <PageFilter placement="stacked">
490
+ <input type="search" aria-label="Search orders" placeholder="Search…" />
491
+ </PageFilter>
492
+
493
+ <PageOverview ariaLabel="Sales overview" class="grid grid-cols-3 gap-3 p-4">
494
+ <Card>…</Card>
495
+ <Card>…</Card>
496
+ <Card>…</Card>
497
+ </PageOverview>
498
+
499
+ <PageContent>
500
+ <p>Content.</p>
501
+ </PageContent>
502
+ </Page>
503
+ ```
@@ -50,7 +50,7 @@ export const appConfig = {
50
50
  ## Token Semantik Status
51
51
 
52
52
  Selain palet accent dan neutral, tema mengemit tiga token status semantik beserta
53
- pasangan foregroundnya. Semuanya digenerate oleh `scripts/gen-theme-colors.mjs` ke
53
+ pasangan foregroundnya. Semuanya digenerate oleh `scripts/generators/gen-theme-colors.mjs` ke
54
54
  `css/base/status.css`, jadi jangan diedit tangan.
55
55
 
56
56
  | Token | Pasangan foreground | Seed | Dipakai oleh |
@@ -77,7 +77,7 @@ WCAG, bukan menebak dari rentang hue. Aturannya:
77
77
 
78
78
  A brand the consumer picks at runtime is held to the same rules, and split the
79
79
  same way. `ThemeBrandService.setBrand()` measures it with the same WCAG formula
80
- (`theme-contrast.ts`, a port of `scripts/theme-contrast.mjs`) before storing it:
80
+ (`theme-contrast.ts`, a port of `scripts/generators/theme-contrast.mjs`) before storing it:
81
81
 
82
82
  - `--brand` itself is never moved. Like a generated `--primary`, the fill keeps
83
83
  the lightness it was chosen with, so `theme-color='brand'` ships the colour the
@@ -96,16 +96,16 @@ that is what a native colour picker returns. A value with nothing to measure in
96
96
  it (`var(--consumer-brand)`, say) is passed through as given, and forfeits the
97
97
  guarantee.
98
98
 
99
- Jalankan `node scripts/gen-theme-colors.mjs --check` untuk memastikan CSS yang
99
+ Jalankan `node scripts/generators/gen-theme-colors.mjs --check` untuk memastikan CSS yang
100
100
  ter commit masih cocok dengan seed. Cek ini juga berjalan di `verify:libs` dan CI.
101
101
 
102
102
  ## Standar Token Geometri
103
103
 
104
- Setiap nilai geometri di `library/` wajib turun dari token tema, bukan angka mati.
104
+ Setiap nilai geometri di `packages/angular/` wajib turun dari token tema, bukan angka mati.
105
105
  Aturan ini yang membuat sumbu `theme-space` dan `theme-radius` benar benar
106
106
  menjangkau seluruh library, bukan hanya komponen yang kebetulan memakai utility
107
107
  Tailwind. Keputusan lengkapnya di
108
- [spec 0003](../../../docs/specs/0003-jangkauan-sumbu-space-radius/index.md).
108
+ [spec 0003](../../../../docs/specs/0003-jangkauan-sumbu-space-radius/index.md).
109
109
 
110
110
  **Pola kanonik**:
111
111
 
@@ -138,8 +138,8 @@ Tailwind. Keputusan lengkapnya di
138
138
  semantik (`rounded-full` pada avatar, switch, radio, progress, spinner, dan track
139
139
  slider) dikunci sebagai bentuk, jadi sumbu radius tidak menyentuhnya.
140
140
 
141
- **Penegakan**: `node scripts/check-geometry-tokens.mjs` (`bun run check:libs:geometry`)
142
- memindai `library/**/*.ts` dan `library/**/*.css`, lalu menggagalkan build saat
141
+ **Penegakan**: `node scripts/checks/check-geometry-tokens.mjs` (`bun run check:libs:geometry`)
142
+ memindai `packages/angular/**/*.ts` dan `packages/angular/**/*.css`, lalu menggagalkan build saat
143
143
  menemukan pelanggaran. Cek ini berjalan di `verify:libs` dan di CI pada tiap PR dan
144
144
  push ke `main`. Yang ditolak:
145
145
 
@@ -161,10 +161,10 @@ Yang **tidak** ditolak, dan memang begitu adanya:
161
161
  itu yang lolos dari jaring ini;
162
162
  - berkas `*.spec.ts`, karena test hanya mencerminkan class string komponennya. Satu
163
163
  nilai diperbaiki di komponennya, bukan di dua tempat;
164
- - `library/theme/styles/css/` yang justru tempat token didefinisikan.
164
+ - `packages/angular/theme/styles/css/` yang justru tempat token didefinisikan.
165
165
 
166
166
  **Pengecualian**: tinggal di
167
- [`scripts/geometry-token-exceptions.json`](../../../scripts/geometry-token-exceptions.json).
167
+ [`scripts/checks/geometry-token-exceptions.json`](../../../../scripts/checks/geometry-token-exceptions.json).
168
168
  Tiap baris wajib membawa `pattern`, `files`, dan `reason`; baris tanpa alasan
169
169
  tertulis ditolak oleh guard itu sendiri, jadi daftar ini tidak bisa dipakai sebagai
170
170
  tempat buang. `wave` bernilai `null` untuk pengecualian permanen, atau angka 2
@@ -173,6 +173,6 @@ mencetak sisa utang per gelombang tiap kali dijalankan, sehingga yang belum
173
173
  dibereskan selalu berupa angka, bukan perasaan.
174
174
 
175
175
  **Entry point baru**: tambahkan barisnya ke tabel inventaris sumbu di
176
- [rationale spec 0003](../../../docs/specs/0003-jangkauan-sumbu-space-radius/rationale.md),
176
+ [rationale spec 0003](../../../../docs/specs/0003-jangkauan-sumbu-space-radius/rationale.md),
177
177
  sebutkan sumbu mana yang berlaku dan seberapa jauh sudah tersambung. Tabel itu
178
178
  rujukan tunggal soal sudut mana yang sengaja dikunci dan mana yang kelupaan.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Base theme: (prefers-color-scheme: dark) fallback.
3
3
  *
4
- * Generated by scripts/gen-theme-colors.mjs — do not edit. Mirrors every
4
+ * Generated by scripts/generators/gen-theme-colors.mjs — do not edit. Mirrors every
5
5
  * [data-mode='dark'] rule in theme.css and tokens.css so an OS dark preference
6
6
  * is honoured before the theme provider has written the attribute. An explicit
7
7
  * data-mode choice, in either direction, still decides.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Semantic status fills: success, warning, info.
3
3
  *
4
- * Generated by scripts/gen-theme-colors.mjs — do not edit. Derived from the
4
+ * Generated by scripts/generators/gen-theme-colors.mjs — do not edit. Derived from the
5
5
  * same accent seeds as the palettes (green, amber, sky) with the foreground
6
6
  * chosen by measured contrast, so components can use bg-success and friends
7
7
  * instead of hardcoded Tailwind colours and still pass WCAG AA.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: amber. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: amber. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='amber'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: blue. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: blue. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='blue'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: cyan. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: cyan. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='cyan'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: emerald. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: emerald. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='emerald'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: fuchsia. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: fuchsia. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='fuchsia'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: green. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: green. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='green'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: indigo. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: indigo. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='indigo'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: lime. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: lime. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='lime'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: orange. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: orange. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='orange'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: pink. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: pink. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='pink'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: purple. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: purple. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='purple'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: red. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: red. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='red'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: rose. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: rose. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='rose'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: sky. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: sky. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='sky'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: teal. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: teal. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='teal'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: violet. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: violet. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='violet'][data-mode='light'] {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Accent theme: yellow. Generated by scripts/gen-theme-colors.mjs — do not edit.
2
+ * Accent theme: yellow. Generated by scripts/generators/gen-theme-colors.mjs — do not edit.
3
3
  */
4
4
  @layer tokens {
5
5
  html[theme-color='yellow'][data-mode='light'] {