From 977386f60555de210de905ad3e253e890b09dfe1 Mon Sep 17 00:00:00 2001 From: Tutur33 Date: Wed, 6 Dec 2023 22:34:07 +0100 Subject: [PATCH] build --- .env | 2 +- .gitignore | 1 - build/app/Controllers/Http/AuthController.js | 44 ++++++ .../Controllers/Http/AuthController.js.map | 1 + .../app/Controllers/Http/CompteController.js | 36 +++++ .../Controllers/Http/CompteController.js.map | 1 + build/app/Middleware/Auth.js | 26 ++++ build/app/Middleware/Auth.js.map | 1 + build/app/Middleware/SilentAuth.js | 10 ++ build/app/Middleware/SilentAuth.js.map | 1 + build/app/Models/User.js | 76 ++++++++++ build/app/Models/User.js.map | 1 + build/app/Validators/CreateUserValidator.js | 21 +++ .../app/Validators/CreateUserValidator.js.map | 1 + build/app/Validators/ModifEmailValidator.js | 18 +++ .../app/Validators/ModifEmailValidator.js.map | 1 + build/app/Validators/ModifPseudoValidator.js | 17 +++ .../Validators/ModifPseudoValidator.js.map | 1 + build/config/auth.js | 41 ++++++ build/config/auth.js.map | 1 + build/config/database.js | 31 ++++ build/config/database.js.map | 1 + build/contracts/auth.js | 3 + build/contracts/auth.js.map | 1 + build/database/factories/index.js | 1 + build/database/factories/index.js.map | 1 + .../migrations/1701712115317_users.js | 29 ++++ .../migrations/1701712115317_users.js.map | 1 + build/public/Logo Discord.png | Bin 0 -> 45453 bytes build/public/assets/app.02c2543a.css | 4 + build/public/assets/app.8c2f579c.js | 1 + build/public/logo github.png | Bin 0 -> 50629 bytes build/public/logo insta.png | Bin 0 -> 189485 bytes build/public/other.png | Bin 0 -> 10843 bytes build/public/pp.jpg | Bin 0 -> 317821 bytes build/public/projects/journal.avif | Bin 0 -> 12870 bytes build/public/projects/my-networks.jpg | Bin 0 -> 30507 bytes build/public/projects/project-nups.png | Bin 0 -> 26006 bytes build/resources/views/auth/login.edge | 46 ++++++ build/resources/views/auth/signup.edge | 60 ++++++++ build/resources/views/components/flash.edge | 71 +++++++++ .../views/components/form/button.edge | 12 ++ .../views/components/form/field.edge | 30 ++++ .../resources/views/components/form/form.edge | 7 + .../resources/views/components/list_lien.edge | 7 + build/resources/views/components/project.edge | 3 + .../views/components/select_theme.edge | 139 ++++++++++++++++++ build/resources/views/compte.edge | 102 +++++++++++++ build/resources/views/home.edge | 17 +++ build/resources/views/layouts/main.edge | 14 ++ build/resources/views/partials/footer.edge | 22 +++ build/resources/views/partials/header.edge | 43 ++++++ .../resources/views/partials/main/about.edge | 21 +++ .../views/partials/main/contact.edge | 35 +++++ .../views/partials/main/projects.edge | 18 +++ build/resources/views/partials/nav.edge | 78 ++++++++++ build/resources/views/terms.edge | 122 +++++++++++++++ 57 files changed, 1219 insertions(+), 2 deletions(-) create mode 100644 build/app/Controllers/Http/AuthController.js create mode 100644 build/app/Controllers/Http/AuthController.js.map create mode 100644 build/app/Controllers/Http/CompteController.js create mode 100644 build/app/Controllers/Http/CompteController.js.map create mode 100644 build/app/Middleware/Auth.js create mode 100644 build/app/Middleware/Auth.js.map create mode 100644 build/app/Middleware/SilentAuth.js create mode 100644 build/app/Middleware/SilentAuth.js.map create mode 100644 build/app/Models/User.js create mode 100644 build/app/Models/User.js.map create mode 100644 build/app/Validators/CreateUserValidator.js create mode 100644 build/app/Validators/CreateUserValidator.js.map create mode 100644 build/app/Validators/ModifEmailValidator.js create mode 100644 build/app/Validators/ModifEmailValidator.js.map create mode 100644 build/app/Validators/ModifPseudoValidator.js create mode 100644 build/app/Validators/ModifPseudoValidator.js.map create mode 100644 build/config/auth.js create mode 100644 build/config/auth.js.map create mode 100644 build/config/database.js create mode 100644 build/config/database.js.map create mode 100644 build/contracts/auth.js create mode 100644 build/contracts/auth.js.map create mode 100644 build/database/factories/index.js create mode 100644 build/database/factories/index.js.map create mode 100644 build/database/migrations/1701712115317_users.js create mode 100644 build/database/migrations/1701712115317_users.js.map create mode 100644 build/public/Logo Discord.png create mode 100644 build/public/assets/app.02c2543a.css create mode 100644 build/public/assets/app.8c2f579c.js create mode 100644 build/public/logo github.png create mode 100644 build/public/logo insta.png create mode 100644 build/public/other.png create mode 100644 build/public/pp.jpg create mode 100644 build/public/projects/journal.avif create mode 100644 build/public/projects/my-networks.jpg create mode 100644 build/public/projects/project-nups.png create mode 100644 build/resources/views/auth/login.edge create mode 100644 build/resources/views/auth/signup.edge create mode 100644 build/resources/views/components/flash.edge create mode 100644 build/resources/views/components/form/button.edge create mode 100644 build/resources/views/components/form/field.edge create mode 100644 build/resources/views/components/form/form.edge create mode 100644 build/resources/views/components/list_lien.edge create mode 100644 build/resources/views/components/project.edge create mode 100644 build/resources/views/components/select_theme.edge create mode 100644 build/resources/views/compte.edge create mode 100644 build/resources/views/home.edge create mode 100644 build/resources/views/layouts/main.edge create mode 100644 build/resources/views/partials/footer.edge create mode 100644 build/resources/views/partials/header.edge create mode 100644 build/resources/views/partials/main/about.edge create mode 100644 build/resources/views/partials/main/contact.edge create mode 100644 build/resources/views/partials/main/projects.edge create mode 100644 build/resources/views/partials/nav.edge create mode 100644 build/resources/views/terms.edge diff --git a/.env b/.env index 7fa18084..125cf2f3 100644 --- a/.env +++ b/.env @@ -5,4 +5,4 @@ APP_KEY=1Ad59qH3RodlK8Py5hr2WA2VeNUXEqmL DRIVE_DISK=local SESSION_DRIVER=cookie CACHE_VIEWS=false -DB_CONNECTION=sqlite +DB_CONNECTION=sqlite \ No newline at end of file diff --git a/.gitignore b/.gitignore index af14e82a..c4acdcf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules -build coverage .vscode .DS_STORE diff --git a/build/app/Controllers/Http/AuthController.js b/build/app/Controllers/Http/AuthController.js new file mode 100644 index 00000000..f17b4b3f --- /dev/null +++ b/build/app/Controllers/Http/AuthController.js @@ -0,0 +1,44 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const User_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Models/User")); +const CreateUserValidator_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Validators/CreateUserValidator")); +class AuthController { + async login({ view }) { + return view.render('auth/login'); + } + async doLogin({ request, auth, response, session }) { + const email = request.input('email'); + const password = request.input('password'); + try { + await auth.use('web').attempt(email, password); + response.redirect().toRoute('home'); + } + catch { + session.flash({ error: 'Identifiants incorrects' }); + response.redirect().toRoute('login'); + } + } + async signup({ view }) { + return view.render('auth/signup'); + } + async doSignup({ request, response, auth }) { + const playload = await request.validate(CreateUserValidator_1.default); + await User_1.default.create(playload); + try { + await auth.use('web').attempt(playload.email, playload.password); + response.redirect().toRoute('home'); + } + catch { + response.redirect().toRoute('login'); + } + } + async logout({ auth, response }) { + await auth.logout(); + return response.redirect().back(); + } +} +exports.default = AuthController; +//# sourceMappingURL=AuthController.js.map \ No newline at end of file diff --git a/build/app/Controllers/Http/AuthController.js.map b/build/app/Controllers/Http/AuthController.js.map new file mode 100644 index 00000000..c0ff60f7 --- /dev/null +++ b/build/app/Controllers/Http/AuthController.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AuthController.js","sourceRoot":"","sources":["../../../../app/Controllers/Http/AuthController.ts"],"names":[],"mappings":";;;;;AACA,iFAAmC;AACnC,mHAAqE;AAGrE,MAAqB,cAAc;IAEjC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAuB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAuB;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAE1C,IAAI;YACF,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SACpC;QAAC,MAAM;YACN,OAAO,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,yBAAyB,EAAC,CAAC,CAAA;YACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;SACrC;IACH,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAuB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAuB;QAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,6BAAmB,CAAC,CAAA;QAC5D,MAAM,cAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAI;YACF,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAChE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SACpC;QAAC,MAAM;YACN,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;SACrC;IACH,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAsB;QACjD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;CACD;AAxCD,iCAwCC"} \ No newline at end of file diff --git a/build/app/Controllers/Http/CompteController.js b/build/app/Controllers/Http/CompteController.js new file mode 100644 index 00000000..b33cd928 --- /dev/null +++ b/build/app/Controllers/Http/CompteController.js @@ -0,0 +1,36 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const ModifPseudoValidator_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Validators/ModifPseudoValidator")); +const ModifEmailValidator_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Validators/ModifEmailValidator")); +class CompteController { + async index({ view }) { + return view.render('compte'); + } + async modifpseudo({ request, auth, session, response }) { + const user = auth.user; + await request.validate(ModifPseudoValidator_1.default); + user.pseudo = request.input('pseudo'); + await user.save(); + session.flash({ success: "Username updated successfully" }); + response.redirect().back(); + } + async modifemail({ request, auth, session, response }) { + const user = auth.user; + await request.validate(ModifEmailValidator_1.default); + user.email = request.input('email'); + await user.save(); + session.flash({ success: "Email updated successfully" }); + response.redirect().back(); + } + async delete({ auth, response }) { + const user = auth.user; + await user.delete(); + await auth.logout(); + response.redirect().toRoute('home'); + } +} +exports.default = CompteController; +//# sourceMappingURL=CompteController.js.map \ No newline at end of file diff --git a/build/app/Controllers/Http/CompteController.js.map b/build/app/Controllers/Http/CompteController.js.map new file mode 100644 index 00000000..90c58198 --- /dev/null +++ b/build/app/Controllers/Http/CompteController.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CompteController.js","sourceRoot":"","sources":["../../../../app/Controllers/Http/CompteController.ts"],"names":[],"mappings":";;;;;AACA,qHAAsE;AACtE,mHAAoE;AAEpE,MAAqB,gBAAgB;IAEnC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAuB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAuB;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAEtB,MAAM,OAAO,CAAC,QAAQ,CAAC,8BAAoB,CAAC,CAAA;QAE5C,IAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,IAAK,CAAC,IAAI,EAAE,CAAA;QAClB,OAAO,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,+BAA+B,EAAC,CAAC,CAAA;QACzD,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAuB;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAEtB,MAAM,OAAO,CAAC,QAAQ,CAAC,6BAAmB,CAAC,CAAA;QAE3C,IAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,IAAK,CAAC,IAAI,EAAE,CAAA;QAClB,OAAO,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,4BAA4B,EAAC,CAAC,CAAA;QACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAuB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,MAAM,IAAK,CAAC,MAAM,EAAE,CAAA;QACpB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;CAEF;AAnCD,mCAmCC"} \ No newline at end of file diff --git a/build/app/Middleware/Auth.js b/build/app/Middleware/Auth.js new file mode 100644 index 00000000..9b4976d6 --- /dev/null +++ b/build/app/Middleware/Auth.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const standalone_1 = require("@adonisjs/auth/build/standalone"); +class AuthMiddleware { + constructor() { + this.redirectTo = 'auth/login'; + } + async authenticate(auth, guards) { + let guardLastAttempted; + for (let guard of guards) { + guardLastAttempted = guard; + if (await auth.use(guard).check()) { + auth.defaultGuard = guard; + return true; + } + } + throw new standalone_1.AuthenticationException('Unauthorized access', 'E_UNAUTHORIZED_ACCESS', guardLastAttempted, this.redirectTo); + } + async handle({ auth }, next, customGuards) { + const guards = customGuards.length ? customGuards : [auth.name]; + await this.authenticate(auth, guards); + await next(); + } +} +exports.default = AuthMiddleware; +//# sourceMappingURL=Auth.js.map \ No newline at end of file diff --git a/build/app/Middleware/Auth.js.map b/build/app/Middleware/Auth.js.map new file mode 100644 index 00000000..17021d4b --- /dev/null +++ b/build/app/Middleware/Auth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../app/Middleware/Auth.ts"],"names":[],"mappings":";;AAAA,gEAAyE;AAWzE,MAAqB,cAAc;IAAnC;QAIY,eAAU,GAAG,YAAY,CAAA;IA4DrC,CAAC;IAlDW,KAAK,CAAC,YAAY,CAAC,IAAiC,EAAE,MAA4B;QAO1F,IAAI,kBAAsC,CAAA;QAE1C,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;YACxB,kBAAkB,GAAG,KAAK,CAAA;YAE1B,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAMjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;gBACzB,OAAO,IAAI,CAAA;aACZ;SACF;QAKD,MAAM,IAAI,oCAAuB,CAC/B,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAChB,CAAA;IACH,CAAC;IAKM,KAAK,CAAC,MAAM,CACjB,EAAE,IAAI,EAAuB,EAC7B,IAAyB,EACzB,YAAkC;QAMlC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,IAAI,EAAE,CAAA;IACd,CAAC;CACF;AAhED,iCAgEC"} \ No newline at end of file diff --git a/build/app/Middleware/SilentAuth.js b/build/app/Middleware/SilentAuth.js new file mode 100644 index 00000000..7d4c957f --- /dev/null +++ b/build/app/Middleware/SilentAuth.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class SilentAuthMiddleware { + async handle({ auth }, next) { + await auth.check(); + await next(); + } +} +exports.default = SilentAuthMiddleware; +//# sourceMappingURL=SilentAuth.js.map \ No newline at end of file diff --git a/build/app/Middleware/SilentAuth.js.map b/build/app/Middleware/SilentAuth.js.map new file mode 100644 index 00000000..9a364285 --- /dev/null +++ b/build/app/Middleware/SilentAuth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SilentAuth.js","sourceRoot":"","sources":["../../../app/Middleware/SilentAuth.ts"],"names":[],"mappings":";;AAQA,MAAqB,oBAAoB;IAIhC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAuB,EAAE,IAAyB;QAK1E,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,MAAM,IAAI,EAAE,CAAA;IACd,CAAC;CACF;AAZD,uCAYC"} \ No newline at end of file diff --git a/build/app/Models/User.js b/build/app/Models/User.js new file mode 100644 index 00000000..fe641617 --- /dev/null +++ b/build/app/Models/User.js @@ -0,0 +1,76 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const luxon_1 = require("luxon"); +const Hash_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Hash")); +const Orm_1 = global[Symbol.for('ioc.use')]("Adonis/Lucid/Orm"); +const ResponsiveAttachment_1 = global[Symbol.for('ioc.use')]("Adonis/Addons/ResponsiveAttachment"); +class User extends Orm_1.BaseModel { + get avatarUrl() { + if (this.avatar) { + return '/uploads/' + this.avatar.breakpoints.small.name; + } + return 'https://source.boringavatars.com/beam/40/${this.email}?colors=001449,012677,005BC5,00B4FC,17F9FF'; + } + static async hashPassword(user) { + if (user.$dirty.password) { + user.password = await Hash_1.default.make(user.password); + } + } +} +__decorate([ + (0, Orm_1.column)({ isPrimary: true }), + __metadata("design:type", Number) +], User.prototype, "id", void 0); +__decorate([ + (0, Orm_1.column)(), + __metadata("design:type", String) +], User.prototype, "pseudo", void 0); +__decorate([ + (0, Orm_1.column)(), + __metadata("design:type", String) +], User.prototype, "email", void 0); +__decorate([ + (0, Orm_1.column)({ serializeAs: null }), + __metadata("design:type", String) +], User.prototype, "password", void 0); +__decorate([ + (0, Orm_1.column)(), + __metadata("design:type", Object) +], User.prototype, "rememberMeToken", void 0); +__decorate([ + Orm_1.column.dateTime({ autoCreate: true }), + __metadata("design:type", luxon_1.DateTime) +], User.prototype, "createdAt", void 0); +__decorate([ + Orm_1.column.dateTime({ autoCreate: true, autoUpdate: true }), + __metadata("design:type", luxon_1.DateTime) +], User.prototype, "updatedAt", void 0); +__decorate([ + (0, ResponsiveAttachment_1.responsiveAttachment)({ preComputeUrls: true }), + __metadata("design:type", Object) +], User.prototype, "avatar", void 0); +__decorate([ + (0, Orm_1.computed)(), + __metadata("design:type", Object), + __metadata("design:paramtypes", []) +], User.prototype, "avatarUrl", null); +__decorate([ + (0, Orm_1.beforeSave)(), + __metadata("design:type", Function), + __metadata("design:paramtypes", [User]), + __metadata("design:returntype", Promise) +], User, "hashPassword", null); +exports.default = User; +//# sourceMappingURL=User.js.map \ No newline at end of file diff --git a/build/app/Models/User.js.map b/build/app/Models/User.js.map new file mode 100644 index 00000000..06a5a1aa --- /dev/null +++ b/build/app/Models/User.js.map @@ -0,0 +1 @@ +{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../app/Models/User.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iCAAgC;AAChC,kFAAwC;AACxC,gEAA+E;AAC/E,mGAA4G;AAE5G,MAAqB,IAAK,SAAQ,eAAS;IA0BzC,IAAW,SAAS;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,WAAW,GAAC,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,KAAK,CAAC,IAAI,CAAA;SACvD;QACD,OAAO,kGAAkG,CAAA;IAC3G,CAAC;IAGM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAE,IAAU;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC/C;IACH,CAAC;CACF;AArCC;IADC,IAAA,YAAM,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;gCACX;AAGjB;IADC,IAAA,YAAM,GAAE;;oCACY;AAGrB;IADC,IAAA,YAAM,GAAE;;mCACW;AAGpB;IADC,IAAA,YAAM,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;sCACP;AAGvB;IADC,IAAA,YAAM,GAAE;;6CAC4B;AAGrC;IADC,YAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;8BACpB,gBAAQ;uCAAA;AAG1B;IADC,YAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;8BACtC,gBAAQ;uCAAA;AAG1B;IADC,IAAA,2CAAoB,EAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;oCACJ;AAG3C;IADC,IAAA,cAAQ,GAAE;;;qCAMV;AAGD;IADC,IAAA,gBAAU,GAAE;;qCAC2B,IAAI;;8BAI3C;AAtCH,uBAuCC"} \ No newline at end of file diff --git a/build/app/Validators/CreateUserValidator.js b/build/app/Validators/CreateUserValidator.js new file mode 100644 index 00000000..65262dc3 --- /dev/null +++ b/build/app/Validators/CreateUserValidator.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const Validator_1 = global[Symbol.for('ioc.use')]("Adonis/Core/Validator"); +class CreateUserValidator { + constructor(ctx) { + this.ctx = ctx; + this.schema = Validator_1.schema.create({ + pseudo: Validator_1.schema.string(), + email: Validator_1.schema.string({}, [Validator_1.rules.email(), Validator_1.rules.unique({ table: 'users', column: 'email' })]), + password: Validator_1.schema.string({}, [Validator_1.rules.minLength(4), Validator_1.rules.confirmed()]) + }); + this.messages = { + required: 'The {{ field }} is required to create a new account', + 'email.email': 'Vous devez saisir un email dans le champ email', + 'email.unique': 'Email is already in use', + 'password.minLength': 'The password must be at least 4 characters long' + }; + } +} +exports.default = CreateUserValidator; +//# sourceMappingURL=CreateUserValidator.js.map \ No newline at end of file diff --git a/build/app/Validators/CreateUserValidator.js.map b/build/app/Validators/CreateUserValidator.js.map new file mode 100644 index 00000000..cd27e5e3 --- /dev/null +++ b/build/app/Validators/CreateUserValidator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CreateUserValidator.js","sourceRoot":"","sources":["../../../app/Validators/CreateUserValidator.ts"],"names":[],"mappings":";;AAAA,2EAA0E;AAG1E,MAAqB,mBAAmB;IACtC,YAAsB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;QAqBvC,WAAM,GAAG,kBAAM,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,kBAAM,CAAC,MAAM,EAAE;YACvB,KAAK,EAAE,kBAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,iBAAK,CAAC,KAAK,EAAE,EAAE,iBAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAE,CAAC;YAC7F,QAAQ,EAAE,kBAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,iBAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAK,CAAC,SAAS,EAAE,CAAE,CAAC;SACtE,CAAC,CAAA;QAaK,aAAQ,GAAmB;YAChC,QAAQ,EAAE,qDAAqD;YAC/D,aAAa,EAAE,gDAAgD;YAC/D,cAAc,EAAE,yBAAyB;YACzC,oBAAoB,EAAE,iDAAiD;SACxE,CAAA;IA3CgD,CAAC;CA4CnD;AA7CD,sCA6CC"} \ No newline at end of file diff --git a/build/app/Validators/ModifEmailValidator.js b/build/app/Validators/ModifEmailValidator.js new file mode 100644 index 00000000..b3b03548 --- /dev/null +++ b/build/app/Validators/ModifEmailValidator.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const Validator_1 = global[Symbol.for('ioc.use')]("Adonis/Core/Validator"); +class ModifEmailValidator { + constructor(ctx) { + this.ctx = ctx; + this.schema = Validator_1.schema.create({ + email: Validator_1.schema.string({}, [Validator_1.rules.email(), Validator_1.rules.unique({ table: 'users', column: 'email' })]) + }); + this.messages = { + required: 'The {{ field }} is required to modifie email', + 'email.email': 'You must enter an email in the email field', + 'email.unique': 'Email is already in use' + }; + } +} +exports.default = ModifEmailValidator; +//# sourceMappingURL=ModifEmailValidator.js.map \ No newline at end of file diff --git a/build/app/Validators/ModifEmailValidator.js.map b/build/app/Validators/ModifEmailValidator.js.map new file mode 100644 index 00000000..a07bc543 --- /dev/null +++ b/build/app/Validators/ModifEmailValidator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModifEmailValidator.js","sourceRoot":"","sources":["../../../app/Validators/ModifEmailValidator.ts"],"names":[],"mappings":";;AAAA,2EAA0E;AAG1E,MAAqB,mBAAmB;IACtC,YAAsB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;QAqBvC,WAAM,GAAG,kBAAM,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,kBAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,iBAAK,CAAC,KAAK,EAAE,EAAE,iBAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAE,CAAC;SAC9F,CAAC,CAAA;QAaK,aAAQ,GAAmB;YAChC,QAAQ,EAAE,8CAA8C;YACxD,aAAa,EAAE,4CAA4C;YAC3D,cAAc,EAAE,yBAAyB;SAC1C,CAAA;IAxCgD,CAAC;CAyCnD;AA1CD,sCA0CC"} \ No newline at end of file diff --git a/build/app/Validators/ModifPseudoValidator.js b/build/app/Validators/ModifPseudoValidator.js new file mode 100644 index 00000000..2fac76c2 --- /dev/null +++ b/build/app/Validators/ModifPseudoValidator.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const Validator_1 = global[Symbol.for('ioc.use')]("Adonis/Core/Validator"); +class ModifPseudoValidator { + constructor(ctx) { + this.ctx = ctx; + this.schema = Validator_1.schema.create({ + pseudo: Validator_1.schema.string({}, [Validator_1.rules.minLength(3)]) + }); + this.messages = { + required: 'The {{ field }} is required to modifie pseudo', + 'pseudo.minLength': 'The pseudo must be at least 3 characters long' + }; + } +} +exports.default = ModifPseudoValidator; +//# sourceMappingURL=ModifPseudoValidator.js.map \ No newline at end of file diff --git a/build/app/Validators/ModifPseudoValidator.js.map b/build/app/Validators/ModifPseudoValidator.js.map new file mode 100644 index 00000000..c5a448f3 --- /dev/null +++ b/build/app/Validators/ModifPseudoValidator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ModifPseudoValidator.js","sourceRoot":"","sources":["../../../app/Validators/ModifPseudoValidator.ts"],"names":[],"mappings":";;AAAA,2EAA0E;AAG1E,MAAqB,oBAAoB;IACvC,YAAsB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;QAqBvC,WAAM,GAAG,kBAAM,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,kBAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,iBAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC,CAAA;QAaK,aAAQ,GAAmB;YAChC,QAAQ,EAAE,+CAA+C;YACzD,kBAAkB,EAAE,+CAA+C;SACpE,CAAA;IAvCgD,CAAC;CAwCnD;AAzCD,uCAyCC"} \ No newline at end of file diff --git a/build/config/auth.js b/build/config/auth.js new file mode 100644 index 00000000..78bf1fa7 --- /dev/null +++ b/build/config/auth.js @@ -0,0 +1,41 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const authConfig = { + guard: 'web', + guards: { + web: { + driver: 'session', + provider: { + driver: 'lucid', + identifierKey: 'id', + uids: ['email'], + model: () => Promise.resolve().then(() => __importStar(global[Symbol.for('ioc.use')]('App/Models/User'))), + }, + }, + }, +}; +exports.default = authConfig; +//# sourceMappingURL=auth.js.map \ No newline at end of file diff --git a/build/config/auth.js.map b/build/config/auth.js.map new file mode 100644 index 00000000..61a7424b --- /dev/null +++ b/build/config/auth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../config/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAM,UAAU,GAAe;IAC7B,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE;QAWN,GAAG,EAAE;YACH,MAAM,EAAE,SAAS;YAEjB,QAAQ,EAAE;gBASR,MAAM,EAAE,OAAO;gBAWf,aAAa,EAAE,IAAI;gBAYnB,IAAI,EAAE,CAAC,OAAO,CAAC;gBAaf,KAAK,EAAE,GAAG,EAAE,yEAAQ,iBAAiB,GAAC;aACvC;SACF;KACF;CACF,CAAA;AAED,kBAAe,UAAU,CAAA"} \ No newline at end of file diff --git a/build/config/database.js b/build/config/database.js new file mode 100644 index 00000000..59f3ff5b --- /dev/null +++ b/build/config/database.js @@ -0,0 +1,31 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Env_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Env")); +const Application_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Core/Application")); +const databaseConfig = { + connection: Env_1.default.get('DB_CONNECTION'), + connections: { + sqlite: { + client: 'sqlite', + connection: { + filename: Application_1.default.tmpPath('db.sqlite3'), + }, + pool: { + afterCreate: (conn, cb) => { + conn.run('PRAGMA foreign_keys=true', cb); + } + }, + migrations: { + naturalSort: true, + }, + useNullAsDefault: true, + healthCheck: false, + debug: false, + }, + } +}; +exports.default = databaseConfig; +//# sourceMappingURL=database.js.map \ No newline at end of file diff --git a/build/config/database.js.map b/build/config/database.js.map new file mode 100644 index 00000000..584f6db7 --- /dev/null +++ b/build/config/database.js.map @@ -0,0 +1 @@ +{"version":3,"file":"database.js","sourceRoot":"","sources":["../../config/database.ts"],"names":[],"mappings":";;;;;AAOA,gFAAsC;AACtC,gGAAsD;AAGtD,MAAM,cAAc,GAAmB;IAWrC,UAAU,EAAE,aAAG,CAAC,GAAG,CAAC,eAAe,CAAC;IAEpC,WAAW,EAAE;QAYX,MAAM,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE;gBACV,QAAQ,EAAE,qBAAW,CAAC,OAAO,CAAC,YAAY,CAAC;aAC5C;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBACxB,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;gBAC1C,CAAC;aACF;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,IAAI;aAClB;YACD,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,KAAK;SACb;KAEF;CACF,CAAA;AAED,kBAAe,cAAc,CAAA"} \ No newline at end of file diff --git a/build/contracts/auth.js b/build/contracts/auth.js new file mode 100644 index 00000000..1bf08174 --- /dev/null +++ b/build/contracts/auth.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=auth.js.map \ No newline at end of file diff --git a/build/contracts/auth.js.map b/build/contracts/auth.js.map new file mode 100644 index 00000000..208c50fb --- /dev/null +++ b/build/contracts/auth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../contracts/auth.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/database/factories/index.js b/build/database/factories/index.js new file mode 100644 index 00000000..8332f84c --- /dev/null +++ b/build/database/factories/index.js @@ -0,0 +1 @@ +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/database/factories/index.js.map b/build/database/factories/index.js.map new file mode 100644 index 00000000..eeb9b1df --- /dev/null +++ b/build/database/factories/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../database/factories/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/database/migrations/1701712115317_users.js b/build/database/migrations/1701712115317_users.js new file mode 100644 index 00000000..7fd513d0 --- /dev/null +++ b/build/database/migrations/1701712115317_users.js @@ -0,0 +1,29 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Schema_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Lucid/Schema")); +class default_1 extends Schema_1.default { + constructor() { + super(...arguments); + this.tableName = 'users'; + } + async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary(); + table.string('pseudo', 50).notNullable(); + table.string('email', 255).notNullable().unique(); + table.string('password', 180).notNullable(); + table.json('avatar'); + table.string('remember_me_token').nullable(); + table.timestamp('created_at', { useTz: true }).notNullable(); + table.timestamp('updated_at', { useTz: true }).notNullable(); + }); + } + async down() { + this.schema.dropTable(this.tableName); + } +} +exports.default = default_1; +//# sourceMappingURL=1701712115317_users.js.map \ No newline at end of file diff --git a/build/database/migrations/1701712115317_users.js.map b/build/database/migrations/1701712115317_users.js.map new file mode 100644 index 00000000..1c122198 --- /dev/null +++ b/build/database/migrations/1701712115317_users.js.map @@ -0,0 +1 @@ +{"version":3,"file":"1701712115317_users.js","sourceRoot":"","sources":["../../../database/migrations/1701712115317_users.ts"],"names":[],"mappings":";;;;;AAAA,uFAAiD;AAEjD,eAAqB,SAAQ,gBAAU;IAAvC;;QACY,cAAS,GAAG,OAAO,CAAA;IAoB/B,CAAC;IAlBQ,KAAK,CAAC,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAChD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;YAEhC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YACxC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAA;YACjD,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEpB,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAA;YAC5C,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YAC5D,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;CACF;AArBD,4BAqBC"} \ No newline at end of file diff --git a/build/public/Logo Discord.png b/build/public/Logo Discord.png new file mode 100644 index 0000000000000000000000000000000000000000..71c07d17d029b7484558b1c96775b49964ca357b GIT binary patch literal 45453 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 Z|9=%ESnGT9jwt{D002ovPDHLkV1g_f|F{4E literal 0 HcmV?d00001 diff --git a/build/public/assets/app.02c2543a.css b/build/public/assets/app.02c2543a.css new file mode 100644 index 00000000..b76f498d --- /dev/null +++ b/build/public/assets/app.02c2543a.css @@ -0,0 +1,4 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:400,900); +/* +! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com +*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-inset-1{inset:-.25rem}.-inset-1\.5{inset:-.375rem}.inset-y-0{bottom:0;top:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.m-1{margin:.25rem}.m-24{margin:6rem}.mx-24{margin-left:6rem;margin-right:6rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-bottom:2.5rem;margin-top:2.5rem}.my-20{margin-bottom:5rem;margin-top:5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-9{margin-bottom:2.25rem}.ml-10{margin-left:2.5rem}.ml-3{margin-left:.75rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-36{margin-top:9rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-9{margin-top:2.25rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-16{height:4rem}.h-28{height:7rem}.h-32{height:8rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-72{height:18rem}.h-8{height:2rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-16{width:4rem}.w-32{width:8rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-auto{width:auto}.w-full{width:100%}.max-w-5xl{max-width:64rem}.max-w-7xl{max-width:80rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.origin-top-right{transform-origin:top right}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-l-8{border-left-width:8px}.border-solid{border-style:solid}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-none{background-image:none}.fill-sky-400\/20{fill:rgba(56,189,248,.2)}.fill-sky-500{fill:#0ea5e9}.fill-slate-400{fill:#94a3b8}.fill-transparent{fill:transparent}.stroke-sky-500{stroke:#0ea5e9}.stroke-slate-400{stroke:#94a3b8}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-20{padding-left:5rem;padding-right:5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-24{padding-bottom:6rem;padding-top:6rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-9{padding-right:2.25rem}.pt-2{padding-top:.5rem}.pt-32{padding-top:8rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}*{font-family:Roboto,sans-serif;margin:0;padding:0}html{scroll-behavior:smooth}[x-cloak]{display:none!important}.hover\:z-10:hover{z-index:10}.hover\:scale-125:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus\:ring-white:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity:0.5}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-gray-800:focus{--tw-ring-offset-color:#1f2937}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-indigo-600:focus-visible{outline-color:#4f46e5}:is(.dark .dark\:bg-slate-900){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:is(.dark .dark\:fill-slate-500){fill:#64748b}:is(.dark .dark\:stroke-slate-500){stroke:#64748b}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media (min-width:640px){.sm\:static{position:static}.sm\:inset-auto{inset:auto}.sm\:mx-24{margin-left:6rem;margin-right:6rem}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:ml-6{margin-left:1.5rem}.sm\:mr-10{margin-right:2.5rem}.sm\:block{display:block}.sm\:hidden{display:none}.sm\:w-full{width:100%}.sm\:max-w-sm{max-width:24rem}.sm\:items-stretch{align-items:stretch}.sm\:justify-start{justify-content:flex-start}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-32{padding-bottom:8rem;padding-top:8rem}.sm\:pr-0{padding-right:0}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:block{display:block}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}} \ No newline at end of file diff --git a/build/public/assets/app.8c2f579c.js b/build/public/assets/app.8c2f579c.js new file mode 100644 index 00000000..d21d60ad --- /dev/null +++ b/build/public/assets/app.8c2f579c.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,t,n,r,i=!1,o=!1,a=[],s=-1;function l(e){!function(e){a.includes(e)||a.push(e);o||i||(i=!0,queueMicrotask(u))}(e)}function c(e){let t=a.indexOf(e);-1!==t&&t>s&&a.splice(t,1)}function u(){i=!1,o=!0;for(let e=0;e_(e,t)));let n=!1;if(t(e,(()=>n=!0)),n)return;let r=e.firstElementChild;for(;r;)_(r,t),r=r.nextElementSibling}function h(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var m=!1;var g=[],x=[];function v(){return g.map((e=>e()))}function y(){return g.concat(x).map((e=>e()))}function b(e){g.push(e)}function w(e){x.push(e)}function E(e,t=!1){return k(e,(e=>{if((t?y():v()).some((t=>e.matches(t))))return!0}))}function k(e,t){if(e){if(t(e))return e;if(e._x_teleportBack&&(e=e._x_teleportBack),e.parentElement)return k(e.parentElement,t)}}var A=[];function S(e,t=_,n=(()=>{})){!function(e){ve=!0;let t=Symbol();be=t,ye.set(t,[]);let n=()=>{for(;ye.get(t).length;)ye.get(t).shift()();ye.delete(t)},r=()=>{ve=!1,n()};e(n),r()}((()=>{t(e,((e,t)=>{n(e,t),A.forEach((n=>n(e,t))),ge(e,e.attributes).forEach((e=>e())),e._x_ignore&&t()}))}))}function O(e){_(e,(e=>{P(e),function(e){if(e._x_cleanups)for(;e._x_cleanups.length;)e._x_cleanups.pop()()}(e)}))}var j=[],C=[],$=[];function N(e,t){"function"==typeof t?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,C.push(t))}function L(e){j.push(e)}function M(e,t,n){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(n)}function P(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach((([n,r])=>{(void 0===t||t.includes(n))&&(r.forEach((e=>e())),delete e._x_attributeCleanups[n])}))}var R=new MutationObserver(J),T=!1;function z(){R.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),T=!0}function B(){(I=I.concat(R.takeRecords())).length&&!D&&(D=!0,queueMicrotask((()=>{J(I),I.length=0,D=!1}))),R.disconnect(),T=!1}var I=[],D=!1;function F(e){if(!T)return e();B();let t=e();return z(),t}var q=!1,W=[];function J(e){if(q)return void(W=W.concat(e));let t=[],n=[],r=new Map,i=new Map;for(let o=0;o1===e.nodeType&&t.push(e))),e[o].removedNodes.forEach((e=>1===e.nodeType&&n.push(e)))),"attributes"===e[o].type)){let t=e[o].target,n=e[o].attributeName,a=e[o].oldValue,s=()=>{r.has(t)||r.set(t,[]),r.get(t).push({name:n,value:t.getAttribute(n)})},l=()=>{i.has(t)||i.set(t,[]),i.get(t).push(n)};t.hasAttribute(n)&&null===a?s():t.hasAttribute(n)?(l(),s()):l()}i.forEach(((e,t)=>{P(t,e)})),r.forEach(((e,t)=>{j.forEach((n=>n(t,e)))}));for(let e of n)t.includes(e)||(C.forEach((t=>t(e))),O(e));t.forEach((e=>{e._x_ignoreSelf=!0,e._x_ignore=!0}));for(let e of t)n.includes(e)||e.isConnected&&(delete e._x_ignoreSelf,delete e._x_ignore,$.forEach((t=>t(e))),e._x_ignore=!0,e._x_ignoreSelf=!0);t.forEach((e=>{delete e._x_ignoreSelf,delete e._x_ignore})),t=null,n=null,r=null,i=null}function K(e){return H(V(e))}function U(e,t,n){return e._x_dataStack=[t,...V(n||e)],()=>{e._x_dataStack=e._x_dataStack.filter((e=>e!==t))}}function V(e){return e._x_dataStack?e._x_dataStack:"function"==typeof ShadowRoot&&e instanceof ShadowRoot?V(e.host):e.parentNode?V(e.parentNode):[]}function H(e){return new Proxy({objects:e},Z)}var Z={ownKeys:({objects:e})=>Array.from(new Set(e.flatMap((e=>Object.keys(e))))),has:({objects:e},t)=>t!=Symbol.unscopables&&e.some((e=>Object.prototype.hasOwnProperty.call(e,t))),get:({objects:e},t,n)=>"toJSON"==t?X:Reflect.get(e.find((e=>Object.prototype.hasOwnProperty.call(e,t)))||{},t,n),set({objects:e},t,n,r){const i=e.find((e=>Object.prototype.hasOwnProperty.call(e,t)))||e[e.length-1],o=Object.getOwnPropertyDescriptor(i,t);return o?.set&&o?.get?Reflect.set(i,t,n,r):Reflect.set(i,t,n)}};function X(){return Reflect.ownKeys(this).reduce(((e,t)=>(e[t]=Reflect.get(this,t),e)),{})}function Y(e){let t=(n,r="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach((([i,{value:o,enumerable:a}])=>{if(!1===a||void 0===o)return;let s=""===r?i:`${r}.${i}`;var l;"object"==typeof o&&null!==o&&o._x_interceptor?n[i]=o.initialize(e,s,i):"object"!=typeof(l=o)||Array.isArray(l)||null===l||o===n||o instanceof Element||t(o,s)}))};return t(e)}function G(e,t=(()=>{})){let n={initialValue:void 0,_x_interceptor:!0,initialize(t,n,r){return e(this.initialValue,(()=>function(e,t){return t.split(".").reduce(((e,t)=>e[t]),e)}(t,n)),(e=>Q(t,n,e)),n,r)}};return t(n),e=>{if("object"==typeof e&&null!==e&&e._x_interceptor){let t=n.initialize.bind(n);n.initialize=(r,i,o)=>{let a=e.initialize(r,i,o);return n.initialValue=a,t(r,i,o)}}else n.initialValue=e;return n}}function Q(e,t,n){if("string"==typeof t&&(t=t.split(".")),1!==t.length){if(0===t.length)throw error;return e[t[0]]||(e[t[0]]={}),Q(e[t[0]],t.slice(1),n)}e[t[0]]=n}var ee={};function te(e,t){ee[e]=t}function ne(e,t){return Object.entries(ee).forEach((([n,r])=>{let i=null;Object.defineProperty(e,`$${n}`,{get:()=>r(t,function(){if(i)return i;{let[e,n]=we(t);return i={interceptor:G,...e},N(t,n),i}}()),enumerable:!1})})),e}function re(e,t,n,...r){try{return n(...r)}catch(n){ie(n,e,t)}}function ie(e,t,n=void 0){Object.assign(e,{el:t,expression:n}),console.warn(`Alpine Expression Error: ${e.message}\n\n${n?'Expression: "'+n+'"\n\n':""}`,t),setTimeout((()=>{throw e}),0)}var oe=!0;function ae(e){let t=oe;oe=!1;let n=e();return oe=t,n}function se(e,t,n={}){let r;return le(e,t)((e=>r=e),n),r}function le(...e){return ce(...e)}var ce=ue;function ue(e,t){let n={};ne(n,e);let r=[n,...V(e)],i="function"==typeof t?function(e,t){return(n=(()=>{}),{scope:r={},params:i=[]}={})=>{de(n,t.apply(H([r,...e]),i))}}(r,t):function(e,t,n){let r=function(e,t){if(fe[e])return fe[e];let n=Object.getPrototypeOf((async function(){})).constructor,r=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e;const i=()=>{try{let t=new n(["__self","scope"],`with (scope) { __self.result = ${r} }; __self.finished = true; return __self.result;`);return Object.defineProperty(t,"name",{value:`[Alpine] ${e}`}),t}catch(n){return ie(n,t,e),Promise.resolve()}};let o=i();return fe[e]=o,o}(t,n);return(i=(()=>{}),{scope:o={},params:a=[]}={})=>{r.result=void 0,r.finished=!1;let s=H([o,...e]);if("function"==typeof r){let e=r(r,s).catch((e=>ie(e,n,t)));r.finished?(de(i,r.result,s,a,n),r.result=void 0):e.then((e=>{de(i,e,s,a,n)})).catch((e=>ie(e,n,t))).finally((()=>r.result=void 0))}}}(r,t,e);return re.bind(null,e,t,i)}var fe={};function de(e,t,n,r,i){if(oe&&"function"==typeof t){let o=t.apply(n,r);o instanceof Promise?o.then((t=>de(e,t,n,r))).catch((e=>ie(e,i,t))):e(o)}else"object"==typeof t&&t instanceof Promise?t.then((t=>e(t))):e(t)}var pe="x-";function _e(e=""){return pe+e}var he={};function me(e,t){return he[e]=t,{before(t){if(!he[t])return void console.warn("Cannot find directive `${directive}`. `${name}` will use the default order of execution");const n=$e.indexOf(t);$e.splice(n>=0?n:$e.indexOf("DEFAULT"),0,e)}}}function ge(e,t,n){if(t=Array.from(t),e._x_virtualDirectives){let n=Object.entries(e._x_virtualDirectives).map((([e,t])=>({name:e,value:t}))),r=xe(n);n=n.map((e=>r.find((t=>t.name===e.name))?{name:`x-bind:${e.name}`,value:`"${e.value}"`}:e)),t=t.concat(n)}let r={},i=t.map(ke(((e,t)=>r[e]=t))).filter(Oe).map(function(e,t){return({name:n,value:r})=>{let i=n.match(je()),o=n.match(/:([a-zA-Z0-9\-_:]+)/),a=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],s=t||e[n]||n;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:a.map((e=>e.replace(".",""))),expression:r,original:s}}}(r,n)).sort(Ne);return i.map((t=>function(e,t){let n=()=>{},r=he[t.type]||n,[i,o]=we(e);M(e,t.original,o);let a=()=>{e._x_ignore||e._x_ignoreSelf||(r.inline&&r.inline(e,t,i),r=r.bind(r,e,t,i),ve?ye.get(be).push(r):r())};return a.runCleanups=o,a}(e,t)))}function xe(e){return Array.from(e).map(ke()).filter((e=>!Oe(e)))}var ve=!1,ye=new Map,be=Symbol();function we(e){let r=[],[i,o]=function(e){let r=()=>{};return[i=>{let o=t(i);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach((e=>e()))}),e._x_effects.add(o),r=()=>{void 0!==o&&(e._x_effects.delete(o),n(o))},o},()=>{r()}]}(e);r.push(o);return[{Alpine:ft,effect:i,cleanup:e=>r.push(e),evaluateLater:le.bind(le,e),evaluate:se.bind(se,e)},()=>r.forEach((e=>e()))]}var Ee=(e,t)=>({name:n,value:r})=>(n.startsWith(e)&&(n=n.replace(e,t)),{name:n,value:r});function ke(e=(()=>{})){return({name:t,value:n})=>{let{name:r,value:i}=Ae.reduce(((e,t)=>t(e)),{name:t,value:n});return r!==t&&e(r,t),{name:r,value:i}}}var Ae=[];function Se(e){Ae.push(e)}function Oe({name:e}){return je().test(e)}var je=()=>new RegExp(`^${pe}([^:^.]+)\\b`);var Ce="DEFAULT",$e=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",Ce,"teleport"];function Ne(e,t){let n=-1===$e.indexOf(e.type)?Ce:e.type,r=-1===$e.indexOf(t.type)?Ce:t.type;return $e.indexOf(n)-$e.indexOf(r)}var Le=[],Me=!1;function Pe(e=(()=>{})){return queueMicrotask((()=>{Me||setTimeout((()=>{Re()}))})),new Promise((t=>{Le.push((()=>{e(),t()}))}))}function Re(){for(Me=!1;Le.length;)Le.shift()()}function Te(e,t){return Array.isArray(t)?ze(e,t.join(" ")):"object"==typeof t&&null!==t?function(e,t){let n=e=>e.split(" ").filter(Boolean),r=Object.entries(t).flatMap((([e,t])=>!!t&&n(e))).filter(Boolean),i=Object.entries(t).flatMap((([e,t])=>!t&&n(e))).filter(Boolean),o=[],a=[];return i.forEach((t=>{e.classList.contains(t)&&(e.classList.remove(t),a.push(t))})),r.forEach((t=>{e.classList.contains(t)||(e.classList.add(t),o.push(t))})),()=>{a.forEach((t=>e.classList.add(t))),o.forEach((t=>e.classList.remove(t)))}}(e,t):"function"==typeof t?Te(e,t()):ze(e,t)}function ze(e,t){return t=!0===t?t="":t||"",n=t.split(" ").filter((t=>!e.classList.contains(t))).filter(Boolean),e.classList.add(...n),()=>{e.classList.remove(...n)};var n}function Be(e,t){return"object"==typeof t&&null!==t?function(e,t){let n={};return Object.entries(t).forEach((([t,r])=>{n[t]=e.style[t],t.startsWith("--")||(t=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()),e.style.setProperty(t,r)})),setTimeout((()=>{0===e.style.length&&e.removeAttribute("style")})),()=>{Be(e,n)}}(e,t):function(e,t){let n=e.getAttribute("style",t);return e.setAttribute("style",t),()=>{e.setAttribute("style",n||"")}}(e,t)}function Ie(e,t=(()=>{})){let n=!1;return function(){n?t.apply(this,arguments):(n=!0,e.apply(this,arguments))}}function De(e,t,n={}){e._x_transition||(e._x_transition={enter:{during:n,start:n,end:n},leave:{during:n,start:n,end:n},in(n=(()=>{}),r=(()=>{})){qe(e,t,{during:this.enter.during,start:this.enter.start,end:this.enter.end},n,r)},out(n=(()=>{}),r=(()=>{})){qe(e,t,{during:this.leave.during,start:this.leave.start,end:this.leave.end},n,r)}})}function Fe(e){let t=e.parentNode;if(t)return t._x_hidePromise?t:Fe(t)}function qe(e,t,{during:n,start:r,end:i}={},o=(()=>{}),a=(()=>{})){if(e._x_transitioning&&e._x_transitioning.cancel(),0===Object.keys(n).length&&0===Object.keys(r).length&&0===Object.keys(i).length)return o(),void a();let s,l,c;!function(e,t){let n,r,i,o=Ie((()=>{F((()=>{n=!0,r||t.before(),i||(t.end(),Re()),t.after(),e.isConnected&&t.cleanup(),delete e._x_transitioning}))}));e._x_transitioning={beforeCancels:[],beforeCancel(e){this.beforeCancels.push(e)},cancel:Ie((function(){for(;this.beforeCancels.length;)this.beforeCancels.shift()();o()})),finish:o},F((()=>{t.start(),t.during()})),Me=!0,requestAnimationFrame((()=>{if(n)return;let o=1e3*Number(getComputedStyle(e).transitionDuration.replace(/,.*/,"").replace("s","")),a=1e3*Number(getComputedStyle(e).transitionDelay.replace(/,.*/,"").replace("s",""));0===o&&(o=1e3*Number(getComputedStyle(e).animationDuration.replace("s",""))),F((()=>{t.before()})),r=!0,requestAnimationFrame((()=>{n||(F((()=>{t.end()})),Re(),setTimeout(e._x_transitioning.finish,o+a),i=!0)}))}))}(e,{start(){s=t(e,r)},during(){l=t(e,n)},before:o,end(){s(),c=t(e,i)},after:a,cleanup(){l(),c()}})}function We(e,t,n){if(-1===e.indexOf(t))return n;const r=e[e.indexOf(t)+1];if(!r)return n;if("scale"===t&&isNaN(r))return n;if("duration"===t||"delay"===t){let e=r.match(/([0-9]+)ms/);if(e)return e[1]}return"origin"===t&&["top","right","left","center","bottom"].includes(e[e.indexOf(t)+2])?[r,e[e.indexOf(t)+2]].join(" "):r}me("transition",((e,{value:t,modifiers:n,expression:r},{evaluate:i})=>{"function"==typeof r&&(r=i(r)),!1!==r&&(r&&"boolean"!=typeof r?function(e,t,n){De(e,Te,"");let r={enter:t=>{e._x_transition.enter.during=t},"enter-start":t=>{e._x_transition.enter.start=t},"enter-end":t=>{e._x_transition.enter.end=t},leave:t=>{e._x_transition.leave.during=t},"leave-start":t=>{e._x_transition.leave.start=t},"leave-end":t=>{e._x_transition.leave.end=t}};r[n](t)}(e,r,t):function(e,t,n){De(e,Be);let r=!t.includes("in")&&!t.includes("out")&&!n,i=r||t.includes("in")||["enter"].includes(n),o=r||t.includes("out")||["leave"].includes(n);t.includes("in")&&!r&&(t=t.filter(((e,n)=>nn>t.indexOf("out"))));let a=!t.includes("opacity")&&!t.includes("scale"),s=a||t.includes("opacity"),l=a||t.includes("scale"),c=s?0:1,u=l?We(t,"scale",95)/100:1,f=We(t,"delay",0)/1e3,d=We(t,"origin","center"),p="opacity, transform",_=We(t,"duration",150)/1e3,h=We(t,"duration",75)/1e3,m="cubic-bezier(0.4, 0.0, 0.2, 1)";i&&(e._x_transition.enter.during={transformOrigin:d,transitionDelay:`${f}s`,transitionProperty:p,transitionDuration:`${_}s`,transitionTimingFunction:m},e._x_transition.enter.start={opacity:c,transform:`scale(${u})`},e._x_transition.enter.end={opacity:1,transform:"scale(1)"});o&&(e._x_transition.leave.during={transformOrigin:d,transitionDelay:`${f}s`,transitionProperty:p,transitionDuration:`${h}s`,transitionTimingFunction:m},e._x_transition.leave.start={opacity:1,transform:"scale(1)"},e._x_transition.leave.end={opacity:c,transform:`scale(${u})`})}(e,n,t))})),window.Element.prototype._x_toggleAndCascadeWithTransitions=function(e,t,n,r){const i="visible"===document.visibilityState?requestAnimationFrame:setTimeout;let o=()=>i(n);t?e._x_transition&&(e._x_transition.enter||e._x_transition.leave)?e._x_transition.enter&&(Object.entries(e._x_transition.enter.during).length||Object.entries(e._x_transition.enter.start).length||Object.entries(e._x_transition.enter.end).length)?e._x_transition.in(n):o():e._x_transition?e._x_transition.in(n):o():(e._x_hidePromise=e._x_transition?new Promise(((t,n)=>{e._x_transition.out((()=>{}),(()=>t(r))),e._x_transitioning&&e._x_transitioning.beforeCancel((()=>n({isFromCancelledTransition:!0})))})):Promise.resolve(r),queueMicrotask((()=>{let t=Fe(e);t?(t._x_hideChildren||(t._x_hideChildren=[]),t._x_hideChildren.push(e)):i((()=>{let t=e=>{let n=Promise.all([e._x_hidePromise,...(e._x_hideChildren||[]).map(t)]).then((([e])=>e()));return delete e._x_hidePromise,delete e._x_hideChildren,n};t(e).catch((e=>{if(!e.isFromCancelledTransition)throw e}))}))})))};var Je=!1;function Ke(e,t=(()=>{})){return(...n)=>Je?t(...n):e(...n)}var Ue=[];function Ve(e){Ue.push(e)}var He=!1;function Ze(e){let r=t;d(((e,t)=>{let i=r(e);return n(i),()=>{}})),e(),d(r)}function Xe(t,n,r,i=[]){switch(t._x_bindings||(t._x_bindings=e({})),t._x_bindings[n]=r,n=i.includes("camel")?n.toLowerCase().replace(/-(\w)/g,((e,t)=>t.toUpperCase())):n){case"value":!function(e,t){if("radio"===e.type)void 0===e.attributes.value&&(e.value=t),window.fromModel&&(e.checked="boolean"==typeof t?Qe(e.value)===t:Ge(e.value,t));else if("checkbox"===e.type)Number.isInteger(t)?e.value=t:Array.isArray(t)||"boolean"==typeof t||[null,void 0].includes(t)?Array.isArray(t)?e.checked=t.some((t=>Ge(t,e.value))):e.checked=!!t:e.value=String(t);else if("SELECT"===e.tagName)!function(e,t){const n=[].concat(t).map((e=>e+""));Array.from(e.options).forEach((e=>{e.selected=n.includes(e.value)}))}(e,t);else{if(e.value===t)return;e.value=void 0===t?"":t}}(t,r);break;case"style":!function(e,t){e._x_undoAddedStyles&&e._x_undoAddedStyles();e._x_undoAddedStyles=Be(e,t)}(t,r);break;case"class":!function(e,t){e._x_undoAddedClasses&&e._x_undoAddedClasses();e._x_undoAddedClasses=Te(e,t)}(t,r);break;case"selected":case"checked":!function(e,t,n){Ye(e,t,n),function(e,t,n){e[t]!==n&&(e[t]=n)}(e,t,n)}(t,n,r);break;default:Ye(t,n,r)}}function Ye(e,t,n){[null,void 0,!1].includes(n)&&function(e){return!["aria-pressed","aria-checked","aria-expanded","aria-selected"].includes(e)}(t)?e.removeAttribute(t):(et(t)&&(n=t),function(e,t,n){e.getAttribute(t)!=n&&e.setAttribute(t,n)}(e,t,n))}function Ge(e,t){return e==t}function Qe(e){return!![1,"1","true","on","yes",!0].includes(e)||![0,"0","false","off","no",!1].includes(e)&&(e?Boolean(e):null)}function et(e){return["disabled","checked","required","readonly","hidden","open","selected","autofocus","itemscope","multiple","novalidate","allowfullscreen","allowpaymentrequest","formnovalidate","autoplay","controls","loop","muted","playsinline","default","ismap","reversed","async","defer","nomodule"].includes(e)}function tt(e,t,n){let r=e.getAttribute(t);return null===r?"function"==typeof n?n():n:""===r||(et(t)?!![t,"true"].includes(r):r)}function nt(e,t){var n;return function(){var r=this,i=arguments;clearTimeout(n),n=setTimeout((function(){n=null,e.apply(r,i)}),t)}}function rt(e,t){let n;return function(){let r=this,i=arguments;n||(e.apply(r,i),n=!0,setTimeout((()=>n=!1),t))}}function it({get:e,set:r},{get:i,set:o}){let a,s=!0,l=t((()=>{const t=e(),n=i();if(s)o(ot(t)),s=!1,a=JSON.stringify(t);else{const e=JSON.stringify(t);e!==a?(o(ot(t)),a=e):(r(ot(n)),a=JSON.stringify(n))}JSON.stringify(i()),JSON.stringify(e())}));return()=>{n(l)}}function ot(e){return"object"==typeof e?JSON.parse(JSON.stringify(e)):e}var at={},st=!1;var lt={};function ct(e,t,n){let r=[];for(;r.length;)r.pop()();let i=Object.entries(t).map((([e,t])=>({name:e,value:t}))),o=xe(i);return i=i.map((e=>o.find((t=>t.name===e.name))?{name:`x-bind:${e.name}`,value:`"${e.value}"`}:e)),ge(e,i,n).map((e=>{r.push(e.runCleanups),e()})),()=>{for(;r.length;)r.pop()()}}var ut={};var ft={get reactive(){return e},get release(){return n},get effect(){return t},get raw(){return r},version:"3.13.3",flushAndStopDeferringMutations:function(){q=!1,J(W),W=[]},dontAutoEvaluateFunctions:ae,disableEffectScheduling:function(e){f=!1,e(),f=!0},startObservingMutations:z,stopObservingMutations:B,setReactivityEngine:function(i){e=i.reactive,n=i.release,t=e=>i.effect(e,{scheduler:e=>{f?l(e):e()}}),r=i.raw},onAttributeRemoved:M,onAttributesAdded:L,closestDataStack:V,skipDuringClone:Ke,onlyDuringClone:function(e){return(...t)=>Je&&e(...t)},addRootSelector:b,addInitSelector:w,interceptClone:Ve,addScopeToNode:U,deferMutations:function(){q=!0},mapAttributes:Se,evaluateLater:le,interceptInit:function(e){A.push(e)},setEvaluator:function(e){ce=e},mergeProxies:H,extractProp:function(e,t,n,r=!0){if(e._x_bindings&&void 0!==e._x_bindings[t])return e._x_bindings[t];if(e._x_inlineBindings&&void 0!==e._x_inlineBindings[t]){let n=e._x_inlineBindings[t];return n.extract=r,ae((()=>se(e,n.expression)))}return tt(e,t,n)},findClosest:k,onElRemoved:N,closestRoot:E,destroyTree:O,interceptor:G,transition:qe,setStyles:Be,mutateDom:F,directive:me,entangle:it,throttle:rt,debounce:nt,evaluate:se,initTree:S,nextTick:Pe,prefixed:_e,prefix:function(e){pe=e},plugin:function(e){(Array.isArray(e)?e:[e]).forEach((e=>e(ft)))},magic:te,store:function(t,n){if(st||(at=e(at),st=!0),void 0===n)return at[t];at[t]=n,"object"==typeof n&&null!==n&&n.hasOwnProperty("init")&&"function"==typeof n.init&&at[t].init(),Y(at[t])},start:function(){var e;m&&h("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),m=!0,document.body||h("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` + + +
+

You can modify your personal information:

+ + @component('components/form/form', { + 'action': 'modifpseudo', + 'method': 'post', + 'flash': 'not', + }) + @!component('components/form/field', { + 'label': 'Pseudo :', + 'name': 'pseudo', + 'type': 'text', + 'required': true, + 'placeholder': 'new pseudo', + }) + @!component('components/form/button', { + 'type': 'submit', + 'text': 'Envoyer', + }) + @end + +
+ + @component('components/form/form', { + 'action': 'modifemail', + 'method': 'post', + 'flash': 'not', + }) + @!component('components/form/field', { + 'label': 'Email :', + 'name': 'email', + 'type': 'text', + 'required': true, + 'placeholder': 'new email', + }) + @!component('components/form/button', { + 'type': 'submit', + 'text': 'Envoyer', + }) + @end +
+ + + +
+ + +
+ + + + +
+
+ +
+ + + + +@end \ No newline at end of file diff --git a/build/resources/views/home.edge b/build/resources/views/home.edge new file mode 100644 index 00000000..c03a8675 --- /dev/null +++ b/build/resources/views/home.edge @@ -0,0 +1,17 @@ +@layout('layouts/main') +@set('title', 'Arthur - Portfolio') + +@section('body') + +@include('partials/nav') +@include('partials/header') + +
+ @include('partials/main/about') + @include('partials/main/projects') + @include('partials/main/contact') +
+ +@include('partials/footer') + +@end \ No newline at end of file diff --git a/build/resources/views/layouts/main.edge b/build/resources/views/layouts/main.edge new file mode 100644 index 00000000..d329558b --- /dev/null +++ b/build/resources/views/layouts/main.edge @@ -0,0 +1,14 @@ + + + + + + + {{ title }} + @entryPointStyles('app') + @entryPointScripts('app') + + + @!section('body') + + \ No newline at end of file diff --git a/build/resources/views/partials/footer.edge b/build/resources/views/partials/footer.edge new file mode 100644 index 00000000..39f9cc97 --- /dev/null +++ b/build/resources/views/partials/footer.edge @@ -0,0 +1,22 @@ + + + + \ No newline at end of file diff --git a/build/resources/views/partials/header.edge b/build/resources/views/partials/header.edge new file mode 100644 index 00000000..887259fe --- /dev/null +++ b/build/resources/views/partials/header.edge @@ -0,0 +1,43 @@ +
+
+

Hi! 👋🏻
I'm Arthur.

+

Founder

+ +
+

I am a young Frenchman with a passion for development, I am a self-taught learner and my creativity knows no + limits. Every pixel I edit tells a story. Passionate about transforming ideas into visually captivating + experiences, I create projects that push the boundaries of design innovation.

+
+ +

"In the middle of every difficulty lies opportunity."

+

Albert Einstein

+ +
    + @!component('components/list_lien', { + href: 'https://www.instagram.com/arthur.pbty/', + img: '/logo insta.png', + title: 'Instagram', + }) + @!component('components/list_lien', { + href: 'https://github.com/Tutur33', + img: '/logo github.png', + title: 'Github', + }) + @!component('components/list_lien', { + href: 'https://discord.gg/HxgaA44CPh', + img: '/Logo Discord.png', + title: 'Discord', + }) + @!component('components/list_lien', { + href: 'http://tuturp33.000webhostapp.com', + img: '/other.png', + title: 'Other...', + }) +
+
+ + + +
\ No newline at end of file diff --git a/build/resources/views/partials/main/about.edge b/build/resources/views/partials/main/about.edge new file mode 100644 index 00000000..02c6452e --- /dev/null +++ b/build/resources/views/partials/main/about.edge @@ -0,0 +1,21 @@ +
+

About

+

Hi ! I'm Arthur, a passionate developer based in France. My journey in the world of development is an inspiring adventure. Every line of code I write is a step toward creating unique and engaging experiences. I am driven by the desire to bring ideas to life and shape them into innovative designs.

+ +

My background

+

I gained experience in web development working on various projects, ranging from front-end to back-end. I have a deep command of languages like HTML, CSS, JavaScript, and have worked with modern frameworks like Adonis with Node.js.

+ +

My philosophy

+

I firmly believe that every difficulty is an opportunity to create something new and exciting. My approach is to combine functionality and aesthetics to deliver exceptional user experiences.

+ +

My skills

+

Web development, web design, application development, project management.

+ +

My interests

+

Outside of development, I love exploring new places, photography, and reading books about technology and creativity. And go sailing!

+ +

My vision

+

My visionMy goal is to continue to learn, innovate and inspire through my projects. I want to help create a better, more engaging web for everyone.

+ +

Please feel free to contact me if you have any questions or would like to collaborate on an exciting project. You can reach me via [your email address] or follow me on social media using the links below.

+
\ No newline at end of file diff --git a/build/resources/views/partials/main/contact.edge b/build/resources/views/partials/main/contact.edge new file mode 100644 index 00000000..59d95c1a --- /dev/null +++ b/build/resources/views/partials/main/contact.edge @@ -0,0 +1,35 @@ +
+

Contact

+ + @component('components/form/form', { + 'action': '#', + 'method': 'post', + }) + @!component('components/form/field', { + 'label': 'Nom :', + 'name': 'nom', + 'type': 'text', + 'required': true, + 'placeholder': 'nom', + }) + @!component('components/form/field', { + 'label': 'E-mail :', + 'name': 'email', + 'type': 'email', + 'required': true, + 'placeholder': 'exemple@mail.com', + }) + @!component('components/form/field', { + 'label': 'Message :', + 'name': 'message', + 'type': 'textarea', + 'rows': 4, + 'required': true, + }) + @!component('components/form/button', { + 'type': 'submit', + 'text': 'Envoyer', + }) + @end + +
\ No newline at end of file diff --git a/build/resources/views/partials/main/projects.edge b/build/resources/views/partials/main/projects.edge new file mode 100644 index 00000000..907263f5 --- /dev/null +++ b/build/resources/views/partials/main/projects.edge @@ -0,0 +1,18 @@ +
+

Projects

+ +
+ @!component('components/project', { + 'href': '#', + 'img': '/projects/project-nups.png', + }) + @!component('components/project', { + 'href': '#', + 'img': '/projects/my-networks.jpg', + }) + @!component('components/project', { + 'href': '#', + 'img': '/projects/journal.avif', + }) +
+
\ No newline at end of file diff --git a/build/resources/views/partials/nav.edge b/build/resources/views/partials/nav.edge new file mode 100644 index 00000000..c3cfb03a --- /dev/null +++ b/build/resources/views/partials/nav.edge @@ -0,0 +1,78 @@ + \ No newline at end of file diff --git a/build/resources/views/terms.edge b/build/resources/views/terms.edge new file mode 100644 index 00000000..c2af42d5 --- /dev/null +++ b/build/resources/views/terms.edge @@ -0,0 +1,122 @@ +@layout('layouts/main') +@set('title', 'Terms and Conditions') + +@section('body') + +
+

Nups Terms and Conditions

+

Effective Date: Saturday, June 17, 2023

+

Thank you for using Nups services! These Terms and Conditions govern your use of our services. Please + read them carefully.

+ +

Acceptance of Terms and Conditions

+

1.1 Acceptance of Terms. By using Nups services, you agree to be bound by these Terms and Conditions. + If you do not accept these Terms, you cannot use our services.

+ +

Use of Our Services

+

2.1 User Account. To use certain Nups services, you will need to create a user account. You are + responsible for the confidentiality of your login credentials and all activities related to your account.

+

2.2 Authorized Use. You agree to use Nups services in accordance with these Terms and Conditions and + all applicable laws. You may not use our services in a way that could infringe on Nups' rights or the rights of + others.

+

2.3 Usage Restrictions. You agree not to access Nups services in an unauthorized manner, attempt to + gain unauthorized access to accounts or computer systems, and not to disrupt or harm Nups services.

+ +

User Content

+

3.1 Content Ownership. You retain ownership of any content you submit, post, or display on Nups + services. By submitting, posting, or displaying content, you grant Nups a worldwide, non-exclusive, transferable, + free, and royalty-free license to use, reproduce, modify, adapt, publish, translate, distribute, display, and create + derivative works from that content.

+

3.2 Content Responsibility. You are responsible for the content you submit, post, or display on Nups + services. You warrant that you have all necessary rights to publish this content, and it does not violate the rights + of others.

+

3.3 Respect for Intellectual Property Rights. You agree not to violate the intellectual property + rights of Nups or third parties when using Nups services. You may not copy, modify, distribute, or access + copyrighted content or other intellectual property items without authorization.

+ +

Intellectual Property

+

4.1 Nups' Intellectual Property Rights. All intellectual property rights related to Nups services + (except user content) are owned by Nups. You do not acquire any ownership rights to Nups services or the content you + access.

+

4.2 Authorized Use. Subject to compliance with these Terms and Conditions, Nups grants you a limited, + non-exclusive, revocable, non-transferable license to use Nups services for personal and non-commercial purposes. +

+ +

Privacy

+

5.1 Data Collection. Nups collects and uses your information in accordance with its Privacy Policy. By + using Nups services, you consent to the collection and use of your information as outlined in this policy.

+

5.2 Cookies. Nups services may use cookies and similar technologies to facilitate your site usage and + personalize your experience.

+

5.3 Data Security. Nups implements appropriate security measures to protect your information from + unauthorized access, disclosure, or misuse.

+ +

Changes to Services

+

6.1 Changes to Terms and Conditions. Nups reserves the right to modify these Terms and Conditions at + any time. Changes take effect upon their publication on the Nups website. Your continued use of Nups services after + such changes constitutes your acceptance of the amended Terms and Conditions.

+

6.2 Changes to Services. Nups also reserves the right to modify, suspend, or temporarily or + permanently terminate any aspect of its services, including access to certain features, without notice or liability + to you. You acknowledge that Nups will not be liable to you or any third party for any changes, suspensions, or + interruptions of its services.

+ +

Responsibilities and Limitations

+

7.1 Disclaimer of Warranties. Nups services are provided "as is" and "as available," without any + warranties, express or implied. Nups does not guarantee the accuracy, completeness, reliability, or availability of + the services. You use Nups services at your own risk.

+

7.2 Limitation of Liability. To the fullest extent permitted by law, Nups will not be liable for + direct, indirect, incidental, special, consequential, or punitive damages arising from your use or inability to use + Nups services.

+ +

Termination

+

8.1 Termination by You. You may terminate your user account and stop using Nups services at any time. +

+

8.2 Termination by Nups. Nups reserves the right to terminate your user account and terminate your use + of the services, in whole or in part, if you violate these Terms and Conditions or if your use of the services is + detrimental to Nups or other users.

+ +

General Provisions

+

9.1 Entire Agreement. These Terms and Conditions constitute the entire agreement between you and Nups + regarding the use of Nups services and supersede all prior or contemporaneous agreements between you and Nups.

+

9.2 Applicable Law. These Terms and Conditions are governed and interpreted in accordance with the + laws of the country where Nups is headquartered.

+

9.3 Dispute Resolution. Any dispute arising from these Terms and Conditions shall be subject to the + exclusive jurisdiction of the courts of the country where Nups is headquartered.

+

9.4 Severability. If any provision of these Terms and Conditions is found to be invalid, illegal, or + unenforceable by a competent court, such provision shall be modified to the minimum extent necessary to make it + valid, legal, and enforceable, and the other provisions shall remain in full force.

+ +

Communications

+

10.1 Nups Communications. By using Nups services, you consent to receive communications from Nups, + including announcements, updates, promotional offers, and service-related messages.

+

10.2 User Communications. If you choose to contact Nups, you agree that Nups may respond to you using + the contact information you have provided.

+ +

Indemnification

+

11.1 Indemnification. You agree to indemnify, defend, and hold Nups, its officers, directors, + employees, agents, and representatives harmless from any claim, liability, loss, damage, cost, or expense, including + reasonable attorney's fees, arising from your use of Nups services or your violation of these Terms and Conditions. +

+ +

Copyright Infringement Notifications

+

12.1 Copyright Infringement Notifications. Nups respects the intellectual property rights of others. + If you believe that any content available on Nups services violates your copyrights, please submit a copyright + infringement notification in accordance with applicable law.

+ +

Severability of Provisions

+

13.1 Severability of Provisions. If any provision of these Terms and Conditions is found invalid, + illegal, or unenforceable by a competent court, such provision shall be modified to the minimum extent necessary to + make it valid, legal, and enforceable, and the other provisions shall remain in full force.

+ +

Language

+

14.1 Language of the Terms. In case of any discrepancy between the language versions of these Terms + and Conditions, the French version shall prevail.

+ +

Contact Us

+

15.1 Contact. If you have questions, concerns, or comments about these Terms and Conditions, please + contact us at the following address:

+

Nups Inc.
Address: [Address]
Email: [Email]
Phone: [Phone Number]

+ +

Thank you for reading our Terms and Conditions! We hope you enjoy using Nups services.

+
+ +@end \ No newline at end of file