├── Procfile ├── src ├── version.ts ├── app │ ├── app.component.scss │ ├── component │ │ ├── design │ │ │ ├── top-svg │ │ │ │ ├── top-svg.component.scss │ │ │ │ ├── top-svg.component.ts │ │ │ │ ├── top-svg.component.spec.ts │ │ │ │ └── top-svg.component.html │ │ │ └── bottom-svg │ │ │ │ ├── bottom-svg.component.scss │ │ │ │ ├── bottom-svg.component.html │ │ │ │ ├── bottom-svg.component.ts │ │ │ │ └── bottom-svg.component.spec.ts │ │ ├── content-loader │ │ │ ├── content-loader.component.scss │ │ │ ├── text-content-loader │ │ │ │ ├── text-content-loader.component.html │ │ │ │ ├── text-content-loader.component.scss │ │ │ │ ├── text-content-loader.component.ts │ │ │ │ └── text-content-loader.component.spec.ts │ │ │ ├── content-loader.component.html │ │ │ ├── image-content-loader │ │ │ │ ├── image-content-loader.component.html │ │ │ │ ├── image-content-loader.component.ts │ │ │ │ ├── image-content-loader.component.scss │ │ │ │ └── image-content-loader.component.spec.ts │ │ │ ├── box-content-loader │ │ │ │ ├── box-content-loader.component.html │ │ │ │ ├── box-content-loader.component.ts │ │ │ │ ├── box-content-loader.component.scss │ │ │ │ └── box-content-loader.component.spec.ts │ │ │ ├── content-loader.component.ts │ │ │ └── content-loader.component.spec.ts │ │ ├── ext-link │ │ │ ├── ext-link.component.html │ │ │ ├── ext-link.component.scss │ │ │ └── ext-link.component.spec.ts │ │ ├── side-content │ │ │ ├── side-content.component.html │ │ │ └── side-content.component.spec.ts │ │ ├── color-chart │ │ │ ├── color-chart.component.ts │ │ │ ├── color-chart.component.html │ │ │ └── color-chart.component.spec.ts │ │ ├── nav │ │ │ ├── landing │ │ │ │ ├── landing-layout-bottom-nav │ │ │ │ │ ├── landing-layout-bottom-nav.component.scss │ │ │ │ │ ├── landing-layout-bottom-nav.component.spec.ts │ │ │ │ │ └── landing-layout-bottom-nav.component.html │ │ │ │ └── landing-layout-top-nav │ │ │ │ │ └── landing-layout-top-nav.component.spec.ts │ │ │ ├── dashboard │ │ │ │ ├── dashboard-layout-bottom-nav │ │ │ │ │ ├── dashboard-layout-bottom-nav.component.scss │ │ │ │ │ └── dashboard-layout-bottom-nav.component.spec.ts │ │ │ │ ├── dashboard-layout-top-nav │ │ │ │ │ ├── dashboard-layout-top-nav.component.html │ │ │ │ │ └── dashboard-layout-top-nav.component.spec.ts │ │ │ │ └── dashboard-layout-side-nav │ │ │ │ │ └── dashboard-layout-side-nav.component.spec.ts │ │ │ └── footer │ │ │ │ └── footer.component.spec.ts │ │ ├── popup │ │ │ └── cookie-popup │ │ │ │ ├── cookie-popup.component.html │ │ │ │ ├── cookie-popup.component.ts │ │ │ │ └── cookie-popup.component.spec.ts │ │ ├── rate-bar │ │ │ ├── rate-bar.component.html │ │ │ ├── rate-bar.component.scss │ │ │ └── rate-bar.component.spec.ts │ │ ├── card │ │ │ ├── tech-stack-card │ │ │ │ ├── tech-stack-card.component.html │ │ │ │ ├── tech-stack-card.component.ts │ │ │ │ └── tech-stack-card.component.spec.ts │ │ │ ├── activity-card │ │ │ │ ├── activity-card.component.ts │ │ │ │ ├── activity-card.component.spec.ts │ │ │ │ └── activity-card.component.html │ │ │ ├── timeline-card │ │ │ │ ├── timeline-card.component.ts │ │ │ │ ├── step-timeline-card │ │ │ │ │ ├── step-timeline-card.component.ts │ │ │ │ │ ├── step-timeline-card.component.html │ │ │ │ │ └── step-timeline-card.component.spec.ts │ │ │ │ └── timeline-card.component.spec.ts │ │ │ ├── feature-card │ │ │ │ ├── feature-card.component.html │ │ │ │ ├── feature-card.component.ts │ │ │ │ └── feature-card.component.spec.ts │ │ │ ├── contact-information-card │ │ │ │ ├── contact-information-card.component.ts │ │ │ │ └── contact-information-card.component.spec.ts │ │ │ ├── blog-holder-card │ │ │ │ ├── blog-holder-card.component.ts │ │ │ │ └── blog-holder-card.component.spec.ts │ │ │ ├── doc-card │ │ │ │ ├── doc-card.component.ts │ │ │ │ └── doc-card.component.spec.ts │ │ │ ├── doc-holder-card │ │ │ │ ├── doc-holder-cardcomponent.ts │ │ │ │ └── doc-holder-card.component.spec.ts │ │ │ ├── blog-card │ │ │ │ ├── blog-card.component.ts │ │ │ │ └── blog-card.component.spec.ts │ │ │ ├── policy-card │ │ │ │ ├── policy-card.component.ts │ │ │ │ └── policy-card.component.spec.ts │ │ │ ├── asset-card │ │ │ │ ├── asset-card.component.spec.ts │ │ │ │ └── asset-card.component.html │ │ │ ├── status-card │ │ │ │ └── status-card.component.spec.ts │ │ │ ├── pricing-card │ │ │ │ └── pricing-card.component.spec.ts │ │ │ ├── profile-card │ │ │ │ └── profile-card.component.spec.ts │ │ │ ├── employee-card │ │ │ │ └── employee-card.component.spec.ts │ │ │ ├── testimonial-card │ │ │ │ └── testimonial-card.component.spec.ts │ │ │ ├── presentation-card │ │ │ │ └── presentation-card.component.spec.ts │ │ │ ├── analytics-event-card │ │ │ │ └── analytics-event-card.component.spec.ts │ │ │ └── activity-history-card │ │ │ │ ├── activity-history-card.component.spec.ts │ │ │ │ └── activity-history-card.component.html │ │ ├── search │ │ │ ├── search.component.html │ │ │ └── search.component.spec.ts │ │ ├── swiper │ │ │ ├── business-partner-swiper │ │ │ │ ├── business-partner-swiper.component.html │ │ │ │ └── business-partner-swiper.component.spec.ts │ │ │ ├── presentation-swiper │ │ │ │ ├── presentation-swiper.component.html │ │ │ │ ├── presentation-swiper.component.ts │ │ │ │ └── presentation-swiper.component.spec.ts │ │ │ └── screenshot-swiper │ │ │ │ ├── screenshot-swiper.component.html │ │ │ │ ├── screenshot-swiper.component.spec.ts │ │ │ │ └── screenshot-swiper.component.ts │ │ ├── price-plan │ │ │ ├── price-plan.component.spec.ts │ │ │ └── price-plan.component.ts │ │ ├── product-represantation │ │ │ └── product-presentation.component.spec.ts │ │ └── settings-dropdown-menu │ │ │ └── settings-dropdown-menu.component.spec.ts │ ├── model │ │ ├── sms │ │ │ └── sms.model.ts │ │ ├── mail │ │ │ └── mail.model.ts │ │ ├── oauth │ │ │ └── oauth.model.ts │ │ ├── file-storage │ │ │ └── file-storage.model.ts │ │ ├── image │ │ │ └── image.model.ts │ │ ├── video │ │ │ └── image.model.ts │ │ ├── analytics │ │ │ └── analytics.model.ts │ │ ├── auth │ │ │ └── auth-token.model.ts │ │ ├── activity │ │ │ └── activity.model.ts │ │ ├── contact-us │ │ │ └── contact-us.model.ts │ │ ├── partner │ │ │ └── partner.model.ts │ │ ├── feature │ │ │ └── feature.model.ts │ │ ├── timeline │ │ │ ├── step-timeline.model.ts │ │ │ └── timeline.model.ts │ │ ├── social │ │ │ └── social.model.ts │ │ ├── seo │ │ │ └── seo.model.ts │ │ ├── payment │ │ │ └── payment.model.ts │ │ ├── doc │ │ │ └── doc.model.ts │ │ ├── user │ │ │ └── user.model.ts │ │ ├── blog │ │ │ └── blog.model.ts │ │ ├── employee │ │ │ └── employee.model.ts │ │ ├── testimonial │ │ │ └── testimonial.model.ts │ │ ├── pricing │ │ │ └── pricing.model.ts │ │ ├── website │ │ │ └── website.model.ts │ │ └── event │ │ │ └── event.model.ts │ ├── data │ │ ├── profile │ │ │ └── profile.data.ts │ │ ├── contact-info │ │ │ └── contact-info.data.ts │ │ ├── http │ │ │ └── http.data.ts │ │ ├── information │ │ │ └── information.data.ts │ │ ├── developers │ │ │ └── developers.data.ts │ │ ├── ribbon │ │ │ └── ribbon.data.ts │ │ ├── theme │ │ │ └── theme.data.ts │ │ ├── resources │ │ │ └── resources.data.ts │ │ ├── status │ │ │ └── status.data.ts │ │ ├── contact-us │ │ │ └── contact-us.data.ts │ │ ├── blog │ │ │ └── blog.data.ts │ │ ├── company │ │ │ └── company.data.ts │ │ ├── doc │ │ │ └── doc.data.ts │ │ └── premium-products │ │ │ └── premium-product.data.ts │ ├── page │ │ ├── landing-layout │ │ │ ├── status-page │ │ │ │ ├── status-page.component.scss │ │ │ │ ├── status-page.component.html │ │ │ │ └── status-page.component.spec.ts │ │ │ ├── form-pages │ │ │ │ ├── login-page │ │ │ │ │ ├── login-page.component.scss │ │ │ │ │ └── login-page.component.spec.ts │ │ │ │ ├── sign-up-page │ │ │ │ │ ├── sign-up-page.component.scss │ │ │ │ │ └── sign-up-page.component.spec.ts │ │ │ │ ├── forget-password-page │ │ │ │ │ ├── forget-password-page.component.scss │ │ │ │ │ └── forget-password-page.component.spec.ts │ │ │ │ ├── reset-password-page │ │ │ │ │ ├── reset-password-page.component.scss │ │ │ │ │ └── reset-password-page.component.spec.ts │ │ │ │ └── two-factor-authentication-page │ │ │ │ │ └── two-factor-authentication-page.component.scss │ │ │ ├── raw-content-pages │ │ │ │ ├── not-found-page │ │ │ │ │ ├── not-found-page.component.scss │ │ │ │ │ ├── not-found-page.component.html │ │ │ │ │ ├── not-found-page.component.spec.ts │ │ │ │ │ └── not-found-page.component.ts │ │ │ │ ├── maintenance-page │ │ │ │ │ ├── maintenance-page.component.scss │ │ │ │ │ ├── maintenance-page.component.html │ │ │ │ │ └── maintenance-page.component.spec.ts │ │ │ │ ├── verify-account-page │ │ │ │ │ ├── verify-account-page.component.scss │ │ │ │ │ └── verify-account-page.component.spec.ts │ │ │ │ └── sign-up-success-page │ │ │ │ │ ├── sign-up-success-page.component.scss │ │ │ │ │ ├── sign-up-success-page.component.html │ │ │ │ │ └── sign-up-success-page.component.spec.ts │ │ │ ├── customers-page │ │ │ │ ├── customers-page.component.scss │ │ │ │ ├── customers-page.component.html │ │ │ │ ├── customers-page.component.ts │ │ │ │ └── customers-page.component.spec.ts │ │ │ ├── policy-pages │ │ │ │ ├── terms-page │ │ │ │ │ ├── terms-page.component.scss │ │ │ │ │ ├── terms-page.component.ts │ │ │ │ │ └── terms-page.component.spec.ts │ │ │ │ ├── cookie-policy-page │ │ │ │ │ ├── cookie-policy-page.component.scss │ │ │ │ │ ├── cookie-policy-page.component.ts │ │ │ │ │ └── cookie-policy-page.component.spec.ts │ │ │ │ └── privacy-policy-page │ │ │ │ │ ├── privacy-policy-page.component.scss │ │ │ │ │ ├── privacy-policy-page.component.ts │ │ │ │ │ └── privacy-policy-page.component.spec.ts │ │ │ ├── docs-page │ │ │ │ ├── docs-content-page │ │ │ │ │ ├── docs-content-page.component.scss │ │ │ │ │ ├── docs-content-page.component.html │ │ │ │ │ └── docs-content-page.component.spec.ts │ │ │ │ ├── docs-page.component.html │ │ │ │ ├── docs-page.component.ts │ │ │ │ ├── docs-page.component.spec.ts │ │ │ │ └── docs-page.component.scss │ │ │ ├── blog-page │ │ │ │ ├── blog-content-page │ │ │ │ │ ├── blog-content-page.component.scss │ │ │ │ │ ├── blog-content-page.component.html │ │ │ │ │ └── blog-content-page.component.spec.ts │ │ │ │ ├── blog-page.component.html │ │ │ │ ├── blog-page.component.ts │ │ │ │ ├── blog-page.component.spec.ts │ │ │ │ └── blog-page.component.scss │ │ │ ├── partners-page │ │ │ │ ├── partners-page.component.scss │ │ │ │ ├── partners-page.component.html │ │ │ │ ├── partners-page.component.spec.ts │ │ │ │ └── partners-page.component.ts │ │ │ ├── pricing-page │ │ │ │ ├── pricing-page.component.html │ │ │ │ └── pricing-page.component.spec.ts │ │ │ ├── home-page │ │ │ │ └── home-page.component.spec.ts │ │ │ ├── product-page │ │ │ │ └── product-page.component.spec.ts │ │ │ ├── sitemap-page │ │ │ │ └── sitemap-page.component.spec.ts │ │ │ ├── about-us-page │ │ │ │ └── about-us-page.component.spec.ts │ │ │ ├── landing-layout.component.html │ │ │ ├── landing-layout.component.spec.ts │ │ │ ├── branding-page │ │ │ │ └── branding-page.component.spec.ts │ │ │ └── contact-us-page │ │ │ │ └── contact-us-page.component.spec.ts │ │ ├── splash-layout │ │ │ ├── splash-layout.component.html │ │ │ ├── splash-layout.component.ts │ │ │ ├── splash-layout.component.scss │ │ │ ├── callback-page │ │ │ │ ├── callback-page.component.html │ │ │ │ └── callback-page.component.spec.ts │ │ │ ├── splash-layout.component.spec.ts │ │ │ └── external-redirect-page │ │ │ │ └── external-redirect-page.component.spec.ts │ │ ├── dashboard-layout │ │ │ ├── dashboard-page │ │ │ │ ├── dashboard-page.component.html │ │ │ │ └── dashboard-page.component.spec.ts │ │ │ ├── my-profile-page │ │ │ │ ├── my-profile-page.component.html │ │ │ │ ├── my-profile-page.component.scss │ │ │ │ └── my-profile-page.component.spec.ts │ │ │ ├── premium-page │ │ │ │ ├── premium-page.component.scss │ │ │ │ └── premium-page.component.spec.ts │ │ │ ├── dashboard-layout.component.html │ │ │ ├── dashboard-layout.component.spec.ts │ │ │ ├── notifications-page │ │ │ │ ├── notifications-page.component.spec.ts │ │ │ │ └── notifications-page.component.ts │ │ │ └── dashboard-layout.component.ts │ │ └── settings-layout │ │ │ ├── settings-layout.component.html │ │ │ ├── edit-security │ │ │ └── edit-security.component.spec.ts │ │ │ ├── settings-layout.component.spec.ts │ │ │ ├── edit-theme-page │ │ │ └── edit-theme-page.component.spec.ts │ │ │ ├── edit-profile-page │ │ │ └── edit-profile-page.component.spec.ts │ │ │ ├── settings-layout.component.ts │ │ │ └── settings-layout.component.scss │ ├── app.component.html │ ├── service │ │ ├── in-memory-data-service │ │ │ ├── in-memory-data.service.ts │ │ │ └── in-memory-data-service.spec.ts │ │ ├── loading │ │ │ ├── loading.service.ts │ │ │ └── loading.service.spec.ts │ │ ├── seo │ │ │ └── seo.service.spec.ts │ │ ├── util │ │ │ └── util.service.spec.ts │ │ ├── mail │ │ │ ├── mail.service.spec.ts │ │ │ └── mail.service.ts │ │ ├── theme │ │ │ └── theme.service.spec.ts │ │ ├── toast │ │ │ └── toast.service.spec.ts │ │ ├── socket │ │ │ └── socket.service.spec.ts │ │ ├── payment │ │ │ └── payment.service.spec.ts │ │ ├── product │ │ │ └── product.service.spec.ts │ │ ├── analytics │ │ │ └── analytics.service.spec.ts │ │ ├── monitoring │ │ │ └── monitoring.service.spec.ts │ │ ├── file-storage │ │ │ └── file-storage.service.spec.ts │ │ ├── information │ │ │ └── information.service.spec.ts │ │ ├── notification │ │ │ └── notification.service.spec.ts │ │ ├── auth │ │ │ └── authentication.service.spec.ts │ │ ├── browser-locale │ │ │ ├── browser-locale.service.spec.ts │ │ │ └── browser-locale.service.ts │ │ ├── business-logic │ │ │ └── business-logic.service.spec.ts │ │ ├── two-factor-code │ │ │ └── two-factor-code.service.spec.ts │ │ └── infinite-scrolling │ │ │ └── infinite-scrolling.service.spec.ts │ ├── guard │ │ ├── auth │ │ │ └── auth.guard.spec.ts │ │ └── public-profile │ │ │ └── public-profile.guard.spec.ts │ └── interceptor │ │ ├── request │ │ └── request.interceptor.spec.ts │ │ ├── response │ │ └── response.interceptor.spec.ts │ │ └── navigation │ │ └── navigation.interceptor.spec.ts ├── assets │ ├── common │ │ ├── globe.png │ │ ├── activity.png │ │ └── profile-img.png │ ├── favicons │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── mstile-150x150.png │ │ ├── apple-touch-icon.png │ │ ├── maskable_icon_x512.png │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ └── browserconfig.xml │ └── logo │ │ └── brand-logo.png ├── styles │ ├── theme │ │ ├── design │ │ │ ├── design.theme.scss │ │ │ ├── sharp.design.theme.scss │ │ │ ├── leaf.design.theme.scss │ │ │ ├── round.design.theme.scss │ │ │ └── counter-borders.design.theme.scss │ │ └── theme.scss │ ├── logo │ │ └── logo.scss │ └── styles.scss ├── messages-generator.ts ├── main.ts ├── test.ts ├── manifest.webmanifest └── environments │ └── environment-init.ts ├── .github ├── lighthouserc.yml ├── pr-labeler.yml └── workflows │ ├── on-push-tags.yml │ ├── issue-assigned-workflows.yml │ ├── pr-labeled-at-develop-workflows.yml │ ├── pr-open-to-demos.yml │ └── issue-open-workflows.yml ├── seo └── robots.txt ├── .prettierrc.js ├── SECURITY.md ├── env.sh ├── .vscode └── settings.json ├── e2e ├── tsconfig.json ├── src │ ├── app.po.ts │ └── app.e2e-spec.ts └── protractor.conf.js ├── .editorconfig ├── tsconfig.app.json ├── tsconfig.spec.json ├── .run ├── update.run.xml ├── install.run.xml ├── start.run.xml ├── sitemap.run.xml ├── buildProd.run.xml ├── outdated.run.xml ├── startLocal.run.xml ├── startStaging.run.xml ├── updateMessages.run.xml ├── buildLocalToStagingApi.run.xml ├── startLocalToStagingApi.run.xml ├── buildLocal.run.xml ├── buildStaging.run.xml └── env.run.xml ├── heroku.sh ├── browserslist ├── tsconfig.json ├── app.json ├── ngsw-config.json └── .gitignore /Procfile: -------------------------------------------------------------------------------- 1 | web: node server.js 2 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | export const version = '5.0.1'; 2 | -------------------------------------------------------------------------------- /src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | /* Intentionally blank */ 2 | -------------------------------------------------------------------------------- /src/app/component/design/top-svg/top-svg.component.scss: -------------------------------------------------------------------------------- 1 | /* Intentionally Blank */ 2 | -------------------------------------------------------------------------------- /src/app/model/sms/sms.model.ts: -------------------------------------------------------------------------------- 1 | export interface SmsModel { 2 | tag: string; 3 | } 4 | -------------------------------------------------------------------------------- /.github/lighthouserc.yml: -------------------------------------------------------------------------------- 1 | ci: 2 | collect: 3 | settings: 4 | preset: "desktop" 5 | -------------------------------------------------------------------------------- /src/app/component/design/bottom-svg/bottom-svg.component.scss: -------------------------------------------------------------------------------- 1 | /* Intentionally Blank */ 2 | -------------------------------------------------------------------------------- /src/app/model/mail/mail.model.ts: -------------------------------------------------------------------------------- 1 | export interface MailModel { 2 | tag: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/model/oauth/oauth.model.ts: -------------------------------------------------------------------------------- 1 | export interface OauthModel { 2 | tag: string; 3 | } 4 | -------------------------------------------------------------------------------- /seo/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://opentemplatehub.com/sitemap.xml 5 | -------------------------------------------------------------------------------- /src/app/data/profile/profile.data.ts: -------------------------------------------------------------------------------- 1 | export const PROFILE_IMG = './assets/common/profile-img.png'; 2 | -------------------------------------------------------------------------------- /src/app/component/content-loader/content-loader.component.scss: -------------------------------------------------------------------------------- 1 | .loader { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/status-page/status-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/model/file-storage/file-storage.model.ts: -------------------------------------------------------------------------------- 1 | export interface FileStorageModel { 2 | tag: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/model/image/image.model.ts: -------------------------------------------------------------------------------- 1 | export interface Image { 2 | src: string; 3 | description: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/model/video/image.model.ts: -------------------------------------------------------------------------------- 1 | export interface Video { 2 | url: string; 3 | description: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/form-pages/login-page/login-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/model/analytics/analytics.model.ts: -------------------------------------------------------------------------------- 1 | export interface AnalyticsModel { 2 | tag: string; 3 | id: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/form-pages/sign-up-page/sign-up-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/assets/common/globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/common/globe.png -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | bracketSpacing: true, 4 | bracketSameLine: true 5 | }; 6 | -------------------------------------------------------------------------------- /src/app/model/auth/auth-token.model.ts: -------------------------------------------------------------------------------- 1 | export interface AuthToken { 2 | accessToken: any; 3 | refreshToken: any; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/raw-content-pages/not-found-page/not-found-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/assets/common/activity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/common/activity.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/favicon.ico -------------------------------------------------------------------------------- /src/assets/favicons/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/favicon.png -------------------------------------------------------------------------------- /src/assets/logo/brand-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/logo/brand-logo.png -------------------------------------------------------------------------------- /src/app/model/activity/activity.model.ts: -------------------------------------------------------------------------------- 1 | export interface Activity { 2 | type: string; 3 | date: Date; 4 | payload: any; 5 | } 6 | -------------------------------------------------------------------------------- /src/app/model/contact-us/contact-us.model.ts: -------------------------------------------------------------------------------- 1 | export interface ContactUsFeatures { 2 | title: string; 3 | features: string[]; 4 | } 5 | -------------------------------------------------------------------------------- /src/app/model/partner/partner.model.ts: -------------------------------------------------------------------------------- 1 | export interface Partner { 2 | src: string, 3 | name: string, 4 | website: string 5 | } 6 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/customers-page/customers-page.component.scss: -------------------------------------------------------------------------------- 1 | @use 'node_modules/@open-template-hub/card/styles/card/card'; 2 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/form-pages/forget-password-page/forget-password-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/form-pages/reset-password-page/reset-password-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/raw-content-pages/maintenance-page/maintenance-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/assets/common/profile-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/common/profile-img.png -------------------------------------------------------------------------------- /src/app/model/feature/feature.model.ts: -------------------------------------------------------------------------------- 1 | export interface Feature { 2 | title: string; 3 | description: string; 4 | icon: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/raw-content-pages/verify-account-page/verify-account-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/app/page/splash-layout/splash-layout.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/assets/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /src/assets/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /src/app/page/landing-layout/raw-content-pages/sign-up-success-page/sign-up-success-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | -------------------------------------------------------------------------------- /src/assets/favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /src/assets/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /src/assets/favicons/maskable_icon_x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/maskable_icon_x512.png -------------------------------------------------------------------------------- /src/app/model/timeline/step-timeline.model.ts: -------------------------------------------------------------------------------- 1 | export interface StepTimeLineItem { 2 | text: string; 3 | theme?: string; 4 | level: number; 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /src/assets/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-template-hub/web-ui-template/HEAD/src/assets/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /src/app/model/social/social.model.ts: -------------------------------------------------------------------------------- 1 | export interface Social { 2 | linkedIn?: string; 3 | twitter?: string; 4 | github?: string; 5 | mail?: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/app/model/seo/seo.model.ts: -------------------------------------------------------------------------------- 1 | export interface SeoMetaData { 2 | keywords: string[]; 3 | robots: string[]; 4 | title: string; 5 | description: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/app/model/payment/payment.model.ts: -------------------------------------------------------------------------------- 1 | export interface PaymentModel { 2 | tag: string; 3 | publishableKey?: string; 4 | env?: string; 5 | clientId?: string; 6 | } 7 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | | Version | Supported | 6 | |---------|--------------------| 7 | | > 0.1 | :white_check_mark: | 8 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/policy-pages/terms-page/terms-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | @use '../../../../component/card/policy-card/policy-card.component'; 3 | -------------------------------------------------------------------------------- /.github/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | bug: 'bug/*' 2 | dependency: 'dependency/*' 3 | documentation: 'documentation/*' 4 | feature: 'feature/*' 5 | hotfix: 'hotfix/*' 6 | quality: 'quality/*' 7 | workflow: 'workflow/*' 8 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/docs-page/docs-content-page/docs-content-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | 3 | .doc-content-wrapper { 4 | & > * { 5 | margin: 50px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/policy-pages/cookie-policy-page/cookie-policy-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | @use '../../../../component/card/policy-card/policy-card.component'; 3 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/policy-pages/privacy-policy-page/privacy-policy-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | @use '../../../../component/card/policy-card/policy-card.component'; 3 | -------------------------------------------------------------------------------- /src/app/model/doc/doc.model.ts: -------------------------------------------------------------------------------- 1 | export interface Doc { 2 | key: string; 3 | url: string; 4 | title: string; 5 | date: string; 6 | excerpt: string; 7 | tag: string; 8 | imgUri: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/model/timeline/timeline.model.ts: -------------------------------------------------------------------------------- 1 | export interface TimeLineItem { 2 | title: string, 3 | date: string, 4 | paragraph?: string, 5 | img?: string, 6 | theme?: string, 7 | footerText?: string 8 | } 9 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/status-page/status-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /src/styles/theme/design/design.theme.scss: -------------------------------------------------------------------------------- 1 | @use 'round.design.theme'; 2 | @use 'counter-borders.design.theme'; 3 | @use 'sharp.design.theme'; 4 | @use 'leaf.design.theme'; 5 | 6 | :root { 7 | /* Intentionally blank */ 8 | } 9 | -------------------------------------------------------------------------------- /src/app/page/dashboard-layout/dashboard-page/dashboard-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
4 | 5 |
6 | -------------------------------------------------------------------------------- /src/app/model/user/user.model.ts: -------------------------------------------------------------------------------- 1 | import { Social } from '../social/social.model'; 2 | 3 | export interface User { 4 | name: string; 5 | title: string; 6 | bio: string; 7 | photoUri: string; 8 | social: Social; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/page/dashboard-layout/my-profile-page/my-profile-page.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /src/styles/theme/theme.scss: -------------------------------------------------------------------------------- 1 | @use 'color/color.theme'; 2 | @use 'design/design.theme'; 3 | 4 | /* This is the class to change default theme */ 5 | .default-theme { 6 | @extend .green-theme; 7 | @extend .counter-borders-theme; 8 | } 9 | -------------------------------------------------------------------------------- /env.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ ! -f .env ]; then 4 | echo "Generating .env file.." 5 | touch .env 6 | { 7 | echo "PORT=4201" 8 | } >>.env 9 | else 10 | echo ".env file already exists. Nothing to do..." 11 | fi 12 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "prettier.singleQuote": true, 3 | "prettier.bracketSpacing": true, 4 | "prettier.bracketSameLine": true, 5 | "javascript.preferences.quoteStyle": "single", 6 | "typescript.preferences.quoteStyle": "single" 7 | } 8 | -------------------------------------------------------------------------------- /src/app/data/contact-info/contact-info.data.ts: -------------------------------------------------------------------------------- 1 | export const CONTACT_INFO = { 2 | address: 'Sepapaja 6, 15551 Tallinn, Estonia', 3 | email: 'info@opentemplatehub.com', 4 | phone: '', 5 | map: 'https://goo.gl/maps/qKdzpwkhLKuQsaWv6', 6 | }; 7 | -------------------------------------------------------------------------------- /src/app/component/ext-link/ext-link.component.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/app/model/blog/blog.model.ts: -------------------------------------------------------------------------------- 1 | import { Employee } from '../employee/employee.model'; 2 | 3 | export interface Blog { 4 | key: string; 5 | url: string; 6 | date: string; 7 | title: string; 8 | excerpt: string; 9 | author: Employee; 10 | tag: string; 11 | } 12 | -------------------------------------------------------------------------------- /src/app/model/employee/employee.model.ts: -------------------------------------------------------------------------------- 1 | import { Social } from '../social/social.model'; 2 | 3 | export interface Employee { 4 | profile: { 5 | name: string; 6 | title: string; 7 | bio: string; 8 | photoUri: string; 9 | social: Social; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/blog-page/blog-content-page/blog-content-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../landing-layout.component'; 2 | @use '../../../../component/card/employee-card/employee-card.component'; 3 | 4 | .blog-content-wrapper { 5 | & > * { 6 | margin: 50px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/component/content-loader/text-content-loader/text-content-loader.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 | -------------------------------------------------------------------------------- /src/app/component/side-content/side-content.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 5 |
6 | -------------------------------------------------------------------------------- /src/assets/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #43b043 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://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 | -------------------------------------------------------------------------------- /src/app/model/testimonial/testimonial.model.ts: -------------------------------------------------------------------------------- 1 | import { Social } from '../social/social.model'; 2 | 3 | export interface Testimonial { 4 | review: string; 5 | reviewer: { 6 | name: string; 7 | title: string; 8 | photoUri: string; 9 | social: Social; 10 | }; 11 | theme?: string; 12 | } 13 | -------------------------------------------------------------------------------- /src/app/component/content-loader/content-loader.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /src/app/page/dashboard-layout/my-profile-page/my-profile-page.component.scss: -------------------------------------------------------------------------------- 1 | .my-profile-page { 2 | padding-top: 120px; 3 | margin-left: 60px; 4 | margin-right: 60px; 5 | } 6 | 7 | @media only screen and (max-width: 999px) { 8 | .my-profile-page { 9 | margin-left: 0; 10 | margin-right: 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get( browser.baseUrl ) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element( by.css( 'app-root .content span' ) ).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/customers-page/customers-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /src/app/component/content-loader/text-content-loader/text-content-loader.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../../styles/util/util'; 2 | @import '../../../../styles/loading/loading'; 3 | 4 | .text { 5 | @include default-background; 6 | @include util.default-border-radius; 7 | 8 | height: 10px; 9 | animation: animate-color 2s infinite; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/service/in-memory-data-service/in-memory-data.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { InMemoryDbService } from 'angular-in-memory-web-api'; 3 | 4 | @Injectable( { 5 | providedIn: 'root' 6 | } ) 7 | export class InMemoryDataService implements InMemoryDbService { 8 | createDb() { 9 | return {}; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/component/content-loader/image-content-loader/image-content-loader.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /src/app/page/dashboard-layout/premium-page/premium-page.component.scss: -------------------------------------------------------------------------------- 1 | @use 'node_modules/@open-template-hub/card/styles/card/card'; 2 | 3 | .premium-card { 4 | 5 | & .body { 6 | @include card.default-body; 7 | } 8 | 9 | & .footer { 10 | @include card.default-footer; 11 | } 12 | } 13 | 14 | .cards-wrapper { 15 | width: 100%; 16 | } 17 | -------------------------------------------------------------------------------- /src/messages-generator.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | const fs = require( 'fs' ); 3 | const supportedLanguages = [ 'fr' ]; 4 | try { 5 | const data = fs.readFileSync( 'messages.xlf', 'utf8' ); 6 | 7 | for ( const line of data.split( '' ) ) { 8 | console.log( line ); 9 | } 10 | } catch ( err ) { 11 | console.error( err ); 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/app/data/http/http.data.ts: -------------------------------------------------------------------------------- 1 | export const ResponseCode = { 2 | OK: 200, 3 | CREATED: 201, 4 | NO_CONTENT: 204, 5 | BAD_REQUEST: 400, 6 | UNAUTHORIZED: 401, 7 | FORBIDDEN: 403, 8 | NOT_FOUND: 404, 9 | METHOD_NOT_ALLOWED: 405, 10 | CONFLICT: 409, 11 | INVALID_TOKEN: 498, 12 | INTERNAL_SERVER_ERROR: 500, 13 | SERVICE_UNAVAILABLE: 503, 14 | }; 15 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [] 6 | }, 7 | "files": [ 8 | "src/main.ts", 9 | "src/polyfills.ts" 10 | ], 11 | "include": [ 12 | "src/**/*.d.ts" 13 | ], 14 | "exclude": [ 15 | "src/test.ts", 16 | "src/**/*.spec.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 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 | -------------------------------------------------------------------------------- /.run/update.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.run/install.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/app/component/color-chart/color-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component( { 4 | selector: 'app-color-chart', 5 | templateUrl: './color-chart.component.html', 6 | styleUrls: [ './color-chart.component.scss' ] 7 | } ) 8 | export class ColorChartComponent { 9 | 10 | constructor() { 11 | // Intentionally blank 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/component/nav/landing/landing-layout-bottom-nav/landing-layout-bottom-nav.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../../../styles/bottom-nav/bottom-nav'; 2 | 3 | @media only screen and (max-width: 999px) { 4 | .bottom-nav { 5 | visibility: visible; 6 | } 7 | } 8 | 9 | @media only screen and (min-width: 1000px) { 10 | .bottom-nav { 11 | visibility: hidden; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/component/color-chart/color-chart.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Less

3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |

More

14 |
15 | -------------------------------------------------------------------------------- /src/app/page/splash-layout/splash-layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component( { 4 | selector: 'app-splash-layout', 5 | templateUrl: './splash-layout.component.html', 6 | styleUrls: [ './splash-layout.component.scss' ] 7 | } ) 8 | export class SplashLayoutComponent { 9 | 10 | constructor() { 11 | // Intentionally blank 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/data/information/information.data.ts: -------------------------------------------------------------------------------- 1 | export const INFORMATION_TYPES = { 2 | error: { 3 | cssClass: 'error', 4 | icon: 'times' 5 | }, 6 | warning: { 7 | cssClass: 'warning', 8 | icon: 'exclamation-triangle' 9 | }, 10 | success: { 11 | cssClass: 'success', icon: 'check' 12 | }, 13 | info: { 14 | cssClass: 'info', 15 | icon: 'info-circle' 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /src/app/model/pricing/pricing.model.ts: -------------------------------------------------------------------------------- 1 | import { Ribbon } from '@open-template-hub/card'; 2 | 3 | export interface PricingOption { 4 | title: string, 5 | description: string, 6 | ribbon?: Ribbon, 7 | contactRequired?: boolean, 8 | price?: { 9 | currency: string, 10 | value: string, 11 | subscriptionTime: string 12 | }, 13 | features: string[][] 14 | link?: string 15 | } 16 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/raw-content-pages/sign-up-success-page/sign-up-success-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 | 7 | 10 |
11 | -------------------------------------------------------------------------------- /src/app/service/loading/loading.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { BehaviorSubject } from 'rxjs'; 3 | 4 | @Injectable( { 5 | providedIn: 'root' 6 | } ) 7 | export class LoadingService { 8 | 9 | private loading = new BehaviorSubject( false ); 10 | sharedLoading = this.loading.asObservable(); 11 | 12 | setLoading( loading: boolean ) { 13 | this.loading.next( loading ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if ( environment.production ) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule( AppModule ).catch( err => console.error( err ) ); 12 | -------------------------------------------------------------------------------- /src/styles/logo/logo.scss: -------------------------------------------------------------------------------- 1 | @use '../util/util'; 2 | 3 | .logo-wrapper { 4 | @include util.flex-center-center; 5 | 6 | display: inline-flex; 7 | flex-direction: column; 8 | 9 | & > * { 10 | margin: 0.4em; 11 | } 12 | } 13 | 14 | .logo-under-maintenance { 15 | filter: grayscale(100%); 16 | } 17 | 18 | @media only screen and (max-width: 999px) { 19 | .logo-wrapper > * { 20 | margin: 0.2em; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /heroku.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Building OTH Web UI app for $NODE_ENV" 4 | 5 | build_dev='ng build --configuration=staging --localize' 6 | if [ $NODE_ENV = "development" ]; then 7 | echo "running $build_dev ..." 8 | eval "$build_dev" 9 | fi 10 | 11 | build_prod='ng build --configuration=production --localize' 12 | if [ $NODE_ENV = "production" ]; then 13 | echo "running $build_prod ..." 14 | eval "$build_prod" 15 | fi 16 | -------------------------------------------------------------------------------- /src/app/guard/auth/auth.guard.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AuthGuard } from './auth.guard'; 4 | 5 | describe( 'AuthGuard', () => { 6 | let guard: AuthGuard; 7 | 8 | beforeEach( () => { 9 | TestBed.configureTestingModule( {} ); 10 | guard = TestBed.inject( AuthGuard ); 11 | } ); 12 | 13 | it( 'should be created', () => { 14 | expect( guard ).toBeTruthy(); 15 | } ); 16 | } ); 17 | -------------------------------------------------------------------------------- /src/app/page/landing-layout/partners-page/partners-page.component.scss: -------------------------------------------------------------------------------- 1 | @use '../../../../styles/util/util'; 2 | @use 'node_modules/@open-template-hub/card/styles/card/card'; 3 | 4 | .business-partners-wrapper { 5 | @include util.flex-layout-column; 6 | @include util.flex-center-center; 7 | 8 | box-sizing: border-box; 9 | 10 | width: 100%; 11 | 12 | padding-left: 3vw; 13 | padding-right: 3vw; 14 | 15 | padding-bottom: 100px; 16 | } 17 | -------------------------------------------------------------------------------- /.run/start.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |