diff --git a/.github/workflows/semantic-release.yaml b/.github/workflows/semantic-release.yaml index eac3799c..37f03a8b 100644 --- a/.github/workflows/semantic-release.yaml +++ b/.github/workflows/semantic-release.yaml @@ -15,10 +15,10 @@ jobs: if: ${{ needs.versioning.outputs.next-version != '' }} with: - projects: '["apps/aurora-core", "apps/aurora-client"]' + projects: '["apps/aurora-core", "apps/aurora-client", "apps/aurora-backoffice"]' version: ${{ needs.versioning.outputs.next-version }} docker-registry: 'abc.docker-registry.gewis.nl' - docker-paths: '["nc/aurora/core", "nc/aurora/client"]' + docker-paths: '["nc/aurora/core", "nc/aurora/client", "nc/aurora/backoffice"]' github-registry: 'true' secrets: REGISTRY_USERNAME: ${{ secrets.SVC_GH_ABCNC_USERNAME }} diff --git a/.gitignore b/.gitignore index eb38746a..b4795dc0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* +.pnpm-store # Coverage directory used by tools like istanbul coverage diff --git a/README.md b/README.md index 5b2b5c09..a61e99ae 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,9 @@ All subscribers authenticate with an API key, then maintain a persistent SocketI | Repository | Role | Tech | | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | -| [aurora-core](https://github.com/GEWIS/aurora-core) | Central publisher — receives commands and pushes state to all subscribers | TypeScript, NodeJS, SocketIO | -| [aurora-backoffice](https://github.com/GEWIS/aurora-backoffice) | Web management UI for humans to control Aurora | TypeScript, React, SocketIO | -| [aurora-client](https://github.com/GEWIS/aurora-client) | Narrowcasting screen client — displays posters and information on screens | TypeScript, NodeJS, SocketIO | +| `aurora-core` (this repo) | Central publisher — receives commands and pushes state to all subscribers | TypeScript, NodeJS, SocketIO | +| `aurora-backoffice` (this repo) | Web management UI for humans to control Aurora | TypeScript, Vue, PrimeVue | +| `aurora-client` (this repo) | Narrowcasting screen client — displays posters and information on screens | TypeScript, NodeJS, SocketIO | | [aurora-audio-player](https://github.com/GEWIS/aurora-audio-player) | Audio subscriber — plays music as commanded by the core | TypeScript, NodeJS | | [aurora-lights-proxy](https://github.com/GEWIS/aurora-lights-proxy) | DMX controller bridge — forwards DMX packets from core to ArtNet hardware | Python, Art-Net | | [aurora-lights-simulator](https://github.com/GEWIS/aurora-lights-simulator) | Lights effect development tool — simulate DMX output without physical hardware | TypeScript, NodeJS | @@ -85,7 +85,7 @@ cd apps/aurora-core && pnpm dev ## Development with Docker Compose -The monorepo includes a one-command Docker Compose setup that runs the core, client (narrowcasting), and their dependencies together. +The monorepo includes a one-command Docker Compose setup that runs the core, backoffice, client (narrowcasting), and their dependencies together. ### Prerequisites @@ -96,27 +96,29 @@ The monorepo includes a one-command Docker Compose setup that runs the core, cli ```bash # Start everything -pnpm dev-up +pnpm dev ``` This will: 1. Start the **core** (`http://localhost:3000`) with a pre-seeded SQLite database (GEWIS data set) -2. Start the **client** (`http://localhost:8081`) with Vite dev server proxying API calls to the core -3. Wait for the core to be ready and the database seeded -4. Extract the first screen's API key from the database -5. Open `http://localhost:8081?key=` in your browser — you are authenticated as that screen +2. Start the **backoffice** (`http://localhost:8080`) +3. Start the **client** (`http://localhost:8081`) with Vite dev server proxying API calls to the core +4. Wait for the core to be ready and the database seeded +5. Extract the first screen's API key from the database +6. Open the client, backoffice, and API docs in your browser +7. Stay running in the foreground — press **Ctrl-C** to stop the environment gracefully ### Teardown ```bash -pnpm dev-down +docker compose down ``` Containers are removed but the `node_modules` volume is kept for fast restarts. To fully reset: ```bash -pnpm dev-down -v # also removes cached node_modules +docker compose down -v # also removes cached node_modules ``` ## External Integrations @@ -139,8 +141,8 @@ If you want to integrate your own service with Aurora — to fetch data, send co 1. Fork the repository. 2. Create a feature branch: `git checkout -b feat/your-feature-name`. 3. Make your changes. -4. Run tests: `pnpm --filter aurora-core test`. -5. Run linting: `pnpm --filter aurora-core lint-fix`. +4. Run tests: `pnpm --filter @gewis/aurora-core test`. +5. Run linting: `pnpm lint`. 6. Commit using [Conventional Commits](https://www.conventionalcommits.org/): `git commit -m "feat: add your feature"`. 7. Push: `git push origin feat/your-feature-name`. 8. Open a Pull Request. diff --git a/apps/aurora-backoffice/.gitignore b/apps/aurora-backoffice/.gitignore new file mode 100644 index 00000000..88f855d4 --- /dev/null +++ b/apps/aurora-backoffice/.gitignore @@ -0,0 +1,5 @@ +# Build output +dist + +# Local dev +.env diff --git a/apps/aurora-backoffice/Dockerfile b/apps/aurora-backoffice/Dockerfile new file mode 100644 index 00000000..2d6cc8c5 --- /dev/null +++ b/apps/aurora-backoffice/Dockerfile @@ -0,0 +1,23 @@ +# build context: the output of `pnpm turbo prune @gewis/aurora-backoffice --docker` +FROM node:22 AS builder +ENV CI=true +WORKDIR /app + +COPY json/ ./ +COPY full/ ./ + +RUN corepack enable +RUN pnpm install --no-frozen-lockfile +RUN pnpm --filter @gewis/aurora-api-client run sync +RUN pnpm --filter @gewis/aurora-api-client run build +RUN pnpm --filter @gewis/aurora-backoffice run build + +FROM nginx:alpine +WORKDIR /usr/src/app + +COPY full/apps/aurora-backoffice/docker/nginx.conf /etc/nginx/nginx.conf +COPY full/apps/aurora-backoffice/public /usr/src/app/public +COPY --from=builder /app/apps/aurora-backoffice/dist /usr/src/app + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/apps/aurora-backoffice/README.md b/apps/aurora-backoffice/README.md new file mode 100644 index 00000000..025e7d3e --- /dev/null +++ b/apps/aurora-backoffice/README.md @@ -0,0 +1,24 @@ +# Aurora Backoffice + +This is the **management interface** of the Aurora suite — the web UI used to control DMX lighting, narrowcasting screens, and music playback. The backoffice sends commands to the core over HTTP and receives real-time state updates over SocketIO. +See the root [README](../README.md) for the full architecture overview and list of all Aurora repositories. + +## Prerequisites + +- NodeJS 22. + +## Development setup + +1. Run `pnpm install` from the monorepo root. +1. Run `pnpm dev`. +1. The application is now running at http://localhost:8080. + In development mode, you are automatically logged in without OIDC credentials (mock auth). + +By default, the dev server proxies API requests to `http://localhost:3000`. To use a different core URL, set `VITE_CORE_URL` in the environment. + +## Deployment + +Deployment is handled by Docker Compose from the monorepo root alongside Aurora Core. +The backoffice can be built standalone with `pnpm docker-build` from this directory. + +In production, the backoffice authenticates via OIDC (Keycloak). The `VITE_OIDC_*` environment variables must be configured for the production build. diff --git a/apps/aurora-backoffice/docker/nginx.conf b/apps/aurora-backoffice/docker/nginx.conf new file mode 100644 index 00000000..2773be4c --- /dev/null +++ b/apps/aurora-backoffice/docker/nginx.conf @@ -0,0 +1,84 @@ +user nginx; +worker_processes 1; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + + upstream aurora_core { + server core:3000; + } + + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + server { + listen 80; + server_name localhost; + location / { + root /usr/src/app; + index index.html; + try_files $uri $uri/ /index.html; + } + + location /api-docs { + proxy_pass http://aurora_core; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect off; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + location /api/ { + proxy_pass http://aurora_core; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect off; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + location /socket.io/ { + proxy_pass http://aurora_core; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect off; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + location /static/posters/ { + alias /usr/src/app/data/posters/; + } + + location /static/local-posters/ { + alias /usr/src/app/data/local-posters/; + } + + location /static/audio/ { + alias /usr/src/app/data/audio/; + } + + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } +} diff --git a/apps/aurora-backoffice/env.d.ts b/apps/aurora-backoffice/env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/apps/aurora-backoffice/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/aurora-backoffice/eslint.config.mjs b/apps/aurora-backoffice/eslint.config.mjs new file mode 100644 index 00000000..199b42ff --- /dev/null +++ b/apps/aurora-backoffice/eslint.config.mjs @@ -0,0 +1,5 @@ +import { eslintConfig as common } from '@gewis/eslint-config-typescript'; +import { eslintConfig as vue } from '@gewis/eslint-config-vue'; +import { eslintConfig as prettier } from '@gewis/prettier-config'; + +export default [...common, ...vue, prettier]; diff --git a/apps/aurora-backoffice/index.html b/apps/aurora-backoffice/index.html new file mode 100644 index 00000000..82834fe7 --- /dev/null +++ b/apps/aurora-backoffice/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + Aurora + + +
+ + + diff --git a/apps/aurora-backoffice/package.json b/apps/aurora-backoffice/package.json new file mode 100644 index 00000000..acff5c99 --- /dev/null +++ b/apps/aurora-backoffice/package.json @@ -0,0 +1,59 @@ +{ + "name": "@gewis/aurora-backoffice", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "vite", + "preview": "vite preview", + "build": "vite build", + "typecheck": "vue-tsc -b --noEmit", + "lint": "eslint src --max-warnings=1", + "lint-fix": "eslint src --fix", + "docker-build": "pnpm turbo prune @gewis/aurora-backoffice --docker && docker build -f Dockerfile -t aurora-backoffice ../../out" + }, + "dependencies": { + "@gewis/aurora-api-client": "workspace:*", + "@gewis/splash": "2.4.0", + "@primeuix/themes": "1.2.0", + "@primevue/core": "4.3.6", + "@tailwindcss/postcss": "4.1.14", + "@vee-validate/yup": "4.15.1", + "cronstrue": "2.61.0", + "dotenv": "16.6.1", + "pinia": "3.0.3", + "primeicons": "7.0.0", + "primevue": "4.3.6", + "socket.io-client": "4.8.1", + "tailwind": "4.0.0", + "tailwindcss-primeui": "0.6.1", + "uuid": "11.1.0", + "vue": "3.5.22", + "vue-router": "4.5.1", + "vue-timeago3": "2.3.2", + "yup": "1.6.1" + }, + "devDependencies": { + "@gewis/eslint-config-typescript": "2.3.0", + "@gewis/eslint-config-vue": "2.3.0", + "@gewis/prettier-config": "2.2.2", + "@tsconfig/node22": "22.0.2", + "@types/lodash": "4.17.20", + "@types/uuid": "10.0.0", + "@vitejs/plugin-vue": "5.2.4", + "@vue/tsconfig": "0.7.0", + "autoprefixer": "10.4.21", + "eslint": "9.31.0", + "lodash": "4.17.21", + "npm-run-all": "4.1.5", + "postcss": "8.5.6", + "sass": "1.89.2", + "tailwindcss": "4.1.11", + "typescript": "5.8.3", + "vite": "6.3.5", + "vite-plugin-chunk-split": "0.5.0", + "vue-tsc": "2.2.12" + }, + "engines": { + "node": ">=22.0.0" + } +} diff --git a/apps/aurora-backoffice/postcss.config.js b/apps/aurora-backoffice/postcss.config.js new file mode 100644 index 00000000..b4bee663 --- /dev/null +++ b/apps/aurora-backoffice/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + '@tailwindcss/postcss': {}, + autoprefixer: {}, + }, +}; diff --git a/apps/aurora-backoffice/public/android-chrome-192x192.png b/apps/aurora-backoffice/public/android-chrome-192x192.png new file mode 100644 index 00000000..125e312f Binary files /dev/null and b/apps/aurora-backoffice/public/android-chrome-192x192.png differ diff --git a/apps/aurora-backoffice/public/android-chrome-512x512.png b/apps/aurora-backoffice/public/android-chrome-512x512.png new file mode 100644 index 00000000..dd7d05c7 Binary files /dev/null and b/apps/aurora-backoffice/public/android-chrome-512x512.png differ diff --git a/apps/aurora-backoffice/public/apple-touch-icon.png b/apps/aurora-backoffice/public/apple-touch-icon.png new file mode 100644 index 00000000..1c0ed94f Binary files /dev/null and b/apps/aurora-backoffice/public/apple-touch-icon.png differ diff --git a/apps/aurora-backoffice/public/favicon-16x16.png b/apps/aurora-backoffice/public/favicon-16x16.png new file mode 100644 index 00000000..97b31ed0 Binary files /dev/null and b/apps/aurora-backoffice/public/favicon-16x16.png differ diff --git a/apps/aurora-backoffice/public/favicon-32x32.png b/apps/aurora-backoffice/public/favicon-32x32.png new file mode 100644 index 00000000..50097c1b Binary files /dev/null and b/apps/aurora-backoffice/public/favicon-32x32.png differ diff --git a/apps/aurora-backoffice/public/favicon.ico b/apps/aurora-backoffice/public/favicon.ico new file mode 100644 index 00000000..40ee0900 Binary files /dev/null and b/apps/aurora-backoffice/public/favicon.ico differ diff --git a/apps/aurora-backoffice/public/fonts/Inter-italic.var.woff2 b/apps/aurora-backoffice/public/fonts/Inter-italic.var.woff2 new file mode 100644 index 00000000..b826d5af Binary files /dev/null and b/apps/aurora-backoffice/public/fonts/Inter-italic.var.woff2 differ diff --git a/apps/aurora-backoffice/public/fonts/Inter-roman.var.woff2 b/apps/aurora-backoffice/public/fonts/Inter-roman.var.woff2 new file mode 100644 index 00000000..6a256a06 Binary files /dev/null and b/apps/aurora-backoffice/public/fonts/Inter-roman.var.woff2 differ diff --git a/apps/aurora-backoffice/public/layout/images/helmet-black.svg b/apps/aurora-backoffice/public/layout/images/helmet-black.svg new file mode 100644 index 00000000..ed7173ef --- /dev/null +++ b/apps/aurora-backoffice/public/layout/images/helmet-black.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/aurora-backoffice/public/layout/images/helmet-white.svg b/apps/aurora-backoffice/public/layout/images/helmet-white.svg new file mode 100644 index 00000000..90ee2580 --- /dev/null +++ b/apps/aurora-backoffice/public/layout/images/helmet-white.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/aurora-backoffice/public/site.webmanifest b/apps/aurora-backoffice/public/site.webmanifest new file mode 100644 index 00000000..0b08af12 --- /dev/null +++ b/apps/aurora-backoffice/public/site.webmanifest @@ -0,0 +1,11 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/apps/aurora-backoffice/src/App.vue b/apps/aurora-backoffice/src/App.vue new file mode 100644 index 00000000..8542f43d --- /dev/null +++ b/apps/aurora-backoffice/src/App.vue @@ -0,0 +1,4 @@ + diff --git a/apps/aurora-backoffice/src/assets/layout/_content.scss b/apps/aurora-backoffice/src/assets/layout/_content.scss new file mode 100644 index 00000000..c6a7319a --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_content.scss @@ -0,0 +1,14 @@ +@use './_variables' as *; + +.layout-main-container { + display: flex; + flex-direction: column; + min-height: 100vh; + justify-content: space-between; + padding: 7rem 2rem 2rem 4rem; + transition: margin-left $transitionDuration; +} + +.layout-main { + flex: 1 1 auto; +} diff --git a/apps/aurora-backoffice/src/assets/layout/_main.scss b/apps/aurora-backoffice/src/assets/layout/_main.scss new file mode 100644 index 00000000..fcd12bf3 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_main.scss @@ -0,0 +1,38 @@ +@use './_variables' as *; + +:root { + --surface-ground: var(--p-surface-100); + --surface-hover: var(--p-surface-100); +} + +.dark-mode { + --surface-ground: var(--p-surface-950) !important; + --surface-hover: var(--p-surface-800) !important; +} + +* { + box-sizing: border-box; +} + +html { + height: 100%; + font-size: $scale; +} + +body { + font-family: 'Inter var', sans-serif; + background-color: var(--surface-ground); + margin: 0; + padding: 0; + min-height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + text-decoration: none; +} + +.layout-wrapper { + min-height: 100vh; +} diff --git a/apps/aurora-backoffice/src/assets/layout/_menu.scss b/apps/aurora-backoffice/src/assets/layout/_menu.scss new file mode 100644 index 00000000..5bf72c13 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_menu.scss @@ -0,0 +1,162 @@ +@use './_variables' as *; +@use './_mixins' as *; + +.layout-sidebar { + position: fixed; + width: 300px; + height: calc(100vh - 9rem); + z-index: 999; + overflow-y: auto; + user-select: none; + top: 7rem; + left: 2rem; + transition: + transform $transitionDuration, + left $transitionDuration; + background-color: var(--p-content-background); + border-radius: $borderRadius; + padding: 0.5rem 1.5rem; + box-shadow: + 0 3px 5px rgba(0, 0, 0, 0.02), + 0 0 2px rgba(0, 0, 0, 0.05), + 0 1px 4px rgba(0, 0, 0, 0.08); +} + +.layout-menu { + margin: 0; + padding: 0; + list-style-type: none; + + .layout-root-menuitem { + > .layout-menuitem-root-text { + font-size: 1rem; + text-transform: uppercase; + margin: 0.75rem 0; + } + + > a { + display: none; + } + } + + a { + user-select: none; + + &.active-menuitem { + > .layout-submenu-toggler { + transform: rotate(-180deg); + } + } + } + + li.active-menuitem { + > a { + .layout-submenu-toggler { + transform: rotate(-180deg); + } + } + } + + ul { + margin: 0; + padding: 0; + list-style-type: none; + + a { + display: flex; + align-items: center; + position: relative; + outline: 0 none; + color: var(--text-color); + cursor: pointer; + padding: 0.75rem 1rem; + border-radius: $borderRadius; + transition: + background-color $transitionDuration, + box-shadow $transitionDuration; + + .layout-menuitem-icon { + margin-right: 0.5rem; + } + + .layout-submenu-toggler { + font-size: 75%; + margin-left: auto; + transition: transform $transitionDuration; + } + + &.active-route { + color: var(--p-primary-color); + } + + &:hover { + background-color: var(--surface-hover); + } + + &:focus { + @include focused-inset(); + } + } + + ul { + overflow: hidden; + border-radius: $borderRadius; + + li { + a { + margin-left: 1rem; + } + + li { + a { + margin-left: 2rem; + } + + li { + a { + margin-left: 2.5rem; + } + + li { + a { + margin-left: 3rem; + } + + li { + a { + margin-left: 3.5rem; + } + + li { + a { + margin-left: 4rem; + } + } + } + } + } + } + } + } + } +} + +.layout-submenu-enter-from, +.layout-submenu-leave-to { + max-height: 0; +} + +.layout-submenu-enter-to, +.layout-submenu-leave-from { + max-height: 1000px; +} + +.layout-submenu-leave-active { + overflow: hidden; + transition: max-height 0.45s cubic-bezier(0, 1, 0, 1); +} + +.layout-submenu-enter-active { + overflow: hidden; + transition: max-height 1s ease-in-out; +} diff --git a/apps/aurora-backoffice/src/assets/layout/_mixins.scss b/apps/aurora-backoffice/src/assets/layout/_mixins.scss new file mode 100644 index 00000000..65e74e5f --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_mixins.scss @@ -0,0 +1,13 @@ +@mixin focused() { + outline: 0 none; + outline-offset: 0; + transition: box-shadow 0.2s; + box-shadow: var(--focus-ring); +} + +@mixin focused-inset() { + outline: 0 none; + outline-offset: 0; + transition: box-shadow 0.2s; + box-shadow: inset var(--focus-ring); +} diff --git a/apps/aurora-backoffice/src/assets/layout/_responsive.scss b/apps/aurora-backoffice/src/assets/layout/_responsive.scss new file mode 100644 index 00000000..349cb716 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_responsive.scss @@ -0,0 +1,61 @@ +@use './_variables' as *; + +@media screen and (min-width: 1960px) { + .layout-main, + .landing-wrapper { + width: 1504px; + margin-left: auto !important; + margin-right: auto !important; + } +} + +@media (min-width: 992px) { + .layout-wrapper { + &.layout-static { + .layout-main-container { + margin-left: 300px; + } + + &.layout-static-inactive { + .layout-sidebar { + transform: translateX(-100%); + left: 0; + } + + .layout-main-container { + margin-left: 0; + padding-left: 2rem; + } + } + } + } +} + +@media (max-width: 991px) { + .layout-wrapper { + .layout-main-container { + margin-left: 0; + padding-left: 2rem; + } + + .layout-sidebar { + transform: translateX(-100%); + left: 0; + top: 0; + height: 100vh; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + &.layout-mobile-active { + .layout-sidebar { + transform: translateX(0); + } + + .layout-mask { + display: block; + animation: fadein $transitionDuration; + } + } + } +} diff --git a/apps/aurora-backoffice/src/assets/layout/_topbar.scss b/apps/aurora-backoffice/src/assets/layout/_topbar.scss new file mode 100644 index 00000000..bfd075c0 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_topbar.scss @@ -0,0 +1,106 @@ +@use './_variables' as *; +@use './_mixins' as *; + +.layout-topbar { + position: fixed; + height: 5rem; + z-index: 997; + left: 0; + top: 0; + width: 100%; + padding: 0 2rem; + background-color: var(--p-content-background); + transition: left $transitionDuration; + display: flex; + align-items: center; + box-shadow: + 0 3px 5px rgba(0, 0, 0, 0.02), + 0 0 2px rgba(0, 0, 0, 0.05), + 0 1px 4px rgba(0, 0, 0, 0.08); + + .layout-topbar-logo { + display: flex; + align-items: center; + color: var(--text-color); + font-size: 1.5rem; + font-weight: 500; + width: 120px; + border-radius: 12px; + + img { + height: 2.5rem; + margin-right: 0.5rem; + } + + &:focus { + @include focused(); + } + } + + .layout-topbar-button { + display: inline-flex; + justify-content: center; + align-items: center; + position: relative; + color: var(--text-color); + background-color: transparent; + border-radius: 50%; + border: none; + width: 3rem; + height: 3rem; + cursor: pointer; + transition: background-color $transitionDuration; + + &:hover { + background-color: var(--surface-hover); + } + + &:focus { + @include focused(); + } + + i { + font-size: 1.5rem; + } + + span { + font-size: 1rem; + display: none; + } + + &.left { + order: 0; + } + + &.right { + margin-left: auto; + margin-right: 0; + order: 2; + } + } +} + +@media (max-width: 991px) { + .layout-topbar { + justify-content: space-between; + + .layout-topbar-logo { + width: auto; + order: 1; + } + } + + .layout-topbar-button { + &.left { + margin-right: auto; + margin-left: 0; + order: 0; + } + + &.right { + margin-left: auto; + margin-right: 0; + order: 2; + } + } +} diff --git a/apps/aurora-backoffice/src/assets/layout/_typography.scss b/apps/aurora-backoffice/src/assets/layout/_typography.scss new file mode 100644 index 00000000..d45da982 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_typography.scss @@ -0,0 +1,86 @@ +@use './_variables' as *; + +@font-face { + font-family: 'Inter var'; + font-weight: 100 900; + font-display: swap; + font-style: normal; + src: url('/fonts/Inter-roman.var.woff2?v=3.19') format('woff2'); +} + +@font-face { + font-family: 'Inter var'; + font-weight: 100 900; + font-display: swap; + font-style: italic; + src: url('/fonts/Inter-italic.var.woff2?v=3.19') format('woff2'); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 1.5rem 0 1rem 0; + font-family: inherit; + font-weight: 500; + line-height: 1.2; + + &:first-child { + margin-top: 0; + } +} + +h1 { + font-size: 2.5rem; +} + +h2 { + font-size: 2rem; +} + +h3 { + font-size: 1.75rem; +} + +h4 { + font-size: 1.5rem; +} + +h5 { + font-size: 1.25rem; +} + +h6 { + font-size: 1rem; +} + +mark { + background: #fff8e1; + padding: 0.25rem 0.4rem; + border-radius: $borderRadius; + font-family: monospace; +} + +blockquote { + margin: 1rem 0; + padding: 0 2rem; + border-left: 4px solid #90a4ae; +} + +hr { + border-top: solid var(--text-color); + border-width: 1px 0 0 0; + margin: 1rem 0; +} + +p { + margin: 0 0 1rem 0; + line-height: 1.5; + color: var(--p-text-color); + + &:last-child { + margin-bottom: 0; + } +} diff --git a/apps/aurora-backoffice/src/assets/layout/_variables.scss b/apps/aurora-backoffice/src/assets/layout/_variables.scss new file mode 100644 index 00000000..8f061b59 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/_variables.scss @@ -0,0 +1,3 @@ +$scale: 14px; /* main font size */ +$borderRadius: 12px; /* border radius of layout element e.g. card, sidebar */ +$transitionDuration: 0.2s; /* transition duration of layout elements e.g. sidebar, overlay menus */ diff --git a/apps/aurora-backoffice/src/assets/layout/layout.scss b/apps/aurora-backoffice/src/assets/layout/layout.scss new file mode 100644 index 00000000..34a3f698 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/layout/layout.scss @@ -0,0 +1,6 @@ +@use './_main'; +@use './_topbar'; +@use './_menu'; +@use './_content'; +@use './_responsive'; +@use './_typography'; diff --git a/apps/aurora-backoffice/src/assets/preset.ts b/apps/aurora-backoffice/src/assets/preset.ts new file mode 100644 index 00000000..136ded1a --- /dev/null +++ b/apps/aurora-backoffice/src/assets/preset.ts @@ -0,0 +1,22 @@ +import { definePreset } from '@primeuix/themes'; +import Aura from '@primeuix/themes/aura'; + +export const AuraPreset = definePreset(Aura, { + semantic: { + primary: { + 50: '{amber.50}', + 100: '{amber.100}', + 200: '{amber.200}', + 300: '{amber.300}', + 400: '{amber.400}', + 500: '{amber.500}', + 600: '{amber.600}', + 700: '{amber.700}', + 800: '{amber.800}', + 900: '{amber.900}', + 950: '{amber.950}', + }, + }, +}); + +export default AuraPreset; diff --git a/apps/aurora-backoffice/src/assets/styles.scss b/apps/aurora-backoffice/src/assets/styles.scss new file mode 100644 index 00000000..ef0f76fc --- /dev/null +++ b/apps/aurora-backoffice/src/assets/styles.scss @@ -0,0 +1,4 @@ +@use '@/assets/layout/layout.scss'; +@use 'primeicons/primeicons.css'; + +@use 'tailwind.css'; diff --git a/apps/aurora-backoffice/src/assets/tailwind.css b/apps/aurora-backoffice/src/assets/tailwind.css new file mode 100644 index 00000000..c1e46751 --- /dev/null +++ b/apps/aurora-backoffice/src/assets/tailwind.css @@ -0,0 +1,2 @@ +@import 'tailwindcss'; +@import 'tailwindcss-primeui'; diff --git a/apps/aurora-backoffice/src/components/IconSelector.vue b/apps/aurora-backoffice/src/components/IconSelector.vue new file mode 100644 index 00000000..a311a459 --- /dev/null +++ b/apps/aurora-backoffice/src/components/IconSelector.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/ArtificialBeatDialog.vue b/apps/aurora-backoffice/src/components/audio/ArtificialBeatDialog.vue new file mode 100644 index 00000000..8128a482 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/ArtificialBeatDialog.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/BeatGenerators.vue b/apps/aurora-backoffice/src/components/audio/BeatGenerators.vue new file mode 100644 index 00000000..e24495f8 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/BeatGenerators.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/BeatVisualizer.vue b/apps/aurora-backoffice/src/components/audio/BeatVisualizer.vue new file mode 100644 index 00000000..2a37dee8 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/BeatVisualizer.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/SpotifyCallbackDialog.vue b/apps/aurora-backoffice/src/components/audio/SpotifyCallbackDialog.vue new file mode 100644 index 00000000..2a33f10d --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/SpotifyCallbackDialog.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/SpotifyCurrentlyPlaying.vue b/apps/aurora-backoffice/src/components/audio/SpotifyCurrentlyPlaying.vue new file mode 100644 index 00000000..100301c3 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/SpotifyCurrentlyPlaying.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/SpotifyUserDeleteButton.vue b/apps/aurora-backoffice/src/components/audio/SpotifyUserDeleteButton.vue new file mode 100644 index 00000000..221c3dd0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/SpotifyUserDeleteButton.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audio/SpotifyUserSwitchButton.vue b/apps/aurora-backoffice/src/components/audio/SpotifyUserSwitchButton.vue new file mode 100644 index 00000000..c84cda13 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audio/SpotifyUserSwitchButton.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/audit/AuditBlock.vue b/apps/aurora-backoffice/src/components/audit/AuditBlock.vue new file mode 100644 index 00000000..950f3333 --- /dev/null +++ b/apps/aurora-backoffice/src/components/audit/AuditBlock.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/auth/AuthGuard.vue b/apps/aurora-backoffice/src/components/auth/AuthGuard.vue new file mode 100644 index 00000000..9baa1f5e --- /dev/null +++ b/apps/aurora-backoffice/src/components/auth/AuthGuard.vue @@ -0,0 +1,22 @@ + + + diff --git a/apps/aurora-backoffice/src/components/auth/DevGuard.vue b/apps/aurora-backoffice/src/components/auth/DevGuard.vue new file mode 100644 index 00000000..78b1047c --- /dev/null +++ b/apps/aurora-backoffice/src/components/auth/DevGuard.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/aurora-backoffice/src/components/auth/DevSettings.vue b/apps/aurora-backoffice/src/components/auth/DevSettings.vue new file mode 100644 index 00000000..4b3bc339 --- /dev/null +++ b/apps/aurora-backoffice/src/components/auth/DevSettings.vue @@ -0,0 +1,39 @@ + + + diff --git a/apps/aurora-backoffice/src/components/handlers/AudioHandlerBlock.vue b/apps/aurora-backoffice/src/components/handlers/AudioHandlerBlock.vue new file mode 100644 index 00000000..698a1c71 --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/AudioHandlerBlock.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/handlers/LightHandlerBlock.vue b/apps/aurora-backoffice/src/components/handlers/LightHandlerBlock.vue new file mode 100644 index 00000000..ce84d02a --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/LightHandlerBlock.vue @@ -0,0 +1,27 @@ + + + diff --git a/apps/aurora-backoffice/src/components/handlers/LightsControllerItemComponent.vue b/apps/aurora-backoffice/src/components/handlers/LightsControllerItemComponent.vue new file mode 100644 index 00000000..f085c621 --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/LightsControllerItemComponent.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/handlers/ScreenHandlerBlock.vue b/apps/aurora-backoffice/src/components/handlers/ScreenHandlerBlock.vue new file mode 100644 index 00000000..2f00902e --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/ScreenHandlerBlock.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/handlers/StatusIcon.vue b/apps/aurora-backoffice/src/components/handlers/StatusIcon.vue new file mode 100644 index 00000000..3da3aec2 --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/StatusIcon.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/handlers/SubscriberHandlerChangeSelect.vue b/apps/aurora-backoffice/src/components/handlers/SubscriberHandlerChangeSelect.vue new file mode 100644 index 00000000..d70490ce --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/SubscriberHandlerChangeSelect.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/handlers/SubscriberItemContent.vue b/apps/aurora-backoffice/src/components/handlers/SubscriberItemContent.vue new file mode 100644 index 00000000..1dc5b2ad --- /dev/null +++ b/apps/aurora-backoffice/src/components/handlers/SubscriberItemContent.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/integrations/IntegrationDeleteButton.vue b/apps/aurora-backoffice/src/components/integrations/IntegrationDeleteButton.vue new file mode 100644 index 00000000..1579377b --- /dev/null +++ b/apps/aurora-backoffice/src/components/integrations/IntegrationDeleteButton.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/integrations/IntegrationDialog.vue b/apps/aurora-backoffice/src/components/integrations/IntegrationDialog.vue new file mode 100644 index 00000000..d9277269 --- /dev/null +++ b/apps/aurora-backoffice/src/components/integrations/IntegrationDialog.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/integrations/IntegrationDialogCreate.vue b/apps/aurora-backoffice/src/components/integrations/IntegrationDialogCreate.vue new file mode 100644 index 00000000..adf95628 --- /dev/null +++ b/apps/aurora-backoffice/src/components/integrations/IntegrationDialogCreate.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/integrations/IntegrationDialogUpdate.vue b/apps/aurora-backoffice/src/components/integrations/IntegrationDialogUpdate.vue new file mode 100644 index 00000000..179c75ed --- /dev/null +++ b/apps/aurora-backoffice/src/components/integrations/IntegrationDialogUpdate.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/integrations/IntegrationUserApiKey.vue b/apps/aurora-backoffice/src/components/integrations/IntegrationUserApiKey.vue new file mode 100644 index 00000000..cc77ac3c --- /dev/null +++ b/apps/aurora-backoffice/src/components/integrations/IntegrationUserApiKey.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/ColorBox.vue b/apps/aurora-backoffice/src/components/lights/effects/ColorBox.vue new file mode 100644 index 00000000..8857d74d --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/ColorBox.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonContent.vue b/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonContent.vue new file mode 100644 index 00000000..9a10872c --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonContent.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonDialog.vue new file mode 100644 index 00000000..63e55964 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/EffectControllerButtonDialog.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/EffectHistoryCard.vue b/apps/aurora-backoffice/src/components/lights/effects/EffectHistoryCard.vue new file mode 100644 index 00000000..e6771f38 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/EffectHistoryCard.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/EffectSettingsDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/EffectSettingsDialog.vue new file mode 100644 index 00000000..13da5b6c --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/EffectSettingsDialog.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/LightsGroupToggleButton.vue b/apps/aurora-backoffice/src/components/lights/effects/LightsGroupToggleButton.vue new file mode 100644 index 00000000..693dc607 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/LightsGroupToggleButton.vue @@ -0,0 +1,25 @@ + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/SavedEffect.vue b/apps/aurora-backoffice/src/components/lights/effects/SavedEffect.vue new file mode 100644 index 00000000..925da894 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/SavedEffect.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogColors.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogColors.vue new file mode 100644 index 00000000..0e146eae --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogColors.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectColor.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectColor.vue new file mode 100644 index 00000000..45b76c0c --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectColor.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectMovement.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectMovement.vue new file mode 100644 index 00000000..3e66aabd --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogEffectMovement.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogReset.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogReset.vue new file mode 100644 index 00000000..2d8d34da --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogReset.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogStrobe.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogStrobe.vue new file mode 100644 index 00000000..a394f9e5 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogStrobe.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogSwitch.vue b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogSwitch.vue new file mode 100644 index 00000000..b661293e --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/ButtonDialogSwitch.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/button/LightsGroupsSelect.vue b/apps/aurora-backoffice/src/components/lights/effects/button/LightsGroupsSelect.vue new file mode 100644 index 00000000..5a8ff0be --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/button/LightsGroupsSelect.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulse.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulse.vue new file mode 100644 index 00000000..765b37df --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulse.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulseDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulseDialog.vue new file mode 100644 index 00000000..15db53da --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBackgroundPulseDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOut.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOut.vue new file mode 100644 index 00000000..41b1b65a --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOut.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOutDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOutDialog.vue new file mode 100644 index 00000000..f147dcd3 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectBeatFadeOutDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColor.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColor.vue new file mode 100644 index 00000000..1f476c83 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColor.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColorDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColorDialog.vue new file mode 100644 index 00000000..337a92de --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectRandomColorDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectSingleFlood.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSingleFlood.vue new file mode 100644 index 00000000..411319f4 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSingleFlood.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkle.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkle.vue new file mode 100644 index 00000000..513ce699 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkle.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkleDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkleDialog.vue new file mode 100644 index 00000000..9a3e206d --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectSparkleDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColor.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColor.vue new file mode 100644 index 00000000..b3248c42 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColor.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColorDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColorDialog.vue new file mode 100644 index 00000000..f2aa5463 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectStaticColorDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectWave.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectWave.vue new file mode 100644 index 00000000..71585218 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectWave.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/color/EffectWaveDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/color/EffectWaveDialog.vue new file mode 100644 index 00000000..525346b0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/color/EffectWaveDialog.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotate.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotate.vue new file mode 100644 index 00000000..6e65a5ab --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotate.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotateDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotateDialog.vue new file mode 100644 index 00000000..95413e45 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectClassicRotateDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPosition.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPosition.vue new file mode 100644 index 00000000..829726ee --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPosition.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPositionDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPositionDialog.vue new file mode 100644 index 00000000..3540e86b --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectRandomPositionDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLight.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLight.vue new file mode 100644 index 00000000..95702b3b --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLight.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLightDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLightDialog.vue new file mode 100644 index 00000000..bd493155 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectSearchLightDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotate.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotate.vue new file mode 100644 index 00000000..19e7b1a2 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotate.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotateDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotateDialog.vue new file mode 100644 index 00000000..da1d8841 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectTableRotateDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZag.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZag.vue new file mode 100644 index 00000000..3c6262d0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZag.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZagDialog.vue b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZagDialog.vue new file mode 100644 index 00000000..a603e483 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/movement/EffectZigZagDialog.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/other/StrobeButton.vue b/apps/aurora-backoffice/src/components/lights/effects/other/StrobeButton.vue new file mode 100644 index 00000000..930c71fa --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/other/StrobeButton.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/props/SelectorBoolean.vue b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorBoolean.vue new file mode 100644 index 00000000..78967cd4 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorBoolean.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/props/SelectorDirection.vue b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorDirection.vue new file mode 100644 index 00000000..16a4d4ec --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorDirection.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/props/SelectorLightsColor.vue b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorLightsColor.vue new file mode 100644 index 00000000..9622be7c --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorLightsColor.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/props/SelectorPattern.vue b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorPattern.vue new file mode 100644 index 00000000..17bc4d7d --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorPattern.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/effects/props/SelectorRatioSlider.vue b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorRatioSlider.vue new file mode 100644 index 00000000..37bd341d --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/effects/props/SelectorRatioSlider.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/fixtures/BrightnessSlider.vue b/apps/aurora-backoffice/src/components/lights/fixtures/BrightnessSlider.vue new file mode 100644 index 00000000..c11185f9 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/fixtures/BrightnessSlider.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/lights/fixtures/FixtureType.ts b/apps/aurora-backoffice/src/components/lights/fixtures/FixtureType.ts new file mode 100644 index 00000000..1f8a1871 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/fixtures/FixtureType.ts @@ -0,0 +1,5 @@ +export enum FixtureType { + PAR, + MOVING_HEAD_RGB, + MOVING_HEAD_WHEEL, +} diff --git a/apps/aurora-backoffice/src/components/lights/scenes/SceneDeleteButton.vue b/apps/aurora-backoffice/src/components/lights/scenes/SceneDeleteButton.vue new file mode 100644 index 00000000..852727c0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/lights/scenes/SceneDeleteButton.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/SubscribersDetails.vue b/apps/aurora-backoffice/src/components/modes/SubscribersDetails.vue new file mode 100644 index 00000000..8861d30c --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/SubscribersDetails.vue @@ -0,0 +1,45 @@ + + + diff --git a/apps/aurora-backoffice/src/components/modes/SubscribersSelect.vue b/apps/aurora-backoffice/src/components/modes/SubscribersSelect.vue new file mode 100644 index 00000000..9d9ad6a5 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/SubscribersSelect.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/centurion/CoverPlayButton.vue b/apps/aurora-backoffice/src/components/modes/centurion/CoverPlayButton.vue new file mode 100644 index 00000000..842510c0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/centurion/CoverPlayButton.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/centurion/InitializeCenturion.vue b/apps/aurora-backoffice/src/components/modes/centurion/InitializeCenturion.vue new file mode 100644 index 00000000..0166ad06 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/centurion/InitializeCenturion.vue @@ -0,0 +1,129 @@ + + + diff --git a/apps/aurora-backoffice/src/components/modes/centurion/TapeDetails.vue b/apps/aurora-backoffice/src/components/modes/centurion/TapeDetails.vue new file mode 100644 index 00000000..0dd3ef16 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/centurion/TapeDetails.vue @@ -0,0 +1,24 @@ + + + diff --git a/apps/aurora-backoffice/src/components/modes/centurion/TapeTimeline.vue b/apps/aurora-backoffice/src/components/modes/centurion/TapeTimeline.vue new file mode 100644 index 00000000..d83f5835 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/centurion/TapeTimeline.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerRegister.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerRegister.vue new file mode 100644 index 00000000..11b7e434 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerRegister.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerScore.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerScore.vue new file mode 100644 index 00000000..1739ea75 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerScore.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerTimer.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerTimer.vue new file mode 100644 index 00000000..bb7c8549 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/PlayerTimer.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceInitialize.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceInitialize.vue new file mode 100644 index 00000000..8a91c0b0 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceInitialize.vue @@ -0,0 +1,84 @@ + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceScoreboard.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceScoreboard.vue new file mode 100644 index 00000000..210ebd73 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceScoreboard.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceStepper.vue b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceStepper.vue new file mode 100644 index 00000000..7432eb47 --- /dev/null +++ b/apps/aurora-backoffice/src/components/modes/time-trail-race/TimeTrailRaceStepper.vue @@ -0,0 +1,116 @@ +