├── src
├── assets
│ ├── demo
│ │ ├── demo.scss
│ │ ├── flags
│ │ │ ├── flags_responsive.png
│ │ │ └── flags.scss
│ │ └── code.scss
│ ├── layout
│ │ ├── variables
│ │ │ ├── _light.scss
│ │ │ ├── _dark.scss
│ │ │ └── _common.scss
│ │ ├── _footer.scss
│ │ ├── layout.scss
│ │ ├── _main.scss
│ │ ├── _core.scss
│ │ ├── _utils.scss
│ │ ├── _mixins.scss
│ │ ├── _preloading.scss
│ │ ├── _typography.scss
│ │ ├── _responsive.scss
│ │ ├── _topbar.scss
│ │ └── _menu.scss
│ ├── styles.scss
│ └── tailwind.css
├── main.ts
├── app.component.ts
├── app
│ ├── pages
│ │ ├── auth
│ │ │ ├── auth.routes.ts
│ │ │ ├── error.ts
│ │ │ ├── access.ts
│ │ │ └── login.ts
│ │ ├── empty
│ │ │ └── empty.ts
│ │ ├── pages.routes.ts
│ │ ├── service
│ │ │ ├── icon.service.ts
│ │ │ └── photo.service.ts
│ │ ├── dashboard
│ │ │ ├── dashboard.ts
│ │ │ └── components
│ │ │ │ ├── recentsaleswidget.ts
│ │ │ │ ├── statswidget.ts
│ │ │ │ ├── revenuestreamwidget.ts
│ │ │ │ ├── notificationswidget.ts
│ │ │ │ └── bestsellingwidget.ts
│ │ ├── landing
│ │ │ ├── landing.ts
│ │ │ └── components
│ │ │ │ ├── herowidget.ts
│ │ │ │ ├── highlightswidget.ts
│ │ │ │ ├── pricingwidget.ts
│ │ │ │ ├── topbarwidget.component.ts
│ │ │ │ ├── footerwidget.ts
│ │ │ │ └── featureswidget.ts
│ │ ├── uikit
│ │ │ ├── uikit.routes.ts
│ │ │ ├── filedemo.ts
│ │ │ ├── treedemo.ts
│ │ │ ├── messagesdemo.ts
│ │ │ ├── mediademo.ts
│ │ │ ├── timelinedemo.ts
│ │ │ └── formlayoutdemo.ts
│ │ ├── documentation
│ │ │ └── documentation.ts
│ │ └── notfound
│ │ │ └── notfound.ts
│ └── layout
│ │ ├── component
│ │ ├── app.footer.ts
│ │ ├── app.sidebar.ts
│ │ ├── app.floatingconfigurator.ts
│ │ ├── app.layout.ts
│ │ ├── app.menuitem.ts
│ │ ├── app.menu.ts
│ │ └── app.topbar.ts
│ │ └── service
│ │ └── layout.service.ts
├── index.html
├── app.config.ts
└── app.routes.ts
├── .postcssrc.json
├── vercel.json
├── .prettierignore
├── .editorconfig
├── tsconfig.app.json
├── tsconfig.spec.json
├── .prettierrc.json
├── .gitignore
├── LICENSE.md
├── tsconfig.json
├── README.md
├── package.json
├── angular.json
└── eslint.config.js
/src/assets/demo/demo.scss:
--------------------------------------------------------------------------------
1 | @use './code.scss';
2 | @use './flags/flags';
3 |
--------------------------------------------------------------------------------
/.postcssrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": {
3 | "@tailwindcss/postcss": {}
4 | }
5 | }
--------------------------------------------------------------------------------
/src/assets/demo/flags/flags_responsive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/primefaces/sakai-ng/HEAD/src/assets/demo/flags/flags_responsive.png
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "rewrites": [
3 | {
4 | "source": "/:path*",
5 | "destination": "/index.html"
6 | }
7 | ],
8 | "trailingSlash": false
9 | }
--------------------------------------------------------------------------------
/src/assets/layout/variables/_light.scss:
--------------------------------------------------------------------------------
1 | :root {
2 | --surface-ground: var(--p-surface-100);
3 | --code-background: var(--p-surface-900);
4 | --code-color: var(--p-surface-200);
5 | }
6 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Ignore artifacts:
2 | build
3 | coverage
4 | dist
5 | out
6 | public
7 | styles
8 | node_modules
9 | .vscode
10 | .angular
11 | *.md
12 | *.yml
13 | /tsconfig.json
14 | *.json
15 |
--------------------------------------------------------------------------------
/src/assets/layout/variables/_dark.scss:
--------------------------------------------------------------------------------
1 | :root[class*='app-dark'] {
2 | --surface-ground: var(--p-surface-950);
3 | --code-background: var(--p-surface-800);
4 | --code-color: var(--p-surface-100);
5 | }
6 |
--------------------------------------------------------------------------------
/src/assets/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | @use './tailwind.css';
3 | @use './layout/layout.scss';
4 | @use 'primeicons/primeicons.css';
5 | @use './demo/demo.scss';
6 |
--------------------------------------------------------------------------------
/src/assets/layout/_footer.scss:
--------------------------------------------------------------------------------
1 | .layout-footer {
2 | display: flex;
3 | align-items: center;
4 | justify-content: center;
5 | padding: 1rem 0 1rem 0;
6 | gap: 0.5rem;
7 | border-top: 1px solid var(--surface-border);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app.config';
3 | import { AppComponent } from './app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));
6 |
--------------------------------------------------------------------------------
/src/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { RouterModule } from '@angular/router';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | standalone: true,
7 | imports: [RouterModule],
8 | template: `
Use this page to start from scratch and place your custom content.
9 |Sed blandit libero volutpat sed cras. Fames ac turpis egestas integer. Placerat in egestas erat...
17 | 18 |
21 |
15 |
41 | Sakai is an application template for Angular and is distributed as a CLI project. Current versions is Angular v20 with PrimeNG v20. In case CLI is not installed already, use the command below to set it up.
13 |
14 | npm install -g @angular/cli
15 | 16 | Once CLI is ready in your system, extract the contents of the zip file distribution, cd to the directory, install the libraries from npm and then execute "ng serve" to run the application in your local environment. 17 |
18 |
19 | git clone https://github.com/primefaces/sakai-ng
20 | npm install
21 | ng serve
22 |
23 | The application should run at http://localhost:4200/ to view the application in your local environment.
24 | 25 |Templates consists of a couple folders, demos and layout have been separated so that you can easily identify what is necessary for your application.
27 |36 | Main menu is defined at src/app/layout/component/app.menu.ts file. Update the 37 | model property to define your own menu items. 38 |
39 | 40 |42 | src/app/layout/service/layout.service.ts is a service that manages layout state changes, including dark mode, PrimeNG theme, menu modes, and states. 43 |
44 | 45 |The demo pages are developed with Tailwind CSS however the core application shell uses custom CSS.
47 | 48 |50 | CSS variables used in the template are derived from the applied PrimeNG theme. Customize them through the CSS variables in src/assets/layout/variables. 51 |
52 |68 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore sed consequuntur error repudiandae numquam deserunt quisquam repellat libero asperiores earum nam nobis, culpa ratione quam perferendis esse, 69 | cupiditate neque quas! 70 |
71 |131 | “Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.” 132 |
133 |