Compare commits

..

10 Commits

26 changed files with 571 additions and 15 deletions

60
colors.md Normal file
View File

@ -0,0 +1,60 @@
Colors
### Sunbaked Mint
HEX: #80e8d4
RGB: 128, 232, 212
CMYK: 43, 0, 25, 0
### Honey Dijon
HEX: #e2ae61
RGB: 226, 174, 97
CMYK: 1, 32, 72, 0
### Ultimate Gray
HEX: #97999b
RGB: 151, 153, 155
CMYK (approximation): 44, 35, 34, 1
### Frosty Blue
HEX: #bcddfc
RGB: 188, 221, 252
CMYK: 23, 5, 0, 0
### Electric Tangerine
HEX: #ff825c
RGB: 255, 130, 92
CMYK: 0, 61, 64, 0
### Holo Lilac
HEX: #c5d2fe
RGB: 197, 210, 254
CMYK: 22, 17, 0, 0
### Poppy Sunset
HEX: #ee645b
RGB: 238, 100, 91
CMYK: 2, 76, 62, 0
### Lime Nouveau
HEX: #cddf8b
RGB: 205, 223, 139
CMYK: 22, 1, 58, 5
### Very Peri
HEX: #6667ab
RGB: 102, 103, 171
CMYK (approximation): 40, 40, 0, 33
### Classic Blue
HEX: #0f4c81
RGB: 15, 76, 129
CMYK (approximation): 99, 76, 24, 8

View File

@ -0,0 +1,28 @@
<?php
namespace App\Actions\Chained;
use App\Models\User;
use Closure;
class GenerateProfilePhoto
{
/**
* Generates a profile photo for a user and saves it
* to disk.
*
* @package App\Actions\Chained\GenerateProfilePhoto
* @since 1.0.0
*
* @param \App\Models\User $user
* @param \Closure $next
*
* @return \App\Models\User
*/
public function __invoke(User $user, Closure $next): User
{
//
return $next($user);
}
}

View File

@ -69,6 +69,7 @@
"protonemedia/laravel-verify-new-email": "", // must verify new email address before email update will be completed
"protonemedia/inertiajs-tables-laravel-query-builder": "", // datatables for InertiaJS/Vue and Laravel
"ikechukwukalu/requirepin": "", // use password/pin protection for routes
"doctrine/dbal": "", // useful for artisan db:show
},

View File

@ -15,6 +15,47 @@ require_once "functions/temperatures.php";
|
*/
if (! function_exists('clamp')) {
/**
* Ensure a numerical value is between two bounds.
*
* @since 1.0.0
*
* @param int|float|string $number The value to be clamped between two other values.
* @param int|float|string $minNumber The miminum value for clamping bounds.
* @param int|float|string $maxNumber The maximum value for clamping bounds.
*
* @throws \Exception
*
* @return int|float
*/
function clamp($number, $minNumber, $maxNumber)
{
if (! is_numeric($number)) {
throw new Exception('Clamp number must be numeric in value.');
}
if (! is_numeric($minNumber)) {
throw new Exception('Clamped minimum number must be numeric in value.');
}
if (! is_numeric($maxNumber)) {
throw new Exception('Clamped maximum number must be numeric in value.');
}
$returnValue = $number;
if ($minNumber >= $number) {
$returnValue = $minNumber;
}
if ($maxNumber <= $number) {
$returnValue = $maxNumber;
}
return $returnValue;
}
}
if (! function_exists('humanBytes')) {
/**
* Convert bytes to a human-friendly format.
@ -195,7 +236,7 @@ if (! function_exists('maybe_unserialize')) {
*
* @param mixed $data
*
* @return mixed
* @return array|string|bool
*/
function maybe_unserialize($data)
{

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -27,9 +27,13 @@
@import 'components/pagination.css';
body {
min-height: 100vh;
color: hsl(240, 5.9%, 10%);
/*color: lch(8.35%, 2.25, 285.92);*/
-webkit-font-smoothing: antialiased;
min-height: 100dvh;
overflow: auto;
scrollbar-gutter: stable both-edges;
text-rendering: optimizeLegibility;
}
html, body {

View File

@ -3,6 +3,70 @@
/** +--------------------------------+ **/
@font-face {
font-family: "BarlowCondensed";
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-Regular.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 400;
font-style: italic;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-Italic.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 500;
font-style: normal;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-Medium.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 500;
font-style: italic;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-MediumItalic.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 600;
font-style: normal;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-SemiBold.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 600;
font-style: italic;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-SemiBoldItalic.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 700;
font-style: normal;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-Bold.woff2") format("woff2");
}
@font-face {
font-family: "BarlowCondensed";
font-weight: 700;
font-style: italic;
font-display: swap;
src: url("/fonts/BarlowCondensed/BarlowCondensed-BoldItalic.woff2") format("woff2");
}
/*@font-face {
font-family: "Lato";
src: url('/fonts/Lato/Lato-Regular.woff2') format("woff2");
font-weight: 400;
@ -48,13 +112,77 @@
font-weight: 700;
font-style: italic;
font-display: swap;
}
}*/
/** +--------------------------------+ **/
/** | Serif fonts | **/
/** +--------------------------------+ **/
@font-face {
font-family: "Montserrat";
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-Regular.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 400;
font-style: italic;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-Italic.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 500;
font-style: normal;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-Medium.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 500;
font-style: italic;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-MediumItalic.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 600;
font-style: normal;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-SemiBold.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 600;
font-style: italic;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-SemiBoldItalic.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 700;
font-style: normal;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-Bold.woff2") format("woff2");
}
@font-face {
font-family: "Montserrat";
font-weight: 700;
font-style: italic;
font-display: swap;
src: url("/fonts/Montserrat/Montserrat-BoldItalic.woff2") format("woff2");
}
/*@font-face {
font-family: "Nunito";
src: url('/fonts/Nunito/Nunito-Regular.woff2') format("woff2");
font-weight: 400;
@ -118,7 +246,7 @@
font-stretch: 75% 125%;
font-style: italic;
font-display: swap;
}
}*/
/*@font-face {
font-family: "Raleway";

View File

@ -1,3 +1,108 @@
:root {
/**/
/** ------------------------------
* START -- https://coolors.co/022f40-38aecc-0090c1-183446-046e8f
* -------------------------------**/
/* CSS HEX */
--prussian-blue: #022f40ff;
--pacific-cyan: #38aeccff;
--blue-ncs: #0090c1ff;
--prussian-blue-2: #183446ff;
--cerulean: #046e8fff;
/* CSS HSL */
--prussian-blue: hsla(196, 94%, 13%, 1);
--pacific-cyan: hsla(192, 59%, 51%, 1);
--blue-ncs: hsla(195, 100%, 38%, 1);
--prussian-blue-2: hsla(203, 49%, 18%, 1);
--cerulean: hsla(194, 95%, 29%, 1);
/* SCSS HEX */
$prussian-blue: #022f40ff;
$pacific-cyan: #38aeccff;
$blue-ncs: #0090c1ff;
$prussian-blue-2: #183446ff;
$cerulean: #046e8fff;
/* SCSS HSL */
$prussian-blue: hsla(196, 94%, 13%, 1);
$pacific-cyan: hsla(192, 59%, 51%, 1);
$blue-ncs: hsla(195, 100%, 38%, 1);
$prussian-blue-2: hsla(203, 49%, 18%, 1);
$cerulean: hsla(194, 95%, 29%, 1);
/* SCSS RGB */
$prussian-blue: rgba(2, 47, 64, 1);
$pacific-cyan: rgba(56, 174, 204, 1);
$blue-ncs: rgba(0, 144, 193, 1);
$prussian-blue-2: rgba(24, 52, 70, 1);
$cerulean: rgba(4, 110, 143, 1);
/* SCSS Gradient */
/*$gradient-top: linear-gradient(0deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-right: linear-gradient(90deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-bottom: linear-gradient(180deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-left: linear-gradient(270deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-top-right: linear-gradient(45deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-bottom-right: linear-gradient(135deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-top-left: linear-gradient(225deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-bottom-left: linear-gradient(315deg, #022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/*$gradient-radial: radial-gradient(#022f40ff, #38aeccff, #0090c1ff, #183446ff, #046e8fff);*/
/** ------------------------------
* END -- https://coolors.co/022f40-38aecc-0090c1-183446-046e8f
* -------------------------------**/
/** ------------------------------
* START -- https://coolors.co/8ac482-47783f-ffbe86-ffb5c2-3777ff
* -------------------------------**/
/* CSS HEX */
--pistachio: #8ac482ff;
--fern-green: #47783fff;
--peach: #ffbe86ff;
--cherry-blossom-pink: #ffb5c2ff;
--blue-crayola: #3777ffff;
/* CSS HSL */
--pistachio: hsla(113, 36%, 64%, 1);
--fern-green: hsla(112, 31%, 36%, 1);
--peach: hsla(28, 100%, 76%, 1);
--cherry-blossom-pink: hsla(349, 100%, 85%, 1);
--blue-crayola: hsla(221, 100%, 61%, 1);
/* SCSS HEX */
$pistachio: #8ac482ff;
$fern-green: #47783fff;
$peach: #ffbe86ff;
$cherry-blossom-pink: #ffb5c2ff;
$blue-crayola: #3777ffff;
/* SCSS HSL */
$pistachio: hsla(113, 36%, 64%, 1);
$fern-green: hsla(112, 31%, 36%, 1);
$peach: hsla(28, 100%, 76%, 1);
$cherry-blossom-pink: hsla(349, 100%, 85%, 1);
$blue-crayola: hsla(221, 100%, 61%, 1);
/* SCSS RGB */
$pistachio: rgba(138, 196, 130, 1);
$fern-green: rgba(71, 120, 63, 1);
$peach: rgba(255, 190, 134, 1);
$cherry-blossom-pink: rgba(255, 181, 194, 1);
$blue-crayola: rgba(55, 119, 255, 1);
/* SCSS Gradient */
/*$gradient-top: linear-gradient(0deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-right: linear-gradient(90deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-bottom: linear-gradient(180deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-left: linear-gradient(270deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-top-right: linear-gradient(45deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-bottom-right: linear-gradient(135deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-top-left: linear-gradient(225deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-bottom-left: linear-gradient(315deg, #8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/*$gradient-radial: radial-gradient(#8ac482ff, #47783fff, #ffbe86ff, #ffb5c2ff, #3777ffff);*/
/** ------------------------------
* END -- https://coolors.co/8ac482-47783f-ffbe86-ffb5c2-3777ff
* -------------------------------**/
}

View File

@ -19,6 +19,14 @@ module.exports = {
extend: {
colors: {
'sherwin': {
'marshmallow': '#eee9e0'
'ice-cube': '#e3e4e1',
'peppercorn': '#585858',
'black-magic': '#323132',
'tricorn-black': '#2f2f30',
},
// use https://uicolors.app/create
// neutals
'nomad': {
@ -35,6 +43,19 @@ module.exports = {
},
// reds
'crimson': {
50: '#fff1f1',
100: '#ffe0e0',
200: '#ffc6c6',
300: '#ff9e9e',
400: '#ff6666',
500: '#fd3636',
600: '#eb1717',
700: '#c60f0f',
800: '#a31111',
900: '#871515',
},
'monza': {
50: '#fff0f0',
100: '#ffdede',
@ -74,6 +95,19 @@ module.exports = {
900: '#811a39',
},
'violet-red': {
50: '#fff1f3',
100: '#ffe3e8',
200: '#ffccd7',
300: '#ffa2b6',
400: '#ff6d8f',
500: '#f94373',
600: '#e61858',
700: '#c20e4b',
800: '#a30e45',
900: '#8b1041',
},
// oranges
'saffron-mango': {
@ -102,8 +136,48 @@ module.exports = {
900: '#7a250d',
},
'hot-cinnamon': {
50: '#fdf8ed',
100: '#f9eacc',
200: '#f3d394',
300: '#edb75c',
400: '#e89e37',
500: '#e17e1f',
600: '#d3631a',
700: '#a54118',
800: '#86341a',
900: '#6f2c18',
},
'fire-bush': {
50: '#fef7ec',
100: '#faeacb',
200: '#f5d292',
300: '#efb65a',
400: '#ea9727',
500: '#e47d1c',
600: '#ca5b15',
700: '#a74016',
800: '#883218',
900: '#702a17',
},
// yellows
'vesuvius': {
50: '#fffbeb',
100: '#fef3c7',
200: '#fde58a',
300: '#fbd24e',
400: '#fabe25',
500: '#f49d0c',
600: '#d87607',
700: '#bc560a',
800: '#923f0e',
900: '#78340f',
},
'mango-tango': {
50: '#fefbe8',
100: '#fff6c2',
@ -236,6 +310,19 @@ module.exports = {
900: '#163e2f',
},
'caribbean-green': {
50: '#effef9',
100: '#cafdef',
200: '#94fbe0',
300: '#57f1cf',
400: '#24ddba',
500: '#0ccaa9',
600: '#069b84',
700: '#0a7b6c',
800: '#0d6257',
900: '#105149',
},
// teals
'aquamarine': {
@ -357,6 +444,20 @@ module.exports = {
900: '#193961',
},
'azure-radiance': {
50: '#edfaff',
100: '#d6f2ff',
200: '#b5eaff',
300: '#83dfff',
400: '#48cbff',
500: '#1eacff',
600: '#068eff',
700: '#007aff',
800: '#085dc5',
900: '#0d519b',
},
// purples
'lilac-bush': {
50: '#f8f5fd',
@ -397,6 +498,45 @@ module.exports = {
900: '#4b05ad',
},
'medium-purple': {
50: '#f0f1fd',
100: '#e3e5fc',
200: '#cccdf9',
300: '#adadf4',
400: '#948ced',
500: '#8170e4',
600: '#7558d7',
700: '#6346bc',
800: '#503b98',
900: '#443679',
},
'wisteria': {
50: '#faf7fc',
100: '#f4eef9',
200: '#eaddf1',
300: '#dbc1e6',
400: '#c69dd5',
500: '#ac75c0',
600: '#965ca9',
700: '#774586',
800: '#633a6e',
900: '#54335c',
},
'amethyst': {
50: '#fcf5fe',
100: '#f7e9fe',
200: '#efd3fb',
300: '#e6b0f7',
400: '#d880f2',
500: '#c450e5',
600: '#b543d2',
700: '#8f25a6',
800: '#762088',
900: '#631f70',
},
'seance': {
50: '#fcf3ff',
100: '#fae7ff',
@ -464,6 +604,19 @@ module.exports = {
900: '#8c0f45',
},
'sea-pink': {
50: '#fdf3f4',
100: '#fbe8eb',
200: '#f6d5da',
300: '#ea9daa',
400: '#e58799',
500: '#d75c77',
600: '#c13d60',
700: '#a22e4f',
800: '#882947',
900: '#752642',
},
},

39
src/vite-ssr.config.js Normal file
View File

@ -0,0 +1,39 @@
import fs from 'fs';
import { defineConfig, loadEnv } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';
export default ({ mode }) => {
process.env = Object.assign(process.env, loadEnv(mode, process.cwd(), ''));
return defineConfig({
build: {
reportCompressedSize: true,
},
plugins: [
laravel({
input: 'resources/js/app.js',
ssr: 'resources/js/ssr.js',
refresh: true,
}),
vue({
template: {
transformAssetUrls: {
base: null,
includeAbsolute: false,
},
},
}),
],
ssr: {
noExternal: ['@inertiajs/server'],
},
server: {
host: process.env.APP_DOMAIN,
https: {
key: fs.readFileSync(`${process.env.VITE_SSL_KEY_FILE_PATH}`),
cert: fs.readFileSync(`${process.env.VITE_SSL_CERT_FILE_PATH}`),
},
},
});
}

View File

@ -10,6 +10,13 @@ export default ({ mode }) => {
build: {
reportCompressedSize: true,
},
server: {
host: process.env.APP_DOMAIN,
https: {
key: fs.readFileSync(`${process.env.VITE_SSL_KEY_FILE_PATH}`),
cert: fs.readFileSync(`${process.env.VITE_SSL_CERT_FILE_PATH}`),
},
},
plugins: [
laravel({
input: 'resources/js/app.js',
@ -25,15 +32,5 @@ export default ({ mode }) => {
},
}),
],
ssr: {
noExternal: ['@inertiajs/server'],
},
server: {
host: process.env.APP_DOMAIN,
https: {
key: fs.readFileSync(`/code/docker/configs/nginx/ssls/${process.env.APP_DOMAIN}/${process.env.APP_DOMAIN}.key`),
cert: fs.readFileSync(`/code/docker/configs/nginx/ssls/${process.env.APP_DOMAIN}/${process.env.APP_DOMAIN}.crt`),
},
},
});
}