@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
package/component/form/README.md
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
# Form primitives
|
|
2
|
-
|
|
3
|
-
The shadcn `Field` family maps to this entrypoint. Use it to compose labels,
|
|
4
|
-
descriptions, grouped sections, separators, validation messages, and responsive
|
|
5
|
-
field rows around the existing `input`, `textarea`, `select`, `checkbox`,
|
|
6
|
-
`radio`, `switch`, and `button` primitives.
|
|
7
|
-
|
|
8
|
-
## Import
|
|
9
|
-
|
|
10
|
-
```ts
|
|
11
|
-
import {
|
|
12
|
-
FormContentComponent,
|
|
13
|
-
FormControlDirective,
|
|
14
|
-
FormDescriptionComponent,
|
|
15
|
-
FormFieldComponent,
|
|
16
|
-
FormFieldsetComponent,
|
|
17
|
-
FormGroupComponent,
|
|
18
|
-
FormLabelComponent,
|
|
19
|
-
FormLegendComponent,
|
|
20
|
-
FormMessageComponent,
|
|
21
|
-
FormSeparatorComponent,
|
|
22
|
-
FormTitleComponent,
|
|
23
|
-
} from '@ojiepermana/angular/component/form';
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Composition
|
|
27
|
-
|
|
28
|
-
Use the primitives in these roles:
|
|
29
|
-
|
|
30
|
-
| Upstream concept | Local Angular surface |
|
|
31
|
-
| ------------------ | ------------------------------------------------------------------------------------------------------ |
|
|
32
|
-
| `Field` | `ui-form-field` |
|
|
33
|
-
| `FieldSet` | `fieldset[ui-form-fieldset]` |
|
|
34
|
-
| `FieldLegend` | `legend[ui-form-legend]` |
|
|
35
|
-
| `FieldGroup` | `ui-form-group` |
|
|
36
|
-
| `FieldContent` | `ui-form-content` |
|
|
37
|
-
| `FieldLabel` | `label[ui-form-label]` for native controls, `label[ui-label]` wrappers for checkbox/radio/switch cards |
|
|
38
|
-
| `FieldTitle` | `ui-form-title` |
|
|
39
|
-
| `FieldDescription` | `p[ui-form-description]` |
|
|
40
|
-
| `FieldSeparator` | `ui-form-separator` |
|
|
41
|
-
| `FieldError` | `p[ui-form-message]` |
|
|
42
|
-
|
|
43
|
-
## Basic Usage
|
|
44
|
-
|
|
45
|
-
For native inputs and textareas, pair `label[ui-form-label]` with
|
|
46
|
-
`[uiFormControl]` so ids and helper text stay synchronized.
|
|
47
|
-
|
|
48
|
-
```html
|
|
49
|
-
<ui-form-field>
|
|
50
|
-
<label ui-form-label>Email</label>
|
|
51
|
-
<input ui-input uiFormControl type="email" placeholder="you@example.com" />
|
|
52
|
-
<p ui-form-description>We'll only use this address for account updates.</p>
|
|
53
|
-
<p ui-form-message>Enter a valid email address.</p>
|
|
54
|
-
</ui-form-field>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Common Patterns
|
|
58
|
-
|
|
59
|
-
### Grouped sections
|
|
60
|
-
|
|
61
|
-
Use semantic fieldsets and legends when several controls belong to the same
|
|
62
|
-
question or form section.
|
|
63
|
-
|
|
64
|
-
```html
|
|
65
|
-
<fieldset ui-form-fieldset>
|
|
66
|
-
<legend ui-form-legend>Address information</legend>
|
|
67
|
-
<p ui-form-description>We need your address to deliver your order.</p>
|
|
68
|
-
|
|
69
|
-
<ui-form-group>
|
|
70
|
-
<ui-form-field>
|
|
71
|
-
<label ui-form-label>Street address</label>
|
|
72
|
-
<input ui-input uiFormControl placeholder="123 Main St" />
|
|
73
|
-
</ui-form-field>
|
|
74
|
-
|
|
75
|
-
<div class="grid gap-4 sm:grid-cols-2">
|
|
76
|
-
<ui-form-field>
|
|
77
|
-
<label ui-form-label>City</label>
|
|
78
|
-
<input ui-input uiFormControl placeholder="New York" />
|
|
79
|
-
</ui-form-field>
|
|
80
|
-
|
|
81
|
-
<ui-form-field>
|
|
82
|
-
<label ui-form-label>Postal code</label>
|
|
83
|
-
<input ui-input uiFormControl placeholder="10001" />
|
|
84
|
-
</ui-form-field>
|
|
85
|
-
</div>
|
|
86
|
-
</ui-form-group>
|
|
87
|
-
</fieldset>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Horizontal checkbox, radio, and switch rows
|
|
91
|
-
|
|
92
|
-
For grouped controls, wrap the row in `label[ui-label]` so the entire card can
|
|
93
|
-
toggle the control, then use `ui-form-content` for the title and helper copy.
|
|
94
|
-
|
|
95
|
-
```html
|
|
96
|
-
<label ui-label class="block rounded-xl border border-border p-4">
|
|
97
|
-
<ui-form-field orientation="horizontal" class="gap-4">
|
|
98
|
-
<ui-checkbox [(ngModel)]="syncDesktop" aria-label="Sync Desktop and Documents folders" />
|
|
99
|
-
<ui-form-content>
|
|
100
|
-
<ui-form-title>Sync Desktop & Documents folders</ui-form-title>
|
|
101
|
-
<p ui-form-description>Your Desktop & Documents folders are being synced with iCloud Drive.</p>
|
|
102
|
-
</ui-form-content>
|
|
103
|
-
</ui-form-field>
|
|
104
|
-
</label>
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Select rows
|
|
108
|
-
|
|
109
|
-
Select keeps its own trigger and listbox behavior. Use `ui-form-title` and
|
|
110
|
-
`p[ui-form-description]` around it instead of relying on a generated `for`
|
|
111
|
-
relationship.
|
|
112
|
-
|
|
113
|
-
```html
|
|
114
|
-
<ui-form-field>
|
|
115
|
-
<ui-form-title>Department</ui-form-title>
|
|
116
|
-
<ui-select aria-label="Department" class="block w-full" placeholder="Choose department">
|
|
117
|
-
<ui-option value="engineering">Engineering</ui-option>
|
|
118
|
-
<ui-option value="design">Design</ui-option>
|
|
119
|
-
<ui-option value="marketing">Marketing</ui-option>
|
|
120
|
-
</ui-select>
|
|
121
|
-
<p ui-form-description>Select your department or area of work.</p>
|
|
122
|
-
</ui-form-field>
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### Responsive layout
|
|
126
|
-
|
|
127
|
-
Set `orientation="responsive"` on `ui-form-field` when the label and content
|
|
128
|
-
should stack on narrow widths and move into columns on wider screens.
|
|
129
|
-
|
|
130
|
-
```html
|
|
131
|
-
<ui-form-field orientation="responsive">
|
|
132
|
-
<ui-form-content>
|
|
133
|
-
<label ui-form-label>Display name</label>
|
|
134
|
-
<p ui-form-description>Provide the public name shown in comments and invoices.</p>
|
|
135
|
-
</ui-form-content>
|
|
136
|
-
<input ui-input uiFormControl placeholder="Evil Rabbit" />
|
|
137
|
-
</ui-form-field>
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Validation and errors
|
|
141
|
-
|
|
142
|
-
`[uiFormControl]` will reflect Angular form state automatically. For external
|
|
143
|
-
validation flows or static examples, use the `invalid` input on
|
|
144
|
-
`ui-form-field`.
|
|
145
|
-
|
|
146
|
-
```html
|
|
147
|
-
<ui-form-field invalid>
|
|
148
|
-
<label ui-form-label>Email</label>
|
|
149
|
-
<input ui-input uiFormControl type="email" aria-invalid="true" placeholder="name@example.com" />
|
|
150
|
-
<p ui-form-message>Enter a valid email address.</p>
|
|
151
|
-
</ui-form-field>
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## API Reference
|
|
155
|
-
|
|
156
|
-
| Primitive | Selector | Inputs | Notes |
|
|
157
|
-
| -------------------------- | --------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------- |
|
|
158
|
-
| `FormFieldComponent` | `ui-form-field` | `class`, `orientation`, `invalid` | Core field wrapper. `orientation` supports `vertical`, `horizontal`, and `responsive`. |
|
|
159
|
-
| `FormFieldsetComponent` | `fieldset[ui-form-fieldset]` | `class` | Semantic fieldset reset with spacing presets. |
|
|
160
|
-
| `FormLegendComponent` | `legend[ui-form-legend]` | `class`, `variant` | Uses either standard legend sizing or label-sized copy. |
|
|
161
|
-
| `FormGroupComponent` | `ui-form-group` | `class` | Stacks related fields and separators. |
|
|
162
|
-
| `FormContentComponent` | `ui-form-content` | `class` | Secondary text column for horizontal fields and card layouts. |
|
|
163
|
-
| `FormLabelComponent` | `ui-form-label, label[ui-form-label]` | `class` | Visible label tied to the generated control id inside a field. |
|
|
164
|
-
| `FormTitleComponent` | `ui-form-title` | `class` | Non-label heading for grouped controls. |
|
|
165
|
-
| `FormDescriptionComponent` | `ui-form-description, p[ui-form-description]` | `class` | Helper text inside a field or at the fieldset level. |
|
|
166
|
-
| `FormSeparatorComponent` | `ui-form-separator` | `class` | Divider between stacked sections. |
|
|
167
|
-
| `FormMessageComponent` | `ui-form-message, p[ui-form-message]` | `class` | Error text shown when the field is invalid. |
|
|
168
|
-
| `FormControlDirective` | `[uiFormControl]` | none | Auto-wires `id`, `aria-describedby`, and invalid state for native controls. |
|
|
169
|
-
|
|
170
|
-
## Styling and Theming
|
|
171
|
-
|
|
172
|
-
- Field primitives use the same design tokens as the rest of the library:
|
|
173
|
-
`border-border`, `text-foreground`, `text-muted-foreground`, `ring-ring`,
|
|
174
|
-
and `text-destructive`.
|
|
175
|
-
- Pass `class` to widen or tighten the layout around a specific field.
|
|
176
|
-
- `ui-form-separator` uses the border token rather than current text color so
|
|
177
|
-
dividers remain consistent across themes.
|
|
178
|
-
|
|
179
|
-
## Accessibility
|
|
180
|
-
|
|
181
|
-
- Prefer real `fieldset` and `legend` elements for grouped questions.
|
|
182
|
-
- Keep native controls on `[uiFormControl]` when they need synchronized labels,
|
|
183
|
-
descriptions, and message ids.
|
|
184
|
-
- Use `label[ui-label]` wrappers when the entire checkbox, radio, or switch row
|
|
185
|
-
should toggle the control.
|
|
186
|
-
- `p[ui-form-message]` emits `role="alert"` and `aria-live="polite"`.
|
|
187
|
-
|
|
188
|
-
## Keyboard Interactions
|
|
189
|
-
|
|
190
|
-
- Input and textarea fields preserve browser-native editing behavior.
|
|
191
|
-
- Select, checkbox, radio, and switch rows keep the interaction model of their
|
|
192
|
-
own entrypoints.
|
|
193
|
-
- Field wrappers add structure and semantics but do not create extra tab stops.
|
|
194
|
-
|
|
195
|
-
## Angular Notes
|
|
196
|
-
|
|
197
|
-
- `ui-form-label` is best for native controls that participate in
|
|
198
|
-
`[uiFormControl]`.
|
|
199
|
-
- Use `ui-form-title` when the primary text is descriptive rather than a direct
|
|
200
|
-
form label.
|
|
201
|
-
- The local `responsive` orientation uses breakpoint-based layout instead of the
|
|
202
|
-
upstream container-query API.
|
|
203
|
-
|
|
204
|
-
## Source Parity
|
|
205
|
-
|
|
206
|
-
This package is the durable Angular-first mapping for the shadcn `Field`
|
|
207
|
-
documentation. It mirrors the same information architecture while staying
|
|
208
|
-
honest about local differences: there is no dedicated `field` entrypoint, and
|
|
209
|
-
grouped controls continue to use the runtime behavior of the existing input,
|
|
210
|
-
textarea, select, checkbox, radio, switch, and button packages.
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
# Hover Card
|
|
2
|
-
|
|
3
|
-
Preview additional context on hover or keyboard focus without forcing a full click-to-open interaction.
|
|
4
|
-
|
|
5
|
-
The Angular hover card follows the shadcn composition model with a root container for shared defaults, a trigger directive on the interactive host, and a template-backed content surface rendered through the CDK overlay.
|
|
6
|
-
|
|
7
|
-
## Import
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import {
|
|
11
|
-
HoverCardComponent,
|
|
12
|
-
HoverCardContentDirective,
|
|
13
|
-
HoverCardTriggerDirective,
|
|
14
|
-
} from '@your-scope/angular/component/hover-card';
|
|
15
|
-
import { ButtonComponent } from '@your-scope/angular/component/button';
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Composition
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
ui-hover-card
|
|
22
|
-
├── [uiHoverCardTrigger]
|
|
23
|
-
└── ng-template[uiHoverCardContent]
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Basic usage
|
|
27
|
-
|
|
28
|
-
```html
|
|
29
|
-
<ui-hover-card [openDelay]="100" [closeDelay]="150">
|
|
30
|
-
<button ui-button variant="link" [uiHoverCardTrigger]="profileCard">@nextjs</button>
|
|
31
|
-
|
|
32
|
-
<ng-template uiHoverCardContent #profileCard="uiHoverCardContent">
|
|
33
|
-
<div
|
|
34
|
-
class="flex w-72 flex-col gap-1 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md">
|
|
35
|
-
<div class="font-semibold">@nextjs</div>
|
|
36
|
-
<p class="text-sm text-muted-foreground">The React Framework - created and maintained by @vercel.</p>
|
|
37
|
-
<p class="text-xs text-muted-foreground">Joined December 2021</p>
|
|
38
|
-
</div>
|
|
39
|
-
</ng-template>
|
|
40
|
-
</ui-hover-card>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Common patterns
|
|
44
|
-
|
|
45
|
-
### Trigger delays
|
|
46
|
-
|
|
47
|
-
Use the root or trigger inputs to control when the preview opens and closes.
|
|
48
|
-
|
|
49
|
-
```html
|
|
50
|
-
<ui-hover-card [openDelay]="150" [closeDelay]="200">
|
|
51
|
-
<a href="/profiles/vercel" [uiHoverCardTrigger]="card">Hover profile</a>
|
|
52
|
-
<ng-template uiHoverCardContent #card="uiHoverCardContent">...</ng-template>
|
|
53
|
-
</ui-hover-card>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Positioning
|
|
57
|
-
|
|
58
|
-
Set `side`, `align`, and `sideOffset` on the root for shared defaults or override them on an individual trigger.
|
|
59
|
-
|
|
60
|
-
```html
|
|
61
|
-
<ui-hover-card side="top" align="start" [sideOffset]="12">
|
|
62
|
-
<button ui-button variant="outline" [uiHoverCardTrigger]="card">Top start</button>
|
|
63
|
-
<ng-template uiHoverCardContent #card="uiHoverCardContent">...</ng-template>
|
|
64
|
-
</ui-hover-card>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Interactive content
|
|
68
|
-
|
|
69
|
-
The overlay remains open while either the trigger or the rendered content is hovered or focused, so links and buttons inside the card remain usable.
|
|
70
|
-
|
|
71
|
-
```html
|
|
72
|
-
<ui-hover-card>
|
|
73
|
-
<a href="/products/headphones" [uiHoverCardTrigger]="productCard">Wireless Headphones</a>
|
|
74
|
-
<ng-template uiHoverCardContent #productCard="uiHoverCardContent">
|
|
75
|
-
<div
|
|
76
|
-
class="flex w-64 flex-col gap-3 rounded-lg border border-border bg-popover p-4 text-popover-foreground shadow-md">
|
|
77
|
-
<div>
|
|
78
|
-
<div class="font-semibold">Wireless Headphones</div>
|
|
79
|
-
<p class="text-sm text-muted-foreground">Noise cancelling with 30-hour battery life.</p>
|
|
80
|
-
</div>
|
|
81
|
-
<a ui-button href="/products/headphones" size="sm">View product</a>
|
|
82
|
-
</div>
|
|
83
|
-
</ng-template>
|
|
84
|
-
</ui-hover-card>
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## API reference
|
|
88
|
-
|
|
89
|
-
### `HoverCardComponent`
|
|
90
|
-
|
|
91
|
-
| Input | Type | Default |
|
|
92
|
-
| ------------ | ---------------------------------------- | ---------- |
|
|
93
|
-
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` |
|
|
94
|
-
| `align` | `'start' \| 'center' \| 'end'` | `'center'` |
|
|
95
|
-
| `sideOffset` | `number` | `8` |
|
|
96
|
-
| `openDelay` | `number` | `100` |
|
|
97
|
-
| `closeDelay` | `number` | `100` |
|
|
98
|
-
|
|
99
|
-
### `HoverCardTriggerDirective` (`[uiHoverCardTrigger]`)
|
|
100
|
-
|
|
101
|
-
| Input | Type | Default |
|
|
102
|
-
| -------------------- | ---------------------------------------- | ------------------- |
|
|
103
|
-
| `uiHoverCardTrigger` | `HoverCardContentDirective` | - |
|
|
104
|
-
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | Inherited from root |
|
|
105
|
-
| `align` | `'start' \| 'center' \| 'end'` | Inherited from root |
|
|
106
|
-
| `sideOffset` | `number` | Inherited from root |
|
|
107
|
-
| `openDelay` | `number` | Inherited from root |
|
|
108
|
-
| `closeDelay` | `number` | Inherited from root |
|
|
109
|
-
| `disabled` | `boolean` | `false` |
|
|
110
|
-
|
|
111
|
-
Exposes `isOpen()` and `openedChange`. The host reflects `aria-expanded` and `aria-haspopup="dialog"`.
|
|
112
|
-
|
|
113
|
-
### `HoverCardContentDirective`
|
|
114
|
-
|
|
115
|
-
Use `ng-template[uiHoverCardContent]` with `exportAs="uiHoverCardContent"` to provide the overlay body.
|
|
116
|
-
|
|
117
|
-
## Styling and theming
|
|
118
|
-
|
|
119
|
-
The hover card does not force a panel shell. Apply width, border, background, radius, and elevation classes inside the projected template so the content can match compact profile cards, product previews, or custom dashboards.
|
|
120
|
-
|
|
121
|
-
Use `border-border` for visible borders and `bg-popover text-popover-foreground` for the body shell to stay aligned with the theme tokens used across the library.
|
|
122
|
-
|
|
123
|
-
## Accessibility
|
|
124
|
-
|
|
125
|
-
- Open the card from a real interactive host such as `<button>`, `<a>`, or another focusable control.
|
|
126
|
-
- The card opens on hover and keyboard focus, then remains available while the trigger or overlay content stays hovered or focused.
|
|
127
|
-
- Press `Escape` while the trigger or overlay is focused to dismiss the preview.
|
|
128
|
-
- Keep essential actions available outside the hover card as well; hover cards are best for supplemental context, not critical flows.
|
|
129
|
-
|
|
130
|
-
## Keyboard interactions
|
|
131
|
-
|
|
132
|
-
- `Tab` moves focus to the trigger and opens the card after the configured `openDelay`.
|
|
133
|
-
- `Tab` continues into focusable content inside the overlay without forcing an immediate close.
|
|
134
|
-
- `Shift+Tab` back to the trigger keeps the preview open.
|
|
135
|
-
- `Escape` closes the preview.
|
|
136
|
-
|
|
137
|
-
## Angular notes
|
|
138
|
-
|
|
139
|
-
- The root `ui-hover-card` provides shared defaults. Override placement or timing on an individual trigger only when one example needs different behavior.
|
|
140
|
-
- The content stays template-backed instead of adding a dedicated content component so the overlay body can remain fully custom.
|
|
141
|
-
- Because the content renders through the CDK overlay container, set `dir` on the projected body when an individual card needs RTL behavior independent of the application shell.
|
|
142
|
-
- If you need click-to-open behavior instead of hover and focus, use the Popover primitive instead.
|
|
143
|
-
|
|
144
|
-
## Source parity
|
|
145
|
-
|
|
146
|
-
This implementation preserves the shadcn structure, trigger delay inputs, side and alignment controls, and interactive hover path between trigger and content, while adapting the API to Angular selectors and CDK overlay primitives.
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Input
|
|
2
|
-
|
|
3
|
-
Text input for forms and user data entry with shadcn-style visual states and Angular-friendly composition.
|
|
4
|
-
|
|
5
|
-
The input itself stays a native `<input>` element. When the current shadcn docs mention `Field`, `FieldLabel`, or
|
|
6
|
-
`FieldDescription`, the local Angular mapping is the existing form primitives rather than a separate runtime `Form`
|
|
7
|
-
component.
|
|
8
|
-
|
|
9
|
-
## Import
|
|
10
|
-
|
|
11
|
-
For the simplest standalone field:
|
|
12
|
-
|
|
13
|
-
```ts
|
|
14
|
-
import { InputComponent } from '@ojiepermana/angular/component/input';
|
|
15
|
-
import { LabelComponent } from '@ojiepermana/angular/component/label';
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
For the richer field composition used throughout the shadcn Input docs:
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
import {
|
|
22
|
-
FormControlDirective,
|
|
23
|
-
FormDescriptionComponent,
|
|
24
|
-
FormFieldComponent,
|
|
25
|
-
FormLabelComponent,
|
|
26
|
-
FormMessageComponent,
|
|
27
|
-
} from '@ojiepermana/angular/component/form';
|
|
28
|
-
import { InputComponent } from '@ojiepermana/angular/component/input';
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
### Standalone input
|
|
34
|
-
|
|
35
|
-
```html
|
|
36
|
-
<label ui-label for="email">Email</label> <input id="email" ui-input type="email" placeholder="you@example.com" />
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Field mapping
|
|
40
|
-
|
|
41
|
-
Use the local form primitives when you need the label, helper text, and invalid-state wiring shown in the upstream
|
|
42
|
-
shadcn examples:
|
|
43
|
-
|
|
44
|
-
```html
|
|
45
|
-
<ui-form-field>
|
|
46
|
-
<ui-form-label>Email</ui-form-label>
|
|
47
|
-
<input ui-input uiFormControl type="email" placeholder="you@example.com" />
|
|
48
|
-
<ui-form-description>We'll only use this address for account updates.</ui-form-description>
|
|
49
|
-
<ui-form-message>Enter a valid email address.</ui-form-message>
|
|
50
|
-
</ui-form-field>
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Common Patterns
|
|
54
|
-
|
|
55
|
-
### Reactive forms
|
|
56
|
-
|
|
57
|
-
`ui-input` keeps Angular's standard `DefaultValueAccessor`, so reactive forms and `formControlName` work without a
|
|
58
|
-
wrapper component.
|
|
59
|
-
|
|
60
|
-
```ts
|
|
61
|
-
readonly profileForm = new FormGroup({
|
|
62
|
-
email: new FormControl('', {
|
|
63
|
-
nonNullable: true,
|
|
64
|
-
validators: [Validators.required, Validators.email],
|
|
65
|
-
}),
|
|
66
|
-
});
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
```html
|
|
70
|
-
<ui-form-field>
|
|
71
|
-
<ui-form-label>Email</ui-form-label>
|
|
72
|
-
<input ui-input uiFormControl formControlName="email" type="email" placeholder="john@example.com" />
|
|
73
|
-
<ui-form-description>We'll never share your email with anyone.</ui-form-description>
|
|
74
|
-
<ui-form-message>Enter a valid email address.</ui-form-message>
|
|
75
|
-
</ui-form-field>
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Invalid state without Angular forms
|
|
79
|
-
|
|
80
|
-
If the field participates in a validation flow outside Angular forms, forward `aria-invalid="true"` manually.
|
|
81
|
-
|
|
82
|
-
```html
|
|
83
|
-
<input ui-input aria-invalid="true" placeholder="Error" />
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### File input
|
|
87
|
-
|
|
88
|
-
The same directive styles file inputs while preserving the browser-native file picker.
|
|
89
|
-
|
|
90
|
-
```html
|
|
91
|
-
<ui-form-field>
|
|
92
|
-
<ui-form-label>Picture</ui-form-label>
|
|
93
|
-
<input ui-input uiFormControl type="file" />
|
|
94
|
-
<ui-form-description>Select a picture to upload.</ui-form-description>
|
|
95
|
-
</ui-form-field>
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Inline actions
|
|
99
|
-
|
|
100
|
-
For search bars or quick actions, compose the input with `ui-button` instead of inventing a synthetic group API.
|
|
101
|
-
|
|
102
|
-
```html
|
|
103
|
-
<div class="flex max-w-md items-center gap-2">
|
|
104
|
-
<input ui-input type="search" placeholder="Search..." class="flex-1" />
|
|
105
|
-
<button ui-button type="button">Search</button>
|
|
106
|
-
</div>
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## API Reference
|
|
110
|
-
|
|
111
|
-
### `InputComponent`
|
|
112
|
-
|
|
113
|
-
| Input | Type | Default |
|
|
114
|
-
| ------- | -------- | ------- |
|
|
115
|
-
| `class` | `string` | `''` |
|
|
116
|
-
|
|
117
|
-
All native `<input>` attributes such as `type`, `placeholder`, `required`, `disabled`, `autocomplete`, and `value`
|
|
118
|
-
continue to work as usual.
|
|
119
|
-
|
|
120
|
-
### Field Mapping
|
|
121
|
-
|
|
122
|
-
- `Field` maps to `ui-form-field`.
|
|
123
|
-
- `FieldLabel` maps to `ui-form-label`.
|
|
124
|
-
- `FieldDescription` maps to `ui-form-description`.
|
|
125
|
-
- Invalid and helper-text wiring come from `[uiFormControl]` plus `ui-form-message`.
|
|
126
|
-
|
|
127
|
-
## Styling and Theming
|
|
128
|
-
|
|
129
|
-
Theme tokens used by the input styles include `--border`, `--input`, `--foreground`, `--muted-foreground`, `--ring`,
|
|
130
|
-
and `--destructive`.
|
|
131
|
-
|
|
132
|
-
When `aria-invalid="true"` is present, the border and focus ring switch to the destructive treatment. Pass `class`
|
|
133
|
-
for layout utilities such as width, flex growth, or spacing around the native control.
|
|
134
|
-
|
|
135
|
-
## Accessibility
|
|
136
|
-
|
|
137
|
-
- Pair every input with a visible label or another accessible name source.
|
|
138
|
-
- Use `uiFormControl` inside `ui-form-field` when the control should auto-wire `id`, `aria-describedby`, and invalid
|
|
139
|
-
state.
|
|
140
|
-
- Keep helper text and validation messages adjacent to the field so screen readers announce the full context.
|
|
141
|
-
- Do not remove the focus ring; the component keeps a visible keyboard-only focus treatment.
|
|
142
|
-
|
|
143
|
-
## Keyboard Interactions
|
|
144
|
-
|
|
145
|
-
- The component preserves the browser-native keyboard behavior of the underlying input element.
|
|
146
|
-
- File, search, email, password, and text variants continue to use the interactions defined by their native type.
|
|
147
|
-
- Any adjacent action button, such as a search trigger, remains a separate Tab stop.
|
|
148
|
-
|
|
149
|
-
## Angular Notes
|
|
150
|
-
|
|
151
|
-
- `ui-input` is an attribute selector on the native `<input>` element.
|
|
152
|
-
- It works with both `ngModel` and reactive forms because Angular still sees the underlying native control.
|
|
153
|
-
- `uiFormControl` is optional; use it when the field participates in the local form-primitive composition.
|
|
154
|
-
|
|
155
|
-
## Source Parity
|
|
156
|
-
|
|
157
|
-
This Angular implementation follows the current shadcn Input information architecture while translating `Field` to the
|
|
158
|
-
local form primitives. Upstream `Input Group` and `Button Group` examples are intentionally left to their own planned
|
|
159
|
-
components instead of being faked inside the input API.
|