diff --git a/README.md b/README.md index 9dc3366..51d1b73 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,28 @@ Install it with the same procedure above, copying `eternity-wasteland-v2` and co $config['skin'] = 'eternity-wasteland-v2'; ``` +## Eternity Larry And Classic + +`eternity-larry` and `eternity-classic` apply the Eternity paper, ink, acid-green, and orange visual system to Roundcube's legacy Larry and Classic interfaces. They retain the original legacy layouts and require their corresponding base skins to be installed. + +Install the required base package from the Roundcube application directory before copying the child skin: + +```sh +composer require "roundcube/larry:~1.6.0" +# or +composer require "roundcube/classic:~1.6.0" +``` + +Then copy the selected Eternity child directory into `skins` and configure one of the following: + +```php +$config['skin'] = 'eternity-larry'; +// or +$config['skin'] = 'eternity-classic'; +``` + +Both variants use their own Eternity Project logo and browser icon. They are intended for Roundcube 1.6 installations where the matching legacy base skin is available. + ## Docker Install ### Docker Compose (persistent) @@ -168,6 +190,18 @@ eternity-wasteland-v2/ styles/styles.css Source-theme Daylight and Wasteland visual overrides templates/login.html Login form with the Daylight/Wasteland control watermark.html Login background that follows ep-theme +eternity-larry/ + images/ Eternity Project logo and browser icon + meta.json Larry child-skin registration + styles.css Larry import and Eternity legacy UI overrides +eternity-classic/ + images/ Eternity Project logo and browser icon + common.css Classic common UI import and Eternity overrides + includes/links.html Classic shared asset links and browser icon + mail.css Classic mail stylesheet import + meta.json Classic child-skin registration + templates/login.html Classic login template with the child stylesheet + styles.css Compatibility entry point for manual stylesheet loading ``` `styles/styles.css` imports Elastic before applying Eternity's overrides. Do not remove the import: the base skin provides the complete component layout and image assets. diff --git a/eternity-classic/common.css b/eternity-classic/common.css new file mode 100644 index 0000000..991151c --- /dev/null +++ b/eternity-classic/common.css @@ -0,0 +1,126 @@ +@import "../classic/common.css"; + +:root { + --ink: #11212b; + --paper: #f1f1e9; + --acid: #c7ef4b; + --orange: #ff6b35; + --line: #b9c5bc; + --muted: #59706b; + --field: #fbfbf6; +} + +html, +body, +#mainscreen, +#layout, +#main-menu, +#taskbar, +#mailboxlist, +#messagelist, +#messageframe { + background: var(--paper); + color: var(--ink); +} + +body { + font-family: "Space Grotesk", "Helvetica Neue", sans-serif; + background-image: linear-gradient(90deg, transparent 49.5%, rgb(17 33 43 / 5%) 50%, transparent 50.5%), linear-gradient(rgb(17 33 43 / 4%) 1px, transparent 1px); + background-size: 70px 70px, 7px 7px; +} + +a, +#taskbar a, +#mailboxlist li a, +#messagelist tr td { + color: var(--ink); +} + +a:hover, +#taskbar a:hover, +#mailboxlist li a:hover { + color: var(--orange); +} + +#taskbar, +#mailboxlist, +#messagelist, +#messagelist-header, +#mailboxlist-header, +.box, +.boxcontent, +.popupmenu, +.menu, +.toolbar { + border-color: var(--ink); + box-shadow: none; +} + +#taskbar a.selected, +#taskbar a:hover, +#mailboxlist li.selected > a, +#mailboxlist li a:hover, +#messagelist tr:hover td { + background: var(--acid); + color: var(--ink); +} + +#messagelist tr.selected td { + background: var(--ink); + color: var(--paper); +} + +input[type="text"], +input[type="password"], +textarea, +select { + border: 1px solid var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--field); + color: var(--ink); +} + +input:focus, +textarea:focus, +select:focus { + outline: 3px solid var(--acid); + outline-offset: 1px; +} + +input[type="submit"], +input[type="button"], +button, +.button, +.toolbar .button { + border: 1px solid var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--ink); + color: var(--paper); + font-family: "DM Mono", "Courier New", monospace; +} + +input[type="submit"]:hover, +input[type="button"]:hover, +button:hover, +.button:hover, +.toolbar .button:hover { + background: var(--acid); + color: var(--ink); +} + +#login-form, +#login-form .boxcontent, +#login-form .boxtitle { + border-color: var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--paper); + color: var(--ink); +} + +#login-form #logo { + max-width: 260px; + height: auto; +} \ No newline at end of file diff --git a/eternity-classic/images/favicon.svg b/eternity-classic/images/favicon.svg new file mode 100644 index 0000000..34fedf8 --- /dev/null +++ b/eternity-classic/images/favicon.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/eternity-classic/images/logo.svg b/eternity-classic/images/logo.svg new file mode 100644 index 0000000..bbb7338 --- /dev/null +++ b/eternity-classic/images/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + ETERNITY + PROJECT / FI + \ No newline at end of file diff --git a/eternity-classic/includes/links.html b/eternity-classic/includes/links.html new file mode 100644 index 0000000..645adbe --- /dev/null +++ b/eternity-classic/includes/links.html @@ -0,0 +1,12 @@ + + + + + + + +.css" /> + + + + \ No newline at end of file diff --git a/eternity-classic/mail.css b/eternity-classic/mail.css new file mode 100644 index 0000000..e1da149 --- /dev/null +++ b/eternity-classic/mail.css @@ -0,0 +1 @@ +@import "../classic/mail.css"; \ No newline at end of file diff --git a/eternity-classic/meta.json b/eternity-classic/meta.json new file mode 100644 index 0000000..ca24a71 --- /dev/null +++ b/eternity-classic/meta.json @@ -0,0 +1,13 @@ +{ + "name": "Eternity Classic", + "author": "Eternity Project", + "license": "GNU Affero General Public License", + "version": "1.0.0", + "extends": "classic", + "localization": false, + "config": { + "product_name": "eternityproject.fi", + "skin_logo": "skins/eternity-classic/images/logo.svg", + "skin_favicon": "skins/eternity-classic/images/favicon.svg" + } +} \ No newline at end of file diff --git a/eternity-classic/styles.css b/eternity-classic/styles.css new file mode 100644 index 0000000..d2810a2 --- /dev/null +++ b/eternity-classic/styles.css @@ -0,0 +1,126 @@ +@import "common.css"; + +:root { + --ink: #11212b; + --paper: #f1f1e9; + --acid: #c7ef4b; + --orange: #ff6b35; + --line: #b9c5bc; + --muted: #59706b; + --field: #fbfbf6; +} + +html, +body, +#mainscreen, +#layout, +#main-menu, +#taskbar, +#mailboxlist, +#messagelist, +#messageframe { + background: var(--paper); + color: var(--ink); +} + +body { + font-family: "Space Grotesk", "Helvetica Neue", sans-serif; + background-image: linear-gradient(90deg, transparent 49.5%, rgb(17 33 43 / 5%) 50%, transparent 50.5%), linear-gradient(rgb(17 33 43 / 4%) 1px, transparent 1px); + background-size: 70px 70px, 7px 7px; +} + +a, +#taskbar a, +#mailboxlist li a, +#messagelist tr td { + color: var(--ink); +} + +a:hover, +#taskbar a:hover, +#mailboxlist li a:hover { + color: var(--orange); +} + +#taskbar, +#mailboxlist, +#messagelist, +#messagelist-header, +#mailboxlist-header, +.box, +.boxcontent, +.popupmenu, +.menu, +.toolbar { + border-color: var(--ink); + box-shadow: none; +} + +#taskbar a.selected, +#taskbar a:hover, +#mailboxlist li.selected > a, +#mailboxlist li a:hover, +#messagelist tr:hover td { + background: var(--acid); + color: var(--ink); +} + +#messagelist tr.selected td { + background: var(--ink); + color: var(--paper); +} + +input[type="text"], +input[type="password"], +textarea, +select { + border: 1px solid var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--field); + color: var(--ink); +} + +input:focus, +textarea:focus, +select:focus { + outline: 3px solid var(--acid); + outline-offset: 1px; +} + +input[type="submit"], +input[type="button"], +button, +.button, +.toolbar .button { + border: 1px solid var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--ink); + color: var(--paper); + font-family: "DM Mono", "Courier New", monospace; +} + +input[type="submit"]:hover, +input[type="button"]:hover, +button:hover, +.button:hover, +.toolbar .button:hover { + background: var(--acid); + color: var(--ink); +} + +#login-form, +#login-form .boxcontent, +#login-form .boxtitle { + border-color: var(--ink); + border-radius: 0; + box-shadow: none; + background: var(--paper); + color: var(--ink); +} + +#login-form #logo { + max-width: 260px; + height: auto; +} \ No newline at end of file diff --git a/eternity-classic/templates/login.html b/eternity-classic/templates/login.html new file mode 100644 index 0000000..2f4292d --- /dev/null +++ b/eternity-classic/templates/login.html @@ -0,0 +1,35 @@ + + + + + + + +