@ojiepermana/angular 22.0.1 → 22.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -311
- package/fesm2022/ojiepermana-angular-chart.mjs +10 -0
- package/fesm2022/ojiepermana-angular-component.mjs +10 -0
- package/fesm2022/ojiepermana-angular-navigation.mjs +10 -0
- package/fesm2022/ojiepermana-angular-sdk.mjs +10 -0
- package/fesm2022/ojiepermana-angular-theme.mjs +4 -384
- package/fesm2022/ojiepermana-angular.mjs +15 -16
- package/package.json +25 -425
- package/types/ojiepermana-angular-chart.d.ts +1 -0
- package/types/ojiepermana-angular-component.d.ts +1 -0
- package/types/ojiepermana-angular-navigation.d.ts +1 -0
- package/types/ojiepermana-angular-sdk.d.ts +1 -0
- package/types/ojiepermana-angular-theme.d.ts +1 -116
- package/types/ojiepermana-angular.d.ts +5 -3
- package/.npmignore +0 -2
- package/collection.json +0 -30
- package/component/accordion/README.md +0 -195
- package/component/accordion/package.json +0 -4
- package/component/alert/README.md +0 -182
- package/component/alert/package.json +0 -4
- package/component/alert-dialog/README.md +0 -239
- package/component/alert-dialog/package.json +0 -4
- package/component/aspect-ratio/README.md +0 -112
- package/component/aspect-ratio/package.json +0 -4
- package/component/avatar/README.md +0 -176
- package/component/avatar/package.json +0 -4
- package/component/badge/README.md +0 -133
- package/component/badge/package.json +0 -4
- package/component/breadcrumb/README.md +0 -216
- package/component/breadcrumb/package.json +0 -4
- package/component/button/README.md +0 -139
- package/component/button/package.json +0 -4
- package/component/button-group/README.md +0 -208
- package/component/button-group/package.json +0 -4
- package/component/calendar/README.md +0 -132
- package/component/calendar/package.json +0 -4
- package/component/card/README.md +0 -220
- package/component/card/package.json +0 -4
- package/component/carousel/README.md +0 -276
- package/component/carousel/package.json +0 -4
- package/component/chart/README.md +0 -249
- package/component/chart/area/package.json +0 -4
- package/component/chart/bar/package.json +0 -4
- package/component/chart/line/package.json +0 -4
- package/component/chart/package.json +0 -4
- package/component/chart/pie/package.json +0 -4
- package/component/chart/radar/package.json +0 -4
- package/component/chart/radial/package.json +0 -4
- package/component/chart/scatter/package.json +0 -4
- package/component/checkbox/README.md +0 -149
- package/component/checkbox/package.json +0 -4
- package/component/collapsible/README.md +0 -195
- package/component/collapsible/package.json +0 -4
- package/component/combobox/README.md +0 -198
- package/component/combobox/package.json +0 -4
- package/component/command/README.md +0 -275
- package/component/command/package.json +0 -4
- package/component/composer/README.md +0 -235
- package/component/composer/package.json +0 -4
- package/component/context-menu/README.md +0 -267
- package/component/context-menu/package.json +0 -4
- package/component/date-picker/README.md +0 -177
- package/component/date-picker/package.json +0 -4
- package/component/dialog/README.md +0 -237
- package/component/dialog/package.json +0 -4
- package/component/drawer/README.md +0 -145
- package/component/drawer/package.json +0 -4
- package/component/dropdown-menu/README.md +0 -311
- package/component/dropdown-menu/package.json +0 -4
- package/component/editor/README.md +0 -136
- package/component/editor/package.json +0 -4
- package/component/empty/README.md +0 -183
- package/component/empty/package.json +0 -4
- package/component/form/README.md +0 -210
- package/component/form/package.json +0 -4
- package/component/hover-card/README.md +0 -146
- package/component/hover-card/package.json +0 -4
- package/component/input/README.md +0 -159
- package/component/input/package.json +0 -4
- package/component/input-group/README.md +0 -239
- package/component/input-group/package.json +0 -4
- package/component/input-otp/README.md +0 -278
- package/component/input-otp/package.json +0 -4
- package/component/item/README.md +0 -247
- package/component/item/package.json +0 -4
- package/component/kanban/README.md +0 -81
- package/component/kanban/package.json +0 -4
- package/component/kbd/README.md +0 -139
- package/component/kbd/package.json +0 -4
- package/component/label/README.md +0 -136
- package/component/label/package.json +0 -4
- package/component/menubar/README.md +0 -269
- package/component/menubar/package.json +0 -4
- package/component/native-select/README.md +0 -176
- package/component/native-select/package.json +0 -4
- package/component/navigation-menu/README.md +0 -160
- package/component/navigation-menu/package.json +0 -4
- package/component/pagination/README.md +0 -144
- package/component/pagination/package.json +0 -4
- package/component/pillbox/README.md +0 -67
- package/component/pillbox/package.json +0 -4
- package/component/popover/README.md +0 -43
- package/component/popover/package.json +0 -4
- package/component/progress/README.md +0 -160
- package/component/progress/package.json +0 -4
- package/component/radio/README.md +0 -209
- package/component/radio/package.json +0 -4
- package/component/resizable/README.md +0 -168
- package/component/resizable/package.json +0 -4
- package/component/scroll-area/README.md +0 -143
- package/component/scroll-area/package.json +0 -4
- package/component/select/README.md +0 -174
- package/component/select/package.json +0 -4
- package/component/separator/README.md +0 -170
- package/component/separator/package.json +0 -4
- package/component/sheet/README.md +0 -183
- package/component/sheet/package.json +0 -4
- package/component/skeleton/README.md +0 -158
- package/component/skeleton/package.json +0 -4
- package/component/slider/README.md +0 -207
- package/component/slider/package.json +0 -4
- package/component/spinner/README.md +0 -160
- package/component/spinner/package.json +0 -4
- package/component/switch/README.md +0 -166
- package/component/switch/package.json +0 -4
- package/component/table/README.md +0 -291
- package/component/table/package.json +0 -4
- package/component/tabs/README.md +0 -219
- package/component/tabs/package.json +0 -4
- package/component/textarea/README.md +0 -154
- package/component/textarea/package.json +0 -4
- package/component/timeline/README.md +0 -94
- package/component/timeline/package.json +0 -4
- package/component/toast/README.md +0 -321
- package/component/toast/package.json +0 -4
- package/component/toggle/README.md +0 -131
- package/component/toggle/package.json +0 -4
- package/component/toggle-group/README.md +0 -206
- package/component/toggle-group/package.json +0 -4
- package/component/tooltip/README.md +0 -211
- package/component/tooltip/package.json +0 -4
- package/component/utils/package.json +0 -4
- package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -189
- package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -276
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -99
- package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -37
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -139
- package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -50
- package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -200
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -103
- package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-button.mjs +0 -68
- package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -88
- package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-card.mjs +0 -152
- package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -334
- package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3925
- package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -114
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -124
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -272
- package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-command.mjs +0 -293
- package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-composer.mjs +0 -352
- package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -103
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -170
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -279
- package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
- package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -492
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-editor.mjs +0 -717
- package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-empty.mjs +0 -145
- package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-form.mjs +0 -366
- package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +0 -297
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -179
- package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +0 -514
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-input.mjs +0 -45
- package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-item.mjs +0 -264
- package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +0 -314
- package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +0 -55
- package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-label.mjs +0 -33
- package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +0 -308
- package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +0 -67
- package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +0 -413
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -226
- package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +0 -812
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -169
- package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -60
- package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -122
- package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +0 -481
- package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -54
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-select.mjs +0 -176
- package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -37
- package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -284
- package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -31
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -423
- package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +0 -60
- package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -116
- package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-table.mjs +0 -155
- package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -272
- package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -39
- package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +0 -237
- package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -71
- package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +0 -289
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +0 -82
- package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -354
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
- package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
- package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -602
- package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
- package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -116
- package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
- package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -30
- package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
- package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-type-empty.mjs +0 -49
- package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs +0 -128
- package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs +0 -123
- package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-layout.mjs +0 -485
- package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
- package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -63
- package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -559
- package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -213
- package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -401
- package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -670
- package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
- package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
- package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -294
- package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
- package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular-theme.mjs.map +0 -1
- package/fesm2022/ojiepermana-angular.mjs.map +0 -1
- package/generator/api/README.md +0 -252
- package/generator/api/bin/package.json +0 -3
- package/generator/api/bin/schematics/init/index.js +0 -90
- package/generator/api/bin/schematics/ng-add/index.js +0 -131
- package/generator/api/bin/schematics/sdk/index.js +0 -76
- package/generator/api/bin/src/config/loader.js +0 -41
- package/generator/api/bin/src/config/schema.js +0 -57
- package/generator/api/bin/src/emit/client.js +0 -248
- package/generator/api/bin/src/emit/metadata.js +0 -295
- package/generator/api/bin/src/emit/models.js +0 -106
- package/generator/api/bin/src/emit/navigation.js +0 -56
- package/generator/api/bin/src/emit/operations.js +0 -122
- package/generator/api/bin/src/emit/public-api.js +0 -54
- package/generator/api/bin/src/emit/services.js +0 -87
- package/generator/api/bin/src/engine.js +0 -65
- package/generator/api/bin/src/layout/per-domain.js +0 -359
- package/generator/api/bin/src/parser/bundle.js +0 -25
- package/generator/api/bin/src/parser/ir.js +0 -320
- package/generator/api/bin/src/parser/types.js +0 -7
- package/generator/api/bin/src/render/template.js +0 -58
- package/generator/api/bin/src/writer/index.js +0 -278
- package/generator/api/package.json +0 -4
- package/generator/api/schematics/init/schema.json +0 -19
- package/generator/api/schematics/ng-add/schema.json +0 -14
- package/generator/api/schematics/sdk/schema.json +0 -19
- package/generator/api/sdk.config.example.json +0 -24
- package/generator/guide/README.md +0 -84
- package/generator/guide/bin/package.json +0 -3
- package/generator/guide/bin/schematics/build/index.js +0 -36
- package/generator/guide/bin/schematics/init/index.js +0 -70
- package/generator/guide/bin/src/config/loader.js +0 -50
- package/generator/guide/bin/src/config/schema.js +0 -12
- package/generator/guide/bin/src/engine/component.js +0 -74
- package/generator/guide/bin/src/engine/frontmatter.js +0 -42
- package/generator/guide/bin/src/engine/index.js +0 -42
- package/generator/guide/bin/src/engine/naming.js +0 -39
- package/generator/guide/bin/src/engine/render.js +0 -36
- package/generator/guide/bin/src/engine/routes.js +0 -106
- package/generator/guide/bin/src/engine/walk.js +0 -35
- package/generator/guide/guide.config.example.json +0 -9
- package/generator/guide/schematics/build/schema.json +0 -14
- package/generator/guide/schematics/init/schema.json +0 -19
- package/layout/component/package.json +0 -4
- package/layout/package.json +0 -4
- package/layout/provider/package.json +0 -4
- package/layout/services/package.json +0 -4
- package/layout/shell/package.json +0 -4
- package/layout/token/directive/package.json +0 -4
- package/layout/token/package.json +0 -4
- package/layout/type/empty/package.json +0 -4
- package/layout/type/horizontal/package.json +0 -4
- package/layout/type/vertical/package.json +0 -4
- package/navigation/demo-data/package.json +0 -4
- package/navigation/icon/package.json +0 -4
- package/navigation/item/package.json +0 -4
- package/navigation/service/package.json +0 -4
- package/navigation/sidebar/package.json +0 -4
- package/navigation/topbar/README.md +0 -196
- package/navigation/topbar/package.json +0 -4
- package/navigation/types/package.json +0 -4
- package/theme/README.md +0 -174
- package/theme/package.json +0 -4
- package/theme/provider/package.json +0 -4
- package/theme/services/package.json +0 -4
- package/theme/styles/foundation/components.css +0 -81
- package/theme/styles/foundation/layers.css +0 -15
- package/theme/styles/foundation/tokens.css +0 -55
- package/theme/styles/index.css +0 -37
- package/theme/styles/integrations/material/autocomplete.css +0 -178
- package/theme/styles/integrations/material/button.css +0 -468
- package/theme/styles/integrations/material/dialog.css +0 -152
- package/theme/styles/integrations/material/select.css +0 -175
- package/theme/styles/integrations/material/slide-toggle.css +0 -234
- package/theme/styles/integrations/material/slider.css +0 -194
- package/theme/styles/integrations/material/tabs.css +0 -229
- package/theme/styles/integrations/material.css +0 -264
- package/theme/styles/integrations/tailwind.css +0 -114
- package/theme/styles/variants/color/amber.css +0 -31
- package/theme/styles/variants/color/base.css +0 -36
- package/theme/styles/variants/color/blue.css +0 -31
- package/theme/styles/variants/color/cyan.css +0 -31
- package/theme/styles/variants/color/emerald.css +0 -31
- package/theme/styles/variants/color/fuchsia.css +0 -31
- package/theme/styles/variants/color/green.css +0 -31
- package/theme/styles/variants/color/index.css +0 -22
- package/theme/styles/variants/color/indigo.css +0 -31
- package/theme/styles/variants/color/lime.css +0 -31
- package/theme/styles/variants/color/orange.css +0 -31
- package/theme/styles/variants/color/pink.css +0 -31
- package/theme/styles/variants/color/purple.css +0 -31
- package/theme/styles/variants/color/red.css +0 -31
- package/theme/styles/variants/color/rose.css +0 -31
- package/theme/styles/variants/color/sky.css +0 -31
- package/theme/styles/variants/color/teal.css +0 -31
- package/theme/styles/variants/color/violet.css +0 -31
- package/theme/styles/variants/color/yellow.css +0 -31
- package/theme/styles/variants/mode/dark.css +0 -20
- package/theme/styles/variants/mode/index.css +0 -6
- package/theme/styles/variants/mode/light.css +0 -24
- package/theme/styles/variants/style/brutal.css +0 -50
- package/theme/styles/variants/style/default.css +0 -54
- package/theme/styles/variants/style/index.css +0 -8
- package/theme/styles/variants/style/sharp.css +0 -50
- package/theme/styles/variants/style/soft.css +0 -50
- package/theme/token/package.json +0 -4
- package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
- package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
- package/types/ojiepermana-angular-component-alert.d.ts +0 -37
- package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
- package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
- package/types/ojiepermana-angular-component-badge.d.ts +0 -19
- package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
- package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
- package/types/ojiepermana-angular-component-button.d.ts +0 -22
- package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
- package/types/ojiepermana-angular-component-card.d.ts +0 -60
- package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
- package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
- package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
- package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
- package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
- package/types/ojiepermana-angular-component-combobox.d.ts +0 -50
- package/types/ojiepermana-angular-component-command.d.ts +0 -99
- package/types/ojiepermana-angular-component-composer.d.ts +0 -90
- package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
- package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
- package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
- package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
- package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -137
- package/types/ojiepermana-angular-component-editor.d.ts +0 -123
- package/types/ojiepermana-angular-component-empty.d.ts +0 -50
- package/types/ojiepermana-angular-component-form.d.ts +0 -141
- package/types/ojiepermana-angular-component-hover-card.d.ts +0 -74
- package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
- package/types/ojiepermana-angular-component-input-otp.d.ts +0 -136
- package/types/ojiepermana-angular-component-input.d.ts +0 -16
- package/types/ojiepermana-angular-component-item.d.ts +0 -88
- package/types/ojiepermana-angular-component-kanban.d.ts +0 -70
- package/types/ojiepermana-angular-component-kbd.d.ts +0 -16
- package/types/ojiepermana-angular-component-label.d.ts +0 -11
- package/types/ojiepermana-angular-component-menubar.d.ts +0 -67
- package/types/ojiepermana-angular-component-native-select.d.ts +0 -26
- package/types/ojiepermana-angular-component-navigation-menu.d.ts +0 -96
- package/types/ojiepermana-angular-component-pagination.d.ts +0 -33
- package/types/ojiepermana-angular-component-pillbox.d.ts +0 -157
- package/types/ojiepermana-angular-component-popover.d.ts +0 -43
- package/types/ojiepermana-angular-component-progress.d.ts +0 -17
- package/types/ojiepermana-angular-component-radio.d.ts +0 -40
- package/types/ojiepermana-angular-component-resizable.d.ts +0 -99
- package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
- package/types/ojiepermana-angular-component-select.d.ts +0 -57
- package/types/ojiepermana-angular-component-separator.d.ts +0 -14
- package/types/ojiepermana-angular-component-sheet.d.ts +0 -76
- package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
- package/types/ojiepermana-angular-component-slider.d.ts +0 -74
- package/types/ojiepermana-angular-component-spinner.d.ts +0 -13
- package/types/ojiepermana-angular-component-switch.d.ts +0 -40
- package/types/ojiepermana-angular-component-table.d.ts +0 -52
- package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
- package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
- package/types/ojiepermana-angular-component-timeline.d.ts +0 -63
- package/types/ojiepermana-angular-component-toast.d.ts +0 -38
- package/types/ojiepermana-angular-component-toggle-group.d.ts +0 -89
- package/types/ojiepermana-angular-component-toggle.d.ts +0 -25
- package/types/ojiepermana-angular-component-tooltip.d.ts +0 -89
- package/types/ojiepermana-angular-component-utils.d.ts +0 -5
- package/types/ojiepermana-angular-generator-api.d.ts +0 -86
- package/types/ojiepermana-angular-layout-component.d.ts +0 -205
- package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
- package/types/ojiepermana-angular-layout-services.d.ts +0 -25
- package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
- package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
- package/types/ojiepermana-angular-layout-token.d.ts +0 -36
- package/types/ojiepermana-angular-layout-type-empty.d.ts +0 -22
- package/types/ojiepermana-angular-layout-type-horizontal.d.ts +0 -36
- package/types/ojiepermana-angular-layout-type-vertical.d.ts +0 -38
- package/types/ojiepermana-angular-layout.d.ts +0 -164
- package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
- package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
- package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
- package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
- package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
- package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -74
- package/types/ojiepermana-angular-navigation-types.d.ts +0 -135
- package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
- package/types/ojiepermana-angular-theme-services.d.ts +0 -55
- package/types/ojiepermana-angular-theme-token.d.ts +0 -57
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/schema",
|
|
3
|
-
"$id": "NgAddSchema",
|
|
4
|
-
"title": "@ojiepermana/angular ng-add options",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"skipInstall": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"default": false,
|
|
10
|
-
"description": "Skip installing dependencies after updating package.json."
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"additionalProperties": false
|
|
14
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
-
"$id": "SdkGeneratorSchema",
|
|
4
|
-
"title": "Generate an Angular SDK from an OpenAPI spec",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"config": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "Path to sdk.config.json (defaults to ./config/sdk.config.json at workspace root).",
|
|
10
|
-
"default": "config/sdk.config.json"
|
|
11
|
-
},
|
|
12
|
-
"target": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"description": "Optional name/index of a specific target in the config to generate."
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"required": [],
|
|
18
|
-
"additionalProperties": false
|
|
19
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./node_modules/@ojiepermana/angular/generator/api/schematics/sdk/schema.json",
|
|
3
|
-
"targets": [
|
|
4
|
-
{
|
|
5
|
-
"input": "./openapi.yaml",
|
|
6
|
-
"output": "./sdk",
|
|
7
|
-
"mode": "library",
|
|
8
|
-
"clientName": "Api",
|
|
9
|
-
"packageName": "@my-scope/sdk",
|
|
10
|
-
"packageVersion": "0.0.1",
|
|
11
|
-
"rootUrl": "",
|
|
12
|
-
"splitByDomain": true,
|
|
13
|
-
"splitDepth": "service",
|
|
14
|
-
"features": {
|
|
15
|
-
"models": true,
|
|
16
|
-
"operations": true,
|
|
17
|
-
"services": true,
|
|
18
|
-
"client": true,
|
|
19
|
-
"metadata": true,
|
|
20
|
-
"navigation": true
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
]
|
|
24
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# `@ojiepermana/angular/generator/guide`
|
|
2
|
-
|
|
3
|
-
Build-time schematic that compiles a folder of Markdown files into Angular standalone components plus a nested `Routes` file.
|
|
4
|
-
|
|
5
|
-
This entry point ships **no runtime code**. It is only invoked through the Angular CLI:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
# 1. scaffold a config file at the workspace root
|
|
9
|
-
bun run gen:guide:init
|
|
10
|
-
|
|
11
|
-
# 2. edit guide.config.json (sourceDir, outputDir, ...)
|
|
12
|
-
|
|
13
|
-
# 3. generate components + routes
|
|
14
|
-
bun run gen:guide
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Inside this monorepo the schematic factory is registered in the parent collection at [`projects/angular/collection.json`](../../collection.json).
|
|
18
|
-
After publishing, consumers run `ng generate @ojiepermana/angular:guide` (and `:guide-init` to scaffold the config).
|
|
19
|
-
|
|
20
|
-
## Config (`guide.config.json`)
|
|
21
|
-
|
|
22
|
-
| Key | Type | Default | Description |
|
|
23
|
-
| ----------------- | --------------------------- | --------------- | ------------------------------------------------------------------- |
|
|
24
|
-
| `sourceDir` | `string` (required) | — | Folder containing `.md` files. Nested folders become nested routes. |
|
|
25
|
-
| `outputDir` | `string` (required) | — | Destination folder for generated components and the routes file. |
|
|
26
|
-
| `routeFile` | `string` | `doc.routes.ts` | File name of the generated routes file at `outputDir`. |
|
|
27
|
-
| `componentPrefix` | `string` | `Doc` | Prefix on generated component class names. |
|
|
28
|
-
| `componentStyle` | `'none' \| 'css' \| 'scss'` | `'none'` | Whether to emit a sibling stylesheet per component. |
|
|
29
|
-
| `routeExportName` | `string` | `DOC_ROUTES` | Identifier used for the exported `Routes` constant. |
|
|
30
|
-
|
|
31
|
-
## Frontmatter
|
|
32
|
-
|
|
33
|
-
Each `.md` file may declare YAML-style frontmatter:
|
|
34
|
-
|
|
35
|
-
```md
|
|
36
|
-
---
|
|
37
|
-
title: Getting Started
|
|
38
|
-
order: 1
|
|
39
|
-
path: getting-started
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
# Hello
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
- `title` → `data.title` on the route
|
|
46
|
-
- `order` → controls sibling sort order (lower comes first)
|
|
47
|
-
- `path` → overrides the URL segment derived from the file name (`index.md` → empty path)
|
|
48
|
-
|
|
49
|
-
## Output shape
|
|
50
|
-
|
|
51
|
-
For `sourceDir: ./docs` containing `docs/intro/overview.md`:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
<outputDir>/
|
|
55
|
-
intro/
|
|
56
|
-
overview.component.ts // standalone @Component, OnPush, inline template
|
|
57
|
-
doc.routes.ts // exports DOC_ROUTES: Routes
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Routes mirror the folder tree with lazy `loadComponent`:
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
export const DOC_ROUTES: Routes = [
|
|
64
|
-
{
|
|
65
|
-
path: 'intro',
|
|
66
|
-
children: [
|
|
67
|
-
{
|
|
68
|
-
path: 'overview',
|
|
69
|
-
loadComponent: () => import('./intro/overview.component').then((m) => m.DocIntroOverviewComponent),
|
|
70
|
-
data: { title: 'Overview', order: 1 },
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
];
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Then plug into your app:
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
{
|
|
81
|
-
path: 'docs',
|
|
82
|
-
loadChildren: () => import('./docs/doc.routes').then((m) => m.DOC_ROUTES),
|
|
83
|
-
},
|
|
84
|
-
```
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.build = build;
|
|
4
|
-
const node_path_1 = require("node:path");
|
|
5
|
-
const loader_1 = require("../../src/config/loader");
|
|
6
|
-
const engine_1 = require("../../src/engine");
|
|
7
|
-
function build(options = {}) {
|
|
8
|
-
return async (tree, context) => {
|
|
9
|
-
const workspaceRoot = process.cwd();
|
|
10
|
-
const configPath = options.config ?? 'config/guide.config.json';
|
|
11
|
-
const config = (0, loader_1.loadConfig)(configPath, workspaceRoot);
|
|
12
|
-
const result = await (0, engine_1.generate)(config, workspaceRoot);
|
|
13
|
-
writeResult(tree, workspaceRoot, result, context);
|
|
14
|
-
return tree;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
function writeResult(tree, workspaceRoot, result, context) {
|
|
18
|
-
const relOutput = (0, node_path_1.relative)(workspaceRoot, result.outputDir) || '.';
|
|
19
|
-
context.logger.info(`[guide] ${relOutput} (markdown=${result.stats.markdown}, components=${result.stats.components}, files=${result.stats.files})`);
|
|
20
|
-
for (const file of result.files) {
|
|
21
|
-
const treePath = normalizeTreePath(workspaceRoot, file.path);
|
|
22
|
-
const buffer = Buffer.from(file.content, 'utf8');
|
|
23
|
-
if (tree.exists(treePath)) {
|
|
24
|
-
tree.overwrite(treePath, buffer);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
tree.create(treePath, buffer);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function normalizeTreePath(workspaceRoot, path) {
|
|
32
|
-
const abs = (0, node_path_1.resolve)(workspaceRoot, path);
|
|
33
|
-
const rel = (0, node_path_1.relative)(workspaceRoot, abs);
|
|
34
|
-
const posix = rel.split(/\\+/).join('/');
|
|
35
|
-
return posix.startsWith('/') ? posix : `/${posix}`;
|
|
36
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.init = init;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const FALLBACK_TEMPLATE = {
|
|
7
|
-
$schema: './node_modules/@ojiepermana/angular/generator/guide/schematics/build/schema.json',
|
|
8
|
-
sourceDir: './docs',
|
|
9
|
-
outputDir: './projects/demo/library/src/app/docs',
|
|
10
|
-
routeFile: 'doc.routes.ts',
|
|
11
|
-
componentPrefix: 'Doc',
|
|
12
|
-
componentStyle: 'none',
|
|
13
|
-
routeExportName: 'DOC_ROUTES',
|
|
14
|
-
};
|
|
15
|
-
function init(options = {}) {
|
|
16
|
-
return (tree, context) => {
|
|
17
|
-
const workspaceRoot = process.cwd();
|
|
18
|
-
const destRelative = options.path ?? 'config/guide.config.json';
|
|
19
|
-
const treePath = destRelative.startsWith('/') ? destRelative : `/${destRelative}`;
|
|
20
|
-
if (tree.exists(treePath) && !options.force) {
|
|
21
|
-
throw new Error(`${destRelative} already exists. Re-run with --force to overwrite.`);
|
|
22
|
-
}
|
|
23
|
-
const content = loadTemplate(workspaceRoot, destRelative);
|
|
24
|
-
const buffer = Buffer.from(content, 'utf8');
|
|
25
|
-
if (tree.exists(treePath)) {
|
|
26
|
-
tree.overwrite(treePath, buffer);
|
|
27
|
-
context.logger.info(`[guide:init] overwrote ${destRelative}`);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
tree.create(treePath, buffer);
|
|
31
|
-
context.logger.info(`[guide:init] created ${destRelative}`);
|
|
32
|
-
}
|
|
33
|
-
context.logger.info(`[guide:init] edit sourceDir / outputDir, then run \`${getNextCommand(workspaceRoot)}\`.`);
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function loadTemplate(workspaceRoot, destRelative) {
|
|
37
|
-
const candidates = [
|
|
38
|
-
(0, node_path_1.resolve)(workspaceRoot, 'guide.config.example.json'),
|
|
39
|
-
(0, node_path_1.resolve)(__dirname, '../../../guide.config.example.json'),
|
|
40
|
-
(0, node_path_1.resolve)(workspaceRoot, 'projects/angular/generator/guide/guide.config.example.json'),
|
|
41
|
-
];
|
|
42
|
-
for (const candidate of candidates) {
|
|
43
|
-
try {
|
|
44
|
-
const parsed = JSON.parse((0, node_fs_1.readFileSync)(candidate, 'utf8'));
|
|
45
|
-
parsed.$schema = resolveSchemaPath(workspaceRoot, destRelative);
|
|
46
|
-
return `${JSON.stringify(parsed, null, 2)}\n`;
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
// try next
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return `${JSON.stringify({ ...FALLBACK_TEMPLATE, $schema: resolveSchemaPath(workspaceRoot, destRelative) }, null, 2)}\n`;
|
|
53
|
-
}
|
|
54
|
-
function resolveSchemaPath(workspaceRoot, destRelative) {
|
|
55
|
-
const prefix = relativePrefix(destRelative);
|
|
56
|
-
if ((0, node_fs_1.existsSync)((0, node_path_1.resolve)(workspaceRoot, 'projects/angular/generator/guide/schematics/build/schema.json'))) {
|
|
57
|
-
return `${prefix}projects/angular/generator/guide/schematics/build/schema.json`;
|
|
58
|
-
}
|
|
59
|
-
return `${prefix}node_modules/@ojiepermana/angular/generator/guide/schematics/build/schema.json`;
|
|
60
|
-
}
|
|
61
|
-
function relativePrefix(destRelative) {
|
|
62
|
-
const depth = destRelative.replace(/^\/+/, '').split('/').length - 1;
|
|
63
|
-
return depth <= 0 ? './' : '../'.repeat(depth);
|
|
64
|
-
}
|
|
65
|
-
function getNextCommand(workspaceRoot) {
|
|
66
|
-
if ((0, node_fs_1.existsSync)((0, node_path_1.resolve)(workspaceRoot, 'projects/angular/collection.json'))) {
|
|
67
|
-
return 'bun run gen:guide';
|
|
68
|
-
}
|
|
69
|
-
return 'ng generate @ojiepermana/angular:guide';
|
|
70
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadConfig = loadConfig;
|
|
4
|
-
exports.resolveConfig = resolveConfig;
|
|
5
|
-
const node_fs_1 = require("node:fs");
|
|
6
|
-
const node_path_1 = require("node:path");
|
|
7
|
-
const VALID_STYLES = ['none', 'css', 'scss'];
|
|
8
|
-
function loadConfig(configPath, workspaceRoot) {
|
|
9
|
-
const absolute = (0, node_path_1.isAbsolute)(configPath) ? configPath : (0, node_path_1.resolve)(workspaceRoot, configPath);
|
|
10
|
-
let raw;
|
|
11
|
-
try {
|
|
12
|
-
raw = (0, node_fs_1.readFileSync)(absolute, 'utf8');
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
throw new Error(`[guide] Unable to read config at ${absolute}. Run \`bun run gen:guide:init\` to scaffold one. (${error.message})`);
|
|
16
|
-
}
|
|
17
|
-
let parsed;
|
|
18
|
-
try {
|
|
19
|
-
parsed = JSON.parse(raw);
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
throw new Error(`[guide] Invalid JSON in ${absolute}: ${error.message}`);
|
|
23
|
-
}
|
|
24
|
-
return resolveConfig(parsed, absolute);
|
|
25
|
-
}
|
|
26
|
-
function resolveConfig(input, configPath) {
|
|
27
|
-
if (!input || typeof input !== 'object') {
|
|
28
|
-
throw new Error(`[guide] Config at ${configPath} must be a JSON object.`);
|
|
29
|
-
}
|
|
30
|
-
if (!input.sourceDir || typeof input.sourceDir !== 'string') {
|
|
31
|
-
throw new Error(`[guide] "sourceDir" is required in ${configPath}.`);
|
|
32
|
-
}
|
|
33
|
-
if (!input.outputDir || typeof input.outputDir !== 'string') {
|
|
34
|
-
throw new Error(`[guide] "outputDir" is required in ${configPath}.`);
|
|
35
|
-
}
|
|
36
|
-
const style = input.componentStyle ?? 'none';
|
|
37
|
-
if (!VALID_STYLES.includes(style)) {
|
|
38
|
-
throw new Error(`[guide] Invalid componentStyle "${style}". Expected one of ${VALID_STYLES.join(', ')}.`);
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
sourceDir: input.sourceDir,
|
|
42
|
-
outputDir: input.outputDir,
|
|
43
|
-
routeFile: input.routeFile && input.routeFile.trim() ? input.routeFile : 'doc.routes.ts',
|
|
44
|
-
componentPrefix: input.componentPrefix && input.componentPrefix.trim() ? input.componentPrefix : 'Doc',
|
|
45
|
-
componentStyle: style,
|
|
46
|
-
routeExportName: input.routeExportName && /^[A-Za-z_][A-Za-z0-9_]*$/.test(input.routeExportName)
|
|
47
|
-
? input.routeExportName
|
|
48
|
-
: 'DOC_ROUTES',
|
|
49
|
-
};
|
|
50
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Public configuration shape for the `guide` schematic.
|
|
4
|
-
*
|
|
5
|
-
* The schematic reads `guide.config.json` at the workspace root and produces
|
|
6
|
-
* standalone Angular components plus a nested `Routes` file under `outputDir`.
|
|
7
|
-
*
|
|
8
|
-
* Node / Angular CLI utilities stay in the schematic package itself. This file
|
|
9
|
-
* is the only surface re-exported by the secondary entry point and therefore
|
|
10
|
-
* MUST stay free of Node-specific imports.
|
|
11
|
-
*/
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildComponent = buildComponent;
|
|
4
|
-
const naming_1 = require("./naming");
|
|
5
|
-
const render_1 = require("./render");
|
|
6
|
-
async function buildComponent(segments, frontmatter, body, config) {
|
|
7
|
-
const html = await (0, render_1.renderMarkdown)(body);
|
|
8
|
-
const escaped = (0, render_1.escapeForTemplateLiteral)(html);
|
|
9
|
-
const className = (0, naming_1.componentClassName)(config.componentPrefix, segments);
|
|
10
|
-
const selector = (0, naming_1.componentSelector)(config.componentPrefix, segments);
|
|
11
|
-
const fileBase = (0, naming_1.componentFileBase)(segments);
|
|
12
|
-
const folderPath = segments.slice(0, -1).map(naming_1.toSlug).join('/');
|
|
13
|
-
const tsPath = joinPath(folderPath, `${fileBase}.component.ts`);
|
|
14
|
-
const { stylePath, styleRef, styleContent } = styleAssets(config.componentStyle, folderPath, fileBase);
|
|
15
|
-
const title = typeof frontmatter.title === 'string' && frontmatter.title.trim()
|
|
16
|
-
? frontmatter.title.trim()
|
|
17
|
-
: humanizeTitle(segments);
|
|
18
|
-
const order = typeof frontmatter.order === 'number' ? frontmatter.order : null;
|
|
19
|
-
const pathOverride = typeof frontmatter.path === 'string' && frontmatter.path.trim() ? frontmatter.path.trim() : null;
|
|
20
|
-
const tsContent = renderComponentTs({
|
|
21
|
-
className,
|
|
22
|
-
selector,
|
|
23
|
-
html: escaped,
|
|
24
|
-
styleRef,
|
|
25
|
-
});
|
|
26
|
-
return {
|
|
27
|
-
className,
|
|
28
|
-
selector,
|
|
29
|
-
tsContent,
|
|
30
|
-
styleContent,
|
|
31
|
-
tsPath,
|
|
32
|
-
stylePath,
|
|
33
|
-
segments,
|
|
34
|
-
title,
|
|
35
|
-
order,
|
|
36
|
-
pathOverride,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function styleAssets(style, folder, fileBase) {
|
|
40
|
-
if (style === 'none') {
|
|
41
|
-
return { stylePath: null, styleRef: null, styleContent: null };
|
|
42
|
-
}
|
|
43
|
-
const ext = style === 'scss' ? 'scss' : 'css';
|
|
44
|
-
const stylePath = joinPath(folder, `${fileBase}.component.${ext}`);
|
|
45
|
-
return {
|
|
46
|
-
stylePath,
|
|
47
|
-
styleRef: `./${fileBase}.component.${ext}`,
|
|
48
|
-
styleContent: `:host { display: block; }\n`,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function renderComponentTs(opts) {
|
|
52
|
-
const styleLine = opts.styleRef ? ` styleUrl: '${opts.styleRef}',\n` : '';
|
|
53
|
-
return (`// Auto-generated by @ojiepermana/angular/generator/guide. Do not edit by hand.\n` +
|
|
54
|
-
`import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n` +
|
|
55
|
-
`@Component({\n` +
|
|
56
|
-
` selector: '${opts.selector}',\n` +
|
|
57
|
-
` changeDetection: ChangeDetectionStrategy.OnPush,\n` +
|
|
58
|
-
` host: { class: 'block min-w-0' },\n` +
|
|
59
|
-
styleLine +
|
|
60
|
-
` template: \`<article class="demo-docs-content">${opts.html}</article>\`,\n` +
|
|
61
|
-
`})\n` +
|
|
62
|
-
`export class ${opts.className} {}\n`);
|
|
63
|
-
}
|
|
64
|
-
function humanizeTitle(segments) {
|
|
65
|
-
const last = segments[segments.length - 1] ?? 'Untitled';
|
|
66
|
-
return last
|
|
67
|
-
.replace(/[-_]+/g, ' ')
|
|
68
|
-
.replace(/\s+/g, ' ')
|
|
69
|
-
.trim()
|
|
70
|
-
.replace(/(^|\s)\S/g, (c) => c.toUpperCase());
|
|
71
|
-
}
|
|
72
|
-
function joinPath(folder, file) {
|
|
73
|
-
return folder ? `${folder}/${file}` : file;
|
|
74
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseMarkdown = parseMarkdown;
|
|
4
|
-
const FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;
|
|
5
|
-
function parseMarkdown(source) {
|
|
6
|
-
const match = source.match(FRONTMATTER_RE);
|
|
7
|
-
if (!match) {
|
|
8
|
-
return { frontmatter: {}, body: source };
|
|
9
|
-
}
|
|
10
|
-
const frontmatter = parseSimpleYaml(match[1]);
|
|
11
|
-
const body = source.slice(match[0].length);
|
|
12
|
-
return { frontmatter, body };
|
|
13
|
-
}
|
|
14
|
-
function parseSimpleYaml(yaml) {
|
|
15
|
-
const out = {};
|
|
16
|
-
for (const rawLine of yaml.split(/\r?\n/)) {
|
|
17
|
-
const line = rawLine.trim();
|
|
18
|
-
if (!line || line.startsWith('#'))
|
|
19
|
-
continue;
|
|
20
|
-
const idx = line.indexOf(':');
|
|
21
|
-
if (idx === -1)
|
|
22
|
-
continue;
|
|
23
|
-
const key = line.slice(0, idx).trim();
|
|
24
|
-
let value = line.slice(idx + 1).trim();
|
|
25
|
-
if (!key)
|
|
26
|
-
continue;
|
|
27
|
-
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
28
|
-
value = value.slice(1, -1);
|
|
29
|
-
}
|
|
30
|
-
if (value === 'true')
|
|
31
|
-
out[key] = true;
|
|
32
|
-
else if (value === 'false')
|
|
33
|
-
out[key] = false;
|
|
34
|
-
else if (value !== '' && !Number.isNaN(Number(value)) && /^-?\d+(\.\d+)?$/.test(value)) {
|
|
35
|
-
out[key] = Number(value);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
out[key] = value;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return out;
|
|
42
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generate = generate;
|
|
4
|
-
const node_path_1 = require("node:path");
|
|
5
|
-
const component_1 = require("./component");
|
|
6
|
-
const frontmatter_1 = require("./frontmatter");
|
|
7
|
-
const routes_1 = require("./routes");
|
|
8
|
-
const walk_1 = require("./walk");
|
|
9
|
-
async function generate(config, workspaceRoot) {
|
|
10
|
-
const sourceAbs = resolveUnderRoot(config.sourceDir, workspaceRoot);
|
|
11
|
-
const outputAbs = resolveUnderRoot(config.outputDir, workspaceRoot);
|
|
12
|
-
const sources = (0, walk_1.collectMarkdown)(sourceAbs);
|
|
13
|
-
const components = await Promise.all(sources.map(async (src) => {
|
|
14
|
-
const { frontmatter, body } = (0, frontmatter_1.parseMarkdown)(src.content);
|
|
15
|
-
return (0, component_1.buildComponent)(src.segments, frontmatter, body, config);
|
|
16
|
-
}));
|
|
17
|
-
const files = [];
|
|
18
|
-
for (const comp of components) {
|
|
19
|
-
files.push({ path: joinWorkspace(workspaceRoot, outputAbs, comp.tsPath), content: comp.tsContent });
|
|
20
|
-
if (comp.stylePath && comp.styleContent !== null) {
|
|
21
|
-
files.push({ path: joinWorkspace(workspaceRoot, outputAbs, comp.stylePath), content: comp.styleContent });
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
files.push({
|
|
25
|
-
path: joinWorkspace(workspaceRoot, outputAbs, config.routeFile),
|
|
26
|
-
content: (0, routes_1.renderRoutes)(components, config),
|
|
27
|
-
});
|
|
28
|
-
return {
|
|
29
|
-
config,
|
|
30
|
-
outputDir: outputAbs,
|
|
31
|
-
files,
|
|
32
|
-
stats: { markdown: sources.length, components: components.length, files: files.length },
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function resolveUnderRoot(p, workspaceRoot) {
|
|
36
|
-
return (0, node_path_1.isAbsolute)(p) ? p : (0, node_path_1.resolve)(workspaceRoot, p);
|
|
37
|
-
}
|
|
38
|
-
function joinWorkspace(workspaceRoot, outputAbs, rel) {
|
|
39
|
-
const abs = (0, node_path_1.resolve)(outputAbs, rel);
|
|
40
|
-
const normalized = abs.startsWith(workspaceRoot) ? abs.slice(workspaceRoot.length + 1) : abs;
|
|
41
|
-
return normalized.split(/[\\/]+/).join('/');
|
|
42
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toSlug = toSlug;
|
|
4
|
-
exports.toPascal = toPascal;
|
|
5
|
-
exports.componentClassName = componentClassName;
|
|
6
|
-
exports.componentFileBase = componentFileBase;
|
|
7
|
-
exports.componentSelector = componentSelector;
|
|
8
|
-
function toSlug(segment) {
|
|
9
|
-
return segment
|
|
10
|
-
.toLowerCase()
|
|
11
|
-
.trim()
|
|
12
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
13
|
-
.replace(/^-+|-+$/g, '');
|
|
14
|
-
}
|
|
15
|
-
function toPascal(segment) {
|
|
16
|
-
return segment
|
|
17
|
-
.replace(/[^A-Za-z0-9]+/g, ' ')
|
|
18
|
-
.trim()
|
|
19
|
-
.split(/\s+/)
|
|
20
|
-
.map((w) => (w.length === 0 ? w : w[0].toUpperCase() + w.slice(1).toLowerCase()))
|
|
21
|
-
.join('');
|
|
22
|
-
}
|
|
23
|
-
function componentClassName(prefix, segments) {
|
|
24
|
-
const base = segments.map(toPascal).join('');
|
|
25
|
-
return `${prefix}${base}Component`;
|
|
26
|
-
}
|
|
27
|
-
function componentFileBase(segments) {
|
|
28
|
-
const last = segments[segments.length - 1] ?? 'index';
|
|
29
|
-
return toSlug(last) || 'index';
|
|
30
|
-
}
|
|
31
|
-
function componentSelector(prefix, segments) {
|
|
32
|
-
const kebabPrefix = prefix
|
|
33
|
-
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
34
|
-
.replace(/[^A-Za-z0-9]+/g, '-')
|
|
35
|
-
.replace(/^-+|-+$/g, '')
|
|
36
|
-
.toLowerCase() || 'doc';
|
|
37
|
-
const rest = segments.map(toSlug).filter(Boolean).join('-') || 'index';
|
|
38
|
-
return `${kebabPrefix}-${rest}`;
|
|
39
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.renderMarkdown = renderMarkdown;
|
|
4
|
-
exports.escapeForTemplateLiteral = escapeForTemplateLiteral;
|
|
5
|
-
let markedPromise = null;
|
|
6
|
-
async function loadMarked() {
|
|
7
|
-
markedPromise ??= import('marked');
|
|
8
|
-
return markedPromise;
|
|
9
|
-
}
|
|
10
|
-
/** Render Markdown (GFM) to HTML. */
|
|
11
|
-
async function renderMarkdown(body) {
|
|
12
|
-
const { marked } = await loadMarked();
|
|
13
|
-
marked.setOptions({ gfm: true, breaks: false });
|
|
14
|
-
const html = marked.parse(body, { async: false });
|
|
15
|
-
if (typeof html !== 'string') {
|
|
16
|
-
throw new Error('[guide] marked returned a non-string result; expected synchronous parse.');
|
|
17
|
-
}
|
|
18
|
-
return html.trim();
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Escape content so rendered HTML can be safely embedded in a generated Angular
|
|
22
|
-
* inline template.
|
|
23
|
-
*
|
|
24
|
-
* Besides template-literal escaping, Angular v17+ reserves `@`, `{`, and `}`
|
|
25
|
-
* in templates for control flow blocks and ICU expressions. Docs content often
|
|
26
|
-
* contains those characters in code fences, so encode them before emission.
|
|
27
|
-
*/
|
|
28
|
-
function escapeForTemplateLiteral(html) {
|
|
29
|
-
return html
|
|
30
|
-
.replace(/\\/g, '\\\\')
|
|
31
|
-
.replace(/`/g, '\\`')
|
|
32
|
-
.replace(/\$\{/g, '\\${')
|
|
33
|
-
.replace(/@/g, '@')
|
|
34
|
-
.replace(/\{/g, '{')
|
|
35
|
-
.replace(/\}/g, '}');
|
|
36
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.renderRoutes = renderRoutes;
|
|
4
|
-
const naming_1 = require("./naming");
|
|
5
|
-
function renderRoutes(components, config) {
|
|
6
|
-
const root = { segment: '', children: new Map() };
|
|
7
|
-
for (const comp of components) {
|
|
8
|
-
insert(root, comp);
|
|
9
|
-
}
|
|
10
|
-
const body = serializeChildren(root, ' ');
|
|
11
|
-
const exportName = config.routeExportName;
|
|
12
|
-
return (`// Auto-generated by @ojiepermana/angular/generator/guide. Do not edit by hand.\n` +
|
|
13
|
-
`import type { Routes } from '@angular/router';\n\n` +
|
|
14
|
-
`export const ${exportName}: Routes = [\n` +
|
|
15
|
-
body +
|
|
16
|
-
`];\n`);
|
|
17
|
-
}
|
|
18
|
-
function insert(root, comp) {
|
|
19
|
-
const segments = routeSegments(comp);
|
|
20
|
-
let node = root;
|
|
21
|
-
for (let i = 0; i < segments.length - 1; i++) {
|
|
22
|
-
const seg = segments[i];
|
|
23
|
-
let next = node.children.get(seg);
|
|
24
|
-
if (!next) {
|
|
25
|
-
next = { segment: seg, children: new Map() };
|
|
26
|
-
node.children.set(seg, next);
|
|
27
|
-
}
|
|
28
|
-
node = next;
|
|
29
|
-
}
|
|
30
|
-
const leafSeg = segments[segments.length - 1];
|
|
31
|
-
let leaf = node.children.get(leafSeg);
|
|
32
|
-
if (!leaf) {
|
|
33
|
-
leaf = { segment: leafSeg, children: new Map() };
|
|
34
|
-
node.children.set(leafSeg, leaf);
|
|
35
|
-
}
|
|
36
|
-
if (leaf.leaf) {
|
|
37
|
-
throw new Error(`[guide] Route conflict: two markdown files resolve to the same path "${segments.join('/') || '<root>'}".`);
|
|
38
|
-
}
|
|
39
|
-
leaf.leaf = comp;
|
|
40
|
-
}
|
|
41
|
-
function routeSegments(comp) {
|
|
42
|
-
// file segments without extension; handle index.md as empty path at parent level
|
|
43
|
-
const segs = comp.segments.slice();
|
|
44
|
-
const last = segs[segs.length - 1] ?? 'index';
|
|
45
|
-
if (comp.pathOverride !== null) {
|
|
46
|
-
// Override replaces the leaf segment path (keeps parent folders).
|
|
47
|
-
segs[segs.length - 1] = comp.pathOverride === '' ? '' : comp.pathOverride;
|
|
48
|
-
}
|
|
49
|
-
else if (/^index$/i.test(last)) {
|
|
50
|
-
segs[segs.length - 1] = '';
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
segs[segs.length - 1] = (0, naming_1.toSlug)(last);
|
|
54
|
-
}
|
|
55
|
-
// slugify folder segments
|
|
56
|
-
for (let i = 0; i < segs.length - 1; i++) {
|
|
57
|
-
segs[i] = (0, naming_1.toSlug)(segs[i]);
|
|
58
|
-
}
|
|
59
|
-
return segs;
|
|
60
|
-
}
|
|
61
|
-
function serializeChildren(node, indent) {
|
|
62
|
-
const children = [...node.children.values()].sort(compareNodes);
|
|
63
|
-
return children.map((c) => serializeNode(c, indent)).join('');
|
|
64
|
-
}
|
|
65
|
-
function compareNodes(a, b) {
|
|
66
|
-
const orderA = a.leaf?.order ?? Number.POSITIVE_INFINITY;
|
|
67
|
-
const orderB = b.leaf?.order ?? Number.POSITIVE_INFINITY;
|
|
68
|
-
if (orderA !== orderB)
|
|
69
|
-
return orderA - orderB;
|
|
70
|
-
return a.segment.localeCompare(b.segment);
|
|
71
|
-
}
|
|
72
|
-
function serializeNode(node, indent) {
|
|
73
|
-
const next = indent + ' ';
|
|
74
|
-
const lines = [];
|
|
75
|
-
lines.push(`${indent}{`);
|
|
76
|
-
lines.push(`${next}path: ${JSON.stringify(node.segment)},`);
|
|
77
|
-
if (node.leaf) {
|
|
78
|
-
const comp = node.leaf;
|
|
79
|
-
const importPath = importSpecifier(comp.tsPath);
|
|
80
|
-
lines.push(`${next}loadComponent: () => import(${JSON.stringify(importPath)}).then((m) => m.${comp.className}),`);
|
|
81
|
-
const data = routeData(comp);
|
|
82
|
-
if (data)
|
|
83
|
-
lines.push(`${next}data: ${data},`);
|
|
84
|
-
}
|
|
85
|
-
if (node.children.size > 0) {
|
|
86
|
-
lines.push(`${next}children: [`);
|
|
87
|
-
lines.push(serializeChildren(node, next + ' ').replace(/\n+$/, ''));
|
|
88
|
-
lines.push(`${next}],`);
|
|
89
|
-
}
|
|
90
|
-
lines.push(`${indent}},`);
|
|
91
|
-
return lines.join('\n') + '\n';
|
|
92
|
-
}
|
|
93
|
-
function routeData(comp) {
|
|
94
|
-
const parts = [];
|
|
95
|
-
if (comp.title)
|
|
96
|
-
parts.push(`title: ${JSON.stringify(comp.title)}`);
|
|
97
|
-
if (comp.order !== null)
|
|
98
|
-
parts.push(`order: ${comp.order}`);
|
|
99
|
-
if (parts.length === 0)
|
|
100
|
-
return null;
|
|
101
|
-
return `{ ${parts.join(', ')} }`;
|
|
102
|
-
}
|
|
103
|
-
function importSpecifier(tsPath) {
|
|
104
|
-
const noExt = tsPath.replace(/\.ts$/i, '');
|
|
105
|
-
return `./${noExt}`;
|
|
106
|
-
}
|