├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── deploy-docs.yml │ └── pr-check.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .lintstagedrc-fix.json ├── .lintstagedrc.json ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── .stylelintrc.json ├── .vscode ├── launch.json └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── angular.json ├── codecov.yml ├── docs ├── .eslintrc.json ├── 404.html ├── app │ ├── @theme │ │ ├── components │ │ │ ├── color-swatch │ │ │ │ └── color-swatch.directive.ts │ │ │ ├── components-promo │ │ │ │ ├── components-promo.component.scss │ │ │ │ └── components-promo.component.ts │ │ │ ├── description │ │ │ │ └── description.directive.ts │ │ │ ├── eva │ │ │ │ ├── eva.component.html │ │ │ │ ├── eva.component.ts │ │ │ │ └── eva.components.scss │ │ │ ├── footer │ │ │ │ ├── footer.component.html │ │ │ │ ├── footer.component.scss │ │ │ │ └── footer.component.ts │ │ │ ├── for-business │ │ │ │ ├── for-business.component.scss │ │ │ │ └── for-business.component.ts │ │ │ ├── fragment-target │ │ │ │ └── fragment-target.directive.ts │ │ │ ├── header │ │ │ │ ├── header.component.scss │ │ │ │ └── header.component.ts │ │ │ ├── hero │ │ │ │ ├── hero.component.scss │ │ │ │ └── hero.component.ts │ │ │ ├── hubspot-cta │ │ │ │ ├── akveo-services-banner.component.scss │ │ │ │ └── akveo-services-banner.component.ts │ │ │ ├── hubspot-form-dialog │ │ │ │ ├── hubspot-form-dialog.component.scss │ │ │ │ └── hubspot-form-dialog.component.ts │ │ │ ├── icon-card │ │ │ │ ├── icon-card.component.scss │ │ │ │ └── icon-card.component.ts │ │ │ ├── index.ts │ │ │ ├── page-tabs │ │ │ │ ├── page-tabs.component.scss │ │ │ │ └── page-tabs.component.ts │ │ │ ├── page-toc │ │ │ │ ├── page-toc.component.scss │ │ │ │ └── page-toc.component.ts │ │ │ ├── search │ │ │ │ ├── search.component.scss │ │ │ │ └── search.component.ts │ │ │ └── text-card │ │ │ │ ├── text-card.component.scss │ │ │ │ └── text-card.component.ts │ │ ├── services │ │ │ ├── analytics.service.ts │ │ │ ├── article.service.ts │ │ │ ├── code-loader.service.ts │ │ │ ├── highlight.service.ts │ │ │ ├── iframe-communicator.service.ts │ │ │ ├── index.ts │ │ │ ├── last-viewed-section.service.ts │ │ │ ├── menu.service.ts │ │ │ ├── metadata.service.ts │ │ │ ├── pagination.service.ts │ │ │ ├── structure.service.ts │ │ │ ├── styles.service.ts │ │ │ ├── tabbed.service.ts │ │ │ ├── text.service.ts │ │ │ ├── version.service.ts │ │ │ └── visibility.service.ts │ │ ├── styles │ │ │ ├── _common.scss │ │ │ ├── hs-form.scss │ │ │ ├── pace.theme.scss │ │ │ ├── styles.scss │ │ │ └── themes.scss │ │ └── theme.module.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── app.options.ts │ ├── app.routes.ts │ ├── blocks │ │ ├── blocks.module.ts │ │ ├── components │ │ │ ├── api-block │ │ │ │ └── api-block.component.ts │ │ │ ├── code-block │ │ │ │ ├── code-block.component.scss │ │ │ │ └── code-block.component.ts │ │ │ ├── component-block │ │ │ │ └── component-block.component.ts │ │ │ ├── components-overview-block │ │ │ │ ├── components-overview-block.component.html │ │ │ │ ├── components-overview-block.component.scss │ │ │ │ └── components-overview-block.component.ts │ │ │ ├── example-block │ │ │ │ └── example-block.component.ts │ │ │ ├── examples-block │ │ │ │ └── examples-block.component.ts │ │ │ ├── index.ts │ │ │ ├── inline-example-block │ │ │ │ └── inline-example-block.component.ts │ │ │ ├── live-example-block │ │ │ │ ├── live-example-block.component.html │ │ │ │ ├── live-example-block.component.scss │ │ │ │ └── live-example-block.component.ts │ │ │ ├── md-block │ │ │ │ └── md-block.component.ts │ │ │ ├── methods-block │ │ │ │ └── methods-block.component.ts │ │ │ ├── overview-block │ │ │ │ └── overview-block.component.ts │ │ │ ├── pager-block │ │ │ │ ├── pager-block.component.scss │ │ │ │ └── pager-block.component.ts │ │ │ ├── prop-block │ │ │ │ └── prop-block.component.ts │ │ │ ├── props-block │ │ │ │ └── props-block.component.ts │ │ │ ├── stacked-example-block │ │ │ │ └── stacked-examples.component.ts │ │ │ ├── styles-block │ │ │ │ └── styles-block.component.ts │ │ │ ├── styles-table-block │ │ │ │ └── styles-table-block.component.ts │ │ │ ├── tabbed-block │ │ │ │ ├── tabbed-block.component.html │ │ │ │ └── tabbed-block.component.ts │ │ │ ├── tabbed-example-block │ │ │ │ ├── tabbed-example-block.component.html │ │ │ │ ├── tabbed-example-block.component.scss │ │ │ │ └── tabbed-example-block.component.ts │ │ │ └── theme-block │ │ │ │ ├── theme-block.component.html │ │ │ │ ├── theme-block.component.scss │ │ │ │ └── theme-block.component.ts │ │ └── enum.example-view.ts │ ├── documentation │ │ ├── documentation-routing.module.ts │ │ ├── documentation.component.html │ │ ├── documentation.component.scss │ │ ├── documentation.component.ts │ │ ├── documentation.module.ts │ │ └── page │ │ │ ├── page.component.html │ │ │ ├── page.component.scss │ │ │ └── page.component.ts │ ├── example │ │ ├── example-404.component.scss │ │ ├── example-404.component.ts │ │ ├── example-routing.module.ts │ │ ├── example.component.scss │ │ ├── example.component.ts │ │ └── example.module.ts │ └── home │ │ ├── home-routing.module.ts │ │ ├── home.component.html │ │ ├── home.component.scss │ │ ├── home.component.ts │ │ └── home.module.ts ├── articles │ ├── .gitkeep │ ├── auth │ │ ├── azure.md │ │ ├── backend-api.md │ │ ├── custom-ui.md │ │ ├── firebase-authentication.md │ │ ├── guard.md │ │ ├── install.md │ │ ├── intro.md │ │ ├── oauth2.md │ │ ├── redirect.md │ │ ├── strategy.md │ │ ├── token.md │ │ └── ui.md │ ├── design-system │ │ ├── css-properties.md │ │ ├── custom-theme.md │ │ ├── enable-customizable-theme.md │ │ ├── intro.md │ │ ├── multiple-runtime-themes.md │ │ ├── theme-change.md │ │ ├── theme.md │ │ ├── typography.md │ │ └── use-theme-variables.md │ ├── getting-started │ │ ├── professional-services.md │ │ ├── what-is-nebular.md │ │ └── where-to-start.md │ ├── guides │ │ ├── backend-integration.md │ │ ├── create-page.md │ │ ├── custom-icons.md │ │ ├── install-starter-kit.md │ │ ├── install.md │ │ └── server-deployment.md │ ├── migration │ │ ├── 200rc8-200rc9-auth.md │ │ ├── 350-400.md │ │ └── instructions.md │ ├── security │ │ ├── acl-configuration.md │ │ ├── install.md │ │ ├── intro.md │ │ └── multiple-roles.md │ └── usability │ │ └── rtl.md ├── assets │ ├── .gitkeep │ ├── data │ │ └── news.json │ ├── ghspa.js │ ├── images │ │ ├── articles │ │ │ ├── blue-theme.png │ │ │ ├── custom-auth │ │ │ │ ├── auth-container.png │ │ │ │ └── form-with-labels.png │ │ │ ├── dark-theme.png │ │ │ ├── design-system │ │ │ │ └── aquamarine-theme.png │ │ │ └── sample-page.png │ │ └── components │ │ │ ├── accordion.svg │ │ │ ├── actions.svg │ │ │ ├── alert.svg │ │ │ ├── autocomplete.svg │ │ │ ├── badge.svg │ │ │ ├── button-group.svg │ │ │ ├── button.svg │ │ │ ├── calendar.svg │ │ │ ├── card.svg │ │ │ ├── chat-ui.svg │ │ │ ├── checkbox.svg │ │ │ ├── chips.svg │ │ │ ├── collapsable.svg │ │ │ ├── context-menu.svg │ │ │ ├── datepicker.svg │ │ │ ├── dialog.svg │ │ │ ├── flip.svg │ │ │ ├── icon.svg │ │ │ ├── infinite-scroll.svg │ │ │ ├── input.svg │ │ │ ├── layout.svg │ │ │ ├── list.svg │ │ │ ├── menu.svg │ │ │ ├── popover.svg │ │ │ ├── progress-bar.svg │ │ │ ├── radio.svg │ │ │ ├── reveal.svg │ │ │ ├── search.svg │ │ │ ├── select.svg │ │ │ ├── sidebar.svg │ │ │ ├── spinner.svg │ │ │ ├── stepper.svg │ │ │ ├── tab.svg │ │ │ ├── tag.svg │ │ │ ├── timepicker.svg │ │ │ ├── toastr.svg │ │ │ ├── toggle.svg │ │ │ ├── tooltip.svg │ │ │ ├── tree-grid.svg │ │ │ └── user.svg │ └── img │ │ ├── akveo-logo.png │ │ ├── auth.svg │ │ ├── bg.svg │ │ ├── components-preview-2x.png │ │ ├── components-preview.png │ │ ├── components.svg │ │ ├── concave.svg │ │ ├── extendable.svg │ │ ├── guides.svg │ │ ├── hero-components.svg │ │ ├── intro.svg │ │ ├── modular.svg │ │ ├── native.svg │ │ ├── open-sourced.svg │ │ ├── security.svg │ │ ├── shield.svg │ │ ├── shield@2x.png │ │ ├── theme-colors-2x.png │ │ ├── theme-colors.png │ │ └── themes.svg ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── favicon.png ├── google46533d2e7a851062.html ├── index.html ├── main.ts ├── polyfills.ts ├── robots.txt ├── structure.ts ├── test.ts ├── themes.scss ├── tsconfig.app.json ├── tsconfig.spec.json ├── tsconfig.wp.json ├── version.ts └── versions.json ├── e2e ├── .eslintrc.json ├── accordion.e2e-spec.ts ├── actions.e2e-spec.ts ├── alert.e2e-spec.ts ├── badge.e2e-spec.ts ├── card.e2e-spec.ts ├── chat.e2e-spec.ts ├── checkbox.e2e-spec.ts ├── component-shared.ts ├── context-menu.e2e-spec.ts ├── e2e-helper.ts ├── flip-card.e2e-spec.ts ├── layout-footer.e2e-spec.ts ├── layout-header.e2e-spec.ts ├── layout-theme.e2e-spec.ts ├── layout.e2e-spec.ts ├── menu.e2e-spec.ts ├── popover.e2e-spec.ts ├── reveal-card.e2e-spec.ts ├── route-tabset.e2e-spec.ts ├── search.e2e-spec.ts ├── select.e2e-spec.ts ├── sidebar-one.e2e-spec.ts ├── sidebar-three.e2e-spec.ts ├── sidebar-two.e2e-spec.ts ├── sidebar.e2e-spec.ts ├── tabset.e2e-spec.ts ├── toggle.e2e-spec.ts ├── tsconfig.e2e.json └── user.e2e-spec.ts ├── eslint.config.mjs ├── gulpfile.js ├── karma.conf.js ├── package-lock.json ├── package.json ├── packages-smoke ├── .eslintrc.json ├── README.md ├── angular.json ├── e2e │ ├── .eslintrc.json │ ├── protractor.conf.js │ ├── src │ │ └── app.e2e-spec.ts │ └── tsconfig.e2e.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── server.ts ├── src │ ├── app │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ └── app.server.module.ts │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.server.ts │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.server.json └── tsconfig.spec.json ├── protractor.conf.js ├── src ├── .eslintrc.json ├── app │ ├── app.component.scss │ ├── app.component.ts │ ├── app.module.ts │ ├── components-link.directive.ts │ ├── components-list.service.ts │ ├── components-list │ │ ├── components-list.component.scss │ │ └── components-list.component.ts │ ├── layout-direction-toggle │ │ ├── layout-direction-toggle.component.scss │ │ └── layout-direction-toggle.component.ts │ ├── layout-theme-toggle │ │ ├── layout-theme-toggle.component.scss │ │ └── layout-theme-toggle.component.ts │ └── playground-components.ts ├── assets │ ├── .gitkeep │ └── data │ │ └── news.json ├── backend │ ├── app.js │ ├── auth.js │ ├── auth_helpers.js │ ├── config.js │ ├── package.json │ ├── token_helpers.js │ ├── users.js │ └── wines.js ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── framework │ ├── auth │ │ ├── .eslintrc.json │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── UPGRADE.md │ │ ├── auth.module.ts │ │ ├── auth.options.ts │ │ ├── auth.routes.ts │ │ ├── components │ │ │ ├── auth-block │ │ │ │ ├── _auth-block.component.theme.scss │ │ │ │ ├── auth-block.component.scss │ │ │ │ └── auth-block.component.ts │ │ │ ├── auth.component.scss │ │ │ ├── auth.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ └── login.component.ts │ │ │ ├── logout │ │ │ │ ├── logout.component.html │ │ │ │ └── logout.component.ts │ │ │ ├── register │ │ │ │ ├── register.component.html │ │ │ │ ├── register.component.scss │ │ │ │ └── register.component.ts │ │ │ ├── request-password │ │ │ │ ├── request-password.component.html │ │ │ │ ├── request-password.component.scss │ │ │ │ └── request-password.component.ts │ │ │ └── reset-password │ │ │ │ ├── reset-password.component.html │ │ │ │ ├── reset-password.component.scss │ │ │ │ └── reset-password.component.ts │ │ ├── helpers.ts │ │ ├── models │ │ │ └── user.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── services │ │ │ ├── auth-result.ts │ │ │ ├── auth.service.ts │ │ │ ├── auth.spec.ts │ │ │ ├── interceptors │ │ │ │ ├── jwt-interceptor.spec.ts │ │ │ │ ├── jwt-interceptor.ts │ │ │ │ └── simple-interceptor.ts │ │ │ └── token │ │ │ │ ├── token-parceler.spec.ts │ │ │ │ ├── token-parceler.ts │ │ │ │ ├── token-service.spec.ts │ │ │ │ ├── token-storage.spec.ts │ │ │ │ ├── token-storage.ts │ │ │ │ ├── token.service.ts │ │ │ │ ├── token.spec.ts │ │ │ │ └── token.ts │ │ ├── strategies │ │ │ ├── auth-strategy-options.ts │ │ │ ├── auth-strategy.ts │ │ │ ├── dummy │ │ │ │ ├── dummy-strategy-options.ts │ │ │ │ └── dummy-strategy.ts │ │ │ ├── oauth2 │ │ │ │ ├── oauth2-strategy.options.ts │ │ │ │ ├── oauth2-strategy.spec.ts │ │ │ │ └── oauth2-strategy.ts │ │ │ └── password │ │ │ │ ├── password-strategy-options.ts │ │ │ │ ├── password-strategy.spec.ts │ │ │ │ └── password-strategy.ts │ │ ├── styles │ │ │ ├── _globals.scss │ │ │ ├── global │ │ │ │ └── _components.scss │ │ │ └── prebuilt │ │ │ │ ├── components-custom-properties.scss │ │ │ │ ├── corporate-custom-properties.scss │ │ │ │ ├── corporate.scss │ │ │ │ ├── cosmic-custom-properties.scss │ │ │ │ ├── cosmic.scss │ │ │ │ ├── dark-custom-properties.scss │ │ │ │ ├── dark.scss │ │ │ │ ├── default-custom-properties.scss │ │ │ │ └── default.scss │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── bootstrap │ │ ├── README.md │ │ ├── package.json │ │ └── styles │ │ │ ├── _button-group.scss │ │ │ ├── _buttons.scss │ │ │ ├── _default-form-control.scss │ │ │ ├── _dropdowns.scss │ │ │ ├── _forms.scss │ │ │ ├── _globals.scss │ │ │ ├── _hero-buttons.scss │ │ │ ├── _icon-buttons.scss │ │ │ ├── _layout.scss │ │ │ ├── _modals.scss │ │ │ ├── _outline-buttons.scss │ │ │ ├── _shape-buttons.scss │ │ │ ├── _size-buttons.scss │ │ │ ├── _size-form-control.scss │ │ │ ├── _status-buttons.scss │ │ │ └── prebuilt │ │ │ ├── components-custom-properties.scss │ │ │ ├── corporate-custom-properties.scss │ │ │ ├── corporate.scss │ │ │ ├── cosmic-custom-properties.scss │ │ │ ├── cosmic.scss │ │ │ ├── dark-custom-properties.scss │ │ │ ├── dark.scss │ │ │ ├── default-custom-properties.scss │ │ │ └── default.scss │ ├── date-fns │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── date-fns.module.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── services │ │ │ ├── date-fns-date.service.spec.ts │ │ │ └── date-fns-date.service.ts │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── eva-icons │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── eva-icons.module.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── firebase-auth │ │ ├── .eslintrc.json │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── firebase-auth.module.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── strategies │ │ │ ├── base │ │ │ │ ├── firebase-base.strategy.ts │ │ │ │ └── firebase-identity-provider-strategy.options.ts │ │ │ ├── facebook │ │ │ │ └── firebase-facebook.strategy.ts │ │ │ ├── google │ │ │ │ └── firebase-google.strategy.ts │ │ │ ├── password │ │ │ │ ├── firebase-password-strategy.options.ts │ │ │ │ └── firebase-password.strategy.ts │ │ │ └── twitter │ │ │ │ └── firebase-twitter.strategy.ts │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── icons │ │ └── README.md │ ├── moment │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── moment.module.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── services │ │ │ ├── moment-date.service.spec.ts │ │ │ └── moment-date.service.ts │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── security │ │ ├── .eslintrc.json │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── directives │ │ │ └── is-granted.directive.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── security.module.ts │ │ ├── security.options.ts │ │ ├── services │ │ │ ├── access-checker.service.ts │ │ │ ├── access-checker.spec.ts │ │ │ ├── acl.service.ts │ │ │ ├── acl.spec.ts │ │ │ └── role.provider.ts │ │ ├── test.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ └── theme │ │ ├── .eslintrc.json │ │ ├── 350-400-component-variables-changes.md │ │ ├── 350-400-properties-changes.md │ │ ├── 350-400-theme-variables-changes.md │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── components │ │ ├── accordion │ │ │ ├── _accordion.component.theme.scss │ │ │ ├── accordion-item-body.component.ts │ │ │ ├── accordion-item-header.component.scss │ │ │ ├── accordion-item-header.component.ts │ │ │ ├── accordion-item.component.scss │ │ │ ├── accordion-item.component.ts │ │ │ ├── accordion.component.ts │ │ │ └── accordion.module.ts │ │ ├── actions │ │ │ ├── _actions.component.theme.scss │ │ │ ├── action.component.scss │ │ │ ├── actions.component.scss │ │ │ ├── actions.component.ts │ │ │ ├── actions.module.ts │ │ │ └── actions.spec.ts │ │ ├── alert │ │ │ ├── _alert.component.theme.scss │ │ │ ├── alert.component.scss │ │ │ ├── alert.component.ts │ │ │ ├── alert.module.ts │ │ │ └── alert.spec.ts │ │ ├── autocomplete │ │ │ ├── autocomplete.component.html │ │ │ ├── autocomplete.component.scss │ │ │ ├── autocomplete.component.spec.ts │ │ │ ├── autocomplete.component.ts │ │ │ ├── autocomplete.directive.ts │ │ │ └── autocomplete.module.ts │ │ ├── badge │ │ │ ├── _badge.component.theme.scss │ │ │ ├── badge.component.scss │ │ │ ├── badge.component.spec.ts │ │ │ ├── badge.component.ts │ │ │ └── badge.module.ts │ │ ├── button-group │ │ │ ├── _button-group.component.theme.scss │ │ │ ├── _button-toggle.component.theme.scss │ │ │ ├── button-group-injection-tokens.ts │ │ │ ├── button-group.component.ts │ │ │ ├── button-group.module.ts │ │ │ ├── button-group.spec.ts │ │ │ └── button-toggle.directive.ts │ │ ├── button │ │ │ ├── _button-core.scss │ │ │ ├── _button-filled.scss │ │ │ ├── _button-ghost.scss │ │ │ ├── _button-hero.scss │ │ │ ├── _button-outline.scss │ │ │ ├── _button.component.theme.scss │ │ │ ├── base-button.ts │ │ │ ├── button.component.ts │ │ │ ├── button.module.ts │ │ │ └── button.spec.ts │ │ ├── calendar-kit │ │ │ ├── _calendar-kit.theme.scss │ │ │ ├── calendar-kit.module.ts │ │ │ ├── components │ │ │ │ ├── _calendar-cell.theme.scss │ │ │ │ ├── calendar-actions │ │ │ │ │ ├── calendar-actions.component.scss │ │ │ │ │ └── calendar-actions.component.ts │ │ │ │ ├── calendar-day-picker │ │ │ │ │ ├── _calendar-day-picker.component.theme.scss │ │ │ │ │ ├── calendar-day-cell.component.spec.ts │ │ │ │ │ ├── calendar-day-cell.component.ts │ │ │ │ │ ├── calendar-day-picker.component.scss │ │ │ │ │ ├── calendar-day-picker.component.spec.ts │ │ │ │ │ └── calendar-day-picker.component.ts │ │ │ │ ├── calendar-days-names │ │ │ │ │ ├── _calendar-days-names.component.theme.scss │ │ │ │ │ ├── calendar-days-names.component.scss │ │ │ │ │ ├── calendar-days-names.component.spec.ts │ │ │ │ │ └── calendar-days-names.component.ts │ │ │ │ ├── calendar-month-picker │ │ │ │ │ ├── calendar-month-cell.component.spec.ts │ │ │ │ │ ├── calendar-month-cell.component.ts │ │ │ │ │ ├── calendar-month-picker.component.spec.ts │ │ │ │ │ └── calendar-month-picker.component.ts │ │ │ │ ├── calendar-navigation │ │ │ │ │ ├── _calendar-navigation.theme.scss │ │ │ │ │ ├── calendar-pageable-navigation.component.scss │ │ │ │ │ ├── calendar-pageable-navigation.component.spec.ts │ │ │ │ │ ├── calendar-pageable-navigation.component.ts │ │ │ │ │ ├── calendar-view-mode.component.spec.ts │ │ │ │ │ └── calendar-view-mode.component.ts │ │ │ │ ├── calendar-picker │ │ │ │ │ ├── _calendar-picker.component.theme.scss │ │ │ │ │ ├── calendar-picker-row.component.spec.ts │ │ │ │ │ ├── calendar-picker-row.component.ts │ │ │ │ │ ├── calendar-picker.component.spec.ts │ │ │ │ │ └── calendar-picker.component.ts │ │ │ │ ├── calendar-week-number │ │ │ │ │ ├── _calendar-week-number.component.theme.scss │ │ │ │ │ ├── calendar-week-number.component.scss │ │ │ │ │ └── calendar-week-number.component.ts │ │ │ │ └── calendar-year-picker │ │ │ │ │ ├── calendar-year-cell.component.spec.ts │ │ │ │ │ ├── calendar-year-cell.component.ts │ │ │ │ │ ├── calendar-year-picker.component.spec.ts │ │ │ │ │ └── calendar-year-picker.component.ts │ │ │ ├── helpers.ts │ │ │ ├── model.ts │ │ │ └── services │ │ │ │ ├── calendar-month-model.service.ts │ │ │ │ ├── calendar-month-model.spec.ts │ │ │ │ ├── calendar-time-model.service.spec.ts │ │ │ │ ├── calendar-time-model.service.ts │ │ │ │ ├── calendar-year-model.service.spec.ts │ │ │ │ ├── calendar-year-model.service.ts │ │ │ │ ├── date.service.ts │ │ │ │ ├── native-date.service.spec.ts │ │ │ │ └── native-date.service.ts │ │ ├── calendar │ │ │ ├── _calendar.component.theme.scss │ │ │ ├── base-calendar-range-cell.ts │ │ │ ├── base-calendar.component.html │ │ │ ├── base-calendar.component.spec.ts │ │ │ ├── base-calendar.component.ts │ │ │ ├── base-calendar.module.ts │ │ │ ├── calendar-range-day-cell.component.ts │ │ │ ├── calendar-range-month-cell.component.ts │ │ │ ├── calendar-range-year-cell.component.ts │ │ │ ├── calendar-range.component.ts │ │ │ ├── calendar-range.module.ts │ │ │ ├── calendar.component.ts │ │ │ └── calendar.module.ts │ │ ├── card │ │ │ ├── _card.component.theme.scss │ │ │ ├── card.component.scss │ │ │ ├── card.component.ts │ │ │ ├── card.module.ts │ │ │ ├── flip-card │ │ │ │ ├── _flip-card.component.theme.scss │ │ │ │ ├── flip-card.component.scss │ │ │ │ └── flip-card.component.ts │ │ │ ├── reveal-card │ │ │ │ ├── _reveal-card.component.theme.scss │ │ │ │ ├── reveal-card.component.scss │ │ │ │ └── reveal-card.component.ts │ │ │ └── shared │ │ │ │ └── shared.component.ts │ │ ├── cdk │ │ │ ├── a11y │ │ │ │ ├── a11y.module.ts │ │ │ │ ├── descendant-key-manager.ts │ │ │ │ ├── focus-key-manager.ts │ │ │ │ └── focus-trap.ts │ │ │ ├── adapter │ │ │ │ ├── adapter.module.ts │ │ │ │ ├── block-scroll-strategy-adapter.ts │ │ │ │ ├── overlay-container-adapter.ts │ │ │ │ ├── scroll-dispatcher-adapter.ts │ │ │ │ └── viewport-ruler-adapter.ts │ │ │ ├── bidi │ │ │ │ ├── bidi-service.ts │ │ │ │ └── bidi.module.ts │ │ │ ├── collections │ │ │ │ └── collection-viewer.ts │ │ │ ├── keycodes │ │ │ │ └── keycodes.ts │ │ │ ├── overlay │ │ │ │ ├── _overlay.theme.scss │ │ │ │ ├── dynamic │ │ │ │ │ ├── dynamic-overlay-handler.spec.ts │ │ │ │ │ ├── dynamic-overlay-handler.ts │ │ │ │ │ ├── dynamic-overlay.spec.ts │ │ │ │ │ └── dynamic-overlay.ts │ │ │ │ ├── mapping.ts │ │ │ │ ├── overlay-container.spec.ts │ │ │ │ ├── overlay-container.ts │ │ │ │ ├── overlay-position.spec.ts │ │ │ │ ├── overlay-position.ts │ │ │ │ ├── overlay-service.ts │ │ │ │ ├── overlay-trigger.spec.ts │ │ │ │ ├── overlay-trigger.ts │ │ │ │ ├── overlay.module.ts │ │ │ │ └── position-helper.ts │ │ │ ├── platform │ │ │ │ └── platform-service.ts │ │ │ └── table │ │ │ │ ├── cell.ts │ │ │ │ ├── data-source.ts │ │ │ │ ├── row.ts │ │ │ │ ├── table.module.ts │ │ │ │ └── type-mappings.ts │ │ ├── chat │ │ │ ├── _chat.component.theme.scss │ │ │ ├── chat-avatar.component.ts │ │ │ ├── chat-custom-message.directive.spec.ts │ │ │ ├── chat-custom-message.directive.ts │ │ │ ├── chat-custom-message.service.ts │ │ │ ├── chat-form.component.spec.ts │ │ │ ├── chat-form.component.ts │ │ │ ├── chat-message-file.component.ts │ │ │ ├── chat-message-map.component.ts │ │ │ ├── chat-message-quote.component.spec.ts │ │ │ ├── chat-message-quote.component.ts │ │ │ ├── chat-message-text.component.spec.ts │ │ │ ├── chat-message-text.component.ts │ │ │ ├── chat-message.component.spec.ts │ │ │ ├── chat-message.component.ts │ │ │ ├── chat-title.directive.spec.ts │ │ │ ├── chat-title.directive.ts │ │ │ ├── chat.component.scss │ │ │ ├── chat.component.ts │ │ │ ├── chat.module.ts │ │ │ └── chat.options.ts │ │ ├── checkbox │ │ │ ├── _checkbox.component.theme.scss │ │ │ ├── checkbox.component.scss │ │ │ ├── checkbox.component.ts │ │ │ ├── checkbox.module.ts │ │ │ └── checkbox.spec.ts │ │ ├── component-shape.ts │ │ ├── component-size.ts │ │ ├── component-status.ts │ │ ├── context-menu │ │ │ ├── _context-menu.component.theme.scss │ │ │ ├── context-menu.component.ts │ │ │ ├── context-menu.directive.ts │ │ │ ├── context-menu.module.ts │ │ │ └── context-menu.spec.ts │ │ ├── datepicker │ │ │ ├── _datepicker-container.component.theme.scss │ │ │ ├── calendar-with-time-container.component.scss │ │ │ ├── calendar-with-time.component.ts │ │ │ ├── date-timepicker.component.ts │ │ │ ├── datepicker-adapter.spec.ts │ │ │ ├── datepicker-adapter.ts │ │ │ ├── datepicker-container.component.ts │ │ │ ├── datepicker.component.ts │ │ │ ├── datepicker.directive.ts │ │ │ ├── datepicker.module.ts │ │ │ └── datepicker.spec.ts │ │ ├── dialog │ │ │ ├── dialog-config.ts │ │ │ ├── dialog-container.ts │ │ │ ├── dialog-ref.ts │ │ │ ├── dialog.module.ts │ │ │ ├── dialog.service.spec.ts │ │ │ └── dialog.service.ts │ │ ├── form-field │ │ │ ├── _form-field.component.theme.scss │ │ │ ├── form-field-control.ts │ │ │ ├── form-field.component.html │ │ │ ├── form-field.component.scss │ │ │ ├── form-field.component.ts │ │ │ ├── form-field.module.ts │ │ │ ├── prefix.directive.ts │ │ │ └── suffix.directive.ts │ │ ├── helpers.ts │ │ ├── icon │ │ │ ├── _icon.component.theme.scss │ │ │ ├── icon-libraries.ts │ │ │ ├── icon-pack.ts │ │ │ ├── icon.component.scss │ │ │ ├── icon.component.spec.ts │ │ │ ├── icon.component.ts │ │ │ ├── icon.module.ts │ │ │ ├── icon.spec.ts │ │ │ ├── icon.ts │ │ │ └── icons-libraries.spec.ts │ │ ├── input │ │ │ ├── _input-shapes.scss │ │ │ ├── _input-sizes.scss │ │ │ ├── _input-statuses.scss │ │ │ ├── _input.directive.theme.scss │ │ │ ├── input.directive.ts │ │ │ ├── input.module.ts │ │ │ └── input.spec.ts │ │ ├── layout │ │ │ ├── _layout.component.theme.scss │ │ │ ├── layout-direction.directive.ts │ │ │ ├── layout.component.scss │ │ │ ├── layout.component.spec.ts │ │ │ ├── layout.component.ts │ │ │ ├── layout.module.ts │ │ │ ├── restore-scroll-top.service.spec.ts │ │ │ └── restore-scroll-top.service.ts │ │ ├── list │ │ │ ├── _list.component.theme.scss │ │ │ ├── infinite-list.directive.spec.ts │ │ │ ├── infinite-list.directive.ts │ │ │ ├── list-item.component.scss │ │ │ ├── list-page-tracker.directive.ts │ │ │ ├── list-pager.directive.spec.ts │ │ │ ├── list.component.scss │ │ │ ├── list.component.ts │ │ │ └── list.module.ts │ │ ├── menu │ │ │ ├── _menu.component.theme.scss │ │ │ ├── menu-item.component.html │ │ │ ├── menu.component.scss │ │ │ ├── menu.component.ts │ │ │ ├── menu.module.ts │ │ │ ├── menu.service.ts │ │ │ ├── menu.spec.ts │ │ │ └── url-matching-helpers.ts │ │ ├── option │ │ │ ├── _option-list.component.theme.scss │ │ │ ├── option-group.component.scss │ │ │ ├── option-group.component.spec.ts │ │ │ ├── option-group.component.ts │ │ │ ├── option-list.component.ts │ │ │ ├── option-list.module.ts │ │ │ ├── option.component.scss │ │ │ └── option.component.ts │ │ ├── popover │ │ │ ├── _popover.component.theme.scss │ │ │ ├── popover.component.scss │ │ │ ├── popover.component.ts │ │ │ ├── popover.directive.ts │ │ │ ├── popover.module.ts │ │ │ └── popover.spec.ts │ │ ├── progress-bar │ │ │ ├── _progress-bar.component.theme.scss │ │ │ ├── progress-bar.component.scss │ │ │ ├── progress-bar.component.ts │ │ │ ├── progress-bar.module.ts │ │ │ └── progress-bar.spec.ts │ │ ├── radio │ │ │ ├── _radio.component.theme.scss │ │ │ ├── radio-group.component.ts │ │ │ ├── radio.component.scss │ │ │ ├── radio.component.ts │ │ │ ├── radio.module.ts │ │ │ └── radio.spec.ts │ │ ├── route-tabset │ │ │ ├── _route-tabset.component.theme.scss │ │ │ ├── merge-configs.pipe.ts │ │ │ ├── route-tabset.component.scss │ │ │ ├── route-tabset.component.ts │ │ │ └── route-tabset.module.ts │ │ ├── search │ │ │ ├── _search.component.theme.scss │ │ │ ├── search.component.spec.ts │ │ │ ├── search.component.ts │ │ │ ├── search.module.ts │ │ │ ├── search.service.spec.ts │ │ │ ├── search.service.ts │ │ │ └── styles │ │ │ │ ├── search.component.column-curtain.scss │ │ │ │ ├── search.component.curtain.scss │ │ │ │ ├── search.component.layout-rotate.scss │ │ │ │ ├── search.component.modal-drop.scss │ │ │ │ ├── search.component.modal-half.scss │ │ │ │ ├── search.component.modal-move.scss │ │ │ │ ├── search.component.modal-zoomin.scss │ │ │ │ └── search.component.scss │ │ ├── select-with-autocomplete │ │ │ ├── _select-with-autocomplete-filled.scss │ │ │ ├── _select-with-autocomplete-hero.scss │ │ │ ├── _select-with-autocomplete-outline.scss │ │ │ ├── _select-with-autocomplete.component.theme.scss │ │ │ ├── select-with-autocomplete.component.html │ │ │ ├── select-with-autocomplete.component.scss │ │ │ ├── select-with-autocomplete.component.ts │ │ │ ├── select-with-autocomplete.module.ts │ │ │ └── select-with-autocomplete.spec.ts │ │ ├── select │ │ │ ├── _select-filled.scss │ │ │ ├── _select-hero.scss │ │ │ ├── _select-outline.scss │ │ │ ├── _select.component.theme.scss │ │ │ ├── select-injection-tokens.ts │ │ │ ├── select.component.html │ │ │ ├── select.component.scss │ │ │ ├── select.component.ts │ │ │ ├── select.module.ts │ │ │ └── select.spec.ts │ │ ├── shared │ │ │ └── shared.module.ts │ │ ├── sidebar │ │ │ ├── _sidebar.component.theme.scss │ │ │ ├── sidebar.component.scss │ │ │ ├── sidebar.component.ts │ │ │ ├── sidebar.module.ts │ │ │ ├── sidebar.service.ts │ │ │ └── sidebar.spec.ts │ │ ├── spinner │ │ │ ├── _spinner.component.theme.scss │ │ │ ├── spinner.component.scss │ │ │ ├── spinner.component.ts │ │ │ ├── spinner.directive.ts │ │ │ ├── spinner.module.ts │ │ │ └── spinner.spec.ts │ │ ├── stepper │ │ │ ├── _stepper.component.theme.scss │ │ │ ├── step.component.ts │ │ │ ├── stepper-button.directive.ts │ │ │ ├── stepper-tokens.ts │ │ │ ├── stepper.component.html │ │ │ ├── stepper.component.scss │ │ │ ├── stepper.component.ts │ │ │ ├── stepper.module.ts │ │ │ └── stepper.spec.ts │ │ ├── tabset │ │ │ ├── _tabset.component.theme.scss │ │ │ ├── tab-content.directive.ts │ │ │ ├── tab-title.directive.ts │ │ │ ├── tabset.component.scss │ │ │ ├── tabset.component.spec.ts │ │ │ ├── tabset.component.ts │ │ │ └── tabset.module.ts │ │ ├── tag │ │ │ ├── _tag-filled.scss │ │ │ ├── _tag-input.scss │ │ │ ├── _tag-list.scss │ │ │ ├── _tag-outline.scss │ │ │ ├── _tag.component.theme.scss │ │ │ ├── _tag.scss │ │ │ ├── tag-input.directive.ts │ │ │ ├── tag-list.component.ts │ │ │ ├── tag.component.html │ │ │ ├── tag.component.ts │ │ │ ├── tag.module.ts │ │ │ └── tag.spec.ts │ │ ├── timepicker │ │ │ ├── _timepicker.component.theme.scss │ │ │ ├── model.ts │ │ │ ├── timepicker-cell.component.scss │ │ │ ├── timepicker-cell.component.ts │ │ │ ├── timepicker.component.html │ │ │ ├── timepicker.component.scss │ │ │ ├── timepicker.component.ts │ │ │ ├── timepicker.directive.ts │ │ │ ├── timepicker.module.ts │ │ │ └── timepicker.spec.ts │ │ ├── toastr │ │ │ ├── _toast.component.theme.scss │ │ │ ├── model.ts │ │ │ ├── toast.component.html │ │ │ ├── toast.component.scss │ │ │ ├── toast.component.ts │ │ │ ├── toastr-config.ts │ │ │ ├── toastr-container.component.ts │ │ │ ├── toastr.module.ts │ │ │ ├── toastr.service.spec.ts │ │ │ └── toastr.service.ts │ │ ├── toggle │ │ │ ├── _toggle.component.theme.scss │ │ │ ├── toggle.component.scss │ │ │ ├── toggle.component.ts │ │ │ ├── toggle.module.ts │ │ │ └── toggle.spec.ts │ │ ├── tooltip │ │ │ ├── _tooltip.component.theme.scss │ │ │ ├── tooltip.component.scss │ │ │ ├── tooltip.component.ts │ │ │ ├── tooltip.directive.ts │ │ │ ├── tooltip.module.ts │ │ │ └── tooltip.spec.ts │ │ ├── tree-grid │ │ │ ├── _tree-grid-sort.component.theme.scss │ │ │ ├── _tree-grid.component.theme.scss │ │ │ ├── data-source │ │ │ │ ├── tree-grid-data-source.ts │ │ │ │ ├── tree-grid-data.service.ts │ │ │ │ ├── tree-grid-filter.service.ts │ │ │ │ ├── tree-grid-sort.service.ts │ │ │ │ ├── tree-grid.model.ts │ │ │ │ └── tree-grid.service.ts │ │ │ ├── tree-grid-cell.component.ts │ │ │ ├── tree-grid-column-def.directive.ts │ │ │ ├── tree-grid-columns.service.ts │ │ │ ├── tree-grid-def.component.ts │ │ │ ├── tree-grid-filter.ts │ │ │ ├── tree-grid-injection-tokens.ts │ │ │ ├── tree-grid-row-toggle.component.ts │ │ │ ├── tree-grid-row-toggle.directive.ts │ │ │ ├── tree-grid-row.component.ts │ │ │ ├── tree-grid-sort.component.ts │ │ │ ├── tree-grid.component.scss │ │ │ ├── tree-grid.component.spec.ts │ │ │ ├── tree-grid.component.ts │ │ │ └── tree-grid.module.ts │ │ ├── user │ │ │ ├── _user.component.theme.scss │ │ │ ├── user.component.html │ │ │ ├── user.component.scss │ │ │ ├── user.component.ts │ │ │ ├── user.module.ts │ │ │ └── user.spec.ts │ │ └── window │ │ │ ├── window-ref.ts │ │ │ ├── window.component.scss │ │ │ ├── window.component.ts │ │ │ ├── window.module.ts │ │ │ ├── window.options.ts │ │ │ ├── window.service.spec.ts │ │ │ ├── window.service.ts │ │ │ ├── windows-container.component.scss │ │ │ └── windows-container.component.ts │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── public_api.ts │ │ ├── schematics │ │ ├── collection.json │ │ ├── ng-add │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── post-install.ts │ │ │ ├── register-modules │ │ │ │ ├── app-routing-module-content.ts │ │ │ │ └── index.ts │ │ │ ├── register-theme │ │ │ │ ├── index.ts │ │ │ │ └── theme-content.ts │ │ │ ├── schema.json │ │ │ ├── schema.ts │ │ │ ├── setup.ts │ │ │ └── wrap-in-layout │ │ │ │ ├── index.ts │ │ │ │ └── layout-content.ts │ │ └── util │ │ │ ├── ast.ts │ │ │ ├── component.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── package.ts │ │ │ └── project.ts │ │ ├── services │ │ ├── breakpoints.service.ts │ │ ├── breakpoints.spec.ts │ │ ├── color.helper.ts │ │ ├── direction.service.ts │ │ ├── js-themes-registry.service.ts │ │ ├── js-themes-registry.spec.ts │ │ ├── js-themes │ │ │ ├── corporate.theme.ts │ │ │ ├── cosmic.theme.ts │ │ │ ├── dark.theme.ts │ │ │ ├── default.theme.ts │ │ │ └── theme.options.ts │ │ ├── ruler.service.spec.ts │ │ ├── ruler.service.ts │ │ ├── scroll.service.spec.ts │ │ ├── scroll.service.ts │ │ ├── spinner.service.ts │ │ ├── status.service.ts │ │ ├── theme.service.ts │ │ └── theme.spec.ts │ │ ├── styles │ │ ├── _all.scss │ │ ├── _globals.scss │ │ ├── _themes.scss │ │ ├── _theming-variables.scss │ │ ├── _theming.scss │ │ ├── core │ │ │ ├── _functions.scss │ │ │ ├── _mixins.scss │ │ │ ├── _variants.scss │ │ │ └── theming │ │ │ │ ├── _get-value.scss │ │ │ │ ├── _install.scss │ │ │ │ └── _register.scss │ │ ├── global │ │ │ ├── _breakpoints.scss │ │ │ ├── _components.scss │ │ │ ├── _normalize.scss │ │ │ ├── _overrides.scss │ │ │ ├── _styles.scss │ │ │ ├── tables │ │ │ │ └── _smart-table.theme.scss │ │ │ └── typography │ │ │ │ └── _typography.scss │ │ ├── prebuilt │ │ │ ├── components-custom-properties.scss │ │ │ ├── corporate-custom-properties.scss │ │ │ ├── corporate.scss │ │ │ ├── cosmic-custom-properties.scss │ │ │ ├── cosmic.scss │ │ │ ├── dark-custom-properties.scss │ │ │ ├── dark.scss │ │ │ ├── default-custom-properties.scss │ │ │ └── default.scss │ │ └── themes │ │ │ ├── _corporate.scss │ │ │ ├── _cosmic.scss │ │ │ ├── _dark.scss │ │ │ ├── _default.scss │ │ │ └── _mapping.scss │ │ ├── test.ts │ │ ├── theme.module.ts │ │ ├── theme.options.ts │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ ├── tsconfig.schematics.json │ │ ├── tsconfig.schematics.spec.json │ │ └── tsconfig.spec.json ├── index.html ├── main.ts ├── playground │ ├── playground-routing.module.ts │ ├── playground.module.ts │ ├── styles │ │ ├── example-helpers.scss │ │ ├── styles.scss │ │ └── themes.scss │ ├── with-layout │ │ ├── accordion │ │ │ ├── accordion-multi.component.html │ │ │ ├── accordion-multi.component.ts │ │ │ ├── accordion-routing.module.ts │ │ │ ├── accordion-showcase.component.html │ │ │ ├── accordion-showcase.component.ts │ │ │ ├── accordion-test.component.ts │ │ │ ├── accordion-toggle.component.html │ │ │ ├── accordion-toggle.component.ts │ │ │ └── accordion.module.ts │ │ ├── action │ │ │ ├── action-badge.component.html │ │ │ ├── action-badge.component.ts │ │ │ ├── action-dot-mode.component.html │ │ │ ├── action-dot-mode.component.ts │ │ │ ├── action-routing.module.ts │ │ │ ├── action-showcase.component.html │ │ │ ├── action-showcase.component.ts │ │ │ ├── action-sizes.component.html │ │ │ ├── action-sizes.component.ts │ │ │ ├── action-test.component.ts │ │ │ ├── action-width.component.html │ │ │ ├── action-width.component.ts │ │ │ └── action.module.ts │ │ ├── alert │ │ │ ├── alert-accents.component.html │ │ │ ├── alert-accents.component.ts │ │ │ ├── alert-colors.component.html │ │ │ ├── alert-colors.component.ts │ │ │ ├── alert-example.component.scss │ │ │ ├── alert-outline.component.html │ │ │ ├── alert-outline.component.ts │ │ │ ├── alert-routing.module.ts │ │ │ ├── alert-showcase.component.html │ │ │ ├── alert-showcase.component.ts │ │ │ ├── alert-sizes.component.html │ │ │ ├── alert-sizes.component.ts │ │ │ ├── alert-test.component.ts │ │ │ └── alert.module.ts │ │ ├── autocomplete │ │ │ ├── autocomplete-active-first.component.html │ │ │ ├── autocomplete-active-first.component.ts │ │ │ ├── autocomplete-custom-display.component.html │ │ │ ├── autocomplete-custom-display.component.ts │ │ │ ├── autocomplete-disabled.component.html │ │ │ ├── autocomplete-disabled.component.scss │ │ │ ├── autocomplete-disabled.component.ts │ │ │ ├── autocomplete-form.component.html │ │ │ ├── autocomplete-form.component.ts │ │ │ ├── autocomplete-group.component.html │ │ │ ├── autocomplete-group.component.ts │ │ │ ├── autocomplete-routing.module.ts │ │ │ ├── autocomplete-showcase.component.html │ │ │ ├── autocomplete-showcase.component.ts │ │ │ └── autocomplete.module.ts │ │ ├── badge │ │ │ ├── badge-routing.module.ts │ │ │ ├── badge-showcase.component.html │ │ │ ├── badge-showcase.component.ts │ │ │ └── badge.module.ts │ │ ├── button-group │ │ │ ├── button-and-button-toggle-groups.component.html │ │ │ ├── button-and-button-toggle-groups.component.ts │ │ │ ├── button-group-appearances.component.html │ │ │ ├── button-group-appearances.component.ts │ │ │ ├── button-group-disabled.component.ts │ │ │ ├── button-group-interactive.component.html │ │ │ ├── button-group-interactive.component.scss │ │ │ ├── button-group-interactive.component.ts │ │ │ ├── button-group-multiple.component.html │ │ │ ├── button-group-multiple.component.ts │ │ │ ├── button-group-routing.module.ts │ │ │ ├── button-group-shapes.component.html │ │ │ ├── button-group-shapes.component.ts │ │ │ ├── button-group-showcase.component.html │ │ │ ├── button-group-showcase.component.scss │ │ │ ├── button-group-showcase.component.ts │ │ │ ├── button-group-sizes.component.html │ │ │ ├── button-group-sizes.component.ts │ │ │ ├── button-group-spacing.scss │ │ │ ├── button-group-statuses.component.html │ │ │ ├── button-group-statuses.component.ts │ │ │ ├── button-group-value-change.component.html │ │ │ ├── button-group-value-change.component.ts │ │ │ └── button-group.module.ts │ │ ├── button │ │ │ ├── button-colors.component.html │ │ │ ├── button-colors.component.ts │ │ │ ├── button-full-width.component.html │ │ │ ├── button-full-width.component.ts │ │ │ ├── button-hero.component.html │ │ │ ├── button-hero.component.ts │ │ │ ├── button-icon.component.html │ │ │ ├── button-icon.component.ts │ │ │ ├── button-interactive.component.html │ │ │ ├── button-interactive.component.scss │ │ │ ├── button-interactive.component.ts │ │ │ ├── button-outline.component.html │ │ │ ├── button-outline.component.ts │ │ │ ├── button-routing.module.ts │ │ │ ├── button-shapes.component.html │ │ │ ├── button-shapes.component.ts │ │ │ ├── button-showcase.component.html │ │ │ ├── button-showcase.component.ts │ │ │ ├── button-sizes.component.html │ │ │ ├── button-sizes.component.ts │ │ │ ├── button-types.component.html │ │ │ ├── button-types.component.ts │ │ │ └── button.module.ts │ │ ├── calendar-kit │ │ │ ├── calendar-kit-full-calendar.component.ts │ │ │ ├── calendar-kit-routing.module.ts │ │ │ ├── calendar-kit.module.ts │ │ │ └── components │ │ │ │ └── calendar-kit-month-cell.component.ts │ │ ├── calendar │ │ │ ├── calendar-bounding-month.component.ts │ │ │ ├── calendar-custom-day-cell-showcase.component.ts │ │ │ ├── calendar-filter.component.ts │ │ │ ├── calendar-min-max.component.ts │ │ │ ├── calendar-range-showcase.component.ts │ │ │ ├── calendar-routing.module.ts │ │ │ ├── calendar-showcase.component.ts │ │ │ ├── calendar-size.component.ts │ │ │ ├── calendar-start-view.component.ts │ │ │ ├── calendar-week-number.component.ts │ │ │ ├── calendar-without-navigation.component.ts │ │ │ ├── calendar.module.ts │ │ │ └── components │ │ │ │ └── calendar-custom-day-cell.component.ts │ │ ├── card │ │ │ ├── card-accents.component.html │ │ │ ├── card-accents.component.ts │ │ │ ├── card-colors.component.html │ │ │ ├── card-colors.component.ts │ │ │ ├── card-full.component.html │ │ │ ├── card-full.component.ts │ │ │ ├── card-routing.module.ts │ │ │ ├── card-showcase.component.html │ │ │ ├── card-showcase.component.ts │ │ │ ├── card-sizes-combinations.component.html │ │ │ ├── card-sizes-combinations.component.scss │ │ │ ├── card-sizes-combinations.component.ts │ │ │ ├── card-sizes.component.html │ │ │ ├── card-sizes.component.ts │ │ │ ├── card-test.component.ts │ │ │ ├── card-without-body.component.ts │ │ │ └── card.module.ts │ │ ├── chat │ │ │ ├── bot-replies.ts │ │ │ ├── chat-colors.component.html │ │ │ ├── chat-colors.component.ts │ │ │ ├── chat-conversation-showcase.component.html │ │ │ ├── chat-conversation-showcase.component.ts │ │ │ ├── chat-custom-message.component.html │ │ │ ├── chat-custom-message.component.scss │ │ │ ├── chat-custom-message.component.ts │ │ │ ├── chat-drop.component.html │ │ │ ├── chat-drop.component.ts │ │ │ ├── chat-message-types-showcase.component.ts │ │ │ ├── chat-routing.module.ts │ │ │ ├── chat-showcase.component.html │ │ │ ├── chat-showcase.component.ts │ │ │ ├── chat-showcase.service.ts │ │ │ ├── chat-size.component.html │ │ │ ├── chat-sizes.component.ts │ │ │ ├── chat-template-title.component.html │ │ │ ├── chat-template-title.component.ts │ │ │ ├── chat-test.component.ts │ │ │ ├── chat.module.ts │ │ │ ├── components │ │ │ │ ├── chat-custom-message-table.component.scss │ │ │ │ └── chat-custom-message-table.component.ts │ │ │ └── messages.ts │ │ ├── checkbox │ │ │ ├── checkbox-disabled.component.html │ │ │ ├── checkbox-disabled.component.ts │ │ │ ├── checkbox-indeterminate.component.ts │ │ │ ├── checkbox-routing.module.ts │ │ │ ├── checkbox-showcase.component.html │ │ │ ├── checkbox-showcase.component.ts │ │ │ ├── checkbox-status.component.html │ │ │ ├── checkbox-status.component.scss │ │ │ ├── checkbox-status.component.ts │ │ │ ├── checkbox-test.component.ts │ │ │ └── checkbox.module.ts │ │ ├── datepicker-with-format │ │ │ ├── date-timepicker-dynamic-inputs-showcase.component.html │ │ │ ├── date-timepicker-dynamic-inputs-showcase.component.ts │ │ │ ├── datepicker-dynamic-inputs-showcase.component.html │ │ │ ├── datepicker-dynamic-inputs-showcase.component.ts │ │ │ ├── datepicker-example.scss │ │ │ ├── datepicker-with-format-routing.module.ts │ │ │ ├── datepicker-with-format.module.ts │ │ │ ├── rangepicker-dynamic-inputs-showcase.component.html │ │ │ └── rangepicker-dynamic-inputs-showcase.component.ts │ │ ├── datepicker │ │ │ ├── date-timepicker-showcase.component.ts │ │ │ ├── date-timepicker-single-column.component.ts │ │ │ ├── datepicker-example.scss │ │ │ ├── datepicker-filter.component.ts │ │ │ ├── datepicker-forms.component.ts │ │ │ ├── datepicker-routing.module.ts │ │ │ ├── datepicker-showcase.component.ts │ │ │ ├── datepicker-validation.component.ts │ │ │ ├── datepicker.module.ts │ │ │ └── rangepicker-showcase.component.ts │ │ ├── dialog │ │ │ ├── components │ │ │ │ ├── auto-focus-dialog.component.ts │ │ │ │ ├── backdrop-click-dialog.component.ts │ │ │ │ ├── esc-dialog.component.ts │ │ │ │ ├── has-backdrop-dialog.component.ts │ │ │ │ ├── name-prompt-dialog.component.ts │ │ │ │ ├── scroll-dialog.component.ts │ │ │ │ └── showcase-dialog.component.ts │ │ │ ├── dialog-auto-focus.component.ts │ │ │ ├── dialog-backdrop-click.component.ts │ │ │ ├── dialog-common.scss │ │ │ ├── dialog-esc.component.ts │ │ │ ├── dialog-has-backdrop.component.ts │ │ │ ├── dialog-result.component.ts │ │ │ ├── dialog-routing.module.ts │ │ │ ├── dialog-scroll.component.ts │ │ │ ├── dialog-showcase.component.ts │ │ │ ├── dialog-template.component.ts │ │ │ └── dialog.module.ts │ │ ├── flip-card │ │ │ ├── flip-card-accents.component.html │ │ │ ├── flip-card-accents.component.ts │ │ │ ├── flip-card-colors.component.html │ │ │ ├── flip-card-colors.component.ts │ │ │ ├── flip-card-full.component.html │ │ │ ├── flip-card-full.component.ts │ │ │ ├── flip-card-routing.module.ts │ │ │ ├── flip-card-showcase.component.html │ │ │ ├── flip-card-showcase.component.ts │ │ │ ├── flip-card-sizes.component.html │ │ │ ├── flip-card-sizes.component.ts │ │ │ └── flip-card.module.ts │ │ ├── form-field │ │ │ ├── form-field-input.component.ts │ │ │ ├── form-field-password.component.ts │ │ │ ├── form-field-routing.module.ts │ │ │ ├── form-field-showcase.component.ts │ │ │ └── form-field.module.ts │ │ ├── icon │ │ │ ├── icon-colors.component.html │ │ │ ├── icon-colors.component.scss │ │ │ ├── icon-colors.component.ts │ │ │ ├── icon-routing.module.ts │ │ │ ├── icon-showcase.component.html │ │ │ ├── icon-showcase.component.ts │ │ │ └── icon.module.ts │ │ ├── infinite-list │ │ │ ├── components │ │ │ │ ├── news-post-placeholder.component.ts │ │ │ │ └── news-post.component.ts │ │ │ ├── infinite-list-placeholders.component.ts │ │ │ ├── infinite-list-routing.module.ts │ │ │ ├── infinite-list-scroll-modes.component.scss │ │ │ ├── infinite-list-scroll-modes.component.ts │ │ │ ├── infinite-list-showcase.component.ts │ │ │ ├── infinite-list.module.ts │ │ │ ├── infinite-news-list.component.scss │ │ │ ├── infinite-news-list.component.ts │ │ │ ├── news-post-placeholder.component.scss │ │ │ └── news.service.ts │ │ ├── input │ │ │ ├── input-colors.component.scss │ │ │ ├── input-colors.component.ts │ │ │ ├── input-form.component.ts │ │ │ ├── input-full-width.component.ts │ │ │ ├── input-routing.module.ts │ │ │ ├── input-shapes.component.ts │ │ │ ├── input-showcase.component.ts │ │ │ ├── input-sizes.component.ts │ │ │ ├── input-types.component.ts │ │ │ └── input.module.ts │ │ ├── list │ │ │ ├── fruits-list.ts │ │ │ ├── list-routing.module.ts │ │ │ ├── list.module.ts │ │ │ ├── simple-list-showcase.component.scss │ │ │ ├── simple-list-showcase.component.ts │ │ │ └── users-list-showcase.component.ts │ │ ├── menu │ │ │ ├── menu-autocollapse.component.html │ │ │ ├── menu-autocollapse.component.ts │ │ │ ├── menu-badge.component.html │ │ │ ├── menu-badge.component.scss │ │ │ ├── menu-badge.component.ts │ │ │ ├── menu-children.component.html │ │ │ ├── menu-children.component.ts │ │ │ ├── menu-link-params.component.html │ │ │ ├── menu-link-params.component.ts │ │ │ ├── menu-routing.module.ts │ │ │ ├── menu-service-children.ts │ │ │ ├── menu-service-items.ts │ │ │ ├── menu-service.component.scss │ │ │ ├── menu-service.component.ts │ │ │ ├── menu-showcase.component.html │ │ │ ├── menu-showcase.component.ts │ │ │ └── menu.module.ts │ │ ├── oauth2-password │ │ │ ├── oauth2-password-login.component.html │ │ │ ├── oauth2-password-login.component.scss │ │ │ ├── oauth2-password-login.component.ts │ │ │ ├── oauth2-password-routing.module.ts │ │ │ └── oauth2-password.module.ts │ │ ├── oauth2 │ │ │ ├── oauth2-callback.component.ts │ │ │ ├── oauth2-login.component.ts │ │ │ ├── oauth2-routing.module.ts │ │ │ └── oauth2.module.ts │ │ ├── overlay │ │ │ ├── overlay-routing.module.ts │ │ │ ├── overlay-showcase.component.ts │ │ │ └── overlay.module.ts │ │ ├── playground-layout.component.ts │ │ ├── popover │ │ │ ├── components │ │ │ │ └── dynamic.components.ts │ │ │ ├── popover-custom-component.component.html │ │ │ ├── popover-custom-component.component.ts │ │ │ ├── popover-dynamic-code.component.html │ │ │ ├── popover-dynamic-code.component.ts │ │ │ ├── popover-dynamic.component.html │ │ │ ├── popover-dynamic.component.ts │ │ │ ├── popover-dynamic.scss │ │ │ ├── popover-modes.component.html │ │ │ ├── popover-modes.component.ts │ │ │ ├── popover-noop.component.html │ │ │ ├── popover-noop.component.ts │ │ │ ├── popover-placements.component.html │ │ │ ├── popover-placements.component.ts │ │ │ ├── popover-routing.module.ts │ │ │ ├── popover-showcase.component.html │ │ │ ├── popover-showcase.component.ts │ │ │ ├── popover-template-ref.component.html │ │ │ ├── popover-template-ref.component.ts │ │ │ ├── popover-test.component.ts │ │ │ └── popover.module.ts │ │ ├── progress-bar │ │ │ ├── progress-bar-interactive.component.html │ │ │ ├── progress-bar-interactive.component.ts │ │ │ ├── progress-bar-routing.module.ts │ │ │ ├── progress-bar-showcase.component.html │ │ │ ├── progress-bar-showcase.component.ts │ │ │ ├── progress-bar-size.component.html │ │ │ ├── progress-bar-size.component.ts │ │ │ ├── progress-bar-status.component.html │ │ │ ├── progress-bar-status.component.scss │ │ │ ├── progress-bar-status.component.ts │ │ │ ├── progress-bar-value.component.html │ │ │ ├── progress-bar-value.component.ts │ │ │ └── progress-bar.module.ts │ │ ├── radio │ │ │ ├── radio-disabled-group.component.ts │ │ │ ├── radio-disabled.component.html │ │ │ ├── radio-disabled.component.ts │ │ │ ├── radio-form.component.html │ │ │ ├── radio-form.component.scss │ │ │ ├── radio-form.component.ts │ │ │ ├── radio-routing.module.ts │ │ │ ├── radio-showcase.component.html │ │ │ ├── radio-showcase.component.ts │ │ │ ├── radio-statuses-group.component.scss │ │ │ ├── radio-statuses.component.ts │ │ │ └── radio.module.ts │ │ ├── reveal-card │ │ │ ├── reveal-card-accents.component.html │ │ │ ├── reveal-card-accents.component.ts │ │ │ ├── reveal-card-colors.component.html │ │ │ ├── reveal-card-colors.component.ts │ │ │ ├── reveal-card-full.component.html │ │ │ ├── reveal-card-full.component.ts │ │ │ ├── reveal-card-routing.module.ts │ │ │ ├── reveal-card-showcase.component.html │ │ │ ├── reveal-card-showcase.component.ts │ │ │ ├── reveal-card-sizes.component.html │ │ │ ├── reveal-card-sizes.component.ts │ │ │ └── reveal-card.module.ts │ │ ├── select │ │ │ ├── select-autocomplete-showcase.component.html │ │ │ ├── select-autocomplete-showcase.component.ts │ │ │ ├── select-clean.component.html │ │ │ ├── select-clean.component.ts │ │ │ ├── select-compare-with.component.ts │ │ │ ├── select-disabled.component.html │ │ │ ├── select-disabled.component.ts │ │ │ ├── select-filled.component.html │ │ │ ├── select-filled.component.ts │ │ │ ├── select-form.component.html │ │ │ ├── select-form.component.ts │ │ │ ├── select-groups.component.html │ │ │ ├── select-groups.component.ts │ │ │ ├── select-hero.component.html │ │ │ ├── select-hero.component.ts │ │ │ ├── select-icon.component.ts │ │ │ ├── select-interactive.component.html │ │ │ ├── select-interactive.component.scss │ │ │ ├── select-interactive.component.ts │ │ │ ├── select-label.component.html │ │ │ ├── select-label.component.ts │ │ │ ├── select-multiple.component.html │ │ │ ├── select-multiple.component.ts │ │ │ ├── select-placeholder.component.html │ │ │ ├── select-placeholder.component.ts │ │ │ ├── select-routing.module.ts │ │ │ ├── select-shapes.component.html │ │ │ ├── select-shapes.component.ts │ │ │ ├── select-showcase.component.html │ │ │ ├── select-showcase.component.ts │ │ │ ├── select-sizes.component.html │ │ │ ├── select-sizes.component.ts │ │ │ ├── select-status.component.html │ │ │ ├── select-status.component.ts │ │ │ ├── select-test.component.ts │ │ │ └── select.module.ts │ │ ├── spinner │ │ │ ├── spinner-button.component.ts │ │ │ ├── spinner-card.component.ts │ │ │ ├── spinner-colors.component.html │ │ │ ├── spinner-colors.component.scss │ │ │ ├── spinner-colors.component.ts │ │ │ ├── spinner-routing.module.ts │ │ │ ├── spinner-sizes.component.html │ │ │ ├── spinner-sizes.component.ts │ │ │ ├── spinner-tabs.component.ts │ │ │ └── spinner.module.ts │ │ ├── stepper │ │ │ ├── stepper-disabled-step-nav.component.scss │ │ │ ├── stepper-disabled-step-nav.component.ts │ │ │ ├── stepper-linear.component.html │ │ │ ├── stepper-linear.component.ts │ │ │ ├── stepper-playground.component.scss │ │ │ ├── stepper-routing.module.ts │ │ │ ├── stepper-showcase.component.html │ │ │ ├── stepper-showcase.component.ts │ │ │ ├── stepper-step-change-event.component.html │ │ │ ├── stepper-step-change-event.component.scss │ │ │ ├── stepper-step-change-event.component.ts │ │ │ ├── stepper-test.component.ts │ │ │ ├── stepper-validation.component.html │ │ │ ├── stepper-validation.component.ts │ │ │ ├── stepper-vertical.component.html │ │ │ ├── stepper-vertical.component.ts │ │ │ └── stepper.module.ts │ │ ├── tabset │ │ │ ├── components │ │ │ │ └── route-tabset-children.component.ts │ │ │ ├── route-tabset-showcase.component.ts │ │ │ ├── tabset-badge.component.html │ │ │ ├── tabset-badge.component.ts │ │ │ ├── tabset-disabled.component.html │ │ │ ├── tabset-disabled.component.ts │ │ │ ├── tabset-icon.component.html │ │ │ ├── tabset-icon.component.ts │ │ │ ├── tabset-routing.module.ts │ │ │ ├── tabset-showcase.component.html │ │ │ ├── tabset-showcase.component.ts │ │ │ ├── tabset-template-title.component.html │ │ │ ├── tabset-template-title.component.ts │ │ │ ├── tabset-test.component.ts │ │ │ ├── tabset-width.component.html │ │ │ ├── tabset-width.component.ts │ │ │ └── tabset.module.ts │ │ ├── tag │ │ │ ├── tag-appearance.component.html │ │ │ ├── tag-appearance.component.ts │ │ │ ├── tag-input-with-autocomplete.component.html │ │ │ ├── tag-input-with-autocomplete.component.ts │ │ │ ├── tag-input.component.html │ │ │ ├── tag-input.component.ts │ │ │ ├── tag-removable.component.ts │ │ │ ├── tag-routing.module.ts │ │ │ ├── tag-showcase.component.ts │ │ │ ├── tag-status.component.html │ │ │ ├── tag-status.component.ts │ │ │ ├── tag.module.ts │ │ │ └── trees-list.ts │ │ ├── timepicker │ │ │ ├── timepicker-dynamic-inputs-showcase.component.html │ │ │ ├── timepicker-dynamic-inputs-showcase.component.ts │ │ │ ├── timepicker-example.scss │ │ │ ├── timepicker-form-control.component.ts │ │ │ ├── timepicker-ng-model.component.ts │ │ │ ├── timepicker-routing.module.ts │ │ │ ├── timepicker-showcase.component.ts │ │ │ ├── timepicker-single-column.component.ts │ │ │ ├── timepicker-twelve-hours-format.component.ts │ │ │ ├── timepicker-with-seconds.component.ts │ │ │ └── timepicker.module.ts │ │ ├── toastr │ │ │ ├── toastr-destroy-by-click.component.ts │ │ │ ├── toastr-duration.component.ts │ │ │ ├── toastr-icon.component.ts │ │ │ ├── toastr-limit.component.ts │ │ │ ├── toastr-positions.component.ts │ │ │ ├── toastr-prevent-duplicates-behaviour.component.ts │ │ │ ├── toastr-prevent-duplicates.component.ts │ │ │ ├── toastr-routing.module.ts │ │ │ ├── toastr-showcase.component.ts │ │ │ ├── toastr-statuses.component.ts │ │ │ └── toastr.module.ts │ │ ├── toggle │ │ │ ├── toggle-disabled.component.ts │ │ │ ├── toggle-form.component.ts │ │ │ ├── toggle-label-position.component.ts │ │ │ ├── toggle-routing.module.ts │ │ │ ├── toggle-showcase.component.ts │ │ │ ├── toggle-status.component.ts │ │ │ ├── toggle-test.component.ts │ │ │ └── toggle.module.ts │ │ ├── tooltip │ │ │ ├── tooltip-colors.component.html │ │ │ ├── tooltip-colors.component.ts │ │ │ ├── tooltip-examples.scss │ │ │ ├── tooltip-placements.component.html │ │ │ ├── tooltip-placements.component.ts │ │ │ ├── tooltip-routing.module.ts │ │ │ ├── tooltip-showcase.component.html │ │ │ ├── tooltip-showcase.component.ts │ │ │ ├── tooltip-with-icon.component.html │ │ │ ├── tooltip-with-icon.component.ts │ │ │ └── tooltip.module.ts │ │ ├── tree-grid │ │ │ ├── tree-grid-basic.component.ts │ │ │ ├── tree-grid-custom-icons.component.scss │ │ │ ├── tree-grid-custom-icons.component.ts │ │ │ ├── tree-grid-custom-node-structure.component.ts │ │ │ ├── tree-grid-disable-click-toggle.component.ts │ │ │ ├── tree-grid-filterable.component.ts │ │ │ ├── tree-grid-responsive.component.ts │ │ │ ├── tree-grid-routing.module.ts │ │ │ ├── tree-grid-shared.scss │ │ │ ├── tree-grid-showcase.component.html │ │ │ ├── tree-grid-showcase.component.scss │ │ │ ├── tree-grid-showcase.component.ts │ │ │ ├── tree-grid-sortable.component.ts │ │ │ └── tree-grid.module.ts │ │ ├── user │ │ │ ├── user-avatar-settings.component.html │ │ │ ├── user-avatar-settings.component.ts │ │ │ ├── user-hide-captions.component.html │ │ │ ├── user-hide-captions.component.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user-shape.component.ts │ │ │ ├── user-showcase.component.html │ │ │ ├── user-showcase.component.ts │ │ │ ├── user-sizes.component.html │ │ │ ├── user-sizes.component.ts │ │ │ └── user.module.ts │ │ ├── window │ │ │ ├── components │ │ │ │ ├── form.component.ts │ │ │ │ └── visitors-form.component.ts │ │ │ ├── template-window.component.ts │ │ │ ├── window-controls.component.html │ │ │ ├── window-controls.component.scss │ │ │ ├── window-controls.component.ts │ │ │ ├── window-result.component.ts │ │ │ ├── window-routing.module.ts │ │ │ ├── window-showcase.component.ts │ │ │ ├── window-template-title.component.ts │ │ │ ├── window.module.ts │ │ │ ├── window.scss │ │ │ └── windows-backdrop.component.ts │ │ ├── with-layout-routing.module.ts │ │ └── with-layout.module.ts │ └── without-layout │ │ ├── auth │ │ ├── acl │ │ │ └── acl-test.component.ts │ │ ├── api-calls │ │ │ ├── api-calls.component.ts │ │ │ └── wine.ts │ │ ├── auth-guard.service.ts │ │ ├── auth-routing.module.ts │ │ ├── auth.component.ts │ │ ├── auth.module.ts │ │ └── role.provider.ts │ │ ├── azure │ │ ├── azure-adb2c-auth-strategy.ts │ │ ├── azure-callback.component.ts │ │ ├── azure-login.component.ts │ │ ├── azure-routing.module.ts │ │ └── azure.module.ts │ │ ├── context-menu │ │ ├── context-menu-click.component.html │ │ ├── context-menu-click.component.ts │ │ ├── context-menu-modes.component.html │ │ ├── context-menu-modes.component.ts │ │ ├── context-menu-noop.component.html │ │ ├── context-menu-noop.component.ts │ │ ├── context-menu-right-click.component.html │ │ ├── context-menu-right-click.component.ts │ │ ├── context-menu-routing.module.ts │ │ ├── context-menu-showcase.component.html │ │ ├── context-menu-showcase.component.ts │ │ ├── context-menu-test.component.ts │ │ └── context-menu.module.ts │ │ ├── firebase │ │ ├── firebase-api.service.ts │ │ ├── firebase-playground.component.ts │ │ ├── firebase-routing.module.ts │ │ ├── firebase.module.ts │ │ ├── identity-proders-auth-showcase │ │ │ ├── identity-providers-auth-showcase.component.html │ │ │ ├── identity-providers-auth-showcase.component.scss │ │ │ └── identity-providers-auth-showcase.component.ts │ │ └── password-auth-showcase │ │ │ ├── password-auth-showcase.component.html │ │ │ ├── password-auth-showcase.component.scss │ │ │ └── password-auth-showcase.component.ts │ │ ├── layout │ │ ├── layout-column-left.component.html │ │ ├── layout-column-left.component.ts │ │ ├── layout-fixed-header.component.html │ │ ├── layout-fixed-header.component.ts │ │ ├── layout-footer-test.component.ts │ │ ├── layout-header-test.component.ts │ │ ├── layout-routing.module.ts │ │ ├── layout-showcase.component.html │ │ ├── layout-showcase.component.ts │ │ ├── layout-sidebar-subheader.component.html │ │ ├── layout-sidebar-subheader.component.ts │ │ ├── layout-subheader.component.html │ │ ├── layout-subheader.component.ts │ │ ├── layout-test.component.ts │ │ ├── layout-w-footer.component.html │ │ ├── layout-w-footer.component.ts │ │ ├── layout.module.ts │ │ ├── theme-breakpoint-test.component.ts │ │ └── theme-change-test.component.ts │ │ ├── menu │ │ ├── components │ │ │ └── menu-children.component.ts │ │ ├── menu-test-routing.module.ts │ │ ├── menu-test.component.ts │ │ └── menu-test.module.ts │ │ ├── playground-base.component.ts │ │ ├── scroll │ │ ├── scroll-routing.module.ts │ │ ├── scroll-window.component.html │ │ ├── scroll-window.component.ts │ │ └── scroll.module.ts │ │ ├── search │ │ ├── search-customized-test.component.ts │ │ ├── search-event.component.html │ │ ├── search-event.component.ts │ │ ├── search-routing.module.ts │ │ ├── search-showcase.component.html │ │ ├── search-showcase.component.ts │ │ ├── search-test.component.ts │ │ ├── search-with-input-event.component.ts │ │ └── search.module.ts │ │ ├── sidebar │ │ ├── sidebar-compacted.component.html │ │ ├── sidebar-compacted.component.ts │ │ ├── sidebar-fixed.component.html │ │ ├── sidebar-fixed.component.ts │ │ ├── sidebar-one-test.component.ts │ │ ├── sidebar-right.component.html │ │ ├── sidebar-right.component.ts │ │ ├── sidebar-routing.module.ts │ │ ├── sidebar-showcase.component.html │ │ ├── sidebar-showcase.component.ts │ │ ├── sidebar-test.component.ts │ │ ├── sidebar-three-test.component.ts │ │ ├── sidebar-toggle.component.html │ │ ├── sidebar-toggle.component.ts │ │ ├── sidebar-two-test.component.ts │ │ └── sidebar.module.ts │ │ ├── smart-home │ │ ├── app-routing.module.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ └── auth │ │ │ ├── auth-routing.module.ts │ │ │ ├── login │ │ │ ├── login.component.html │ │ │ └── login.component.ts │ │ │ └── smart-home-auth.module.ts │ │ ├── user │ │ ├── user-test-routing.module.ts │ │ ├── user-test.component.ts │ │ └── user-test.module.ts │ │ ├── without-layout-routing.module.ts │ │ └── without-layout.module.ts ├── polyfills.ts ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec-wp.json ├── tsconfig.spec.json └── tsconfig.wp.json ├── tools ├── deploy-docs │ ├── build-docs.ts │ ├── config.ts │ ├── get-stdout.ts │ ├── ghspa-template.ts │ ├── log.ts │ ├── run-command.ts │ └── tsconfig.json ├── dev-schematics │ ├── collection.json │ ├── new-component │ │ ├── files │ │ │ └── __path__ │ │ │ │ └── __name@dasherize__ │ │ │ │ ├── __name@dasherize__.component.__styleext__ │ │ │ │ ├── __name@dasherize__.component.html │ │ │ │ ├── __name@dasherize__.component.spec.ts │ │ │ │ ├── __name@dasherize__.component.theme.__styleext__ │ │ │ │ ├── __name@dasherize__.component.ts │ │ │ │ └── __name@dasherize__.module.ts │ │ ├── index.ts │ │ ├── index_spec.ts │ │ └── schema.json │ ├── playground-components │ │ ├── index.ts │ │ └── schema.json │ ├── playground-module │ │ ├── add-to-modules.ts │ │ ├── files │ │ │ └── __path__ │ │ │ │ ├── __featureModuleFileName__ │ │ │ │ └── __routingModuleFileName__ │ │ ├── generate-missing-modules.ts │ │ ├── index.ts │ │ └── schema.json │ ├── playground │ │ ├── index.ts │ │ └── schema.json │ ├── tsconfig.json │ └── utils │ │ ├── ast.ts │ │ ├── change.ts │ │ ├── formatting.ts │ │ ├── index.ts │ │ ├── path.ts │ │ ├── playground.ts │ │ ├── routing.ts │ │ └── strings.ts ├── gulp │ ├── bump-versions.ts │ ├── config.ts │ ├── docs │ │ ├── copy-index.ts │ │ ├── docs-utils.ts │ │ ├── example.ts │ │ ├── output-json.ts │ │ ├── prepare-docs.ts │ │ ├── sass-export.ts │ │ └── sitemap.ts │ ├── gulpfile.ts │ ├── schematics │ │ ├── build-dev-schematics.ts │ │ ├── schematics-utils.ts │ │ └── test-packages-schematics.ts │ └── tsconfig.json └── publish.sh └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.ts text eol=lf 2 | *.scss text eol=lf 3 | *.md text eol=lf 4 | *.html text eol=lf 5 | *.json text eol=lf 6 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Please read and mark the following check list before creating a pull request: 2 | 3 | - [] I read and followed the [CONTRIBUTING.md](https://github.com/akveo/nebular/blob/master/CONTRIBUTING.md) guide. 4 | 5 | #### Short description of what this resolves: 6 | -------------------------------------------------------------------------------- /.github/workflows/deploy-docs.yml: -------------------------------------------------------------------------------- 1 | name: Deploy docs 2 | on: 3 | push: 4 | branches: 5 | - master 6 | release: 7 | types: 8 | - published 9 | jobs: 10 | deploy-docs: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - uses: actions/setup-node@v3 15 | with: 16 | node-version: 18.19.1 17 | cache: 'npm' 18 | - run: npm ci 19 | - run: npm run docs:gh-pages 20 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.lintstagedrc-fix.json: -------------------------------------------------------------------------------- 1 | { 2 | "*.{ts,js}": "eslint --cache --fix", 3 | "*.{scss,css}": "stylelint --fix", 4 | "*.{ts,scss,html,md,js,css}": "prettier --write" 5 | } 6 | -------------------------------------------------------------------------------- /.lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "*.{ts,js}": "eslint --cache", 3 | "*.{scss,css}": "stylelint", 4 | "*.{ts,scss,html,md,js,css}": "prettier --check" 5 | } 6 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18.19.1 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | build 3 | coverage 4 | dist 5 | tools/dev-schematics/*/files 6 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "trailingComma": "all" 5 | } 6 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: 2 | layout: "diff, flags, files" 3 | behavior: default 4 | require_changes: true 5 | require_base: no 6 | require_head: yes 7 | branches: null 8 | -------------------------------------------------------------------------------- /docs/app/@theme/components/components-promo/components-promo.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../@theme/styles/themes' as *; 2 | 3 | @include nb-install-component() { 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | 8 | max-width: 45rem; 9 | 10 | color: nb-theme(color-fg-heading); 11 | margin-bottom: 1rem; 12 | 13 | p { 14 | color: #6e82a9; 15 | font-size: 1rem; 16 | line-height: 1.75rem; 17 | text-align: center; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/app/@theme/components/description/description.directive.ts: -------------------------------------------------------------------------------- 1 | import { AfterViewInit, Directive, ElementRef } from '@angular/core'; 2 | import * as marked from 'marked'; 3 | 4 | @Directive({ 5 | selector: '[ngdDescription]', 6 | standalone: false 7 | }) 8 | export class NgdDescriptionDirective implements AfterViewInit { 9 | 10 | constructor(private el: ElementRef) { 11 | } 12 | 13 | ngAfterViewInit() { 14 | const md = marked.setOptions({}); 15 | this.el.nativeElement.innerHTML = md.parse(this.el.nativeElement.innerHTML.trim()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/app/@theme/components/eva/eva.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'ngd-eva', 5 | styleUrls: ['./eva.components.scss'], 6 | templateUrl: './eva.component.html', 7 | standalone: false 8 | }) 9 | export class NgdEvaComponent {} 10 | -------------------------------------------------------------------------------- /docs/app/@theme/components/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'ngd-footer', 5 | styleUrls: ['./footer.component.scss'], 6 | templateUrl: './footer.component.html', 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | standalone: false 9 | }) 10 | export class NgdFooterComponent { 11 | } 12 | -------------------------------------------------------------------------------- /docs/app/@theme/components/hubspot-cta/akveo-services-banner.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | padding-left: 1rem; 3 | margin-top: 2rem; 4 | display: block; 5 | } 6 | -------------------------------------------------------------------------------- /docs/app/@theme/components/hubspot-form-dialog/hubspot-form-dialog.component.scss: -------------------------------------------------------------------------------- 1 | nb-card { 2 | width: 25rem; 3 | margin-bottom: 0; 4 | height: 100%; 5 | max-height: 100vh; 6 | max-height: -webkit-fill-available; 7 | } 8 | 9 | nb-card-header { 10 | display: flex; 11 | align-items: center; 12 | } 13 | 14 | nb-card-body { 15 | min-height: 5rem; 16 | } 17 | 18 | .close-button { 19 | margin-left: auto; 20 | padding: 0; 21 | } 22 | 23 | ::ng-deep .hs-custom-form .hs-submit-btn { 24 | margin-top: 2rem; 25 | } 26 | -------------------------------------------------------------------------------- /docs/app/@theme/components/search/search.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../@theme/styles/themes' as *; 2 | 3 | @include nb-install-component() { 4 | position: relative; 5 | 6 | input { 7 | padding-left: 3rem; 8 | } 9 | 10 | nb-icon { 11 | color: nb-theme(input-basic-placeholder-text-color); 12 | position: absolute; 13 | top: 50%; 14 | transform: translateY(-50%); 15 | left: 1rem; 16 | z-index: 1; 17 | font-size: 1.25rem; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/app/@theme/services/highlight.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import * as hljs from 'highlight.js'; 3 | 4 | @Injectable() 5 | export class NgdHighlightService { 6 | 7 | public highlight(code: string): string { 8 | return hljs.highlightAuto(code, ['ts', 'html', 'scss', 'nginx']).value; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docs/app/@theme/services/metadata.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class NgdMetadataService { 5 | isPublic(prop): boolean { 6 | return !prop.isDocsPrivate && !prop.inherited; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/app/@theme/styles/pace.theme.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use 'themes' as *; 8 | 9 | @mixin ngd-pace-theme() { 10 | .pace .pace-progress { 11 | background: nb-theme(color-fg-highlight); 12 | } 13 | 14 | .pace .pace-progress-inner { 15 | box-shadow: 0 0 10px nb-theme(color-fg-highlight), 0 0 5px nb-theme(color-fg-highlight); 16 | } 17 | 18 | .pace .pace-activity { 19 | display: none; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /docs/app/app.options.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | import { InjectionToken } from '@angular/core'; 7 | 8 | export const STRUCTURE = new InjectionToken<any>('Docs Structure'); 9 | export const DOCS = new InjectionToken<any>('Docs Structure'); 10 | -------------------------------------------------------------------------------- /docs/app/blocks/components/tabbed-example-block/tabbed-example-block.component.html: -------------------------------------------------------------------------------- 1 | <button type="button" 2 | *ngIf="hasViewSwitch" 3 | class="btn action-item action-button" 4 | (click)="switchToLiveView()"> 5 | <nb-icon icon="image-outline"></nb-icon> 6 | <span class="text">Live view</span> 7 | </button> 8 | 9 | <nb-tabset class="tabs-container"> 10 | <nb-tab *ngFor="let example of examples" tabTitle="{{ example.extension }}" [active]="example.active"> 11 | <ngd-code-block [path]="example.path" [code]="example.code"></ngd-code-block> 12 | </nb-tab> 13 | </nb-tabset> 14 | -------------------------------------------------------------------------------- /docs/app/blocks/enum.example-view.ts: -------------------------------------------------------------------------------- 1 | export enum NgdExampleView { 2 | LIVE = 'live', 3 | INLINE = 'inline', 4 | } 5 | -------------------------------------------------------------------------------- /docs/app/example/example-404.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | align-items: center; 3 | display: flex; 4 | color: gray; 5 | justify-content: center; 6 | height: 5rem; 7 | } 8 | -------------------------------------------------------------------------------- /docs/app/example/example-404.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbThemeService } from '@nebular/theme'; 3 | 4 | @Component({ 5 | selector: 'ngd-example-404', 6 | template: ` 7 | Example not found. 8 | `, 9 | styleUrls: ['./example-404.component.scss'], 10 | standalone: false 11 | }) 12 | export class NgdExample404Component { 13 | 14 | constructor(private themeService: NbThemeService) { 15 | this.themeService.changeTheme('default'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/app/example/example.component.scss: -------------------------------------------------------------------------------- 1 | // colors 2 | $color-gray-background: #f1f2f3; 3 | 4 | :host { 5 | display: block; 6 | background-color: $color-gray-background; 7 | } 8 | -------------------------------------------------------------------------------- /docs/articles/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/articles/.gitkeep -------------------------------------------------------------------------------- /docs/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/.gitkeep -------------------------------------------------------------------------------- /docs/assets/images/articles/blue-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/blue-theme.png -------------------------------------------------------------------------------- /docs/assets/images/articles/custom-auth/auth-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/custom-auth/auth-container.png -------------------------------------------------------------------------------- /docs/assets/images/articles/custom-auth/form-with-labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/custom-auth/form-with-labels.png -------------------------------------------------------------------------------- /docs/assets/images/articles/dark-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/dark-theme.png -------------------------------------------------------------------------------- /docs/assets/images/articles/design-system/aquamarine-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/design-system/aquamarine-theme.png -------------------------------------------------------------------------------- /docs/assets/images/articles/sample-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/images/articles/sample-page.png -------------------------------------------------------------------------------- /docs/assets/img/akveo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/akveo-logo.png -------------------------------------------------------------------------------- /docs/assets/img/components-preview-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/components-preview-2x.png -------------------------------------------------------------------------------- /docs/assets/img/components-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/components-preview.png -------------------------------------------------------------------------------- /docs/assets/img/concave.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 222"> 2 | <defs> 3 | <style>.cls-1{fill:#fff;}</style> 4 | </defs> 5 | <title>concave</title> 6 | <g id="Layer_2" data-name="Layer 2"> 7 | <g id="Layer_4" data-name="Layer 4"> 8 | <path class="cls-1" d="M1920,0c-248.44,93.45-587.33,151.09-960.52,151.09S248.44,93.45,0,0V222H1920Z"/> 9 | </g> 10 | </g> 11 | </svg> 12 | -------------------------------------------------------------------------------- /docs/assets/img/shield@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/shield@2x.png -------------------------------------------------------------------------------- /docs/assets/img/theme-colors-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/theme-colors-2x.png -------------------------------------------------------------------------------- /docs/assets/img/theme-colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/assets/img/theme-colors.png -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/docs/favicon.png -------------------------------------------------------------------------------- /docs/google46533d2e7a851062.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google46533d2e7a851062.html -------------------------------------------------------------------------------- /docs/main.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { enableProdMode } from '@angular/core'; 8 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 9 | 10 | import { AppModule } from './app/app.module'; 11 | import { environment } from './environments/environment'; 12 | 13 | if (environment.production) { 14 | enableProdMode(); 15 | } 16 | 17 | platformBrowserDynamic().bootstrapModule(AppModule); 18 | 19 | -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | Sitemap: https://akveo.github.io/nebular/sitemap.xml 2 | -------------------------------------------------------------------------------- /docs/themes.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../src/framework/theme/styles/theming-variables'; 8 | theming-variables.$nb-theme-export-mode: true; 9 | @use '../src/framework/theme/styles/theming'; 10 | @use '../src/framework/theme/styles/themes'; 11 | @use '../src/framework/theme/styles/themes/mapping'; 12 | 13 | $v: export('output.json', theming-variables.$nb-themes-export, mapping.$eva-mapping); 14 | -------------------------------------------------------------------------------- /docs/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "resolveJsonModule": true, 6 | "types": [] 7 | }, 8 | "files": [ 9 | "main.ts", 10 | "polyfills.ts" 11 | ], 12 | "include": [ 13 | "**/*.d.ts" 14 | ], 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts", 18 | "assets/**/*" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine" 7 | ] 8 | }, 9 | "files": [ 10 | "test.ts", 11 | "polyfills.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /docs/tsconfig.wp.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.app.json", 3 | "paths": { 4 | "@nebular/*": [ 5 | "dist/*" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /docs/version.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export const VERSION_NAME = 'dev'; 8 | -------------------------------------------------------------------------------- /docs/versions.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "checkoutTarget": "v15.0.0", 4 | "name": "15.0.0", 5 | "path": "/nebular/", 6 | "isCurrent": true 7 | }, 8 | { 9 | "checkoutTarget": "master", 10 | "name": "next", 11 | "path": "/nebular/next/" 12 | }, 13 | { 14 | "checkoutTarget": "14.0.x", 15 | "name": "14.0.x", 16 | "path": "/nebular/14.0.x/" 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.eslintrc.json", 3 | "overrides": [ 4 | { 5 | "files": [ 6 | "*.ts" 7 | ], 8 | "parserOptions": { 9 | "project": [ 10 | "e2e/tsconfig.e2e.json" 11 | ], 12 | "createDefaultProgram": true 13 | } 14 | }, 15 | { 16 | "files": [ 17 | "*.html" 18 | ], 19 | "rules": {} 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /e2e/popover.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | const contentTemplate = by.css('nb-card:nth-child(1) button:nth-child(1)'); 4 | const popover = by.css('nb-layout nb-popover'); 5 | 6 | describe('nb-popover', () => { 7 | 8 | beforeEach((done) => { 9 | browser.get('#/popover/popover-test.component').then(done); 10 | }); 11 | 12 | it('render template ref', () => { 13 | element(contentTemplate).click(); 14 | const containerContent = element(popover).element(by.css('nb-card')); 15 | expect(containerContent.isPresent()).toBeTruthy(); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "baseUrl": "./", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | 'use strict'; 8 | /** 9 | * Load the TypeScript compiler and then load the tasks from 'scripts/gulp'. 10 | */ 11 | const { join } = require('path'); 12 | const gulpPath = join(__dirname, 'tools/gulp'); 13 | const tsconfigPath = join(gulpPath, 'tsconfig.json'); 14 | 15 | // Register TypeScript. 16 | require('ts-node').register({ project: tsconfigPath }); 17 | require(join(gulpPath, 'gulpfile')); 18 | -------------------------------------------------------------------------------- /packages-smoke/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | describe('workspace-project App', () => { 4 | it('should render', (done: DoneFn) => { 5 | browser.get('/').then(() => { 6 | expect(element(by.css('bs-root')).getText()).toContain('Nebular Works!!!'); 7 | done(); 8 | }); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /packages-smoke/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /packages-smoke/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'bs-root', 5 | template: 'Nebular Works!!!', 6 | standalone: false 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /packages-smoke/src/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | 4 | import { AppModule } from './app.module'; 5 | import { AppComponent } from './app.component'; 6 | 7 | @NgModule({ 8 | imports: [AppModule, ServerModule], 9 | bootstrap: [AppComponent], 10 | }) 11 | export class AppServerModule {} 12 | -------------------------------------------------------------------------------- /packages-smoke/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/packages-smoke/src/assets/.gitkeep -------------------------------------------------------------------------------- /packages-smoke/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /packages-smoke/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/packages-smoke/src/favicon.ico -------------------------------------------------------------------------------- /packages-smoke/src/index.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html lang="en"> 3 | <head> 4 | <meta charset="utf-8" /> 5 | <title>PackagesSmoke</title> 6 | <base href="/" /> 7 | <meta name="viewport" content="width=device-width, initial-scale=1" /> 8 | <link rel="icon" type="image/x-icon" href="favicon.ico" /> 9 | </head> 10 | <body> 11 | <bs-root></bs-root> 12 | </body> 13 | </html> 14 | -------------------------------------------------------------------------------- /packages-smoke/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | // import Nebular Theme System and the default theme 3 | @use '@nebular/theme/styles/theming' as *; 4 | @use '@nebular/theme/styles/themes/default'; 5 | @use '@nebular/theme/styles/globals' as *; 6 | 7 | // install the framework 8 | @include nb-install() { 9 | @include nb-theme-global(); 10 | } 11 | -------------------------------------------------------------------------------- /packages-smoke/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; 6 | 7 | // First, initialize the Angular testing environment. 8 | getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { 9 | teardown: { destroyAfterEach: true }, 10 | }); 11 | -------------------------------------------------------------------------------- /packages-smoke/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages-smoke/tsconfig.server.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.app.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/server", 6 | "types": [ 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/main.server.ts", 12 | "server.ts" 13 | ], 14 | "angularCompilerOptions": { 15 | "entryModule": "./src/app/app.server.module#AppServerModule" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages-smoke/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components-list/components-list.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-wrap: wrap; 4 | } 5 | 6 | :host(.column) { 7 | flex-direction: column; 8 | margin-top: 1rem; 9 | margin-bottom: 2rem; 10 | } 11 | 12 | .component-block:not(:last-child) { 13 | margin-right: 1rem; 14 | } 15 | 16 | .component-link { 17 | display: block; 18 | 19 | &.selected { 20 | background: #ccc; 21 | } 22 | 23 | &:focus { 24 | transform: scale(1.02); 25 | } 26 | 27 | &.active { 28 | color: #00f; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/layout-direction-toggle/layout-direction-toggle.component.scss: -------------------------------------------------------------------------------- 1 | input { 2 | margin-right: 0.125rem; 3 | } 4 | 5 | label { 6 | margin: 0; 7 | display: inline-flex; 8 | align-items: center; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/layout-theme-toggle/layout-theme-toggle.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | } 4 | 5 | .theme-radio-label { 6 | display: inline-flex; 7 | align-items: center; 8 | margin-right: 0.5rem; 9 | 10 | &:last-child { 11 | margin-right: 0; 12 | } 13 | } 14 | 15 | .theme-radio { 16 | margin-right: 0.125rem; 17 | } 18 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/backend/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | module.exports = { 8 | jwtSecret: 'MyS3cr3tK3Y', 9 | jwtSession: { 10 | session: false 11 | }, 12 | accessTokenExpiresIn : 60, 13 | refreshTokenExpiresIn: 120 14 | }; 15 | -------------------------------------------------------------------------------- /src/backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngx-sample-backend", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node app.js" 9 | }, 10 | "author": "akveo <contact@akveo.com>", 11 | "license": "MIT", 12 | "dependencies": { 13 | "body-parser": "^1.17.1", 14 | "express": "^4.15.2", 15 | "jwt-simple": "^0.5.1", 16 | "moment": "^2.22.2", 17 | "passport": "^0.3.2", 18 | "passport-jwt": "^4.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/backend/users.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | const users = [ 8 | { 9 | id: 1, 10 | name: 'John Doe', 11 | email: 'example@akveo.com', 12 | password: '123456' 13 | } 14 | ]; 15 | 16 | module.exports = users; 17 | -------------------------------------------------------------------------------- /src/backend/wines.js: -------------------------------------------------------------------------------- 1 | const wines = [ 2 | { 3 | id: 1, 4 | name: 'Pommard 1er cru', 5 | region: 'Bourgogne', 6 | year: 2012, 7 | }, 8 | { 9 | id: 2, 10 | name: 'Aloxe Corton Grand cru', 11 | region: 'Bourgogne', 12 | year: 2008, 13 | }, 14 | { 15 | id: 3, 16 | name: 'Meursault 1er cru', 17 | region: 'Bourgogne', 18 | year: 1997, 19 | }, 20 | ]; 21 | 22 | module.exports = wines; 23 | -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export const environment = { 8 | production: true, 9 | }; 10 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/src/favicon.ico -------------------------------------------------------------------------------- /src/framework/auth/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/auth module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/auth/components/auth-block/auth-block.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-auth-block', 11 | styleUrls: ['./auth-block.component.scss'], 12 | template: ` 13 | <ng-content></ng-content> 14 | `, 15 | standalone: false 16 | }) 17 | export class NbAuthBlockComponent { 18 | } 19 | -------------------------------------------------------------------------------- /src/framework/auth/components/logout/logout.component.html: -------------------------------------------------------------------------------- 1 | <div>Logging out, please wait...</div> 2 | -------------------------------------------------------------------------------- /src/framework/auth/components/register/register.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | :host { 7 | .title { 8 | margin-bottom: 2rem; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/components/request-password/request-password.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | :host { 7 | .form-group:last-of-type { 8 | margin-bottom: 3rem; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/components/reset-password/reset-password.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | :host { 7 | .form-group:last-of-type { 8 | margin-bottom: 3rem; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/models/user.ts: -------------------------------------------------------------------------------- 1 | export class NbUser { 2 | 3 | constructor(public id?: number, 4 | public email?: string, 5 | public password?: string, 6 | public rememberMe?: boolean, 7 | public terms?: boolean, 8 | public confirmPassword?: string, 9 | public fullName?: string) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/auth/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/auth", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/auth/styles/_globals.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use 'global/components'; 8 | 9 | @mixin nb-auth-global() { 10 | @include components.nb-auth-components(); 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/auth/styles/global/_components.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../components/auth-block/auth-block.component.theme' as auth-block-theme; 8 | 9 | // Create a theme 10 | @mixin nb-auth-components() { 11 | @include auth-block-theme.nb-auth-block-theme(); 12 | } 13 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/components-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes'; 2 | @use '../../../theme/styles/theming-variables' as *; 3 | @use '../../../theme/styles/theming' as *; 4 | @use '../globals' as *; 5 | 6 | $nb-global-styles-on-install: false; 7 | 8 | @include nb-install() { 9 | @include nb-auth-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/corporate-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/corporate'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (corporate); 6 | 7 | @include nb-install(); 8 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/corporate.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/corporate'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (corporate); 6 | $nb-enable-css-custom-properties: false; 7 | 8 | @include nb-install() { 9 | @include nb-auth-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/cosmic-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/cosmic'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (cosmic); 6 | 7 | @include nb-install(); 8 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/cosmic.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/cosmic'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (cosmic); 6 | $nb-enable-css-custom-properties: false; 7 | 8 | @include nb-install() { 9 | @include nb-auth-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/dark-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/dark'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (dark); 6 | 7 | @include nb-install(); 8 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/dark.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/dark'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (dark); 6 | $nb-enable-css-custom-properties: false; 7 | 8 | @include nb-install() { 9 | @include nb-auth-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/default-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/default'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (default); 6 | 7 | @include nb-install(); 8 | -------------------------------------------------------------------------------- /src/framework/auth/styles/prebuilt/default.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes/default'; 2 | @use '../../../theme/styles/theming' as *; 3 | @use '../globals' as *; 4 | 5 | $nb-enabled-themes: (default); 6 | $nb-enable-css-custom-properties: false; 7 | 8 | @include nb-install() { 9 | @include nb-auth-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/auth/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false, 6 | "paths": { 7 | "@nebular/theme": [ 8 | "dist/theme" 9 | ] 10 | } 11 | }, 12 | "angularCompilerOptions": { 13 | "compilationMode": "partial" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/bootstrap/README.md: -------------------------------------------------------------------------------- 1 | ### More details https://akveo.github.io/nebular/ 2 | 3 | ### This package is deprecated. We suggest using native Nebular components instead. 4 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/_layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../theme/styles/globals' as *; 8 | 9 | @mixin nb-b-layout-theme() { 10 | @include media-breakpoint-down(is) { 11 | .row { 12 | margin-left: -10px; 13 | margin-right: -10px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/components-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../../../theme/styles/themes'; 2 | @use '../../../theme/styles/theming-variables' as *; 3 | @use '../../../theme/styles/theming' as *; 4 | @use '../globals' as *; 5 | 6 | $nb-global-styles-on-install: false; 7 | 8 | @include nb-install() { 9 | @include nb-bootstrap-global(); 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/corporate-custom-properties.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/corporate'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (corporate); 12 | 13 | @include nb-install(); 14 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/corporate.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/corporate'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (corporate); 12 | $nb-enable-css-custom-properties: false; 13 | 14 | @include nb-install() { 15 | @include nb-bootstrap-global(); 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/cosmic-custom-properties.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/cosmic'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (cosmic); 12 | 13 | @include nb-install(); 14 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/cosmic.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/cosmic'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (cosmic); 12 | $nb-enable-css-custom-properties: false; 13 | 14 | @include nb-install() { 15 | @include nb-bootstrap-global(); 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/dark-custom-properties.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/dark'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (dark); 12 | 13 | @include nb-install(); 14 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/dark.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/dark'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (dark); 12 | $nb-enable-css-custom-properties: false; 13 | 14 | @include nb-install() { 15 | @include nb-bootstrap-global(); 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/default-custom-properties.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/default'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (default); 12 | 13 | @include nb-install(); 14 | -------------------------------------------------------------------------------- /src/framework/bootstrap/styles/prebuilt/default.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../../theme/styles/themes/default'; 8 | @use '../../../theme/styles/theming' as *; 9 | @use '../globals' as *; 10 | 11 | $nb-enabled-themes: (default); 12 | $nb-enable-css-custom-properties: false; 13 | 14 | @include nb-install() { 15 | @include nb-bootstrap-global(); 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/date-fns/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/date-fns module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/date-fns/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/date-fns", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/date-fns/public_api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export * from './services/date-fns-date.service'; 8 | export * from './date-fns.module'; 9 | -------------------------------------------------------------------------------- /src/framework/date-fns/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/date-fns/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false, 6 | "paths": { 7 | "@nebular/theme": [ 8 | "dist/theme" 9 | ] 10 | } 11 | }, 12 | "angularCompilerOptions": { 13 | "compilationMode": "partial" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/date-fns/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/eva-icons/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/eva-icons module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/eva-icons/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/eva-icons", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/eva-icons/public_api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export * from './eva-icons.module'; 8 | -------------------------------------------------------------------------------- /src/framework/eva-icons/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/eva-icons/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false, 6 | "paths": { 7 | "@nebular/theme": [ 8 | "dist/theme" 9 | ] 10 | } 11 | }, 12 | "angularCompilerOptions": { 13 | "compilationMode": "partial" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/eva-icons/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/firebase-auth/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/firebase-auth module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/firebase-auth/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/firebase-auth", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/firebase-auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/firebase-auth/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false, 6 | "paths": { 7 | "@nebular/theme": [ 8 | "dist/theme" 9 | ], 10 | "@nebular/auth": [ 11 | "dist/auth" 12 | ] 13 | } 14 | }, 15 | "angularCompilerOptions": { 16 | "compilationMode": "partial" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/framework/firebase-auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/icons/README.md: -------------------------------------------------------------------------------- 1 | # Nebular icons - amazing icons crafted with love by Akveo team 2 | 3 | ### This package is deprecated. Please check [Eva Icons](https://akveo.github.io/eva-icons/) and new [nb-icon](https://akveo.github.io/nebular/docs/components/icon) component. 4 | -------------------------------------------------------------------------------- /src/framework/moment/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/moment module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/moment/moment.module.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NgModule } from '@angular/core'; 8 | 9 | import { NbDateService } from '@nebular/theme'; 10 | import { NbMomentDateService } from './services/moment-date.service'; 11 | 12 | 13 | @NgModule({ 14 | providers: [{ provide: NbDateService, useClass: NbMomentDateService }], 15 | }) 16 | export class NbMomentDateModule { 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/moment/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/moment", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/moment/public_api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export * from './services/moment-date.service'; 8 | export * from './moment.module'; 9 | -------------------------------------------------------------------------------- /src/framework/moment/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/moment/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false, 6 | "paths": { 7 | "@nebular/theme": [ 8 | "dist/theme" 9 | ] 10 | } 11 | }, 12 | "angularCompilerOptions": { 13 | "compilationMode": "partial" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/moment/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/security/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/security module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/security/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/security", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/security/public_api.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | export * from './security.options'; 7 | export * from './security.module'; 8 | export * from './services/acl.service'; 9 | export * from './services/access-checker.service'; 10 | export * from './services/role.provider'; 11 | export * from './directives/is-granted.directive'; 12 | -------------------------------------------------------------------------------- /src/framework/security/security.options.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export interface NbAclRole { 4 | parent?: string, 5 | [permission: string]: string|string[]|undefined, 6 | } 7 | 8 | export interface NbAccessControl { 9 | [role: string]: NbAclRole, 10 | } 11 | 12 | export interface NbAclOptions { 13 | accessControl?: NbAccessControl, 14 | } 15 | 16 | export const NB_SECURITY_OPTIONS_TOKEN = new InjectionToken<NbAclOptions>('Nebular Security Options'); 17 | -------------------------------------------------------------------------------- /src/framework/security/services/role.provider.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | import { Observable } from 'rxjs'; 7 | 8 | export abstract class NbRoleProvider { 9 | 10 | /** 11 | * Returns current user role 12 | * @returns {Observable<string | string[]>} 13 | */ 14 | abstract getRole(): Observable<string|string[]>; 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/security/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/security/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | "angularCompilerOptions": { 8 | "compilationMode": "partial" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/security/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/theme/README.md: -------------------------------------------------------------------------------- 1 | ### @nebular/theme module, more details https://akveo.github.io/nebular/ 2 | -------------------------------------------------------------------------------- /src/framework/theme/components/accordion/accordion-item-header.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | align-items: center; 10 | cursor: pointer; 11 | 12 | &:focus { 13 | outline: 0; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/theme/components/accordion/accordion-item.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/actions/actions.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | align-items: center; 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/autocomplete/autocomplete.component.html: -------------------------------------------------------------------------------- 1 | <nb-option-list *nbPortal 2 | [size]="size" 3 | [position]="overlayPosition" 4 | [style.width.px]="optionsWidth" 5 | role="listbox" 6 | [id]="id" 7 | [class.empty]="!options?.length" 8 | [ngClass]="optionsListClass"> 9 | <ng-content select="nb-option, nb-option-group"></ng-content> 10 | </nb-option-list> 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/autocomplete/autocomplete.component.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host(:hover) { 8 | cursor: pointer; 9 | } 10 | 11 | nb-option-list.empty { 12 | border: none; 13 | } 14 | -------------------------------------------------------------------------------- /src/framework/theme/components/badge/badge.module.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NgModule } from '@angular/core'; 8 | import { NbBadgeComponent } from './badge.component'; 9 | 10 | @NgModule({ 11 | exports: [ NbBadgeComponent ], 12 | declarations: [ NbBadgeComponent ], 13 | }) 14 | export class NbBadgeModule { } 15 | -------------------------------------------------------------------------------- /src/framework/theme/components/button-group/_button-toggle.component.theme.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @mixin nb-buttons-toggle-theme() { 8 | [nbButtonToggle] { 9 | @extend [nbButton]; 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/framework/theme/components/button-group/button-group-injection-tokens.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { InjectionToken } from '@angular/core'; 8 | import { NbButtonGroupComponent } from './button-group.component'; 9 | 10 | export const NB_BUTTON_GROUP = new InjectionToken<NbButtonGroupComponent>('NB_BUTTON_GROUP'); 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar-kit/components/calendar-actions/calendar-actions.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../../styles/theming' as *; 2 | 3 | :host { 4 | display: flex; 5 | justify-content: space-between; 6 | 7 | .apply-text-button { 8 | @include nb-ltr(margin-left, auto); 9 | @include nb-rtl(margin-right, auto); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar-kit/components/calendar-day-picker/calendar-day-picker.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | } 4 | 5 | .days-container { 6 | width: 100%; 7 | } 8 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar-kit/components/calendar-days-names/calendar-days-names.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | justify-content: space-between; 10 | 11 | .day { 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar-kit/components/calendar-navigation/calendar-pageable-navigation.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | align-items: center; 10 | justify-content: flex-start; 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar-kit/components/calendar-week-number/calendar-week-number.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; // prevents margin collapsing 9 | flex-direction: column; 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/calendar/base-calendar-range-cell.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NbCalendarRange } from './calendar-range.component'; 8 | 9 | export abstract class NbBaseCalendarRangeCell<D> { 10 | abstract selectedValue: NbCalendarRange<D>; 11 | 12 | get hasRange(): boolean { 13 | return !!(this.selectedValue && this.selectedValue.start && this.selectedValue.end); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/theme/components/card/card.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/card/flip-card/_flip-card.component.theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/theming' as *; 2 | 3 | @mixin nd-flip-card-theme { 4 | .flip-button { 5 | line-height: nb-theme(card-text-line-height); 6 | margin-bottom: nb-theme(card-margin-bottom); 7 | padding: nb-theme(card-padding); 8 | } 9 | 10 | .flipcard-body .front-container { 11 | @include nb-ltr(margin-right, -100%); 12 | @include nb-rtl(margin-left, -100%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/theme/components/card/reveal-card/_reveal-card.component.theme.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/theming' as *; 2 | 3 | @mixin nd-reveal-card-theme { 4 | nb-reveal-card { 5 | box-shadow: nb-theme(card-shadow); 6 | margin-bottom: nb-theme(card-margin-bottom); 7 | } 8 | 9 | .second-card-container { 10 | height: 100%; 11 | border-radius: nb-theme(card-border-radius); 12 | } 13 | 14 | .reveal-button { 15 | line-height: nb-theme(card-text-line-height); 16 | padding: nb-theme(card-padding); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/a11y/focus-key-manager.ts: -------------------------------------------------------------------------------- 1 | import { QueryList } from '@angular/core'; 2 | import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y'; 3 | 4 | export type NbFocusableOption = FocusableOption; 5 | export class NbFocusKeyManager<T> extends FocusKeyManager<T> {} 6 | 7 | export class NbFocusKeyManagerFactoryService<T extends NbFocusableOption> { 8 | create(items: QueryList<T> | T[]): NbFocusKeyManager<T> { 9 | return new NbFocusKeyManager<T>(items); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/bidi/bidi-service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Directionality } from '@angular/cdk/bidi'; 3 | 4 | @Injectable() 5 | export class NbDirectionality extends Directionality {} 6 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/bidi/bidi.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BidiModule, Directionality } from '@angular/cdk/bidi'; 3 | import { NbDirectionality } from './bidi-service'; 4 | 5 | @NgModule({ 6 | providers: [ 7 | { provide: NbDirectionality, useExisting: Directionality }, 8 | ], 9 | }) 10 | export class NbBidiModule extends BidiModule {} 11 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/collections/collection-viewer.ts: -------------------------------------------------------------------------------- 1 | import { CollectionViewer, ListRange } from '@angular/cdk/collections'; 2 | import { Observable } from 'rxjs'; 3 | 4 | export interface NbCollectionViewer extends CollectionViewer { 5 | viewChange: Observable<ListRange>; 6 | } 7 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/keycodes/keycodes.ts: -------------------------------------------------------------------------------- 1 | export * from '@angular/cdk/keycodes'; 2 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/platform/platform-service.ts: -------------------------------------------------------------------------------- 1 | import { Platform } from '@angular/cdk/platform'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | useClass: Platform, 7 | }) 8 | export class NbPlatform extends Platform {} 9 | -------------------------------------------------------------------------------- /src/framework/theme/components/cdk/table/data-source.ts: -------------------------------------------------------------------------------- 1 | import { DataSource } from '@angular/cdk/table'; 2 | 3 | export abstract class NbDataSource<T> extends DataSource<T> {} 4 | -------------------------------------------------------------------------------- /src/framework/theme/components/chat/chat-title.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, Input, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: `[nbChatTitle]`, 5 | standalone: false 6 | }) 7 | export class NbChatTitleDirective { 8 | @Input() context: Object = {}; 9 | 10 | constructor(public templateRef: TemplateRef<any>) {} 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/components/chat/chat.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | flex-direction: column; 10 | position: relative; 11 | height: 100%; 12 | } 13 | -------------------------------------------------------------------------------- /src/framework/theme/components/chat/chat.options.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export class NbChatOptions { 8 | messageGoogleMapKey?: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/framework/theme/components/checkbox/checkbox.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/theming' as *; 2 | 3 | :host { 4 | .label { 5 | position: relative; 6 | display: inline-flex; 7 | align-items: center; 8 | margin: 0; 9 | min-height: inherit; 10 | } 11 | 12 | .custom-checkbox { 13 | flex-shrink: 0; 14 | } 15 | } 16 | 17 | :host(.nb-transition) { 18 | .custom-checkbox { 19 | @include nb-component-animation(background-color, border, box-shadow); 20 | } 21 | .text { 22 | @include nb-component-animation(color); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/framework/theme/components/component-shape.ts: -------------------------------------------------------------------------------- 1 | export type NbComponentShape = 'rectangle' | 'semi-round' | 'round'; 2 | -------------------------------------------------------------------------------- /src/framework/theme/components/component-size.ts: -------------------------------------------------------------------------------- 1 | export type NbComponentSize = 'tiny' | 'small' | 'medium' | 'large' | 'giant'; 2 | -------------------------------------------------------------------------------- /src/framework/theme/components/component-status.ts: -------------------------------------------------------------------------------- 1 | export type NbComponentStatus = 'basic' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'control'; 2 | export type NbComponentOrCustomStatus = NbComponentStatus | string; 3 | -------------------------------------------------------------------------------- /src/framework/theme/components/form-field/form-field.component.html: -------------------------------------------------------------------------------- 1 | <div *ngIf="shouldShowPrefix()" [ngClass]="prefixClasses$ | async"> 2 | <ng-content select="[nbPrefix]"></ng-content> 3 | </div> 4 | 5 | <div class="nb-form-control-container" 6 | [class.nb-form-field-control-with-prefix]="shouldShowPrefix()" 7 | [class.nb-form-field-control-with-suffix]="shouldShowSuffix()"> 8 | <ng-content></ng-content> 9 | </div> 10 | 11 | <div *ngIf="shouldShowSuffix()" [ngClass]="suffixClasses$ | async"> 12 | <ng-content select="[nbSuffix]"></ng-content> 13 | </div> 14 | -------------------------------------------------------------------------------- /src/framework/theme/components/form-field/form-field.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: flex; 9 | align-items: center; 10 | &[hidden] { 11 | display: none; 12 | } 13 | } 14 | 15 | .nb-form-control-container { 16 | width: 100%; 17 | } 18 | -------------------------------------------------------------------------------- /src/framework/theme/components/form-field/prefix.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[nbPrefix]', 5 | standalone: false 6 | }) 7 | export class NbPrefixDirective { 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/components/form-field/suffix.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[nbSuffix]', 5 | standalone: false 6 | }) 7 | export class NbSuffixDirective { 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/components/icon/icon.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: inline-block; 3 | } 4 | -------------------------------------------------------------------------------- /src/framework/theme/components/input/_input-shapes.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use '../../styles/theming' as *; 8 | 9 | @mixin input-shapes() { 10 | @each $shape in nb-get-shapes() { 11 | &.shape-#{$shape} { 12 | border-radius: nb-theme(input-#{$shape}-border-radius); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/theme/components/list/list-item.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | align-items: center; 4 | flex-shrink: 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/framework/theme/components/list/list.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: column; 4 | flex: 1 1 auto; 5 | overflow: auto; 6 | } 7 | -------------------------------------------------------------------------------- /src/framework/theme/components/list/list.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { NbListComponent, NbListItemComponent } from './list.component'; 3 | import { NbListPageTrackerDirective } from './list-page-tracker.directive'; 4 | import { NbInfiniteListDirective } from './infinite-list.directive'; 5 | 6 | const components = [ 7 | NbListComponent, 8 | NbListItemComponent, 9 | NbListPageTrackerDirective, 10 | NbInfiniteListDirective, 11 | ]; 12 | 13 | @NgModule({ 14 | declarations: components, 15 | exports: components, 16 | }) 17 | export class NbListModule {} 18 | -------------------------------------------------------------------------------- /src/framework/theme/components/option/option-group.component.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: block; 9 | } 10 | 11 | .option-group-title { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /src/framework/theme/components/popover/popover.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | .arrow { 9 | position: absolute; 10 | width: 0; 11 | height: 0; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/framework/theme/components/progress-bar/progress-bar.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | display: block; 9 | } 10 | 11 | .progress-container { 12 | overflow: hidden; 13 | } 14 | 15 | .progress-value { 16 | height: 100%; 17 | text-align: center; 18 | overflow: hidden; 19 | } 20 | -------------------------------------------------------------------------------- /src/framework/theme/components/route-tabset/merge-configs.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'nbMergeConfigs', 5 | standalone: false 6 | }) 7 | export class NbMergeConfigsPipe implements PipeTransform { 8 | transform<Config>(...configs: Config[]): Config { 9 | return Object.assign({}, ...configs); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/components/select/select-injection-tokens.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const NB_SELECT_INJECTION_TOKEN = new InjectionToken('NB_SELECT_INJECTION_TOKEN'); 4 | -------------------------------------------------------------------------------- /src/framework/theme/components/stepper/stepper-tokens.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const NB_STEPPER = new InjectionToken('Nebular Stepper Component'); 4 | -------------------------------------------------------------------------------- /src/framework/theme/components/tabset/tab-content.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | /** 4 | * Directive to wrap tab lazy content. 5 | * */ 6 | @Directive({ 7 | selector: '[nbTabContent]', 8 | standalone: false 9 | }) 10 | export class NbTabContentDirective { 11 | constructor(public templateRef: TemplateRef<any>) {} 12 | } 13 | -------------------------------------------------------------------------------- /src/framework/theme/components/tabset/tab-title.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, TemplateRef } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[nbTabTitle]', 5 | standalone: false 6 | }) 7 | export class NbTabTitleDirective { 8 | constructor(public templateRef: TemplateRef<any>) {} 9 | } 10 | -------------------------------------------------------------------------------- /src/framework/theme/components/tag/_tag.component.theme.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use 'tag'; 8 | @use 'tag-list'; 9 | @use 'tag-input'; 10 | 11 | @mixin nb-tags-theme() { 12 | @include tag.nb-tag-theme(); 13 | @include tag-list.nb-tag-list-theme(); 14 | @include tag-input.nb-tag-input-theme(); 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/theme/components/tag/tag.component.html: -------------------------------------------------------------------------------- 1 | {{ text }} 2 | <nb-icon *ngIf="removable" 3 | (click)="_remove()" 4 | class="nb-tag-remove size-{{size}}" 5 | icon="close-outline" 6 | pack="nebular-essentials" 7 | aria-hidden="true"> 8 | </nb-icon> 9 | -------------------------------------------------------------------------------- /src/framework/theme/components/timepicker/timepicker-cell.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | width: 100%; 9 | height: 100%; 10 | display: flex; 11 | align-items: center; 12 | justify-content: center; 13 | user-select: none; 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/theme/components/toastr/model.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NbToastrConfig } from './toastr-config'; 8 | 9 | export class NbToast { 10 | title: string; 11 | message: string; 12 | config: NbToastrConfig; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/framework/theme/components/toastr/toast.component.html: -------------------------------------------------------------------------------- 1 | <div class="icon-container" *ngIf="hasIcon && icon"> 2 | <nb-icon [config]="icon"></nb-icon> 3 | </div> 4 | <div class="content-container"> 5 | <span class="title subtitle">{{ toast.title }}</span> 6 | <div class="message">{{ toast.message }}</div> 7 | </div> 8 | -------------------------------------------------------------------------------- /src/framework/theme/components/tree-grid/tree-grid-injection-tokens.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { InjectionToken } from '@angular/core'; 8 | 9 | export const NB_TREE_GRID = new InjectionToken('NB_TREE_GRID'); 10 | -------------------------------------------------------------------------------- /src/framework/theme/components/tree-grid/tree-grid.component.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | :host { 8 | table-layout: fixed; 9 | border-spacing: 0; 10 | border-collapse: collapse; 11 | width: 100%; 12 | max-width: 100%; 13 | overflow: auto; 14 | } 15 | 16 | 17 | ::ng-deep .nb-tree-grid-cell, 18 | ::ng-deep .nb-tree-grid-header-cell, 19 | ::ng-deep .nb-tree-grid-footer-cell { 20 | overflow: hidden; 21 | } 22 | -------------------------------------------------------------------------------- /src/framework/theme/components/window/windows-container.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | align-items: flex-end; 4 | overflow-x: auto; 5 | 6 | ::ng-deep nb-window:not(.full-screen) { 7 | margin: 0 2rem; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/framework/theme/components/window/windows-container.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewContainerRef, ViewChild } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-windows-container', 5 | template: `<ng-container #viewContainerRef></ng-container>`, 6 | styleUrls: ['./windows-container.component.scss'], 7 | standalone: false 8 | }) 9 | export class NbWindowsContainerComponent { 10 | 11 | // TODO static must be false as of Angular 9.0.0, issues/1514 12 | @ViewChild('viewContainerRef', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef; 13 | } 14 | -------------------------------------------------------------------------------- /src/framework/theme/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist/theme", 4 | "lib": { 5 | "entryFile": "./public_api.ts" 6 | }, 7 | "assets": [ 8 | "LICENSE.txt", 9 | "**/*.{html,scss}", 10 | "schematics/collection.json", 11 | "schematics/*/schema.json", 12 | "schematics/*/files/**" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/theme/schematics/ng-add/register-modules/app-routing-module-content.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export const appRoutingModuleContent = `import { NgModule } from '@angular/core'; 8 | 9 | import { Routes, RouterModule } from '@angular/router'; 10 | 11 | const routes: Routes = []; 12 | 13 | @NgModule({ 14 | imports: [RouterModule.forRoot(routes)], 15 | exports: [RouterModule], 16 | }) 17 | export class AppRoutingModule { } 18 | `; 19 | -------------------------------------------------------------------------------- /src/framework/theme/schematics/ng-add/schema.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export interface Schema { 8 | project: string; 9 | theme: 'default' | 'dark' | 'cosmic' | 'corporate'; 10 | customization: boolean; 11 | layout: boolean; 12 | animations: boolean; 13 | } 14 | -------------------------------------------------------------------------------- /src/framework/theme/schematics/util/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export * from './package'; 8 | export * from './file'; 9 | export * from './project'; 10 | export * from './component'; 11 | export * from './ast'; 12 | -------------------------------------------------------------------------------- /src/framework/theme/services/js-themes/theme.options.ts: -------------------------------------------------------------------------------- 1 | export interface NbJSThemeOptions { 2 | name: string; 3 | base?: string; 4 | variables?: NbJSThemeVariable; 5 | } 6 | 7 | export interface NbJSThemeVariable { 8 | [key: string]: string | string[] | NbJSThemeVariable; 9 | } 10 | -------------------------------------------------------------------------------- /src/framework/theme/styles/_all.scss: -------------------------------------------------------------------------------- 1 | @forward 'theming'; 2 | @forward 'themes'; 3 | @forward 'globals'; 4 | -------------------------------------------------------------------------------- /src/framework/theme/styles/_globals.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @forward 'global/breakpoints'; 8 | @use 'global/styles'; 9 | @use 'global/components'; 10 | @use 'global/overrides'; 11 | 12 | @mixin nb-theme-global() { 13 | @include components.nb-theme-components(); 14 | @include overrides.nb-theme-overrides(); 15 | } 16 | -------------------------------------------------------------------------------- /src/framework/theme/styles/_themes.scss: -------------------------------------------------------------------------------- 1 | @use 'themes/default'; 2 | @use 'themes/dark'; 3 | @use 'themes/cosmic'; 4 | @use 'themes/corporate'; 5 | -------------------------------------------------------------------------------- /src/framework/theme/styles/global/_overrides.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @use 'normalize'; 8 | @use 'tables/smart-table.theme' as smart-table; 9 | @use 'typography/typography'; 10 | 11 | @mixin nb-theme-overrides() { 12 | @include typography.nb-typography(); 13 | @include smart-table.nb-tables-smart-table-theme(); 14 | } 15 | -------------------------------------------------------------------------------- /src/framework/theme/styles/global/_styles.scss: -------------------------------------------------------------------------------- 1 | .visually-hidden { /* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility */ 2 | position: absolute !important; 3 | height: 1px; 4 | width: 1px; 5 | overflow: hidden; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px, 1px, 1px, 1px); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/components-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../theming-variables' as *; 2 | @use '../all' as *; 3 | 4 | $nb-global-styles-on-install: false; 5 | 6 | @include nb-install() { 7 | @include nb-theme-global(); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/corporate-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (corporate); 4 | 5 | @include nb-install(); 6 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/corporate.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (corporate); 4 | $nb-enable-css-custom-properties: false; 5 | 6 | @include nb-install() { 7 | @include nb-theme-global(); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/cosmic-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (cosmic); 4 | 5 | @include nb-install(); 6 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/cosmic.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (cosmic); 4 | $nb-enable-css-custom-properties: false; 5 | 6 | @include nb-install() { 7 | @include nb-theme-global(); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/dark-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (dark); 4 | 5 | @include nb-install(); 6 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/dark.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (dark); 4 | $nb-enable-css-custom-properties: false; 5 | 6 | @include nb-install() { 7 | @include nb-theme-global(); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/default-custom-properties.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (default); 4 | 5 | @include nb-install(); 6 | -------------------------------------------------------------------------------- /src/framework/theme/styles/prebuilt/default.scss: -------------------------------------------------------------------------------- 1 | @use '../all' as *; 2 | 3 | $nb-enabled-themes: (default); 4 | $nb-enable-css-custom-properties: false; 5 | 6 | @include nb-install() { 7 | @include nb-theme-global(); 8 | } 9 | -------------------------------------------------------------------------------- /src/framework/theme/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": [ 11 | "dom", 12 | "es2018" 13 | ] 14 | }, 15 | "exclude": [ 16 | "test.ts", 17 | "**/*.spec.ts", 18 | "schematics" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/framework/theme/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | "angularCompilerOptions": { 8 | "compilationMode": "partial" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/framework/theme/tsconfig.schematics.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.schematics.json", 3 | "compilerOptions": { 4 | "types": [ 5 | "jasmine" 6 | ] 7 | }, 8 | "exclude": [ 9 | "schematics/*/files/**/*" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/framework/theme/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html> 3 | <head> 4 | <meta charset="utf-8" /> 5 | <title>@nebular</title> 6 | <base href="/" /> 7 | 8 | <meta name="viewport" content="width=device-width, initial-scale=1" /> 9 | <link rel="icon" type="image/x-icon" href="favicon.ico" /> 10 | </head> 11 | <body> 12 | <npg-app-root>Loading...</npg-app-root> 13 | </body> 14 | </html> 15 | -------------------------------------------------------------------------------- /src/playground/playground.module.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NgModule } from '@angular/core'; 8 | 9 | import { PlaygroundRoutingModule } from './playground-routing.module'; 10 | 11 | @NgModule({ 12 | imports: [ PlaygroundRoutingModule ], 13 | }) 14 | export class PlaygroundModule {} 15 | -------------------------------------------------------------------------------- /src/playground/styles/themes.scss: -------------------------------------------------------------------------------- 1 | @forward '../../framework/theme/styles/theming'; 2 | @use '../../framework/theme/styles/theming' as *; 3 | @use '../../framework/theme/styles/themes'; 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/accordion/accordion-multi.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ChangeDetectionStrategy } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-accordion-multi', 5 | templateUrl: './accordion-multi.component.html', 6 | changeDetection: ChangeDetectionStrategy.OnPush, 7 | standalone: false 8 | }) 9 | export class AccordionMultiComponent {} 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/accordion/accordion-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ChangeDetectionStrategy } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-accordion-showcase', 5 | templateUrl: './accordion-showcase.component.html', 6 | changeDetection: ChangeDetectionStrategy.OnPush, 7 | standalone: false 8 | }) 9 | export class AccordionShowcaseComponent {} 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/accordion/accordion-toggle.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ChangeDetectionStrategy, ViewChild } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-accordion-toggle', 5 | templateUrl: './accordion-toggle.component.html', 6 | changeDetection: ChangeDetectionStrategy.OnPush, 7 | host: { class: 'example-height-60' }, 8 | standalone: false 9 | }) 10 | export class AccordionToggleComponent { 11 | 12 | @ViewChild('item') accordion; 13 | 14 | toggle() { 15 | this.accordion.toggle(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-badge.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-action-badge', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './action-badge.component.html', 13 | standalone: false 14 | }) 15 | export class ActionBadgeComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-dot-mode.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-action-dot-mode', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './action-dot-mode.component.html', 13 | standalone: false 14 | }) 15 | export class ActionDotModeComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-actions size="medium"> 5 | <nb-action icon="search-outline"></nb-action> 6 | <nb-action icon="power-outline"></nb-action> 7 | <nb-action icon="person-outline"></nb-action> 8 | <nb-action icon="home-outline"></nb-action> 9 | <nb-action [icon]="disabledIconConfig" disabled></nb-action> 10 | <nb-action> 11 | Custom Action 12 | </nb-action> 13 | </nb-actions> 14 | 15 | </nb-card-body> 16 | </nb-card> 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-sizes.component.html: -------------------------------------------------------------------------------- 1 | <nb-card *ngFor="let size of sizes"> 2 | <nb-card-body> 3 | 4 | <nb-actions [size]="size"> 5 | <nb-action icon="search-outline"></nb-action> 6 | <nb-action icon="power-outline"></nb-action> 7 | <nb-action icon="person-outline"></nb-action> 8 | <nb-action icon="home-outline"></nb-action> 9 | <nb-action>Some Action</nb-action> 10 | </nb-actions> 11 | 12 | </nb-card-body> 13 | </nb-card> 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-width.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-actions size="small" fullWidth> 5 | <nb-action icon="search-outline"></nb-action> 6 | <nb-action icon="power-outline"></nb-action> 7 | </nb-actions> 8 | 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/action/action-width.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-action-width', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './action-width.component.html', 13 | standalone: false 14 | }) 15 | export class ActionWidthComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/alert/alert-example.component.scss: -------------------------------------------------------------------------------- 1 | .control-status-example nb-alert { 2 | margin: 0; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/alert/alert-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body class="example-last-child-no-b-margin"> 3 | <nb-alert status="success" closable>You have been successfully authenticated!</nb-alert> 4 | </nb-card-body> 5 | </nb-card> 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/alert/alert-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './alert-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class AlertShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/alert/alert-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './alert-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class AlertSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/autocomplete/autocomplete-active-first.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | 4 | <input 5 | [formControl]="inputFormControl" 6 | nbInput 7 | type="text" 8 | placeholder="Enter value" 9 | [nbAutocomplete]="auto" /> 10 | 11 | <nb-autocomplete #auto [activeFirst]="true"> 12 | 13 | <nb-option *ngFor="let option of filteredOptions$ | async" [value]="option"> 14 | {{ option }} 15 | </nb-option> 16 | 17 | </nb-autocomplete> 18 | 19 | </nb-card-body> 20 | </nb-card> 21 | -------------------------------------------------------------------------------- /src/playground/with-layout/autocomplete/autocomplete-custom-display.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | 4 | <input 5 | [formControl]="inputFormControl" 6 | nbInput 7 | type="text" 8 | placeholder="Enter value" 9 | [nbAutocomplete]="auto" /> 10 | 11 | <nb-autocomplete #auto [handleDisplayFn]="viewHandle"> 12 | 13 | <nb-option *ngFor="let option of filteredOptions$ | async" [value]="option"> 14 | {{ option }} 15 | </nb-option> 16 | 17 | </nb-autocomplete> 18 | 19 | </nb-card-body> 20 | </nb-card> 21 | -------------------------------------------------------------------------------- /src/playground/with-layout/autocomplete/autocomplete-disabled.component.scss: -------------------------------------------------------------------------------- 1 | .label { 2 | display: block; 3 | margin-bottom: 0.5rem; 4 | } 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/autocomplete/autocomplete-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | 4 | <input #autoInput 5 | nbInput 6 | type="text" 7 | (input)="onChange()" 8 | placeholder="Enter value" 9 | [nbAutocomplete]="auto" /> 10 | 11 | <nb-autocomplete #auto (selectedChange)="onSelectionChange($event)"> 12 | 13 | <nb-option *ngFor="let option of filteredOptions$ | async" [value]="option"> 14 | {{ option }} 15 | </nb-option> 16 | 17 | </nb-autocomplete> 18 | 19 | </nb-card-body> 20 | </nb-card> 21 | -------------------------------------------------------------------------------- /src/playground/with-layout/badge/badge-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header style="position: relative;"> 3 | <nb-badge text="new" status="success" position="top right"></nb-badge> 4 | <nb-badge text="99+" status="danger" position="top left"></nb-badge> 5 | </nb-card-header> 6 | <nb-card-body> 7 | Card body. 8 | </nb-card-body> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/badge/badge-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-badge-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './badge-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class BadgeShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button-group/button-group-multiple.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-button-group multiple> 4 | <button nbButtonToggle pressed>A</button> 5 | <button nbButtonToggle pressed>B</button> 6 | <button nbButtonToggle>C</button> 7 | </nb-button-group> 8 | </nb-card-body> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/button-group/button-group-multiple.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-group-multiple', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-group-multiple.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonGroupMultipleComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button-group/button-group-showcase.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/themes' as *; 2 | 3 | .text { 4 | margin: 1rem 0 0; 5 | // Set constant line height to prevent text shifting. 6 | line-height: nb-theme(text-subtitle-line-height); 7 | } 8 | 9 | .text-italic { 10 | font-style: italic; 11 | } 12 | 13 | .text-underline { 14 | text-decoration: underline; 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/button-group/button-group-spacing.scss: -------------------------------------------------------------------------------- 1 | nb-button-group { 2 | margin: 0.5rem 0 1rem; 3 | 4 | &:last-child { 5 | margin-bottom: 0; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/button-group/button-group-statuses.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | templateUrl: './button-group-statuses.component.html', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | standalone: false 13 | }) 14 | export class ButtonGroupStatusesComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-full-width.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Full Width</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton fullWidth status="primary">Primary</button> 5 | <button nbButton fullWidth status="success">Success</button> 6 | <button nbButton fullWidth status="info">Info</button> 7 | <button nbButton fullWidth status="warning">Warning</button> 8 | <button nbButton fullWidth status="danger">Danger</button> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-full-width.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-full-width', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-full-width.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonFullWidthComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-hero.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Hero</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton hero status="primary">Primary</button> 5 | <button nbButton hero status="success">Success</button> 6 | <button nbButton hero status="info">Info</button> 7 | <button nbButton hero status="warning">Warning</button> 8 | <button nbButton hero status="danger">Danger</button> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-hero.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-hero', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-hero.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonHeroComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-icon.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button with Icon</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton status="primary"><nb-icon icon="star"></nb-icon>Primary</button> 5 | <button nbButton status="success">Success<nb-icon icon="star"></nb-icon></button> 6 | <button nbButton status="danger"><nb-icon icon="star"></nb-icon></button> 7 | <button nbButton ghost status="danger"><nb-icon icon="star"></nb-icon></button> 8 | </nb-card-body> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-icon.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-icon', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-icon.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonIconComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-outline.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Outline</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton outline status="primary">Primary</button> 5 | <button nbButton outline status="success">Success</button> 6 | <button nbButton outline status="info">Info</button> 7 | <button nbButton outline status="warning">Warning</button> 8 | <button nbButton outline status="danger">Danger</button> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-outline.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-outline', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-outline.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonOutlineComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-shapes.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Shapes</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton shape="rectangle" status="primary">Rectangle Hero</button> 5 | <button nbButton shape="semi-round" status="info">Semi-round Outline</button> 6 | <button nbButton shape="round" size="small" status="success">Round Small</button> 7 | </nb-card-body> 8 | </nb-card> 9 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-shapes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-shapes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-shapes.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonShapesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton>Active</button> 5 | <button nbButton disabled>Disabled</button> 6 | </nb-card-body> 7 | </nb-card> 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-sizes.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Sizes</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button nbButton size="tiny">tiny</button> 5 | <button nbButton size="small">small</button> 6 | <button nbButton size="medium">medium</button> 7 | <button nbButton size="large">large</button> 8 | <button nbButton size="giant">giant</button> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-button-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './button-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class ButtonSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/button/button-types.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Button Elements</nb-card-header> 3 | <nb-card-body class="example-items-rows"> 4 | <button (click)="onClick()" nbButton>Button</button> 5 | <input (click)="onClick()" nbButton type="submit" value="Input Submit"/> 6 | <input (click)="onClick()" nbButton type="button" value="Input Button"/> 7 | <a (click)="onClick()" href="#" nbButton>Link</a> 8 | </nb-card-body> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-accents.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-accents', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './card-accents.component.html', 13 | standalone: false 14 | }) 15 | export class CardAccentsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-colors.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-colors', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './card-colors.component.html', 13 | standalone: false 14 | }) 15 | export class CardColorsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-full.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Nebula</nb-card-header> 3 | <nb-card-body> 4 | A nebula is an interstellar cloud of dust, hydrogen, helium and other ionized gases. 5 | Originally, nebula was a name for any diffuse astronomical object, 6 | including galaxies beyond the Milky Way. 7 | </nb-card-body> 8 | <nb-card-footer>By Wikipedia</nb-card-footer> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-full.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-full', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './card-full.component.html', 13 | standalone: false 14 | }) 15 | export class CardFullComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | A nebula is an interstellar cloud of dust, hydrogen, helium and other ionized gases. 4 | Originally, nebula was a name for any diffuse astronomical object, 5 | including galaxies beyond the Milky Way. 6 | </nb-card-body> 7 | </nb-card> 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './card-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class CardShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-sizes-combinations.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | max-height: 25rem; 4 | overflow-x: hidden; 5 | overflow-y: auto; 6 | } 7 | 8 | .card-row { 9 | display: flex; 10 | margin: 0 -0.5rem; 11 | } 12 | 13 | .card-col { 14 | flex: 1 0 calc(50% - 1rem); 15 | margin: 0 0.5rem; 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-sizes-combinations.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | templateUrl: './card-sizes-combinations.component.html', 5 | styleUrls: ['./card-sizes-combinations.component.scss'], 6 | standalone: false 7 | }) 8 | export class CardSizesCombinationsComponent {} 9 | -------------------------------------------------------------------------------- /src/playground/with-layout/card/card-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-card-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './card-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class CardSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/chat/chat-custom-message.component.scss: -------------------------------------------------------------------------------- 1 | nb-chat { 2 | width: 500px; 3 | margin: 0 auto; 4 | } 5 | 6 | img { 7 | width: 100%; 8 | height: auto; 9 | } 10 | 11 | .button-custom-message-text { 12 | margin-top: 0; 13 | } 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/chat/chat-drop.component.html: -------------------------------------------------------------------------------- 1 | <nb-chat title="Drag & Drop chat" size="medium"> 2 | <nb-chat-message *ngFor="let msg of messages" 3 | [type]="msg.type" 4 | [message]="msg.text" 5 | [reply]="msg.reply" 6 | [sender]="msg.user.name" 7 | [date]="msg.date" 8 | [files]="msg.files" 9 | [avatar]="msg.user.avatar"> 10 | </nb-chat-message> 11 | <nb-chat-form (send)="sendMessage($event)" [dropFiles]="true"></nb-chat-form> 12 | </nb-chat> 13 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-disabled.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body class="example-items-rows"> 3 | <nb-checkbox disabled>Disabled</nb-checkbox> 4 | <nb-checkbox [checked]="true" indeterminate disabled>Indeterminate disabled</nb-checkbox> 5 | <nb-checkbox [checked]="true" disabled>Checked disabled</nb-checkbox> 6 | </nb-card-body> 7 | </nb-card> 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-disabled.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-checkbox-disabled', 5 | templateUrl: './checkbox-disabled.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class CheckboxDisabledComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-checkbox (checkedChange)="toggle($event)">Toggle me</nb-checkbox> 4 | </nb-card-body> 5 | <nb-card-body> 6 | <label>Checked:</label> {{ checked }} 7 | </nb-card-body> 8 | </nb-card> 9 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-checkbox-showcase', 5 | templateUrl: './checkbox-showcase.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class CheckboxShowcaseComponent { 10 | 11 | checked = false; 12 | 13 | toggle(checked: boolean) { 14 | this.checked = checked; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-status.component.scss: -------------------------------------------------------------------------------- 1 | nb-card-body.example-items-rows { 2 | align-items: center; 3 | } 4 | 5 | nb-checkbox:not(:only-child) { 6 | margin-right: 1.5rem; 7 | } 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/checkbox/checkbox-status.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-checkbox-status', 5 | templateUrl: './checkbox-status.component.html', 6 | styleUrls: ['./checkbox-status.component.scss'], 7 | standalone: false 8 | }) 9 | export class CheckboxStatusComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/dialog/dialog-common.scss: -------------------------------------------------------------------------------- 1 | ::ng-deep { 2 | nb-layout-column { 3 | height: 80vw; 4 | } 5 | 6 | button + button { 7 | margin-left: 1rem; 8 | } 9 | 10 | .dialog-card { 11 | margin-left: auto; 12 | margin-right: auto; 13 | width: 90%; 14 | } 15 | 16 | @media (min-width: 40rem) { 17 | .dialog-card { 18 | width: 38rem; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/playground/with-layout/flip-card/flip-card-accents.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-flip-card-accents', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './flip-card-accents.component.html', 13 | standalone: false 14 | }) 15 | export class FlipCardAccentsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/flip-card/flip-card-colors.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-flip-card-colors', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './flip-card-colors.component.html', 13 | standalone: false 14 | }) 15 | export class FlipCardColorsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/flip-card/flip-card-full.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-flip-card-full', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './flip-card-full.component.html', 13 | standalone: false 14 | }) 15 | export class FlipCardFullComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/flip-card/flip-card-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-flip-card-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './flip-card-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class FlipCardShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/flip-card/flip-card-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-flip-card-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './flip-card-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class FlipCardSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/form-field/form-field-input.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | template: ` 5 | <nb-card size="small"> 6 | <nb-card-body> 7 | 8 | <nb-form-field> 9 | <nb-icon nbPrefix icon="at-outline" pack="eva"></nb-icon> 10 | <input type="text" nbInput> 11 | </nb-form-field> 12 | 13 | </nb-card-body> 14 | </nb-card> 15 | `, 16 | standalone: false 17 | }) 18 | export class FormFieldInputComponent { 19 | } 20 | -------------------------------------------------------------------------------- /src/playground/with-layout/icon/icon-colors.component.scss: -------------------------------------------------------------------------------- 1 | .control-status-example { 2 | padding: 0.25rem; 3 | margin: 0.25rem; 4 | } 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/icon/icon-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body class="example-items-rows"> 3 | <nb-icon icon="heart-outline"></nb-icon> 4 | <nb-icon icon="star"></nb-icon> 5 | </nb-card-body> 6 | </nb-card> 7 | -------------------------------------------------------------------------------- /src/playground/with-layout/icon/icon-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-icon-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './icon-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class IconShowcaseComponent { 16 | 17 | constructor() { } 18 | } 19 | -------------------------------------------------------------------------------- /src/playground/with-layout/infinite-list/components/news-post-placeholder.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, HostBinding } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-news-post-placeholder', 5 | template: ` 6 | <div class="title-placeholder"></div> 7 | <div class="text-placeholder"></div> 8 | <div class="link-placeholder"></div> 9 | `, 10 | styleUrls: ['../news-post-placeholder.component.scss'], 11 | standalone: false 12 | }) 13 | export class NewsPostPlaceholderComponent { 14 | @HostBinding('attr.aria-label') 15 | label = 'Loading'; 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/infinite-list/components/news-post.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { NewsPost } from '../news.service'; 3 | 4 | @Component({ 5 | selector: 'nb-news-post', 6 | template: ` 7 | <article> 8 | <h2 class="h5">{{post.title}}</h2> 9 | <p>{{post.text}}</p> 10 | <a [attr.href]="post.link">Read full article</a> 11 | </article> 12 | `, 13 | standalone: false 14 | }) 15 | export class NewsPostComponent { 16 | @Input() 17 | post: NewsPost; 18 | } 19 | -------------------------------------------------------------------------------- /src/playground/with-layout/infinite-list/infinite-list-scroll-modes.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | } 4 | 5 | nb-card { 6 | flex: 1 1 45%; 7 | margin: 0 2.5%; 8 | 9 | &.own-scroll { 10 | height: 30rem; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/playground/with-layout/infinite-list/infinite-news-list.component.scss: -------------------------------------------------------------------------------- 1 | ::ng-deep body { 2 | height: 30rem; 3 | } 4 | 5 | :host { 6 | display: block; 7 | margin: 0 auto; 8 | max-width: 50rem; 9 | } 10 | 11 | .nb-spinner-container { 12 | flex: 1 0 4rem; 13 | } 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/infinite-list/news-post-placeholder.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/themes' as *; 2 | 3 | :host { 4 | display: block; 5 | width: 100%; 6 | } 7 | 8 | .title-placeholder { 9 | height: 1.8rem; 10 | margin-bottom: 0.5rem; 11 | width: 80%; 12 | } 13 | .text-placeholder { 14 | height: 4rem; 15 | margin-bottom: 1rem; 16 | } 17 | .link-placeholder { 18 | height: 1.25rem; 19 | width: 5rem; 20 | } 21 | 22 | @include nb-install-component() { 23 | [class$='placeholder'] { 24 | background: nb-theme(background-basic-color-4); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/playground/with-layout/input/input-colors.component.scss: -------------------------------------------------------------------------------- 1 | nb-card-body.example-items-col { 2 | align-items: stretch; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/list/fruits-list.ts: -------------------------------------------------------------------------------- 1 | export const fruits: string[] = [ 2 | 'Lemons', 3 | 'Raspberries', 4 | 'Strawberries', 5 | 'Blackberries', 6 | 'Kiwis', 7 | 'Grapefruit', 8 | 'Avocado', 9 | 'Watermelon', 10 | 'Cantaloupe', 11 | 'Oranges', 12 | 'Peaches', 13 | ]; 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/list/simple-list-showcase.component.scss: -------------------------------------------------------------------------------- 1 | nb-card { 2 | min-width: 10rem; 3 | max-width: 20rem; 4 | margin: 0 auto 2rem; 5 | } 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-autocollapse.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-menu [items]="items" autoCollapse="true"> 3 | </nb-menu> 4 | </nb-card> 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-badge.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-menu [items]="items"> 3 | </nb-menu> 4 | </nb-card> 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-badge.component.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | nb-card { 8 | width: 20rem; 9 | } 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-children.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-menu [items]="items"> 3 | </nb-menu> 4 | </nb-card> 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-link-params.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-menu [items]="items"> 3 | </nb-menu> 4 | </nb-card> 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-service.component.scss: -------------------------------------------------------------------------------- 1 | [nbButton] { 2 | margin-right: 1rem; 3 | margin-bottom: 1rem; 4 | } 5 | h3 { 6 | margin-top: 1rem; 7 | margin-bottom: 1rem; 8 | } 9 | 10 | .control-panel { 11 | padding: 2rem; 12 | } 13 | -------------------------------------------------------------------------------- /src/playground/with-layout/menu/menu-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-menu [items]="items"> 3 | </nb-menu> 4 | </nb-card> 5 | -------------------------------------------------------------------------------- /src/playground/with-layout/oauth2-password/oauth2-password-login.component.scss: -------------------------------------------------------------------------------- 1 | :host nb-auth-block { 2 | margin: 0 auto; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-custom-component.component.html: -------------------------------------------------------------------------------- 1 | <button nbButton 2 | [nbPopover]="customComponent" 3 | [nbPopoverContext]="{text: 'Example context'}"> 4 | Custom component 5 | </button> 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-dynamic.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | .margin-bottom-0 { 6 | margin-bottom: 0; 7 | } 8 | .section { 9 | margin-bottom: 2rem; 10 | } 11 | .popover-container { 12 | display: flex; 13 | justify-content: center; 14 | padding: 12rem; 15 | } 16 | button { 17 | margin-right: 1rem; 18 | margin-top: 1rem; 19 | } 20 | 21 | ::ng-deep nb-popover nb-card { 22 | box-shadow: none !important; 23 | } 24 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-modes.component.html: -------------------------------------------------------------------------------- 1 | <div class="btn-group btn-divided-group btn-outline-divided-group"> 2 | <button nbButton nbPopover="Click Mode" nbPopoverTrigger="click" nbPopoverPlacement="bottom"> 3 | Click Mode 4 | </button> 5 | 6 | <button nbButton nbPopover="Hint Mode" nbPopoverTrigger="hint" nbPopoverPlacement="bottom"> 7 | Hint Mode 8 | </button> 9 | 10 | <button nbButton nbPopover="Hover Mode" nbPopoverTrigger="hover" nbPopoverPlacement="bottom"> 11 | Hover Mode 12 | </button> 13 | </div> 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-noop.component.html: -------------------------------------------------------------------------------- 1 | <input placeholder="Enter your username" nbInput nbPopover="Username is already taken" nbPopoverTrigger="noop"> 2 | 3 | <div> 4 | <button nbButton size="small" status="success" (click)="open()">Open Popover</button> 5 | <button nbButton size="small" status="danger" (click)="close()">Close Popover</button> 6 | </div> 7 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-showcase.component.html: -------------------------------------------------------------------------------- 1 | <button nbButton nbPopover="Hi, I'm popover!" nbPopoverPlacement="bottom">Open Popover</button> 2 | -------------------------------------------------------------------------------- /src/playground/with-layout/popover/popover-template-ref.component.html: -------------------------------------------------------------------------------- 1 | <button nbButton 2 | [nbPopover]="template" 3 | [nbPopoverContext]="{ text: 'Example context' }" 4 | nbPopoverPlacement="right"> 5 | Template Ref 6 | </button> 7 | 8 | <ng-template #template let-data> 9 | <nb-card class="popover-card"> 10 | <nb-card-body> 11 | <span>Template Ref with context: {{ data.text }}</span> 12 | </nb-card-body> 13 | </nb-card> 14 | </ng-template> 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-interactive.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <div class="container"> 4 | <nb-actions size="medium"> 5 | <nb-action icon="minus-outline" (click)="setValue(value - 25)"></nb-action> 6 | </nb-actions> 7 | <nb-progress-bar [value]="value" [status]="status" [displayValue]="true"></nb-progress-bar> 8 | <nb-actions size="medium"> 9 | <nb-action icon="plus-outline" (click)="setValue(value + 25)"></nb-action> 10 | </nb-actions> 11 | </div> 12 | </nb-card-body> 13 | </nb-card> 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-progress-bar [value]="40"></nb-progress-bar> 4 | </nb-card-body> 5 | </nb-card> 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-progress-bar-showcase', 5 | templateUrl: './progress-bar-showcase.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class ProgressBarShowcaseComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-size.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-progress-bar [value]="20" size="tiny">tiny</nb-progress-bar> 4 | <nb-progress-bar [value]="40" size="small">small</nb-progress-bar> 5 | <nb-progress-bar [value]="60">medium</nb-progress-bar> 6 | <nb-progress-bar [value]="80" size="large">large</nb-progress-bar> 7 | <nb-progress-bar [value]="100" size="giant">giant</nb-progress-bar> 8 | </nb-card-body> 9 | </nb-card> 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-size.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-progress-bar-size', 5 | templateUrl: './progress-bar-size.component.html', 6 | styles: [` 7 | nb-progress-bar ~ nb-progress-bar { 8 | margin-top: 1rem; 9 | } 10 | `], 11 | standalone: false 12 | }) 13 | 14 | export class ProgressBarSizeComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-status.component.scss: -------------------------------------------------------------------------------- 1 | nb-progress-bar ~ nb-progress-bar { 2 | margin-top: 1rem; 3 | } 4 | 5 | .control-status-example { 6 | margin-top: 1rem; 7 | } 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-status.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-progress-bar-status', 5 | templateUrl: './progress-bar-status.component.html', 6 | styleUrls: ['./progress-bar-status.component.scss'], 7 | standalone: false 8 | }) 9 | 10 | export class ProgressBarStatusComponent { 11 | } 12 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-value.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-progress-bar [value]="40" status="primary" [displayValue]="true"></nb-progress-bar> 4 | <nb-progress-bar [value]="60" status="primary">Custom value</nb-progress-bar> 5 | </nb-card-body> 6 | </nb-card> 7 | -------------------------------------------------------------------------------- /src/playground/with-layout/progress-bar/progress-bar-value.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-progress-bar-value', 5 | templateUrl: './progress-bar-value.component.html', 6 | styles: [` 7 | nb-progress-bar ~ nb-progress-bar { 8 | margin-top: 1rem; 9 | } 10 | `], 11 | standalone: false 12 | }) 13 | 14 | export class ProgressBarValueComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/radio/radio-disabled.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Selected Option: {{ option }}</nb-card-header> 3 | <nb-card-body> 4 | 5 | <nb-radio-group [(ngModel)]="option"> 6 | <nb-radio 7 | *ngFor="let option of options" 8 | [disabled]="option.disabled" 9 | [value]="option.value"> 10 | {{ option.label }} 11 | </nb-radio> 12 | </nb-radio-group> 13 | 14 | </nb-card-body> 15 | </nb-card> 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/radio/radio-form.component.scss: -------------------------------------------------------------------------------- 1 | p { 2 | margin-top: 0; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/radio/radio-form.component.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 2 | import { FormControl } from '@angular/forms'; 3 | 4 | @Component({ 5 | templateUrl: './radio-form.component.html', 6 | styleUrls: ['./radio-form.component.scss'], 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | standalone: false 9 | }) 10 | export class RadioFormComponent { 11 | 12 | ngModelValue = '1'; 13 | formControl = new FormControl('1'); 14 | } 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/radio/radio-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-header>Selected Option: {{ option }}</nb-card-header> 3 | <nb-card-body> 4 | 5 | <nb-radio-group [(ngModel)]="option"> 6 | <nb-radio 7 | *ngFor="let option of options" 8 | [value]="option.value"> 9 | {{ option.label }} 10 | </nb-radio> 11 | </nb-radio-group> 12 | 13 | </nb-card-body> 14 | </nb-card> 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/radio/radio-statuses-group.component.scss: -------------------------------------------------------------------------------- 1 | nb-radio-group { 2 | padding: 1rem; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/reveal-card/reveal-card-accents.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-reveal-card-accents', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './reveal-card-accents.component.html', 13 | standalone: false 14 | }) 15 | export class RevealCardAccentsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/reveal-card/reveal-card-colors.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-reveal-card-colors', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './reveal-card-colors.component.html', 13 | standalone: false 14 | }) 15 | export class RevealCardColorsComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/reveal-card/reveal-card-full.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-reveal-card-full', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './reveal-card-full.component.html', 13 | standalone: false 14 | }) 15 | export class RevealCardFullComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/reveal-card/reveal-card-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-reveal-card-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './reveal-card-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class RevealCardShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/reveal-card/reveal-card-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-reveal-card-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './reveal-card-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class RevealCardSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-clean.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-clean', 11 | templateUrl: './select-clean.component.html', 12 | standalone: false 13 | }) 14 | export class SelectCleanComponent {} 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-disabled.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-disabled', 11 | templateUrl: './select-disabled.component.html', 12 | standalone: false 13 | }) 14 | export class SelectDisabledComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-filled.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-filled', 11 | templateUrl: './select-filled.component.html', 12 | standalone: false 13 | }) 14 | export class SelectFilledComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-groups.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-groups', 11 | templateUrl: './select-groups.component.html', 12 | standalone: false 13 | }) 14 | export class SelectGroupsComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-hero.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-hero', 11 | templateUrl: './select-hero.component.html', 12 | standalone: false 13 | }) 14 | export class SelectHeroComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-label.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | <nb-select placeholder="Custom label" [(selected)]="selectedItem"> 4 | <nb-select-label> 5 | Selected: {{ selectedItem }} 6 | </nb-select-label> 7 | 8 | <nb-option value="1">Option 1</nb-option> 9 | <nb-option value="2">Option 2</nb-option> 10 | <nb-option value="3">Option 3</nb-option> 11 | <nb-option value="4">Option 4</nb-option> 12 | </nb-select> 13 | </nb-card-body> 14 | </nb-card> 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-label.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-label-showcase', 11 | templateUrl: './select-label.component.html', 12 | standalone: false 13 | }) 14 | export class SelectLabelShowcaseComponent { 15 | selectedItem; 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-multiple.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | <nb-select multiple placeholder="Multiple Select"> 4 | <nb-option value="1">Option 1</nb-option> 5 | <nb-option value="2">Option 2</nb-option> 6 | <nb-option value="3">Option 3</nb-option> 7 | <nb-option value="4">Option 4</nb-option> 8 | </nb-select> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-multiple.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-multiple', 11 | templateUrl: './select-multiple.component.html', 12 | standalone: false 13 | }) 14 | export class SelectMultipleComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-placeholder.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | <nb-select placeholder="Placeholder"> 4 | <nb-option value="1">Option 1</nb-option> 5 | <nb-option value="2">Option 2</nb-option> 6 | <nb-option value="3">Option 3</nb-option> 7 | <nb-option value="4">Option 4</nb-option> 8 | </nb-select> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-placeholder.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-placeholder', 11 | templateUrl: './select-placeholder.component.html', 12 | standalone: false 13 | }) 14 | export class SelectPlaceholderComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-shapes.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-shapes', 11 | templateUrl: './select-shapes.component.html', 12 | standalone: false 13 | }) 14 | export class SelectShapeComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="small"> 2 | <nb-card-body> 3 | <nb-select placeholder="Select Showcase" [(selected)]="selectedItem"> 4 | <nb-option value="">Option empty</nb-option> 5 | <nb-option value="0">Option 0</nb-option> 6 | <nb-option value="1">Option 1</nb-option> 7 | <nb-option value="2">Option 2</nb-option> 8 | <nb-option value="3">Option 3</nb-option> 9 | <nb-option value="4">Option 4</nb-option> 10 | </nb-select> 11 | </nb-card-body> 12 | </nb-card> 13 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-showcase', 11 | templateUrl: './select-showcase.component.html', 12 | standalone: false 13 | }) 14 | export class SelectShowcaseComponent { 15 | selectedItem = '2'; 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-sizes.component.html: -------------------------------------------------------------------------------- 1 | <nb-card size="medium"> 2 | <nb-card-body class="example-items-col"> 3 | <nb-select [placeholder]="size" [size]="size" *ngFor="let size of sizes"> 4 | <nb-option value="1">Option 1</nb-option> 5 | <nb-option value="2">Option 2</nb-option> 6 | <nb-option value="3">Option 3</nb-option> 7 | <nb-option value="4">Option 4</nb-option> 8 | </nb-select> 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-status.component.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-select-status', 11 | templateUrl: './select-status.component.html', 12 | standalone: false 13 | }) 14 | export class SelectStatusComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/select/select-test.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbComponentSize } from '@nebular/theme'; 3 | 4 | @Component({ 5 | template: ` 6 | <h1>Empty select height test</h1> 7 | <nb-select *ngFor="let size of sizes" [size]="size"></nb-select> 8 | `, 9 | styles: [` 10 | nb-select { 11 | display: block; 12 | } 13 | `], 14 | standalone: false 15 | }) 16 | export class SelectTestComponent { 17 | sizes: NbComponentSize[] = [ 'tiny', 'small', 'medium', 'large', 'giant' ]; 18 | } 19 | -------------------------------------------------------------------------------- /src/playground/with-layout/spinner/spinner-colors.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/themes' as *; 2 | 3 | .control-status-example { 4 | color: nb-theme(color-basic-100); 5 | } 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/spinner/spinner-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-spinner-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './spinner-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class SpinnerSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-disabled-step-nav.component.scss: -------------------------------------------------------------------------------- 1 | .prev-button { 2 | margin-right: 1rem; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-linear.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-stepper-linear', 5 | styleUrls: ['stepper-playground.component.scss'], 6 | templateUrl: './stepper-linear.component.html', 7 | standalone: false 8 | }) 9 | export class StepperLinearComponent { 10 | linearMode = true; 11 | 12 | toggleLinearMode() { 13 | this.linearMode = !this.linearMode; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-playground.component.scss: -------------------------------------------------------------------------------- 1 | :host ::ng-deep nb-stepper .step-content { 2 | text-align: center; 3 | button { 4 | cursor: pointer; 5 | margin: 0.5rem; 6 | } 7 | } 8 | 9 | .lorem { 10 | text-align: justify; 11 | margin-bottom: 2rem; 12 | } 13 | 14 | .input-group { 15 | padding-bottom: 1rem; 16 | } 17 | 18 | .linear-mode-button { 19 | margin-bottom: 1rem; 20 | } 21 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-stepper-showcase', 5 | styleUrls: ['stepper-playground.component.scss'], 6 | templateUrl: './stepper-showcase.component.html', 7 | standalone: false 8 | }) 9 | 10 | export class StepperShowcaseComponent { 11 | } 12 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-step-change-event.component.scss: -------------------------------------------------------------------------------- 1 | button { 2 | margin: 0.5rem; 3 | } 4 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-step-change-event.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbStepChangeEvent } from '@nebular/theme'; 3 | 4 | @Component({ 5 | templateUrl: './stepper-step-change-event.component.html', 6 | styleUrls: ['./stepper-step-change-event.component.scss'], 7 | standalone: false 8 | }) 9 | export class StepperStepChangeEventComponent { 10 | changeEvent: NbStepChangeEvent; 11 | 12 | handleStepChange(e: NbStepChangeEvent): void { 13 | this.changeEvent = e; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/stepper/stepper-vertical.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-stepper-vertical', 5 | styleUrls: ['stepper-playground.component.scss'], 6 | templateUrl: './stepper-vertical.component.html', 7 | standalone: false 8 | }) 9 | 10 | export class StepperVerticalComponent { 11 | } 12 | -------------------------------------------------------------------------------- /src/playground/with-layout/tabset/tabset-disabled.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-tabset> 5 | <nb-tab tabTitle="Users"> 6 | <p>List of <strong>users</strong>.</p> 7 | </nb-tab> 8 | <nb-tab tabTitle="Orders"> 9 | <p>List of <strong>orders</strong>.</p> 10 | </nb-tab> 11 | <nb-tab tabTitle="Disabled Tab" disabled> 12 | </nb-tab> 13 | </nb-tabset> 14 | 15 | </nb-card-body> 16 | </nb-card> 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/tabset/tabset-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-tabset> 5 | <nb-tab tabTitle="Users"> 6 | <p>List of <strong>users</strong>.</p> 7 | </nb-tab> 8 | <nb-tab tabTitle="Orders"> 9 | <p>List of <strong>orders</strong>.</p> 10 | </nb-tab> 11 | <nb-tab tabTitle="Transactions" disabled> 12 | <p>List of <strong>transactions</strong>.</p> 13 | </nb-tab> 14 | </nb-tabset> 15 | 16 | </nb-card-body> 17 | </nb-card> 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/tabset/tabset-template-title.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <nb-tabset> 4 | <nb-tab> 5 | <ng-template nbTabTitle> 6 | <span>Orders</span> 7 | </ng-template> 8 | <p>List of <strong>orders</strong>.</p> 9 | </nb-tab> 10 | <nb-tab> 11 | <span *nbTabTitle>Transactions</span> 12 | <p>List of <strong>transactions</strong>.</p> 13 | </nb-tab> 14 | </nb-tabset> 15 | </nb-card-body> 16 | </nb-card> 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/tabset/tabset-width.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-tabset fullWidth> 5 | <nb-tab tabTitle="Users"> 6 | <p>List of <strong>users</strong>.</p> 7 | </nb-tab> 8 | <nb-tab tabTitle="Orders"> 9 | <p>List of <strong>orders</strong>.</p> 10 | </nb-tab> 11 | </nb-tabset> 12 | 13 | </nb-card-body> 14 | </nb-card> 15 | -------------------------------------------------------------------------------- /src/playground/with-layout/tag/tag-appearance.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body class="example-items-col"> 3 | 4 | <nb-tag-list> 5 | <nb-tag appearance="filled" *ngFor="let tree of trees" [text]="tree" status="primary"></nb-tag> 6 | </nb-tag-list> 7 | 8 | <nb-tag-list> 9 | <nb-tag appearance="outline" *ngFor="let tree of trees" [text]="tree" status="primary"></nb-tag> 10 | </nb-tag-list> 11 | 12 | </nb-card-body> 13 | </nb-card> 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/tag/tag-appearance.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | import { trees } from './trees-list'; 10 | 11 | @Component({ 12 | templateUrl: './tag-appearance.component.html', 13 | changeDetection: ChangeDetectionStrategy.OnPush, 14 | standalone: false 15 | }) 16 | export class TagAppearanceComponent { 17 | trees = trees; 18 | } 19 | -------------------------------------------------------------------------------- /src/playground/with-layout/tag/tag-input.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-tag-list (tagRemove)="onTagRemove($event)"> 5 | <nb-tag *ngFor="let tree of trees" [text]="tree" removable></nb-tag> 6 | <input type="text" nbTagInput (tagAdd)="onTagAdd($event)" fullWidth> 7 | </nb-tag-list> 8 | 9 | </nb-card-body> 10 | </nb-card> 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/tag/tag-status.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | templateUrl: './tag-status.component.html', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | standalone: false 13 | }) 14 | export class TagStatusComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/playground/with-layout/tag/trees-list.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export const trees = [ 'Prometheus', 'Methuselah', 'Gran Abuelo', 'Scofield Juniper', 'Panke Baobab', 'Jaya Sri Maha Bodhi' ]; 8 | -------------------------------------------------------------------------------- /src/playground/with-layout/toggle/toggle-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-toggle-showcase', 11 | template: ` 12 | <nb-card> 13 | <nb-card-body> 14 | <nb-toggle></nb-toggle> 15 | </nb-card-body> 16 | </nb-card> 17 | `, 18 | standalone: false 19 | }) 20 | export class ToggleShowcaseComponent { 21 | } 22 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-colors.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | 10 | @Component({ 11 | selector: 'nb-tooltip-colors', 12 | templateUrl: './tooltip-colors.component.html', 13 | styleUrls: ['./tooltip-examples.scss'], 14 | standalone: false 15 | }) 16 | export class TooltipColorsComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-examples.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | height: 100%; 6 | } 7 | 8 | nb-card { 9 | margin: 0; 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-placements.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | 10 | @Component({ 11 | selector: 'nb-tooltip-placements', 12 | templateUrl: './tooltip-placements.component.html', 13 | styleUrls: ['./tooltip-examples.scss'], 14 | standalone: false 15 | }) 16 | export class TooltipPlacementsComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <button nbTooltip="This is a tooltip" nbTooltipStatus="primary" nbButton status="primary">Show Tooltip</button> 4 | </nb-card-body> 5 | </nb-card> 6 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | 10 | @Component({ 11 | selector: 'nb-tooltip-showcase', 12 | templateUrl: './tooltip-showcase.component.html', 13 | styleUrls: ['./tooltip-examples.scss'], 14 | standalone: false 15 | }) 16 | export class TooltipShowcaseComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-with-icon.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body class="example-items-rows"> 3 | <button nbTooltip="This is a tooltip" nbTooltipIcon="home-outline" nbButton>Show Tooltip</button> 4 | 5 | <button nbTooltip nbTooltipIcon="alert-triangle-outline" nbTooltipStatus="danger" nbButton>Show Tooltip</button> 6 | 7 | <button nbTooltip [nbTooltipIcon]="{icon: 'alert-triangle-outline', pack: 'eva'}" nbTooltipStatus="danger" nbButton> 8 | Show Tooltip 9 | </button> 10 | </nb-card-body> 11 | </nb-card> 12 | -------------------------------------------------------------------------------- /src/playground/with-layout/tooltip/tooltip-with-icon.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | 10 | @Component({ 11 | selector: 'nb-tooltip-with-icon', 12 | templateUrl: './tooltip-with-icon.component.html', 13 | styleUrls: ['./tooltip-examples.scss'], 14 | standalone: false 15 | }) 16 | export class TooltipWithIconComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/tree-grid/tree-grid-custom-icons.component.scss: -------------------------------------------------------------------------------- 1 | button { 2 | background: transparent; 3 | border: none; 4 | padding: 0; 5 | } 6 | 7 | .nb-column-name nb-icon { 8 | vertical-align: bottom; 9 | } 10 | -------------------------------------------------------------------------------- /src/playground/with-layout/tree-grid/tree-grid-shared.scss: -------------------------------------------------------------------------------- 1 | ::ng-deep { 2 | body { 3 | min-height: 20rem; 4 | } 5 | 6 | .nb-tree-grid-header-cell, 7 | .nb-tree-grid-header-cell button { 8 | text-transform: capitalize; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/with-layout/user/user-hide-captions.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-user-hide-captions', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './user-hide-captions.component.html', 13 | standalone: false 14 | }) 15 | export class UserHideCaptionsComponent { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/with-layout/user/user-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | 4 | <nb-user size="large" 5 | name="John Doe" 6 | title="Engineer" 7 | badgeText="99+" 8 | badgeStatus="success" 9 | badgePosition="bottom right"> 10 | </nb-user> 11 | 12 | </nb-card-body> 13 | </nb-card> 14 | -------------------------------------------------------------------------------- /src/playground/with-layout/user/user-showcase.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-user-showcase', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './user-showcase.component.html', 13 | standalone: false 14 | }) 15 | export class UserShowcaseComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/user/user-sizes.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-user-sizes', 11 | changeDetection: ChangeDetectionStrategy.OnPush, 12 | templateUrl: './user-sizes.component.html', 13 | standalone: false 14 | }) 15 | export class UserSizesComponent { 16 | } 17 | -------------------------------------------------------------------------------- /src/playground/with-layout/window/window-controls.component.html: -------------------------------------------------------------------------------- 1 | <nb-card> 2 | <nb-card-body> 3 | <p class="subtitle config-title">Buttons config:</p> 4 | <nb-checkbox [(checked)]="minimize">Minimize</nb-checkbox> 5 | <nb-checkbox [(checked)]="maximize">Maximize</nb-checkbox> 6 | <nb-checkbox [(checked)]="fullScreen">Full Screen</nb-checkbox> 7 | <nb-checkbox [(checked)]="close">Close</nb-checkbox> 8 | 9 | <button (click)="openWindow()" nbButton class="open-window">Open window</button> 10 | </nb-card-body> 11 | </nb-card> 12 | -------------------------------------------------------------------------------- /src/playground/with-layout/window/window-controls.component.scss: -------------------------------------------------------------------------------- 1 | .config-title { 2 | margin-top: 0; 3 | margin-bottom: 0.25rem; 4 | } 5 | 6 | nb-checkbox { 7 | display: block; 8 | } 9 | 10 | .open-window { 11 | margin-top: 1rem; 12 | } 13 | -------------------------------------------------------------------------------- /src/playground/with-layout/window/window.scss: -------------------------------------------------------------------------------- 1 | ::ng-deep nb-layout-column { 2 | height: 400px; 3 | } 4 | 5 | ::ng-deep .form { 6 | display: flex; 7 | flex-direction: column; 8 | 9 | .text-label { 10 | margin-top: 1.5rem; 11 | } 12 | 13 | button { 14 | margin-top: 1.5rem; 15 | } 16 | } 17 | 18 | button + button { 19 | margin-left: 2rem; 20 | } 21 | -------------------------------------------------------------------------------- /src/playground/without-layout/auth/api-calls/wine.ts: -------------------------------------------------------------------------------- 1 | export interface Wine { 2 | id: number; 3 | name: string; 4 | region: string; 5 | year: number 6 | } 7 | -------------------------------------------------------------------------------- /src/playground/without-layout/auth/auth.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-playground-auth', 11 | template: ` 12 | <router-outlet></router-outlet> 13 | `, 14 | standalone: false 15 | }) 16 | export class AuthPlaygroundComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-click.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header> 3 | <nb-user name="Nikita Poltoratsky" 4 | title="full-stack developer" 5 | [nbContextMenu]="items" 6 | nbContextMenuTag="my-context-menu"> 7 | </nb-user> 8 | </nb-layout-header> 9 | <nb-layout-column class="colored-column-basic">Hello World!</nb-layout-column> 10 | </nb-layout> 11 | 12 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-modes.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-column> 3 | <button nbButton [nbContextMenu]="items" nbContextMenuTrigger="click"> 4 | Click Mode 5 | </button> 6 | 7 | <button nbButton [nbContextMenu]="items" nbContextMenuTrigger="focus"> 8 | Focus (Tab) Mode 9 | </button> 10 | 11 | <button nbButton [nbContextMenu]="items" nbContextMenuTrigger="hover"> 12 | Hover Mode 13 | </button> 14 | </nb-layout-column> 15 | </nb-layout> 16 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-noop.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-column> 3 | <button class="menu-target" nbButton [nbContextMenu]="items" nbContextMenuTrigger="noop">Menu Target</button> 4 | 5 | <div> 6 | <button nbButton size="small" status="success" (click)="open()">Open Context Menu</button> 7 | <button nbButton size="small" status="danger" (click)="close()">Close Context Menu</button> 8 | </div> 9 | </nb-layout-column> 10 | </nb-layout> 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-right-click.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-column class="colored-column-basic"> 3 | <button class="menu-target" 4 | nbButton 5 | [nbContextMenu]="items" 6 | nbContextMenuTrigger="noop" 7 | (contextmenu)="open()"> 8 | Right Click 9 | </button> 10 | </nb-layout-column> 11 | </nb-layout> 12 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header> 3 | <button outline nbButton [nbContextMenu]="items"> 4 | Show Menu 5 | </button> 6 | </nb-layout-header> 7 | <nb-layout-column class="colored-column-basic">Hello World!</nb-layout-column> 8 | </nb-layout> 9 | 10 | -------------------------------------------------------------------------------- /src/playground/without-layout/context-menu/context-menu-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-context-menu-showcase', 5 | templateUrl: './context-menu-showcase.component.html', 6 | styles: [` 7 | :host nb-layout-header ::ng-deep nav { 8 | justify-content: flex-end; 9 | } 10 | `], 11 | standalone: false 12 | }) 13 | 14 | export class ContextMenuShowcaseComponent { 15 | items = [ 16 | { title: 'Profile' }, 17 | { title: 'Logout' }, 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /src/playground/without-layout/firebase/firebase-api.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { AngularFireDatabase } from '@angular/fire/compat/database'; 3 | 4 | @Injectable() 5 | export class FirebaseAPIService { 6 | constructor(private db: AngularFireDatabase) {} 7 | 8 | getGreeting() { 9 | return this.db.object('/greeting/').valueChanges(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/playground/without-layout/firebase/firebase-playground.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { Component } from '@angular/core'; 8 | 9 | @Component({ 10 | selector: 'nb-firebase-playground', 11 | template: ` 12 | <router-outlet></router-outlet> 13 | `, 14 | standalone: false 15 | }) 16 | export class FirebasePlaygroundComponent { 17 | } 18 | -------------------------------------------------------------------------------- /src/playground/without-layout/firebase/identity-proders-auth-showcase/identity-providers-auth-showcase.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/src/playground/without-layout/firebase/identity-proders-auth-showcase/identity-providers-auth-showcase.component.scss -------------------------------------------------------------------------------- /src/playground/without-layout/firebase/password-auth-showcase/password-auth-showcase.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akveo/nebular/192a0de5b100a3f37880464ac7872ebbb749d008/src/playground/without-layout/firebase/password-auth-showcase/password-auth-showcase.component.scss -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-column-left.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-column class="colored-column-warning">Second</nb-layout-column> 3 | <nb-layout-column class="colored-column-info">Third</nb-layout-column> 4 | <nb-layout-column left class="colored-column-success">First (but third in template)</nb-layout-column> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-column-left.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-layout-column-left', 5 | templateUrl: './layout-column-left.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class LayoutColumnLeftComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-fixed-header.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header fixed>Awesome Company</nb-layout-header> 3 | <nb-layout-column class="colored-column-basic">Hello World!</nb-layout-column> 4 | </nb-layout> 5 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-fixed-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-layout-fixed-header', 5 | templateUrl: './layout-fixed-header.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class LayoutFixedHeaderComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header>Awesome Company</nb-layout-header> 3 | <nb-layout-column class="colored-column-warning">Left column</nb-layout-column> 4 | <nb-layout-column class="colored-column-danger">Right column</nb-layout-column> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-layout-showcase', 5 | templateUrl: './layout-showcase.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class LayoutShowcaseComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-sidebar-subheader.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | 3 | <nb-layout-header subheader> 4 | <a href="#" (click)="toggle()"><i class="nb-menu"></i></a> 5 | </nb-layout-header> 6 | 7 | <nb-sidebar></nb-sidebar> 8 | 9 | <nb-layout-column class="colored-column-basic">Layout Content</nb-layout-column> 10 | </nb-layout> 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-sidebar-subheader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbSidebarService } from '@nebular/theme'; 3 | 4 | @Component({ 5 | selector: 'nb-layout-sidebar-subheader', 6 | templateUrl: './layout-sidebar-subheader.component.html', 7 | standalone: false 8 | }) 9 | 10 | export class LayoutSidebarSubheaderComponent { 11 | 12 | constructor(private sidebarService: NbSidebarService) { 13 | } 14 | 15 | toggle() { 16 | this.sidebarService.toggle(true); 17 | return false; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-subheader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbSidebarService } from '@nebular/theme'; 3 | 4 | @Component({ 5 | selector: 'nb-layout-subheader', 6 | templateUrl: './layout-subheader.component.html', 7 | standalone: false 8 | }) 9 | 10 | export class LayoutSubheaderComponent { 11 | 12 | constructor(private sidebarService: NbSidebarService) { 13 | } 14 | 15 | toggle() { 16 | this.sidebarService.toggle(true); 17 | return false; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-w-footer.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header>Awesome Company</nb-layout-header> 3 | <nb-layout-column class="colored-column-basic">Hello World!</nb-layout-column> 4 | <nb-layout-footer>Contact us</nb-layout-footer> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/layout/layout-w-footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-w-footer-showcase', 5 | templateUrl: './layout-w-footer.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class LayoutWFooterComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/search/search-event.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header fixed> 3 | <nb-search type="rotate-layout"></nb-search> 4 | </nb-layout-header> 5 | <nb-sidebar> 6 | </nb-sidebar> 7 | 8 | <nb-layout-column class="colored-column-basic"> 9 | <nb-card accent="info"> 10 | <nb-card-header>You searched for:</nb-card-header> 11 | <nb-card-body> 12 | <h3>{{ value || '-' }}</h3> 13 | </nb-card-body> 14 | </nb-card> 15 | </nb-layout-column> 16 | </nb-layout> 17 | -------------------------------------------------------------------------------- /src/playground/without-layout/search/search-event.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbSearchService } from '@nebular/theme'; 3 | 4 | @Component({ 5 | selector: 'nb-search-event', 6 | templateUrl: './search-event.component.html', 7 | standalone: false 8 | }) 9 | export class SearchEventComponent { 10 | 11 | value = ''; 12 | 13 | constructor(private searchService: NbSearchService) { 14 | 15 | this.searchService.onSearchSubmit() 16 | .subscribe((data: any) => { 17 | this.value = data.term; 18 | }) 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/playground/without-layout/search/search-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-search-showcase', 5 | templateUrl: './search-showcase.component.html', 6 | standalone: false 7 | }) 8 | export class SearchShowcaseComponent { 9 | } 10 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-compacted.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-sidebar state="compacted"></nb-sidebar> 3 | 4 | <nb-layout-column class="colored-column-primary">Layout Content</nb-layout-column> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-compacted.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-sidebar-compacted', 5 | templateUrl: './sidebar-compacted.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class SidebarCompactedComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-fixed.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header fixed> 3 | <button nbButton status="success" size="tiny" (click)="toggle()">Toggle</button> 4 | </nb-layout-header> 5 | <nb-sidebar fixed></nb-sidebar> 6 | 7 | <nb-layout-column class="colored-column-info">Long layout content so that it is clear that fixed sidebar is shown on top of the content.</nb-layout-column> 8 | </nb-layout> 9 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-fixed.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NbSidebarService } from '@nebular/theme'; 3 | 4 | @Component({ 5 | selector: 'nb-sidebar-fixed', 6 | templateUrl: './sidebar-fixed.component.html', 7 | standalone: false 8 | }) 9 | 10 | export class SidebarFixedComponent { 11 | 12 | constructor(private sidebarService: NbSidebarService) { 13 | } 14 | 15 | toggle() { 16 | this.sidebarService.toggle(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-right.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-sidebar right>Right Sidebar</nb-sidebar> 3 | 4 | <nb-layout-column class="colored-column-warning">Layout Content</nb-layout-column> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-right.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-sidebar-right', 5 | templateUrl: './sidebar-right.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class SidebarRightComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-showcase.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-sidebar>Sidebar Content</nb-sidebar> 3 | 4 | <nb-layout-column class="colored-column-success">Layout Content</nb-layout-column> 5 | </nb-layout> 6 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-showcase.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nb-sidebar-showcase', 5 | templateUrl: './sidebar-showcase.component.html', 6 | standalone: false 7 | }) 8 | 9 | export class SidebarShowcaseComponent { 10 | } 11 | -------------------------------------------------------------------------------- /src/playground/without-layout/sidebar/sidebar-toggle.component.html: -------------------------------------------------------------------------------- 1 | <nb-layout> 2 | <nb-layout-header fixed> 3 | <button nbButton status="success" size="tiny" (click)="toggle()">Toggle</button> 4 | <button nbButton status="info" size="tiny" (click)="toggleCompact()">Toggle Compact</button> 5 | </nb-layout-header> 6 | 7 | <nb-sidebar tag="left"></nb-sidebar> 8 | <nb-sidebar right tag="right"></nb-sidebar> 9 | 10 | <nb-layout-column class="colored-column-warning">Layout Content</nb-layout-column> 11 | </nb-layout> 12 | -------------------------------------------------------------------------------- /src/playground/without-layout/smart-home/auth/login/login.component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | import { Component } from '@angular/core'; 7 | import { NbLoginComponent } from '@nebular/auth'; 8 | 9 | @Component({ 10 | selector: 'ngx-login', 11 | templateUrl: './login.component.html', 12 | standalone: false 13 | }) 14 | export class LoginComponent extends NbLoginComponent { 15 | } 16 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "files": [ 8 | "main.ts", 9 | "polyfills.ts" 10 | ], 11 | "include": [ 12 | "**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/tsconfig.spec-wp.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.spec.json", 3 | "compilerOptions": { 4 | "paths": { 5 | "@nebular/*": [ 6 | "dist/*" 7 | ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine" 7 | ] 8 | }, 9 | "files": [ 10 | "test.ts", 11 | "polyfills.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ], 17 | "exclude": [ 18 | "**/schematics/**/*.spec.ts" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/tsconfig.wp.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.app.json", 3 | "compilerOptions": { 4 | "paths": { 5 | "@nebular/*": [ 6 | "dist/*" 7 | ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tools/deploy-docs/config.ts: -------------------------------------------------------------------------------- 1 | export const REPO_URL = 'https://github.com/akveo/nebular.git'; 2 | export const REPO_OWNER = 'akveo'; 3 | export const REPO_NAME = 'nebular'; 4 | export const OUT_DIR = 'dist/docs'; // Relative to the directory you run command 5 | -------------------------------------------------------------------------------- /tools/deploy-docs/log.ts: -------------------------------------------------------------------------------- 1 | export function log(message: string) { 2 | console.log(message); 3 | } 4 | -------------------------------------------------------------------------------- /tools/deploy-docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": ".", 4 | "module": "commonjs", 5 | "lib": ["es2018"], 6 | "target": "es2018", 7 | "resolveJsonModule": true 8 | }, 9 | "include": [ 10 | "build-docs.ts" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /tools/dev-schematics/new-component/files/__path__/__name@dasherize__/__name@dasherize__.component.__styleext__: -------------------------------------------------------------------------------- 1 | :host { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /tools/dev-schematics/new-component/files/__path__/__name@dasherize__/__name@dasherize__.component.html: -------------------------------------------------------------------------------- 1 | <strong>Hello <%= classify(className) %>Component</strong> 2 | -------------------------------------------------------------------------------- /tools/dev-schematics/new-component/files/__path__/__name@dasherize__/__name@dasherize__.component.theme.__styleext__: -------------------------------------------------------------------------------- 1 | @mixin <%= selector %>-theme() { 2 | <%= selector %> { 3 | font-family: nb-theme(<%= dasherize(name) %>-font-family); 4 | font-size: nb-theme(<%= dasherize(name) %>-font-size); 5 | font-weight: nb-theme(<%= dasherize(name) %>-font-weight); 6 | background: nb-theme(<%= dasherize(name) %>-bg); 7 | color: nb-theme(<%= dasherize(name) %>-fg); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground-components/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema", 3 | "$id": "playground-components", 4 | "type": "object", 5 | "properties": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground-module/files/__path__/__featureModuleFileName__: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NgModule } from '@angular/core'; 8 | import { <%= routingModuleClassName %> } from '<%= routingModuleImportPath %>'; 9 | 10 | @NgModule({ 11 | declarations: [], 12 | imports: [ <%= routingModuleClassName %> ], 13 | }) 14 | export class <%= featureModuleClassName %> {} 15 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground-module/files/__path__/__routingModuleFileName__: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { NgModule } from '@angular/core'; 8 | import { RouterModule, Route} from '@angular/router'; 9 | 10 | const routes: Route[] = []; 11 | 12 | @NgModule({ 13 | imports: [ RouterModule.forChild(routes) ], 14 | exports: [ RouterModule ], 15 | }) 16 | export class <%= routingModuleClassName %> {} 17 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground-module/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import { chain, Rule } from '@angular-devkit/schematics'; 8 | import { generateMissingModules } from './generate-missing-modules'; 9 | import { addToModules } from './add-to-modules'; 10 | 11 | export function playgroundModule(): Rule { 12 | return () => chain([generateMissingModules, addToModules]); 13 | } 14 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground-module/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema", 3 | "$id": "playground-module", 4 | "title": "All playground components to a given module", 5 | "type": "object", 6 | "properties": { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground/index.ts: -------------------------------------------------------------------------------- 1 | import { Rule, chain, schematic } from '@angular-devkit/schematics'; 2 | 3 | export function generatePlayground(): Rule { 4 | return chain([schematic('playground-module', {}), schematic('playground-components', {})]); 5 | } 6 | -------------------------------------------------------------------------------- /tools/dev-schematics/playground/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema", 3 | "$id": "playground", 4 | "type": "object" 5 | } 6 | -------------------------------------------------------------------------------- /tools/dev-schematics/utils/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | export * from './ast'; 8 | export * from './formatting'; 9 | export * from './playground'; 10 | export * from './path'; 11 | export * from './routing'; 12 | export * from './change'; 13 | export * from './strings'; 14 | -------------------------------------------------------------------------------- /tools/gulp/config.ts: -------------------------------------------------------------------------------- 1 | export const SOURCE_DIR = './src/framework'; 2 | export const DIST_DIR = './dist'; 3 | export const DOCS_OUTPUT = './docs/output.json'; 4 | export const EXTENSIONS = ['ts', 'html', 'scss']; 5 | export const DOCS_DIST = './dist/docs'; 6 | export const DEV_SCHEMATICS_PATH = 'tools/dev-schematics'; 7 | export const DOCS_SITE_URL = 'https://akveo.github.io/nebular/'; 8 | export const SCHEMATICS_SPEC_TSCONFIG = 'tsconfig.schematics.spec.json'; 9 | -------------------------------------------------------------------------------- /tools/gulp/docs/prepare-docs.ts: -------------------------------------------------------------------------------- 1 | import { task, series } from 'gulp'; 2 | 3 | import { generateOuputJson } from './output-json'; 4 | import { prepareExamples } from './example'; 5 | 6 | task('docs', series(generateOuputJson, prepareExamples)); 7 | -------------------------------------------------------------------------------- /tools/gulp/gulpfile.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | import './schematics/build-dev-schematics'; 8 | import './schematics/test-packages-schematics'; 9 | import './docs/prepare-docs'; 10 | import './docs/copy-index'; 11 | import './docs/sitemap'; 12 | import './bump-versions'; 13 | -------------------------------------------------------------------------------- /tools/gulp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "noUnusedParameters": true, 5 | "lib": [ 6 | "es2017" 7 | ], 8 | "module": "commonjs", 9 | "moduleResolution": "node", 10 | "strictNullChecks": true, 11 | "target": "es2018", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "types": [ 16 | "node" 17 | ], 18 | "baseUrl": "." 19 | }, 20 | "files": [ 21 | "gulpfile.ts" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /tools/publish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Iterates over all modules bundled in the dist/ and publish them 4 | for dir in ./dist/*/ 5 | do 6 | dir=${dir%*/} 7 | npm publish --access=public dist/${dir##*/}/ 8 | done 9 | --------------------------------------------------------------------------------