Move SealShare onto Livewire Material
Replaces maryUI and daisyUI with nonameweb/livewire-material: the Vibrant indigo scheme, a system/light/dark theme under sealshare-theme, one top app bar with the account menu, the upload drop zone and link-ready moments, M3 fields, dialogs instead of wire:confirm, snackbars instead of flashed messages, a sortable admin table, and the starter-kit cleanup. Docker builds assets after Composer; CI drops the Flux step. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy
This commit is contained in:
co-authored by
Claude Opus 5
parent
6d7120e8e2
commit
c4a17b65c8
+17
-5
@@ -1,10 +1,22 @@
|
||||
@import 'tailwindcss';
|
||||
@import '../../vendor/nonameweb/livewire-material/resources/css/material.css';
|
||||
@import './material-scheme.css';
|
||||
|
||||
@source '../views';
|
||||
@source '../../vendor/robsontenorio/mary/src/View/Components/**/*.php';
|
||||
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
|
||||
@source inline("swap swap-rotate swap-on swap-off theme-controller");
|
||||
@source '../../vendor/nonameweb/livewire-material/resources/views';
|
||||
@source '../../vendor/nonameweb/livewire-material/src';
|
||||
|
||||
@plugin "daisyui" {
|
||||
themes: light --default, dark --prefersdark;
|
||||
/* share-created: the check on its shape settles in once the link is ready. */
|
||||
@keyframes share-ready {
|
||||
from {
|
||||
opacity: 0;
|
||||
rotate: -90deg;
|
||||
scale: 0.4;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
rotate: 0deg;
|
||||
scale: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Material 3 colour roles, generated by Google's material-color-utilities (spec 2025).
|
||||
*
|
||||
* php artisan material:scheme "#4f46e5" --variant=vibrant
|
||||
*
|
||||
* Regenerate rather than editing a value: every pair here (a role and its on-role) carries
|
||||
* M3's contrast guarantee only as generated. The head script sets data-theme before the
|
||||
* first paint; the light block also stands without it.
|
||||
*/
|
||||
|
||||
:root,
|
||||
[data-theme='light'] {
|
||||
color-scheme: light;
|
||||
|
||||
--md-sys-color-background: #faf4ff;
|
||||
--md-sys-color-on-background: #32294f;
|
||||
--md-sys-color-surface: #faf4ff;
|
||||
--md-sys-color-surface-dim: #dacdff;
|
||||
--md-sys-color-surface-bright: #faf4ff;
|
||||
--md-sys-color-surface-container-lowest: #ffffff;
|
||||
--md-sys-color-surface-container-low: #f5eeff;
|
||||
--md-sys-color-surface-container: #ede4ff;
|
||||
--md-sys-color-surface-container-high: #e8deff;
|
||||
--md-sys-color-surface-container-highest: #e2d7ff;
|
||||
--md-sys-color-on-surface: #32294f;
|
||||
--md-sys-color-on-surface-variant: #5f557f;
|
||||
--md-sys-color-outline: #7b719c;
|
||||
--md-sys-color-outline-variant: #b2a6d5;
|
||||
--md-sys-color-inverse-surface: #10062d;
|
||||
--md-sys-color-inverse-on-surface: #a296c4;
|
||||
--md-sys-color-primary: #4a3fe2;
|
||||
--md-sys-color-primary-dim: #3d2fd6;
|
||||
--md-sys-color-on-primary: #f4f1ff;
|
||||
--md-sys-color-primary-container: #9795ff;
|
||||
--md-sys-color-on-primary-container: #14007e;
|
||||
--md-sys-color-primary-fixed: #9795ff;
|
||||
--md-sys-color-primary-fixed-dim: #8885ff;
|
||||
--md-sys-color-on-primary-fixed: #000000;
|
||||
--md-sys-color-on-primary-fixed-variant: #1a0099;
|
||||
--md-sys-color-inverse-primary: #8582ff;
|
||||
--md-sys-color-secondary: #6249b2;
|
||||
--md-sys-color-secondary-dim: #563ca5;
|
||||
--md-sys-color-on-secondary: #f7f0ff;
|
||||
--md-sys-color-secondary-container: #d8caff;
|
||||
--md-sys-color-on-secondary-container: #4e339c;
|
||||
--md-sys-color-secondary-fixed: #d8caff;
|
||||
--md-sys-color-secondary-fixed-dim: #cbbaff;
|
||||
--md-sys-color-on-secondary-fixed: #3a1b88;
|
||||
--md-sys-color-on-secondary-fixed-variant: #573da6;
|
||||
--md-sys-color-tertiary: #983772;
|
||||
--md-sys-color-tertiary-dim: #892a65;
|
||||
--md-sys-color-on-tertiary: #ffeff4;
|
||||
--md-sys-color-tertiary-container: #fd8bca;
|
||||
--md-sys-color-on-tertiary-container: #610244;
|
||||
--md-sys-color-tertiary-fixed: #fd8bca;
|
||||
--md-sys-color-tertiary-fixed-dim: #ee7ebc;
|
||||
--md-sys-color-on-tertiary-fixed: #360024;
|
||||
--md-sys-color-on-tertiary-fixed-variant: #6d104e;
|
||||
--md-sys-color-error: #b41340;
|
||||
--md-sys-color-error-dim: #a20036;
|
||||
--md-sys-color-on-error: #ffefef;
|
||||
--md-sys-color-error-container: #f74b6d;
|
||||
--md-sys-color-on-error-container: #510017;
|
||||
--md-sys-color-success: #006c45;
|
||||
--md-sys-color-on-success: #ffffff;
|
||||
--md-sys-color-success-container: #86f9bc;
|
||||
--md-sys-color-on-success-container: #002112;
|
||||
--md-sys-color-warning: #7c5800;
|
||||
--md-sys-color-on-warning: #ffffff;
|
||||
--md-sys-color-warning-container: #ffdea6;
|
||||
--md-sys-color-on-warning-container: #271900;
|
||||
--md-sys-color-info: #005ac4;
|
||||
--md-sys-color-on-info: #ffffff;
|
||||
--md-sys-color-info-container: #d8e2ff;
|
||||
--md-sys-color-on-info-container: #001a42;
|
||||
--md-sys-color-inverse-error: #ff6e84;
|
||||
--md-sys-color-inverse-success: #69dca1;
|
||||
--md-sys-color-inverse-warning: #fdbb28;
|
||||
--md-sys-color-inverse-info: #aec6ff;
|
||||
}
|
||||
|
||||
[data-theme='dark'] {
|
||||
color-scheme: dark;
|
||||
|
||||
--md-sys-color-background: #10062d;
|
||||
--md-sys-color-on-background: #eae1ff;
|
||||
--md-sys-color-surface: #10062d;
|
||||
--md-sys-color-surface-dim: #10062d;
|
||||
--md-sys-color-surface-bright: #30215d;
|
||||
--md-sys-color-surface-container-lowest: #000000;
|
||||
--md-sys-color-surface-container-low: #160b36;
|
||||
--md-sys-color-surface-container: #1c113f;
|
||||
--md-sys-color-surface-container-high: #231649;
|
||||
--md-sys-color-surface-container-highest: #291c53;
|
||||
--md-sys-color-on-surface: #eae1ff;
|
||||
--md-sys-color-on-surface-variant: #b0a4d3;
|
||||
--md-sys-color-outline: #7a6f9b;
|
||||
--md-sys-color-outline-variant: #4b426a;
|
||||
--md-sys-color-inverse-surface: #fdf7ff;
|
||||
--md-sys-color-inverse-on-surface: #594f78;
|
||||
--md-sys-color-primary: #a7a5ff;
|
||||
--md-sys-color-primary-dim: #645dfc;
|
||||
--md-sys-color-on-primary: #1c00a0;
|
||||
--md-sys-color-primary-container: #9795ff;
|
||||
--md-sys-color-on-primary-container: #14007e;
|
||||
--md-sys-color-primary-fixed: #9795ff;
|
||||
--md-sys-color-primary-fixed-dim: #8885ff;
|
||||
--md-sys-color-on-primary-fixed: #000000;
|
||||
--md-sys-color-on-primary-fixed-variant: #1a0099;
|
||||
--md-sys-color-inverse-primary: #4d44e6;
|
||||
--md-sys-color-secondary: #a98ffd;
|
||||
--md-sys-color-secondary-dim: #a68dfa;
|
||||
--md-sys-color-on-secondary: #280072;
|
||||
--md-sys-color-secondary-container: #4d329b;
|
||||
--md-sys-color-on-secondary-container: #d6c9ff;
|
||||
--md-sys-color-secondary-fixed: #d8caff;
|
||||
--md-sys-color-secondary-fixed-dim: #cbbaff;
|
||||
--md-sys-color-on-secondary-fixed: #3a1b88;
|
||||
--md-sys-color-on-secondary-fixed-variant: #573da6;
|
||||
--md-sys-color-tertiary: #ff9dd1;
|
||||
--md-sys-color-tertiary-dim: #fa88c8;
|
||||
--md-sys-color-on-tertiary: #6c0f4d;
|
||||
--md-sys-color-tertiary-container: #fa88c8;
|
||||
--md-sys-color-on-tertiary-container: #5e0042;
|
||||
--md-sys-color-tertiary-fixed: #fd8bca;
|
||||
--md-sys-color-tertiary-fixed-dim: #ee7ebc;
|
||||
--md-sys-color-on-tertiary-fixed: #360024;
|
||||
--md-sys-color-on-tertiary-fixed-variant: #6d104e;
|
||||
--md-sys-color-error: #ff6e84;
|
||||
--md-sys-color-error-dim: #d73357;
|
||||
--md-sys-color-on-error: #490013;
|
||||
--md-sys-color-error-container: #a70138;
|
||||
--md-sys-color-on-error-container: #ffb2b9;
|
||||
--md-sys-color-success: #69dca1;
|
||||
--md-sys-color-on-success: #003822;
|
||||
--md-sys-color-success-container: #005233;
|
||||
--md-sys-color-on-success-container: #86f9bc;
|
||||
--md-sys-color-warning: #fdbb28;
|
||||
--md-sys-color-on-warning: #412d00;
|
||||
--md-sys-color-warning-container: #5e4200;
|
||||
--md-sys-color-on-warning-container: #ffdea6;
|
||||
--md-sys-color-info: #aec6ff;
|
||||
--md-sys-color-on-info: #002e6a;
|
||||
--md-sys-color-info-container: #004396;
|
||||
--md-sys-color-on-info-container: #d8e2ff;
|
||||
--md-sys-color-inverse-error: #b41340;
|
||||
--md-sys-color-inverse-success: #006c45;
|
||||
--md-sys-color-inverse-warning: #7c5800;
|
||||
--md-sys-color-inverse-info: #005ac4;
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"seed": "#4f46e5",
|
||||
"variant": "vibrant",
|
||||
"spec": "2025",
|
||||
"contrast": 0,
|
||||
"light": {
|
||||
"background": "#faf4ff",
|
||||
"on-background": "#32294f",
|
||||
"surface": "#faf4ff",
|
||||
"surface-dim": "#dacdff",
|
||||
"surface-bright": "#faf4ff",
|
||||
"surface-container-lowest": "#ffffff",
|
||||
"surface-container-low": "#f5eeff",
|
||||
"surface-container": "#ede4ff",
|
||||
"surface-container-high": "#e8deff",
|
||||
"surface-container-highest": "#e2d7ff",
|
||||
"on-surface": "#32294f",
|
||||
"on-surface-variant": "#5f557f",
|
||||
"outline": "#7b719c",
|
||||
"outline-variant": "#b2a6d5",
|
||||
"inverse-surface": "#10062d",
|
||||
"inverse-on-surface": "#a296c4",
|
||||
"primary": "#4a3fe2",
|
||||
"primary-dim": "#3d2fd6",
|
||||
"on-primary": "#f4f1ff",
|
||||
"primary-container": "#9795ff",
|
||||
"on-primary-container": "#14007e",
|
||||
"primary-fixed": "#9795ff",
|
||||
"primary-fixed-dim": "#8885ff",
|
||||
"on-primary-fixed": "#000000",
|
||||
"on-primary-fixed-variant": "#1a0099",
|
||||
"inverse-primary": "#8582ff",
|
||||
"secondary": "#6249b2",
|
||||
"secondary-dim": "#563ca5",
|
||||
"on-secondary": "#f7f0ff",
|
||||
"secondary-container": "#d8caff",
|
||||
"on-secondary-container": "#4e339c",
|
||||
"secondary-fixed": "#d8caff",
|
||||
"secondary-fixed-dim": "#cbbaff",
|
||||
"on-secondary-fixed": "#3a1b88",
|
||||
"on-secondary-fixed-variant": "#573da6",
|
||||
"tertiary": "#983772",
|
||||
"tertiary-dim": "#892a65",
|
||||
"on-tertiary": "#ffeff4",
|
||||
"tertiary-container": "#fd8bca",
|
||||
"on-tertiary-container": "#610244",
|
||||
"tertiary-fixed": "#fd8bca",
|
||||
"tertiary-fixed-dim": "#ee7ebc",
|
||||
"on-tertiary-fixed": "#360024",
|
||||
"on-tertiary-fixed-variant": "#6d104e",
|
||||
"error": "#b41340",
|
||||
"error-dim": "#a20036",
|
||||
"on-error": "#ffefef",
|
||||
"error-container": "#f74b6d",
|
||||
"on-error-container": "#510017",
|
||||
"success": "#006c45",
|
||||
"on-success": "#ffffff",
|
||||
"success-container": "#86f9bc",
|
||||
"on-success-container": "#002112",
|
||||
"warning": "#7c5800",
|
||||
"on-warning": "#ffffff",
|
||||
"warning-container": "#ffdea6",
|
||||
"on-warning-container": "#271900",
|
||||
"info": "#005ac4",
|
||||
"on-info": "#ffffff",
|
||||
"info-container": "#d8e2ff",
|
||||
"on-info-container": "#001a42",
|
||||
"inverse-error": "#ff6e84",
|
||||
"inverse-success": "#69dca1",
|
||||
"inverse-warning": "#fdbb28",
|
||||
"inverse-info": "#aec6ff"
|
||||
},
|
||||
"dark": {
|
||||
"background": "#10062d",
|
||||
"on-background": "#eae1ff",
|
||||
"surface": "#10062d",
|
||||
"surface-dim": "#10062d",
|
||||
"surface-bright": "#30215d",
|
||||
"surface-container-lowest": "#000000",
|
||||
"surface-container-low": "#160b36",
|
||||
"surface-container": "#1c113f",
|
||||
"surface-container-high": "#231649",
|
||||
"surface-container-highest": "#291c53",
|
||||
"on-surface": "#eae1ff",
|
||||
"on-surface-variant": "#b0a4d3",
|
||||
"outline": "#7a6f9b",
|
||||
"outline-variant": "#4b426a",
|
||||
"inverse-surface": "#fdf7ff",
|
||||
"inverse-on-surface": "#594f78",
|
||||
"primary": "#a7a5ff",
|
||||
"primary-dim": "#645dfc",
|
||||
"on-primary": "#1c00a0",
|
||||
"primary-container": "#9795ff",
|
||||
"on-primary-container": "#14007e",
|
||||
"primary-fixed": "#9795ff",
|
||||
"primary-fixed-dim": "#8885ff",
|
||||
"on-primary-fixed": "#000000",
|
||||
"on-primary-fixed-variant": "#1a0099",
|
||||
"inverse-primary": "#4d44e6",
|
||||
"secondary": "#a98ffd",
|
||||
"secondary-dim": "#a68dfa",
|
||||
"on-secondary": "#280072",
|
||||
"secondary-container": "#4d329b",
|
||||
"on-secondary-container": "#d6c9ff",
|
||||
"secondary-fixed": "#d8caff",
|
||||
"secondary-fixed-dim": "#cbbaff",
|
||||
"on-secondary-fixed": "#3a1b88",
|
||||
"on-secondary-fixed-variant": "#573da6",
|
||||
"tertiary": "#ff9dd1",
|
||||
"tertiary-dim": "#fa88c8",
|
||||
"on-tertiary": "#6c0f4d",
|
||||
"tertiary-container": "#fa88c8",
|
||||
"on-tertiary-container": "#5e0042",
|
||||
"tertiary-fixed": "#fd8bca",
|
||||
"tertiary-fixed-dim": "#ee7ebc",
|
||||
"on-tertiary-fixed": "#360024",
|
||||
"on-tertiary-fixed-variant": "#6d104e",
|
||||
"error": "#ff6e84",
|
||||
"error-dim": "#d73357",
|
||||
"on-error": "#490013",
|
||||
"error-container": "#a70138",
|
||||
"on-error-container": "#ffb2b9",
|
||||
"success": "#69dca1",
|
||||
"on-success": "#003822",
|
||||
"success-container": "#005233",
|
||||
"on-success-container": "#86f9bc",
|
||||
"warning": "#fdbb28",
|
||||
"on-warning": "#412d00",
|
||||
"warning-container": "#5e4200",
|
||||
"on-warning-container": "#ffdea6",
|
||||
"info": "#aec6ff",
|
||||
"on-info": "#002e6a",
|
||||
"info-container": "#004396",
|
||||
"on-info-container": "#d8e2ff",
|
||||
"inverse-error": "#b41340",
|
||||
"inverse-success": "#006c45",
|
||||
"inverse-warning": "#7c5800",
|
||||
"inverse-info": "#005ac4"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user