@ojiepermana/angular 22.0.1 → 22.0.27
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 +16 -302
- package/fesm2022/ojiepermana-angular-chart.mjs +11 -0
- package/fesm2022/ojiepermana-angular-chart.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component.mjs +11 -0
- package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-navigation.mjs +11 -0
- package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-sdk.mjs +11 -0
- package/fesm2022/ojiepermana-angular-sdk.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-theme.mjs +3 -382
- package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
- package/fesm2022/ojiepermana-angular.mjs +14 -14
- package/fesm2022/ojiepermana-angular.mjs.map +1 -1
- 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/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,269 +0,0 @@
|
|
|
1
|
-
# Menubar
|
|
2
|
-
|
|
3
|
-
Persistent desktop-style command strip with horizontal roving focus for top-level triggers and explicit projected menu content.
|
|
4
|
-
|
|
5
|
-
This Angular implementation follows the shadcn Menubar information architecture while intentionally reusing the existing dropdown-menu content primitives for rows, checkbox items, radio groups, labels, shortcuts, and nested submenu triggers.
|
|
6
|
-
|
|
7
|
-
## Import
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import {
|
|
11
|
-
MenubarComponent,
|
|
12
|
-
MenubarContentDirective,
|
|
13
|
-
MenubarMenuComponent,
|
|
14
|
-
MenubarTriggerDirective,
|
|
15
|
-
} from '@ojiepermana/angular/component/menubar';
|
|
16
|
-
import {
|
|
17
|
-
MenuCheckboxItemComponent,
|
|
18
|
-
MenuContentDirective,
|
|
19
|
-
MenuGroupComponent,
|
|
20
|
-
MenuItemComponent,
|
|
21
|
-
MenuLabelComponent,
|
|
22
|
-
MenuRadioGroupComponent,
|
|
23
|
-
MenuRadioItemComponent,
|
|
24
|
-
MenuSeparatorComponent,
|
|
25
|
-
MenuShortcutComponent,
|
|
26
|
-
MenuSurfaceComponent,
|
|
27
|
-
MenuTriggerDirective,
|
|
28
|
-
} from '@ojiepermana/angular/component/dropdown-menu';
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Structure
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
ui-menubar
|
|
35
|
-
├── ui-menubar-menu
|
|
36
|
-
│ ├── button[uiMenubarTrigger]
|
|
37
|
-
│ └── ng-template[uiMenubarContent]
|
|
38
|
-
│ └── ui-menu-surface
|
|
39
|
-
│ ├── ui-menu-group
|
|
40
|
-
│ │ ├── button[ui-menu-item]
|
|
41
|
-
│ │ └── button[ui-menu-item][uiMenuTrigger]
|
|
42
|
-
│ │ └── ng-template[uiMenuContent]
|
|
43
|
-
│ │ └── ui-menu-surface
|
|
44
|
-
│ ├── ui-menu-separator
|
|
45
|
-
│ ├── button[ui-menu-checkbox-item]
|
|
46
|
-
│ └── ui-menu-radio-group
|
|
47
|
-
│ └── button[ui-menu-radio-item]
|
|
48
|
-
└── ui-menubar-menu
|
|
49
|
-
├── button[uiMenubarTrigger]
|
|
50
|
-
└── ng-template[uiMenubarContent]
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Basic usage
|
|
54
|
-
|
|
55
|
-
```html
|
|
56
|
-
<ui-menubar>
|
|
57
|
-
<ui-menubar-menu>
|
|
58
|
-
<button type="button" [uiMenubarTrigger]="fileMenu">File</button>
|
|
59
|
-
<ng-template uiMenubarContent #fileMenu="uiMenubarContent">
|
|
60
|
-
<ui-menu-surface class="w-56">
|
|
61
|
-
<ui-menu-group>
|
|
62
|
-
<button ui-menu-item type="button">
|
|
63
|
-
New Tab
|
|
64
|
-
<span ui-menu-shortcut>⌘T</span>
|
|
65
|
-
</button>
|
|
66
|
-
<button ui-menu-item type="button" [uiMenuTrigger]="shareMenu" side="right" align="start">
|
|
67
|
-
Share
|
|
68
|
-
<span class="ml-auto text-xs text-muted-foreground">›</span>
|
|
69
|
-
</button>
|
|
70
|
-
</ui-menu-group>
|
|
71
|
-
</ui-menu-surface>
|
|
72
|
-
</ng-template>
|
|
73
|
-
</ui-menubar-menu>
|
|
74
|
-
</ui-menubar>
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Common patterns
|
|
78
|
-
|
|
79
|
-
### Basic command strip
|
|
80
|
-
|
|
81
|
-
Use one `ui-menubar-menu` per top-level trigger. The root owns horizontal roving focus, so only one trigger participates in tab order at a time.
|
|
82
|
-
|
|
83
|
-
```html
|
|
84
|
-
<ui-menubar>
|
|
85
|
-
<ui-menubar-menu>
|
|
86
|
-
<button type="button" [uiMenubarTrigger]="basicFileMenu">File</button>
|
|
87
|
-
<ng-template uiMenubarContent #basicFileMenu="uiMenubarContent">
|
|
88
|
-
<ui-menu-surface class="w-48">
|
|
89
|
-
<button ui-menu-item type="button">New Tab</button>
|
|
90
|
-
<button ui-menu-item type="button">Open Recent</button>
|
|
91
|
-
<button ui-menu-item type="button" [disabled]="true">Import from iCloud</button>
|
|
92
|
-
</ui-menu-surface>
|
|
93
|
-
</ng-template>
|
|
94
|
-
</ui-menubar-menu>
|
|
95
|
-
</ui-menubar>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Checkbox and radio rows
|
|
99
|
-
|
|
100
|
-
The top-level strip stays on `menubar`, while toggleable content rows remain on the dropdown-menu primitives that already own those semantics.
|
|
101
|
-
|
|
102
|
-
```ts
|
|
103
|
-
const showSidebar = signal(true);
|
|
104
|
-
const editorTheme = signal<'light' | 'dark' | 'system'>('system');
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
```html
|
|
108
|
-
<ui-menubar>
|
|
109
|
-
<ui-menubar-menu>
|
|
110
|
-
<button type="button" [uiMenubarTrigger]="viewMenu">View</button>
|
|
111
|
-
<ng-template uiMenubarContent #viewMenu="uiMenubarContent">
|
|
112
|
-
<ui-menu-surface class="w-56">
|
|
113
|
-
<ui-menu-group>
|
|
114
|
-
<button ui-menu-checkbox-item type="button" [(checked)]="showSidebar">Sidebar</button>
|
|
115
|
-
</ui-menu-group>
|
|
116
|
-
<ui-menu-separator />
|
|
117
|
-
<ui-menu-label [inset]="true">Theme</ui-menu-label>
|
|
118
|
-
<ui-menu-radio-group [(value)]="editorTheme">
|
|
119
|
-
<button ui-menu-radio-item type="button" value="light">Light</button>
|
|
120
|
-
<button ui-menu-radio-item type="button" value="dark">Dark</button>
|
|
121
|
-
<button ui-menu-radio-item type="button" value="system">System</button>
|
|
122
|
-
</ui-menu-radio-group>
|
|
123
|
-
</ui-menu-surface>
|
|
124
|
-
</ng-template>
|
|
125
|
-
</ui-menubar-menu>
|
|
126
|
-
</ui-menubar>
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Submenus
|
|
130
|
-
|
|
131
|
-
Map shadcn `MenubarSub` to `[uiMenuTrigger]` on a `button[ui-menu-item]`. This keeps overlay ownership explicit and lets the shared menu trigger keep submenu keyboard behavior in one place.
|
|
132
|
-
|
|
133
|
-
```html
|
|
134
|
-
<ng-template uiMenuContent #findMenu="uiMenuContent">
|
|
135
|
-
<ui-menu-surface class="w-44">
|
|
136
|
-
<button ui-menu-item type="button">Search the web</button>
|
|
137
|
-
<button ui-menu-item type="button">Find...</button>
|
|
138
|
-
<button ui-menu-item type="button">Find Next</button>
|
|
139
|
-
</ui-menu-surface>
|
|
140
|
-
</ng-template>
|
|
141
|
-
|
|
142
|
-
<ui-menubar>
|
|
143
|
-
<ui-menubar-menu>
|
|
144
|
-
<button type="button" [uiMenubarTrigger]="editMenu">Edit</button>
|
|
145
|
-
<ng-template uiMenubarContent #editMenu="uiMenubarContent">
|
|
146
|
-
<ui-menu-surface class="w-56">
|
|
147
|
-
<button ui-menu-item type="button" [uiMenuTrigger]="findMenu" side="right" align="start">
|
|
148
|
-
Find
|
|
149
|
-
<span class="ml-auto text-xs text-muted-foreground">›</span>
|
|
150
|
-
</button>
|
|
151
|
-
</ui-menu-surface>
|
|
152
|
-
</ng-template>
|
|
153
|
-
</ui-menubar-menu>
|
|
154
|
-
</ui-menubar>
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Icons and shortcuts
|
|
158
|
-
|
|
159
|
-
Project inline icons and shortcut hints directly into the row content.
|
|
160
|
-
|
|
161
|
-
```html
|
|
162
|
-
<ui-menu-surface class="w-56">
|
|
163
|
-
<button ui-menu-item type="button">
|
|
164
|
-
<ui-nav-icon name="description" [size]="16" class="text-muted-foreground" />
|
|
165
|
-
New File
|
|
166
|
-
<span ui-menu-shortcut>⌘N</span>
|
|
167
|
-
</button>
|
|
168
|
-
<button ui-menu-item type="button" variant="destructive">
|
|
169
|
-
<ui-nav-icon name="delete" [size]="16" class="text-current" />
|
|
170
|
-
Delete
|
|
171
|
-
</button>
|
|
172
|
-
</ui-menu-surface>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### RTL
|
|
176
|
-
|
|
177
|
-
The root menubar respects computed direction for left and right movement. Apply `dir="rtl"` directly to the projected menu surface when the content itself should render right-to-left.
|
|
178
|
-
|
|
179
|
-
```html
|
|
180
|
-
<section dir="rtl" lang="ar" class="text-right">
|
|
181
|
-
<ui-menubar>
|
|
182
|
-
<ui-menubar-menu>
|
|
183
|
-
<button type="button" [uiMenubarTrigger]="rtlFileMenu">ملف</button>
|
|
184
|
-
<ng-template uiMenubarContent #rtlFileMenu="uiMenubarContent">
|
|
185
|
-
<ui-menu-surface dir="rtl" lang="ar" class="w-56 text-right">
|
|
186
|
-
<button ui-menu-item type="button">تبويب جديد <span ui-menu-shortcut>⌘T</span></button>
|
|
187
|
-
<button ui-menu-item type="button">نافذة جديدة <span ui-menu-shortcut>⌘N</span></button>
|
|
188
|
-
</ui-menu-surface>
|
|
189
|
-
</ng-template>
|
|
190
|
-
</ui-menubar-menu>
|
|
191
|
-
</ui-menubar>
|
|
192
|
-
</section>
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
## API Reference
|
|
196
|
-
|
|
197
|
-
### `MenubarComponent`
|
|
198
|
-
|
|
199
|
-
| Input | Type | Default |
|
|
200
|
-
| ------- | --------- | ------- |
|
|
201
|
-
| `class` | `string` | `''` |
|
|
202
|
-
| `loop` | `boolean` | `true` |
|
|
203
|
-
|
|
204
|
-
Role: `menubar`.
|
|
205
|
-
|
|
206
|
-
### `MenubarMenuComponent`
|
|
207
|
-
|
|
208
|
-
Structural wrapper for one top-level trigger plus its `uiMenubarContent` template.
|
|
209
|
-
|
|
210
|
-
### `MenubarTriggerDirective`
|
|
211
|
-
|
|
212
|
-
| Input | Type | Default |
|
|
213
|
-
| ------------------ | ------------------------------ | --------- |
|
|
214
|
-
| `uiMenubarTrigger` | `MenubarContentDirective` | required |
|
|
215
|
-
| `align` | `'start' \| 'center' \| 'end'` | `'start'` |
|
|
216
|
-
| `disabled` | `boolean` | `false` |
|
|
217
|
-
|
|
218
|
-
Output: `openedChange: boolean`.
|
|
219
|
-
|
|
220
|
-
Methods: `open()`, `close()`, `toggle()`, `focus()`.
|
|
221
|
-
|
|
222
|
-
### `MenubarContentDirective`
|
|
223
|
-
|
|
224
|
-
Projected overlay template for a top-level menubar trigger.
|
|
225
|
-
|
|
226
|
-
### Dropdown-menu parts reused in content
|
|
227
|
-
|
|
228
|
-
Import these from `@ojiepermana/angular/component/dropdown-menu`:
|
|
229
|
-
|
|
230
|
-
- `MenuSurfaceComponent`
|
|
231
|
-
- `MenuItemComponent`
|
|
232
|
-
- `MenuCheckboxItemComponent`
|
|
233
|
-
- `MenuRadioGroupComponent`
|
|
234
|
-
- `MenuRadioItemComponent`
|
|
235
|
-
- `MenuLabelComponent`
|
|
236
|
-
- `MenuSeparatorComponent`
|
|
237
|
-
- `MenuShortcutComponent`
|
|
238
|
-
- `MenuTriggerDirective`
|
|
239
|
-
- `MenuContentDirective`
|
|
240
|
-
|
|
241
|
-
## Styling and theming
|
|
242
|
-
|
|
243
|
-
- Pass `class` to `ui-menubar` when the root needs width, border, or layout changes.
|
|
244
|
-
- Style content surfaces on `ui-menu-surface`, not on the root menubar strip.
|
|
245
|
-
- Use shared theme tokens such as `border-border`, `bg-background`, `bg-accent`, and `text-muted-foreground` for visual consistency.
|
|
246
|
-
|
|
247
|
-
## Accessibility
|
|
248
|
-
|
|
249
|
-
- Top-level triggers expose `role="menuitem"`, `aria-haspopup="menu"`, and `aria-expanded`.
|
|
250
|
-
- The root menubar keeps one active tab stop, matching desktop menubar behavior.
|
|
251
|
-
- Projected content rows keep the accessible menu, checkbox, and radio roles from dropdown-menu.
|
|
252
|
-
- Disabled rows stay visible, announce their disabled state, and are skipped by roving focus.
|
|
253
|
-
|
|
254
|
-
## Keyboard interactions
|
|
255
|
-
|
|
256
|
-
- `ArrowLeft` and `ArrowRight` move across top-level triggers.
|
|
257
|
-
- `Home` and `End` jump to the first and last top-level trigger.
|
|
258
|
-
- `ArrowDown` opens the active menu and focuses its first enabled item.
|
|
259
|
-
- `ArrowRight` opens right-side submenu rows built with `[uiMenuTrigger] side="right"`.
|
|
260
|
-
|
|
261
|
-
## Angular Notes
|
|
262
|
-
|
|
263
|
-
- Menubar is intentionally split across two entrypoints: `menubar` for the persistent strip, `dropdown-menu` for the shared content rows.
|
|
264
|
-
- This avoids duplicating the same menu item semantics in two packages while still exposing a dedicated shadcn-style top-level component.
|
|
265
|
-
- Use native buttons for triggers so keyboard activation and disabled behavior stay predictable.
|
|
266
|
-
|
|
267
|
-
## Source parity
|
|
268
|
-
|
|
269
|
-
This slice keeps the shadcn Menubar command patterns, examples, keyboard expectations, and RTL guidance while making Angular overlay ownership explicit through `uiMenubarContent` and the existing dropdown-menu primitives.
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
# Native Select
|
|
2
|
-
|
|
3
|
-
Styled native HTML select for browser-native dropdown behavior, mobile-friendly pickers, and lightweight form integrations.
|
|
4
|
-
|
|
5
|
-
Use Native Select when you want the platform select interaction rather than the custom overlay behavior of `ui-select`.
|
|
6
|
-
|
|
7
|
-
## Import
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import {
|
|
11
|
-
NativeSelectComponent,
|
|
12
|
-
NativeSelectOptGroupDirective,
|
|
13
|
-
NativeSelectOptionDirective,
|
|
14
|
-
} from '@ojiepermana/angular/component/native-select';
|
|
15
|
-
import {
|
|
16
|
-
FormControlDirective,
|
|
17
|
-
FormDescriptionComponent,
|
|
18
|
-
FormFieldComponent,
|
|
19
|
-
FormLabelComponent,
|
|
20
|
-
FormMessageComponent,
|
|
21
|
-
} from '@ojiepermana/angular/component/form';
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Composition
|
|
25
|
-
|
|
26
|
-
The Angular structure keeps the native `<select>`, `<option>`, and `<optgroup>` elements in the DOM while adding shadcn-style design tokens.
|
|
27
|
-
|
|
28
|
-
```text
|
|
29
|
-
select[ui-native-select]
|
|
30
|
-
├── option[ui-native-select-option]
|
|
31
|
-
├── option[ui-native-select-option]
|
|
32
|
-
└── optgroup[ui-native-select-opt-group]
|
|
33
|
-
├── option[ui-native-select-option]
|
|
34
|
-
└── option[ui-native-select-option]
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Basic usage
|
|
38
|
-
|
|
39
|
-
Use the directive on a real `<select>` so Angular forms continue to work through the native control.
|
|
40
|
-
|
|
41
|
-
```html
|
|
42
|
-
<label ui-label for="status-select">Status</label>
|
|
43
|
-
<select id="status-select" ui-native-select [(ngModel)]="status">
|
|
44
|
-
<option ui-native-select-option value="">Select status</option>
|
|
45
|
-
<option ui-native-select-option value="todo">Todo</option>
|
|
46
|
-
<option ui-native-select-option value="in-progress">In progress</option>
|
|
47
|
-
<option ui-native-select-option value="done">Done</option>
|
|
48
|
-
</select>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Common patterns
|
|
52
|
-
|
|
53
|
-
### Grouped options
|
|
54
|
-
|
|
55
|
-
Use `optgroup[ui-native-select-opt-group]` when the options belong to clear categories.
|
|
56
|
-
|
|
57
|
-
```html
|
|
58
|
-
<select ui-native-select [(ngModel)]="department">
|
|
59
|
-
<option ui-native-select-option value="">Select department</option>
|
|
60
|
-
|
|
61
|
-
<optgroup ui-native-select-opt-group label="Engineering">
|
|
62
|
-
<option ui-native-select-option value="frontend">Frontend</option>
|
|
63
|
-
<option ui-native-select-option value="backend">Backend</option>
|
|
64
|
-
</optgroup>
|
|
65
|
-
|
|
66
|
-
<optgroup ui-native-select-opt-group label="Operations">
|
|
67
|
-
<option ui-native-select-option value="support">Support</option>
|
|
68
|
-
<option ui-native-select-option value="product">Product</option>
|
|
69
|
-
</optgroup>
|
|
70
|
-
</select>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Form-field integration
|
|
74
|
-
|
|
75
|
-
When you want label, helper text, and invalid state wiring similar to the newer shadcn `Field` examples, compose the native select with the existing form primitives.
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<ui-form-field>
|
|
79
|
-
<ui-form-label>Timezone</ui-form-label>
|
|
80
|
-
<select ui-native-select uiFormControl [(ngModel)]="timezone">
|
|
81
|
-
<option ui-native-select-option value="">Select timezone</option>
|
|
82
|
-
<option ui-native-select-option value="utc">UTC</option>
|
|
83
|
-
<option ui-native-select-option value="gmt-plus-7">GMT+7</option>
|
|
84
|
-
</select>
|
|
85
|
-
<ui-form-description>Used for scheduling and invoice timestamps.</ui-form-description>
|
|
86
|
-
</ui-form-field>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Invalid state
|
|
90
|
-
|
|
91
|
-
Forward `aria-invalid="true"` when validation is managed outside Angular forms, or let `uiFormControl` mirror the state from `NgControl`.
|
|
92
|
-
|
|
93
|
-
```html
|
|
94
|
-
<ui-form-field invalid>
|
|
95
|
-
<ui-form-label>Department</ui-form-label>
|
|
96
|
-
<select ui-native-select uiFormControl aria-invalid="true">
|
|
97
|
-
<option ui-native-select-option value="">Choose department</option>
|
|
98
|
-
<option ui-native-select-option value="engineering">Engineering</option>
|
|
99
|
-
<option ui-native-select-option value="sales">Sales</option>
|
|
100
|
-
</select>
|
|
101
|
-
<ui-form-message>Select a department before continuing.</ui-form-message>
|
|
102
|
-
</ui-form-field>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Disabled and RTL
|
|
106
|
-
|
|
107
|
-
Disabled state stays fully native, and right-to-left layouts only need a wrapping `dir="rtl"` container or a direct `dir` attribute on the select.
|
|
108
|
-
|
|
109
|
-
```html
|
|
110
|
-
<section dir="rtl" lang="ar" class="max-w-sm text-right">
|
|
111
|
-
<select ui-native-select disabled>
|
|
112
|
-
<option ui-native-select-option value="">اختر الحالة</option>
|
|
113
|
-
<option ui-native-select-option value="todo">مهام</option>
|
|
114
|
-
<option ui-native-select-option value="done">منجز</option>
|
|
115
|
-
</select>
|
|
116
|
-
</section>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## API reference
|
|
120
|
-
|
|
121
|
-
### `NativeSelectComponent`
|
|
122
|
-
|
|
123
|
-
| Input | Type | Default |
|
|
124
|
-
| ------- | -------- | ------- |
|
|
125
|
-
| `class` | `string` | `''` |
|
|
126
|
-
|
|
127
|
-
Public methods:
|
|
128
|
-
|
|
129
|
-
- `focus()` focuses the underlying native select element.
|
|
130
|
-
|
|
131
|
-
All native `<select>` attributes and Angular form bindings such as `name`, `required`, `disabled`, `multiple`, `[(ngModel)]`, and `formControlName` pass through unchanged.
|
|
132
|
-
|
|
133
|
-
### `NativeSelectOptionDirective`
|
|
134
|
-
|
|
135
|
-
| Input | Type | Default |
|
|
136
|
-
| ------- | -------- | ------- |
|
|
137
|
-
| `class` | `string` | `''` |
|
|
138
|
-
|
|
139
|
-
All native `<option>` attributes such as `value`, `disabled`, and `selected` pass through unchanged.
|
|
140
|
-
|
|
141
|
-
### `NativeSelectOptGroupDirective`
|
|
142
|
-
|
|
143
|
-
| Input | Type | Default |
|
|
144
|
-
| ------- | -------- | ------- |
|
|
145
|
-
| `class` | `string` | `''` |
|
|
146
|
-
|
|
147
|
-
All native `<optgroup>` attributes such as `label` and `disabled` pass through unchanged.
|
|
148
|
-
|
|
149
|
-
## Styling and theming
|
|
150
|
-
|
|
151
|
-
The control uses the shared border, ring, foreground, muted, and destructive theme tokens so it matches the rest of the library. The chevron is decorative and hidden automatically for multi-select or listbox-style `size` configurations.
|
|
152
|
-
|
|
153
|
-
Pass `class` when a layout needs custom width, margin, or grid placement utilities around the native select.
|
|
154
|
-
|
|
155
|
-
## Accessibility
|
|
156
|
-
|
|
157
|
-
- Prefer a visible label or another accessible name source for every select.
|
|
158
|
-
- Use grouped options only when the categories help people scan the choices faster.
|
|
159
|
-
- Keep the placeholder option descriptive when the empty value is a valid initial state.
|
|
160
|
-
- `uiFormControl` can synchronize `id`, `aria-describedby`, and invalid state when the select lives inside `ui-form-field`.
|
|
161
|
-
|
|
162
|
-
## Keyboard interactions
|
|
163
|
-
|
|
164
|
-
- Native browser select keyboard interactions stay intact.
|
|
165
|
-
- Closed single selects open and cycle according to the platform behavior.
|
|
166
|
-
- Multi-select and `size` listbox modes keep the browser's built-in selection model.
|
|
167
|
-
|
|
168
|
-
## Angular notes
|
|
169
|
-
|
|
170
|
-
- `select[ui-native-select]` works with template-driven and reactive forms without a custom value accessor.
|
|
171
|
-
- The directive is the Angular mapping for upstream `NativeSelect`; the local API intentionally keeps the real HTML elements instead of wrapping them in another component tree.
|
|
172
|
-
- Use `ui-select` when you need the Material-backed custom panel rather than the native browser picker.
|
|
173
|
-
|
|
174
|
-
## Source parity
|
|
175
|
-
|
|
176
|
-
This Angular entrypoint follows the shadcn Native Select information architecture while staying honest about local differences: the runtime surface is a styled native `<select>`, and the upstream `Field` examples map to the existing form primitives instead of a new field package.
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
# Navigation Menu
|
|
2
|
-
|
|
3
|
-
Horizontal website navigation primitive with top-level triggers, direct links, and explicit Angular content templates.
|
|
4
|
-
|
|
5
|
-
This implementation follows the shadcn Navigation Menu information architecture while keeping the panel layout owned by the consuming template through `ng-template[uiNavigationMenuContent]`.
|
|
6
|
-
|
|
7
|
-
## Import
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import {
|
|
11
|
-
NavigationMenuComponent,
|
|
12
|
-
NavigationMenuContentDirective,
|
|
13
|
-
NavigationMenuItemComponent,
|
|
14
|
-
NavigationMenuLinkDirective,
|
|
15
|
-
NavigationMenuListComponent,
|
|
16
|
-
NavigationMenuTriggerDirective,
|
|
17
|
-
} from '@ojiepermana/angular/component/navigation-menu';
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Composition
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
ui-navigation-menu
|
|
24
|
-
└── ui-navigation-menu-list
|
|
25
|
-
├── ui-navigation-menu-item
|
|
26
|
-
│ ├── button[uiNavigationMenuTrigger]
|
|
27
|
-
│ └── ng-template[uiNavigationMenuContent]
|
|
28
|
-
│ └── custom panel markup with a[uiNavigationMenuLink]
|
|
29
|
-
└── ui-navigation-menu-item
|
|
30
|
-
└── a[uiNavigationMenuLink] variant="trigger"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Basic usage
|
|
34
|
-
|
|
35
|
-
```html
|
|
36
|
-
<ui-navigation-menu ariaLabel="Primary documentation navigation">
|
|
37
|
-
<ui-navigation-menu-list>
|
|
38
|
-
<ui-navigation-menu-item>
|
|
39
|
-
<button type="button" [uiNavigationMenuTrigger]="gettingStartedMenu">Getting started</button>
|
|
40
|
-
<ng-template uiNavigationMenuContent #gettingStartedMenu="uiNavigationMenuContent">
|
|
41
|
-
<div class="w-[540px] rounded-xl border border-border bg-popover p-4 shadow-md">
|
|
42
|
-
<div class="grid gap-3 md:grid-cols-[1.05fr_1.25fr]">
|
|
43
|
-
<a
|
|
44
|
-
uiNavigationMenuLink
|
|
45
|
-
href="/docs/introduction"
|
|
46
|
-
class="flex min-h-[220px] flex-col justify-end rounded-lg bg-gradient-to-b from-muted/80 to-muted/40 p-6">
|
|
47
|
-
<span class="text-sm font-semibold text-foreground">Acme UI</span>
|
|
48
|
-
<p class="text-sm leading-5 text-muted-foreground">
|
|
49
|
-
Build consistent interfaces with Angular-first primitives and theme tokens.
|
|
50
|
-
</p>
|
|
51
|
-
</a>
|
|
52
|
-
<div class="grid gap-2">
|
|
53
|
-
<a uiNavigationMenuLink href="/docs/getting-started/installation">
|
|
54
|
-
<div class="text-sm font-medium">Installation</div>
|
|
55
|
-
<p class="text-sm leading-5 text-muted-foreground">Set up the package, providers, and theme layer.</p>
|
|
56
|
-
</a>
|
|
57
|
-
<a uiNavigationMenuLink href="/docs/components/shadcn/navigation-menu">
|
|
58
|
-
<div class="text-sm font-medium">Navigation Menu docs</div>
|
|
59
|
-
<p class="text-sm leading-5 text-muted-foreground">
|
|
60
|
-
Learn the Angular composition and API surface of this entrypoint.
|
|
61
|
-
</p>
|
|
62
|
-
</a>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
</ng-template>
|
|
67
|
-
</ui-navigation-menu-item>
|
|
68
|
-
|
|
69
|
-
<ui-navigation-menu-item>
|
|
70
|
-
<a uiNavigationMenuLink variant="trigger" href="/docs/introduction">Docs</a>
|
|
71
|
-
</ui-navigation-menu-item>
|
|
72
|
-
</ui-navigation-menu-list>
|
|
73
|
-
</ui-navigation-menu>
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Common patterns
|
|
77
|
-
|
|
78
|
-
### Dropdown groups
|
|
79
|
-
|
|
80
|
-
Use `uiNavigationMenuTrigger` for top-level items that should open a content panel. The panel layout is just template markup, so you can mix hero cards, compact lists, grids, and external links without a rigid viewport component.
|
|
81
|
-
|
|
82
|
-
### Direct links
|
|
83
|
-
|
|
84
|
-
Use `a[uiNavigationMenuLink] variant="trigger"` when a top-level item should navigate immediately instead of opening a panel.
|
|
85
|
-
|
|
86
|
-
### RTL
|
|
87
|
-
|
|
88
|
-
Wrap the root in `dir="rtl"` when the page runs in a right-to-left language. The root uses computed direction to reverse left and right keyboard movement.
|
|
89
|
-
|
|
90
|
-
## API reference
|
|
91
|
-
|
|
92
|
-
### `NavigationMenuComponent`
|
|
93
|
-
|
|
94
|
-
| Input | Type | Default |
|
|
95
|
-
| ----------- | --------- | ------------------- |
|
|
96
|
-
| `class` | `string` | `''` |
|
|
97
|
-
| `ariaLabel` | `string` | `'Main navigation'` |
|
|
98
|
-
| `loop` | `boolean` | `true` |
|
|
99
|
-
|
|
100
|
-
Role: `navigation`.
|
|
101
|
-
|
|
102
|
-
### `NavigationMenuListComponent`
|
|
103
|
-
|
|
104
|
-
Top-level row wrapper with `role="menubar"`.
|
|
105
|
-
|
|
106
|
-
### `NavigationMenuItemComponent`
|
|
107
|
-
|
|
108
|
-
Structural wrapper for one trigger or direct-link item.
|
|
109
|
-
|
|
110
|
-
### `NavigationMenuTriggerDirective`
|
|
111
|
-
|
|
112
|
-
| Input | Type | Default |
|
|
113
|
-
| ------------------------- | -------------------------------- | --------- |
|
|
114
|
-
| `uiNavigationMenuTrigger` | `NavigationMenuContentDirective` | required |
|
|
115
|
-
| `align` | `'start' \| 'center' \| 'end'` | `'start'` |
|
|
116
|
-
| `class` | `string` | `''` |
|
|
117
|
-
| `disabled` | `boolean` | `false` |
|
|
118
|
-
|
|
119
|
-
Output: `openedChange: boolean`.
|
|
120
|
-
|
|
121
|
-
Methods: `open()`, `close()`, `toggle()`.
|
|
122
|
-
|
|
123
|
-
### `NavigationMenuContentDirective`
|
|
124
|
-
|
|
125
|
-
Template hook for dropdown panel markup.
|
|
126
|
-
|
|
127
|
-
### `NavigationMenuLinkDirective`
|
|
128
|
-
|
|
129
|
-
| Input | Type | Default |
|
|
130
|
-
| ---------- | ------------------------ | ----------- |
|
|
131
|
-
| `variant` | `'trigger' \| 'content'` | `'content'` |
|
|
132
|
-
| `class` | `string` | `''` |
|
|
133
|
-
| `disabled` | `boolean` | `false` |
|
|
134
|
-
|
|
135
|
-
Use the default content variant for panel cards and `variant="trigger"` for top-level direct links.
|
|
136
|
-
|
|
137
|
-
## Styling and theming
|
|
138
|
-
|
|
139
|
-
- Pass `class` to the root, list, item, trigger, or link primitives when the layout needs local adjustments.
|
|
140
|
-
- Style panel width, grid, and card composition inside the `ng-template` block.
|
|
141
|
-
- Use shared tokens such as `border-border`, `bg-popover`, and `text-muted-foreground` inside panel cards.
|
|
142
|
-
|
|
143
|
-
## Accessibility
|
|
144
|
-
|
|
145
|
-
- Set `ariaLabel` when the page contains more than one navigation landmark.
|
|
146
|
-
- Use real anchors for destinations so browser and assistive-technology link semantics stay intact.
|
|
147
|
-
- Keep panel cards concise and descriptive so trigger-to-content relationships stay understandable.
|
|
148
|
-
|
|
149
|
-
## Keyboard interactions
|
|
150
|
-
|
|
151
|
-
- `ArrowLeft` and `ArrowRight` move focus across the top-level items.
|
|
152
|
-
- `Home` and `End` jump to the first and last top-level item.
|
|
153
|
-
- `ArrowDown` opens the active trigger and moves focus into the first focusable panel item.
|
|
154
|
-
- `Escape` closes the active panel and returns focus to the trigger.
|
|
155
|
-
|
|
156
|
-
## Angular notes
|
|
157
|
-
|
|
158
|
-
- The Angular surface uses `ng-template[uiNavigationMenuContent]` instead of a JSX-style child component so overlay ownership stays explicit.
|
|
159
|
-
- There is no `asChild` prop. Compose anchors and buttons directly with the provided directives.
|
|
160
|
-
- Use `variant="trigger"` on `uiNavigationMenuLink` when the top-level item should navigate immediately.
|