@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.
- package/README.md +8 -6
- package/SUPPORT.md +3 -3
- package/chart/README.md +1 -1
- package/component/README.md +2 -2
- package/component/calendar/README.md +3 -15
- package/component/drawer/README.md +1 -2
- package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
- package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
- package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
- package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
- package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
- package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
- package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
- package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
- package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
- package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
- package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
- package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
- package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
- package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
- package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
- package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
- package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
- package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -5
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
- package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
- package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
- package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
- package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
- package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
- package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
- package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
- package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
- package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
- package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
- package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
- package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
- package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
- package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
- package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
- package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
- package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
- package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
- package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
- package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
- package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
- package/fesm2022/ojiepermana-angular-component.mjs +0 -10
- package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
- package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
- package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs +129 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs +812 -0
- package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-COQ-60DS.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-YIz0IsIb.mjs} +392 -207
- package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs +650 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs +662 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-CUb68MZH.mjs +1219 -0
- package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs +327 -0
- package/fesm2022/ojiepermana-angular-navigation-service.mjs +544 -724
- package/fesm2022/ojiepermana-angular-navigation-types.mjs +139 -56
- package/fesm2022/ojiepermana-angular-navigation.mjs +3256 -4
- package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
- package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1125 -737
- package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
- package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
- package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1928 -553
- package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -496
- package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
- package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
- package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
- package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
- package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
- package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
- package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
- package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
- package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
- package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
- package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
- package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
- package/fesm2022/ojiepermana-angular.mjs +5 -24
- package/navigation/README.md +69 -18
- package/package.json +16 -12
- package/sdk/README.md +1 -1
- package/sdk/src/writer/index.js +2 -2
- package/theme/README.md +1 -1
- package/theme/layout/README.md +2 -4
- package/theme/page/README.md +50 -0
- package/theme/styles/README.md +10 -10
- package/theme/styles/css/base/prefers-dark.css +1 -1
- package/theme/styles/css/base/status.css +1 -1
- package/theme/styles/css/color/amber.css +1 -1
- package/theme/styles/css/color/blue.css +1 -1
- package/theme/styles/css/color/cyan.css +1 -1
- package/theme/styles/css/color/emerald.css +1 -1
- package/theme/styles/css/color/fuchsia.css +1 -1
- package/theme/styles/css/color/green.css +1 -1
- package/theme/styles/css/color/indigo.css +1 -1
- package/theme/styles/css/color/lime.css +1 -1
- package/theme/styles/css/color/orange.css +1 -1
- package/theme/styles/css/color/pink.css +1 -1
- package/theme/styles/css/color/purple.css +1 -1
- package/theme/styles/css/color/red.css +1 -1
- package/theme/styles/css/color/rose.css +1 -1
- package/theme/styles/css/color/sky.css +1 -1
- package/theme/styles/css/color/teal.css +1 -1
- package/theme/styles/css/color/violet.css +1 -1
- package/theme/styles/css/color/yellow.css +1 -1
- package/theme/styles/css/neutral/gray.css +1 -1
- package/theme/styles/css/neutral/mauve.css +1 -1
- package/theme/styles/css/neutral/mist.css +1 -1
- package/theme/styles/css/neutral/neutral.css +1 -1
- package/theme/styles/css/neutral/olive.css +1 -1
- package/theme/styles/css/neutral/slate.css +1 -1
- package/theme/styles/css/neutral/stone.css +1 -1
- package/theme/styles/css/neutral/taupe.css +1 -1
- package/theme/styles/css/neutral/zinc.css +1 -1
- package/types/ojiepermana-angular-chart-area.d.ts +126 -63
- package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
- package/types/ojiepermana-angular-chart-core.d.ts +409 -398
- package/types/ojiepermana-angular-chart-line.d.ts +141 -68
- package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
- package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
- package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
- package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
- package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
- package/types/ojiepermana-angular-chart.d.ts +3 -2
- package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
- package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
- package/types/ojiepermana-angular-component-alert.d.ts +69 -39
- package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
- package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
- package/types/ojiepermana-angular-component-badge.d.ts +36 -24
- package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
- package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
- package/types/ojiepermana-angular-component-button.d.ts +44 -27
- package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
- package/types/ojiepermana-angular-component-card.d.ts +112 -63
- package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
- package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
- package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
- package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
- package/types/ojiepermana-angular-component-command.d.ts +206 -121
- package/types/ojiepermana-angular-component-composer.d.ts +184 -84
- package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
- package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
- package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
- package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
- package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
- package/types/ojiepermana-angular-component-editor.d.ts +215 -117
- package/types/ojiepermana-angular-component-empty.d.ts +80 -45
- package/types/ojiepermana-angular-component-form.d.ts +185 -121
- package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
- package/types/ojiepermana-angular-component-icon.d.ts +87 -57
- package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
- package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
- package/types/ojiepermana-angular-component-input.d.ts +27 -17
- package/types/ojiepermana-angular-component-item.d.ts +160 -84
- package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
- package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
- package/types/ojiepermana-angular-component-label.d.ts +19 -11
- package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
- package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
- package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
- package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
- package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
- package/types/ojiepermana-angular-component-popover.d.ts +94 -64
- package/types/ojiepermana-angular-component-progress.d.ts +45 -17
- package/types/ojiepermana-angular-component-radio.d.ts +129 -53
- package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
- package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
- package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
- package/types/ojiepermana-angular-component-select.d.ts +94 -77
- package/types/ojiepermana-angular-component-separator.d.ts +26 -14
- package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
- package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
- package/types/ojiepermana-angular-component-slider.d.ts +140 -75
- package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
- package/types/ojiepermana-angular-component-switch.d.ts +97 -40
- package/types/ojiepermana-angular-component-table.d.ts +102 -50
- package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
- package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
- package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
- package/types/ojiepermana-angular-component-toast.d.ts +51 -55
- package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
- package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
- package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
- package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
- package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
- package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
- package/types/ojiepermana-angular-component-utils.d.ts +2 -2
- package/types/ojiepermana-angular-component.d.ts +1 -2
- package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
- package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
- package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
- package/types/ojiepermana-angular-navigation-types.d.ts +166 -125
- package/types/ojiepermana-angular-navigation.d.ts +708 -375
- package/types/ojiepermana-angular-sdk.d.ts +69 -71
- package/types/ojiepermana-angular-theme-component-settings.d.ts +120 -86
- package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
- package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
- package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +446 -187
- package/types/ojiepermana-angular-theme-layout.d.ts +201 -113
- package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
- package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
- package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
- package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
- package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
- package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
- package/types/ojiepermana-angular-theme-page.d.ts +7 -5
- package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
- package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
- package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
- package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
- package/types/ojiepermana-angular-theme.d.ts +1 -2
- package/types/ojiepermana-angular.d.ts +5 -5
- package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-Be3IqzG4.mjs +0 -91
- package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-Bc7DWK3R.mjs +0 -522
- package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-DA8VPEn7.mjs +0 -404
- package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-U2TJTzlW.mjs +0 -466
- package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs +0 -2668
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
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";
|
package/navigation/README.md
CHANGED
|
@@ -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
|
|
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
|
|
113
|
-
|
|
|
114
|
-
| `NavigationSidebar`
|
|
115
|
-
| `NavigationSidebar`
|
|
116
|
-
| `NavigationSidebar`
|
|
117
|
-
| `NavigationSidebar`
|
|
118
|
-
| `NavigationDockbar`
|
|
119
|
-
| `NavigationDockbar`
|
|
120
|
-
| `NavigationDockbar`
|
|
121
|
-
| `NavigationDockbar`
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
| `NavigationFlyout`
|
|
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.
|
|
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
|
|
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": "^
|
|
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": "
|
|
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.
|
|
40
|
-
"@angular/common": ">=22.
|
|
41
|
-
"@angular/core": ">=22.
|
|
42
|
-
"@angular/forms": ">=22.
|
|
43
|
-
"@angular/material": ">=22.
|
|
44
|
-
"@angular/platform-browser": ">=22.
|
|
45
|
-
"@angular/router": ">=22.
|
|
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.
|
|
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": "
|
|
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 [`
|
|
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
|
|
package/sdk/src/writer/index.js
CHANGED
|
@@ -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.
|
|
36
|
-
'@angular/core': '>=22.
|
|
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.
|
|
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`.
|
package/theme/layout/README.md
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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>
|
package/theme/page/README.md
CHANGED
|
@@ -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
|
+
```
|
package/theme/styles/README.md
CHANGED
|
@@ -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 `
|
|
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](
|
|
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 `
|
|
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
|
-
- `
|
|
164
|
+
- `packages/angular/theme/styles/css/` yang justru tempat token didefinisikan.
|
|
165
165
|
|
|
166
166
|
**Pengecualian**: tinggal di
|
|
167
|
-
[`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](
|
|
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.
|