From 0352bb61580bbe7385577a513811fb8ba855e998 Mon Sep 17 00:00:00 2001 From: Yusur Princeps Date: Sun, 8 Nov 2026 23:15:17 +0100 Subject: [PATCH] 0.4.1 replaced sass with css, bump suou requirement --- .gitignore | 2 +- CHANGELOG.md | 11 +- README.md | 2 +- freak/__init__.py | 8 +- freak/rest/__init__.py | 6 +- freak/static/css/style.css | 649 +++++++++++++++++++++++++++++++ freak/static/sass/base.sass | 202 ---------- freak/static/sass/constants.sass | 19 - freak/static/sass/content.sass | 30 -- freak/static/sass/layout.sass | 403 ------------------- freak/static/sass/mobile.sass | 87 ----- freak/static/sass/style.sass | 4 - pyproject.toml | 3 +- 13 files changed, 665 insertions(+), 761 deletions(-) create mode 100644 freak/static/css/style.css delete mode 100644 freak/static/sass/base.sass delete mode 100644 freak/static/sass/constants.sass delete mode 100644 freak/static/sass/content.sass delete mode 100644 freak/static/sass/layout.sass delete mode 100644 freak/static/sass/mobile.sass delete mode 100644 freak/static/sass/style.sass diff --git a/.gitignore b/.gitignore index 6dde8af..88d4095 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ dist/ .err .vscode /run.sh -**/static/css +#**/static/css #**/static/js **.priv.js /ver.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 0177537..b61e231 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,17 @@ # Changelog +## 0.4.1 + +- libsuou bumped to 0.14.2 +- Removed Sass, back to plain CSS. Can't believe this, but libsass-python has gone EOL with no valid and stable replacement. + +## 0.5.0 + +I gave up on releasing 0.5.0. + ## 0.4.0 -- Added dependency to [SUOU](https://github.com/sakuragasaki46/suou) library +- Added dependency to [SUOU](https://github.com/yusurko/suou) library - Users can now block each other + Blocking a user prevents them from seeing your comments, posts (standalone or in feed) and profile - Added user strikes: a strike logs the content of a removed message for future use diff --git a/README.md b/README.md index 1308d66..29866de 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Licensed under the [Apache License, Version 2.0](LICENSE), a non-copyleft free a This is a hobby project, made available “AS IS”, with __no warranty__ express or implied. -I (sakuragasaki46) may NOT be held accountable for Your use of my code. +I (yusurko) may NOT be held accountable for Your use of my code. > It's pointless to file a lawsuit because you feel damaged, and it's only going to turn against you. What a waste of money you could have spent on a vacation or charity, or invested in stocks. diff --git a/freak/__init__.py b/freak/__init__.py index 607b400..0bcf721 100644 --- a/freak/__init__.py +++ b/freak/__init__.py @@ -16,7 +16,6 @@ from sqlalchemy import select from sqlalchemy.exc import SQLAlchemyError from suou import Snowflake, ssv_list from werkzeug.routing import BaseConverter -from sassutils.wsgi import SassMiddleware from werkzeug.middleware.proxy_fix import ProxyFix from suou.configparse import ConfigOptions, ConfigValue @@ -24,7 +23,7 @@ from suou.configparse import ConfigOptions, ConfigValue from .colors import color_themes, theme_classes from .utils import twocolon_list -__version__ = '0.4.0' +__version__ = '0.4.1' APP_BASE_DIR = os.path.dirname(os.path.dirname(__file__)) @@ -51,11 +50,6 @@ app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False from .models import db, User, Post -# SASS -app.wsgi_app = SassMiddleware(app.wsgi_app, dict( - freak=('static/sass', 'static/css', '/static/css', True) -)) - # proxy fix if app_config.app_is_behind_proxy: app.wsgi_app = ProxyFix( diff --git a/freak/rest/__init__.py b/freak/rest/__init__.py index 0957ad5..52f8664 100644 --- a/freak/rest/__init__.py +++ b/freak/rest/__init__.py @@ -1,10 +1,10 @@ from flask import Blueprint, redirect, url_for +from flask_login import login_required from flask_restx import Resource from sqlalchemy import select from suou import Snowflake -from suou.flask_sqlalchemy import require_auth from suou.flask_restx import Api @@ -13,8 +13,6 @@ from ..models import Post, User, db rest_bp = Blueprint('rest', __name__, url_prefix='/v1') rest = Api(rest_bp) -auth_required = require_auth(User, db) - @rest.route('/nurupo') class Nurupo(Resource): def get(self): @@ -29,7 +27,7 @@ class Nurupo(Resource): @rest.route('/user/@me') class UserInfoMe(Resource): - @auth_required(required=True) + @login_required def get(self, user: User): return redirect(url_for('rest.UserInfo', user.id)), 302 diff --git a/freak/static/css/style.css b/freak/static/css/style.css new file mode 100644 index 0000000..1a6b588 --- /dev/null +++ b/freak/static/css/style.css @@ -0,0 +1,649 @@ +@charset "UTF-8"; +* { + box-sizing: border-box; } + +:root { + --c0-accent: #ff7300; + --c1-accent: #ff7300; + --c2-accent: #f837ce; + --c3-accent: #38b8ff; + --c4-accent: #ffe338; + --c5-accent: #78f038; + --c6-accent: #ff9aae; + --c7-accent: #606080; + --c8-accent: #aeaac0; + --c9-accent: #3ae0b8; + --c10-accent: #8828ea; + --c11-accent: #1871d8; + --c12-accent: #885a18; + --c13-accent: #38a856; + --c14-accent: #ff3018; + --c15-accent: #ff1668; + --light-text-primary: #181818; + --light-text-alt: #444; + --light-border: #999; + --light-success: #73af00; + --light-error: #e04830; + --light-warning: #dea800; + --light-canvas: #eaecee; + --light-background: #f9f9f9; + --light-bg-sharp: #fdfdff; + --dark-text-primary: #e8e8e8; + --dark-text-alt: #c0cad3; + --dark-border: #777; + --dark-success: #93cf00; + --dark-error: #e04830; + --dark-warning: #dea800; + --dark-canvas: #0a0a0e; + --dark-background: #181a21; + --dark-bg-sharp: #080808; + --accent: var(--c0-accent); + --light-accent: var(--accent); + --dark-accent: var(--accent); + --text-primary: var(--light-text-primary); + --text-alt: var(--light-text-alt); + --border: var(--light-border); + --success: var(--light-success); + --error: var(--light-error); + --warning: var(--light-warning); + --canvas: var(--light-canvas); + --background: var(--light-background); + --bg-sharp: var(--light-bg-sharp); } + +@media (prefers-color-scheme: dark) { + :root { + --text-primary: var(--dark-text-primary); + --text-alt: var(--dark-text-alt); + --border: var(--dark-border); + --success: var(--dark-success); + --error: var(--dark-error); + --warning: var(--dark-warning); + --canvas: var(--dark-canvas); + --background: var(--dark-background); + --bg-sharp: var(--dark-bg-sharp); } } + +.color-scheme-light { + --text-primary: var(--light-text-primary); + --text-alt: var(--light-text-alt); + --border: var(--light-border); + --success: var(--light-success); + --error: var(--light-error); + --warning: var(--light-warning); + --canvas: var(--light-canvas); + --background: var(--light-background); + --bg-sharp: var(--light-bg-sharp); } + +.color-scheme-dark { + --text-primary: var(--dark-text-primary); + --text-alt: var(--dark-text-alt); + --border: var(--dark-border); + --success: var(--dark-success); + --error: var(--dark-error); + --warning: var(--dark-warning); + --canvas: var(--dark-canvas); + --background: var(--dark-background); + --bg-sharp: var(--dark-bg-sharp); } + +.color-theme-1 { + --accent: var(--c1-accent); } + +.color-theme-2 { + --accent: var(--c2-accent); } + +.color-theme-3 { + --accent: var(--c3-accent); } + +.color-theme-4 { + --accent: var(--c4-accent); } + +.color-theme-5 { + --accent: var(--c5-accent); } + +.color-theme-6 { + --accent: var(--c6-accent); } + +.color-theme-7 { + --accent: var(--c7-accent); } + +.color-theme-8 { + --accent: var(--c8-accent); } + +.color-theme-9 { + --accent: var(--c9-accent); } + +.color-theme-10 { + --accent: var(--c10-accent); } + +.color-theme-11 { + --accent: var(--c11-accent); } + +.color-theme-12 { + --accent: var(--c12-accent); } + +.color-theme-13 { + --accent: var(--c13-accent); } + +.color-theme-14 { + --accent: var(--c14-accent); } + +.color-theme-15 { + --accent: var(--c15-accent); } + +body, input, select, button { + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Noto Sans", sans-serif; } + +body { + line-height: 1.5; + font-size: 18px; } + +input, button, select { + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +textarea { + font-family: monospace; } + +input:not([type="submit"], [type="button"], [type="reset"]), textarea { + background: var(--bg-sharp); + color: var(--text-main); + border: var(--border); + border-radius: 9px; } + +body { + color: var(--text-primary); + background-color: var(--canvas); } + +.card { + background-color: var(--background); + border: var(--canvas) 1px solid; + border-radius: 9px; + margin: 12px auto; + padding: 12px; + max-width: 960px; } + +.centered { + text-align: center; + font-size: 110%; } + +a:link, a:visited { + color: var(--accent); + transition: ease 5s; } + +img { + max-width: 100%; + max-height: 100vh; } + +.faint { + opacity: .75; } + strong .faint { + font-weight: 400; } + +.callout { + color: var(--text-alt); } + +.success { + color: var(--success); } + +.error { + color: var(--error); } + +.warning { + color: var(--warning); } + +body { + margin: 0; } + +.content-container { + display: flex; + flex-direction: row-reverse; + align-items: start; + justify-content: flex-start; } + +.content-nav { + width: 320px; + font-size: smaller; } + +.content-main { + flex: 1; } + +main { + min-height: 70vh; + margin: 12px auto; } + +header.header { + background-color: var(--background); + display: flex; + justify-content: space-between; + overflow: hidden; + height: 3em; + padding: .75em 1.5em; + line-height: 1; } + header.header h1 { + margin: 0; + padding: 0; + font-size: 1.5em; } + header.header .metanav { + align-self: flex-end; + font-size: 1.5em; + margin: auto; + margin-inline-start: 2em; } + header.header .metanav ul { + list-style: none; + padding: 0; + margin: 0; } + header.header .metanav ul > li { + margin: 0 6px; } + header.header .metanav ul, header.header .metanav ul > li { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; } + header.header .metanav, header.header .metanav > ul, header.header .metanav > ul > li:has(.mini-search-bar) { + flex: 1; } + header.header .metanav ul > li span { + color: var(--text-primary); + font-size: .6em; } + header.header .header-username > * { + display: block; + font-size: .5em; + line-height: 1.25; } + header.header .header-username .icon { + font-size: inherit; } + header.header a { + text-decoration: none; } + header.header .mini-search-bar { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + flex: 1; + font-size: 1.2rem; } + header.header .mini-search-bar [type="search"] { + flex: 1; + border-radius: 0; + border: 0; + border-bottom: 2px solid var(--border); + background-color: inherit; } + header.header .mini-search-bar [type="search"] :focus { + background-color: var(--bg-sharp); + border-color: var(--accent); } + header.header .mini-search-bar [type="submit"] { + height: 0; + width: 0; + padding: 0; + margin: 0; + border-radius: 0; + opacity: 0; + overflow: hidden; } + header.header .mini-search-bar + a { + display: none; } + +aside.card { + overflow: hidden; } + aside.card > :is(h1, h2, h3, h4, h5, h6):first-child { + background-color: var(--accent); + padding: 6px 12px; + margin: -12px -12px 0 -12px; + position: relative; } + aside.card > :is(h1, h2, h3, h4, h5, h6):first-child a { + color: inherit; + text-decoration: underline; } + aside.card > ul { + list-style: none; + margin: 0; + padding: 0; } + aside.card > ul > li { + border-bottom: 1px solid var(--canvas); + padding: 12px; } + aside.card > ul > li:last-child { + border-bottom: none; } + aside.card > p { + padding: 12px; + margin: 0; } + +.flash { + border-color: yellow; + background-color: #fff00040; } + +ul.timeline { + list-style: none; + padding: 0 1em; } + ul.timeline > li { + border-bottom: 1px solid var(--border); + margin-bottom: 6px; } + ul.timeline > li:last-child { + border-bottom: 0; + margin-bottom: 0; } + +ul.inline { + list-style: none; + padding: 0; + margin: 0; + display: inline; } + ul.inline > li { + display: inline; } + ul.inline > li::before { + content: ' · '; + margin: 0 .5em; } + ul.inline > li:first-child::before { + content: ''; + margin: 0; } + +ul.grid { + list-style: none; + padding: 0; + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-rows: auto; } + ul.grid > li { + border: 1px solid var(--border); + border-radius: .5em; + padding: .5em; + margin: 1em .5em; + text-align: center; } + ul.grid > li small { + display: block; } + +ul.message-options { + color: var(--text-alt); + list-style: none; + padding: 0; + font-size: smaller; } + +.post-frame { + margin-left: 3em; + position: relative; + min-height: 6em; + clear: right; } + [dir="rtl"] .post-frame { + margin-left: 0; + margin-right: 3em; } + .post-frame .message-options { + margin-bottom: 1em; } + .post-frame .message-stats { + position: absolute; + left: -3em; + top: 0; + display: flex; + flex-direction: column; + width: 2em; + text-align: center; + line-height: 1.0; } + [dir="rtl"] .post-frame .message-stats { + right: -3em; + left: unset; } + .post-frame .message-stats > * { + display: flex; + flex-direction: column; } + .post-frame .message-stats strong { + font-size: smaller; } + .post-frame .message-stats a { + text-decoration: none; + margin: .25em 0; } + +.message-meta { + font-size: smaller; + color: var(--text-alt); } + +.shorten { + max-height: 18em; + overflow-y: hidden; + position: relative; } + .shorten::after { + content: ''; + position: absolute; + z-index: 10; + top: 16em; + left: 0; + width: 100%; + height: 2em; + display: block; + background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, var(--background) 100%); } + +.comments-button .comment-count { + display: inline-block; + min-width: 1em; + text-align: center; } + +i.icon { + font-size: inherit; + font-style: normal; } + +form.boundaryless { + flex: 1; + background: transparent; + color: inherit; + border: 0; + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); } + form.boundaryless dd { + display: flex; + flex-direction: row; + width: 100%; + box-sizing: border-box; + margin: 0; } + form.boundaryless textarea, form.boundaryless input[type="text"] { + width: 100%; } + form.boundaryless textarea { + min-height: 4em; } + form.boundaryless p input[type="text"] { + width: unset; } + +.big-search-bar form { + display: flex; + flex-direction: row; + font-size: 1.6em; + width: 80%; + margin: auto; } + .big-search-bar form > [type="search"] { + flex: 1; + border-bottom: 2px solid var(--border); } + +footer.footer { + text-align: center; + font-size: smaller; } + footer.footer ul { + list-style: none; + padding: 0; + margin: 0; } + footer.footer ul > li { + display: inline-block; + margin: 0 2em; } + +textarea.comment-area { + width: 100%; } + +button, [type="submit"], [type="reset"], [type="button"] { + background-color: transparent; + color: var(--accent); + border: 1px solid var(--accent); + border-radius: 6px; + padding: 6px 12px; + margin: 6px; + cursor: pointer; } + button.primary, [type="submit"].primary, [type="reset"].primary, [type="button"].primary { + background-color: var(--accent); + color: var(--background); } + button[disabled], [type="submit"][disabled], [type="reset"][disabled], [type="button"][disabled] { + opacity: .5; + cursor: not-allowed; + border: var(--border); + color: var(--border); } + button.primary[disabled], [type="submit"].primary[disabled], [type="reset"].primary[disabled], [type="button"].primary[disabled] { + color: var(--background); + background-color: var(--border); } + button:first-child, [type="submit"]:first-child, [type="reset"]:first-child, [type="button"]:first-child { + margin-inline-start: 0; } + button:last-child, [type="submit"]:last-child, [type="reset"]:last-child, [type="button"]:last-child { + margin-inline-end: 0; } + +.button-row-right { + display: flex; + flex-direction: row; + justify-content: flex-end; } + +.comment-frame { + border: 1px solid var(--border); + background: var(--background); + padding: 12px 12px 6px; + border-radius: 24px; + border-start-start-radius: 0; + min-width: 50%; + width: 0; + margin-inline-end: auto; + margin-bottom: 12px; + position: relative; } + .comment-frame::before { + content: ''; + border: 1px solid var(--border); + border-inline-end: 0; + border-bottom: 0; + background: var(--background); + height: 1em; + width: 1em; + position: absolute; + left: calc(-1px - .5em); + top: -1px; + transform: skewX(45deg); } + li:has(> .comment-frame) { + list-style: none; } + +.border-accent { + border: var(--accent) 1px solid; + display: inline-flex; + align-items: center; + padding: 0 4px; } + +.round { + border-radius: 1em; } + +.done { + opacity: .5; } + +button.card { + width: 100%; + padding: .5em 1em; + background-color: transparent; + border-color: var(--accent); + color: var(--accent); + border-radius: 1em; } + button.card.primary { + background-color: var(--accent); + color: var(--background); } + +.big_icon { + display: block; + margin: 12px auto; + font-size: 36px; + text-align: center; } + +textarea.create_text { + min-height: 8em; } + form.boundaryless textarea.create_text { + min-height: 8em; } + +:is(input, select, textarea).fullwidth { + width: 100%; + padding: 0; } + +label:has([type="checkbox"]:not(:checked)) { + opacity: .75; } + +.content { + margin: 2em auto; + max-width: 1280px; } + +blockquote { + padding-left: 1em; + border-left: 4px solid var(--border); + margin-left: 0; } + [dir="rtl"] blockquote { + padding-left: 0; + border-left: 0; + padding-right: 1em; + border-right: 4px solid var(--border); } + +.message-content p { + margin: 4px 0; } + +.message-content ul { + margin: 4px 0; + padding: 0; + padding-inline-start: 1.5em; } + .message-content ul > li { + margin: 0; } + +h1, h2, h3, h4, h5, h6 { + font-weight: 500; } + +@media screen and (max-width: 800px) { + .content-container { + display: block; } + .content-nav, .content-main { + width: 100%; } + ul.grid { + grid-template-columns: 1fr 1fr; } + .nomobile { + display: none !important; } + body { + position: relative; } + footer.mobile-nav { + position: sticky; + bottom: 0; + left: 0; + width: 100%; + overflow: hidden; + margin: 0; + padding: 0; + background-color: var(--background); + box-shadow: 0 0 6px var(--border); + z-index: 150; } + footer.mobile-nav > ul { + display: flex; + list-style: none; + margin: 0; + padding: 0; + flex-direction: row; + align-items: stretch; + justify-content: stretch; } + footer.mobile-nav > ul > li { + flex: 1; + padding: .5em; + margin: 0; + text-align: center; } + footer.mobile-nav > ul > li a { + text-decoration: none; } + footer.mobile-nav > ul > li .icon { + font-size: 2rem; } + .content-nav { + margin: 1em; + width: unset; } + header.header h1 { + margin-top: 4px; + margin-left: 6px; } + .content-header { + text-align: center; } + .big-search-bar form { + flex-direction: column; } + .big-search-bar form [type="submit"] { + width: unset; + margin: 12px auto; } } + +@media screen and (max-width: 960px) { + .header-username { + display: none; } + header.header { + padding: .5em .5em; } + header.header .mini-search-bar { + display: none; } + header.header .mini-search-bar + a { + display: inline-block; } + header.header ul > li:has(.mini-search-bar) { + flex: unset; } } + +@media screen and (min-width: 801px) { + .mobileonly { + display: none !important; } } + +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/freak/static/sass/base.sass b/freak/static/sass/base.sass deleted file mode 100644 index 9289b5f..0000000 --- a/freak/static/sass/base.sass +++ /dev/null @@ -1,202 +0,0 @@ - -@import "constants.sass" - -* - box-sizing: border-box - -\:root - --c0-accent: #ff7300 - --c1-accent: #ff7300 - --c2-accent: #f837ce - --c3-accent: #38b8ff - --c4-accent: #ffe338 - --c5-accent: #78f038 - --c6-accent: #ff9aae - --c7-accent: #606080 - --c8-accent: #aeaac0 - --c9-accent: #3ae0b8 - --c10-accent: #8828ea - --c11-accent: #1871d8 - --c12-accent: #885a18 - --c13-accent: #38a856 - --c14-accent: #ff3018 - --c15-accent: #ff1668 - - --light-text-primary: #181818 - --light-text-alt: #444 - --light-border: #999 - --light-success: #73af00 - --light-error: #e04830 - --light-warning: #dea800 - --light-canvas: #eaecee - --light-background: #f9f9f9 - --light-bg-sharp: #fdfdff - - --dark-text-primary: #e8e8e8 - --dark-text-alt: #c0cad3 - --dark-border: #777 - --dark-success: #93cf00 - --dark-error: #e04830 - --dark-warning: #dea800 - --dark-canvas: #0a0a0e - --dark-background: #181a21 - --dark-bg-sharp: #080808 - - --accent: var(--c0-accent) - - // the following are DEPRECATED // - --light-accent: var(--accent) - --dark-accent: var(--accent) - - --text-primary: var(--light-text-primary) - --text-alt: var(--light-text-alt) - --border: var(--light-border) - --success: var(--light-success) - --error: var(--light-error) - --warning: var(--light-warning) - --canvas: var(--light-canvas) - --background: var(--light-background) - --bg-sharp: var(--light-bg-sharp) - -@media (prefers-color-scheme: dark) - \:root - --text-primary: var(--dark-text-primary) - --text-alt: var(--dark-text-alt) - --border: var(--dark-border) - --success: var(--dark-success) - --error: var(--dark-error) - --warning: var(--dark-warning) - --canvas: var(--dark-canvas) - --background: var(--dark-background) - --bg-sharp: var(--dark-bg-sharp) - -.color-scheme-light - --text-primary: var(--light-text-primary) - --text-alt: var(--light-text-alt) - --border: var(--light-border) - --success: var(--light-success) - --error: var(--light-error) - --warning: var(--light-warning) - --canvas: var(--light-canvas) - --background: var(--light-background) - --bg-sharp: var(--light-bg-sharp) - -.color-scheme-dark - --text-primary: var(--dark-text-primary) - --text-alt: var(--dark-text-alt) - --border: var(--dark-border) - --success: var(--dark-success) - --error: var(--dark-error) - --warning: var(--dark-warning) - --canvas: var(--dark-canvas) - --background: var(--dark-background) - --bg-sharp: var(--dark-bg-sharp) - -.color-theme-1 - --accent: var(--c1-accent) - -.color-theme-2 - --accent: var(--c2-accent) - -.color-theme-3 - --accent: var(--c3-accent) - -.color-theme-4 - --accent: var(--c4-accent) - -.color-theme-5 - --accent: var(--c5-accent) - -.color-theme-6 - --accent: var(--c6-accent) - -.color-theme-7 - --accent: var(--c7-accent) - -.color-theme-8 - --accent: var(--c8-accent) - -.color-theme-9 - --accent: var(--c9-accent) - -.color-theme-10 - --accent: var(--c10-accent) - -.color-theme-11 - --accent: var(--c11-accent) - -.color-theme-12 - --accent: var(--c12-accent) - -.color-theme-13 - --accent: var(--c13-accent) - -.color-theme-14 - --accent: var(--c14-accent) - -.color-theme-15 - --accent: var(--c15-accent) - - -body, input, select, button - font-family: $ui-fonts - -body - line-height: $ui-line-height - font-size: $ui-size - -input, button, select - font-family: inherit - font-size: inherit - line-height: inherit - -textarea - font-family: $monospace-fonts - -input:not([type="submit"], [type="button"], [type="reset"]), textarea - background: var(--bg-sharp) - color: var(--text-main) - border: var(--border) - border-radius: $corner-radius - -body - color: var(--text-primary) - background-color: var(--canvas) - -.card - background-color: var(--background) - border: var(--canvas) 1px solid - border-radius: $corner-radius - margin: 12px auto - padding: 12px - max-width: 960px - -.centered - text-align: center - font-size: 110% - -a - &:link, &:visited - color: var(--accent) - transition: ease 5s - -img - max-width: 100% - max-height: 100vh - -.faint - opacity: .75 - strong & - font-weight: 400 - -.callout - color: var(--text-alt) - -.success - color: var(--success) - -.error - color: var(--error) - -.warning - color: var(--warning) diff --git a/freak/static/sass/constants.sass b/freak/static/sass/constants.sass deleted file mode 100644 index cdaec0a..0000000 --- a/freak/static/sass/constants.sass +++ /dev/null @@ -1,19 +0,0 @@ - -$ui-fonts: system-ui, -apple-system, BlinkMacSystemFont, "Noto Sans", sans-serif -$heading-fonts: $ui-fonts -$content-fonts: $ui-fonts -$monospace-fonts: monospace - -$ui-line-height: 1.5 -$content-line-height: 1.5 - -$ui-size: 18px -$content-size: 18px -$h1-size: $ui-size * 2.5 -$h2-size: $ui-size * 1.85 -$h3-size: $ui-size * 1.55 -$h4-size: $ui-size * 1.3 -$h5-size: $ui-size * 1.1 -$h6-size: $ui-size * 1.0 - -$corner-radius: 9px \ No newline at end of file diff --git a/freak/static/sass/content.sass b/freak/static/sass/content.sass deleted file mode 100644 index 6aaf1fa..0000000 --- a/freak/static/sass/content.sass +++ /dev/null @@ -1,30 +0,0 @@ - -.content - margin: 2em auto - max-width: 1280px - -blockquote - padding-left: 1em - border-left: 4px solid var(--border) - margin-left: 0 - - [dir="rtl"] & - padding-left: 0 - border-left: 0 - padding-right: 1em - border-right: 4px solid var(--border) - -.message-content - p - margin: 4px 0 - ul - margin: 4px 0 - padding: 0 - padding-inline-start: 1.5em - > li - margin: 0 - - -h1, h2, h3, h4, h5, h6 - font-weight: 500 - diff --git a/freak/static/sass/layout.sass b/freak/static/sass/layout.sass deleted file mode 100644 index a2c70eb..0000000 --- a/freak/static/sass/layout.sass +++ /dev/null @@ -1,403 +0,0 @@ - -@import "constants.sass" - -body - margin: 0 - -.content-container - display: flex - flex-direction: row-reverse - align-items: start - justify-content: flex-start - -.content-nav - width: 320px - font-size: smaller - - -.content-main - flex: 1 - -main - min-height: 70vh - margin: 12px auto - - -// __ header styles __ // -header.header - background-color: var(--background) - display: flex - justify-content: space-between - overflow: hidden - height: 3em - padding: .75em 1.5em - line-height: 1 - h1 - margin: 0 - padding: 0 - font-size: 1.5em - .metanav - align-self: flex-end - font-size: 1.5em - margin: auto - margin-inline-start: 2em - ul - list-style: none - padding: 0 - margin: 0 - > li - margin: 0 6px - - ul, ul > li - display: flex - flex-direction: row - align-items: center - justify-content: flex-end - - &, > ul, > ul > li:has(.mini-search-bar) - flex: 1 - - ul > li span - color: var(--text-primary) - font-size: .6em - - .header-username - > * - display: block - font-size: .5em - line-height: 1.25 - .icon - font-size: inherit - a - text-decoration: none - - .mini-search-bar - display: flex - flex-direction: row - align-items: center - justify-content: flex-end - flex: 1 - font-size: 1.2rem - - [type="search"] - flex: 1 - border-radius: 0 - border: 0 - border-bottom: 2px solid var(--border) - background-color: inherit - - :focus - background-color: var(--bg-sharp) - border-color: var(--accent) - - [type="submit"] - height: 0 - width: 0 - padding: 0 - margin: 0 - border-radius: 0 - opacity: 0 - overflow: hidden - - + a - display: none - -// __ aside styles __ // -aside.card - overflow: hidden - > :is(h1, h2, h3, h4, h5, h6):first-child - background-color: var(--accent) - padding: 6px 12px - margin: -12px -12px 0 -12px - position: relative - a - color: inherit - text-decoration: underline - > ul - list-style: none - margin: 0 - padding: 0 - > li - border-bottom: 1px solid var(--canvas) - padding: 12px - &:last-child - border-bottom: none - > p - padding: 12px - margin: 0 - - -.flash - border-color: yellow - background-color: #fff00040 - -ul.timeline - list-style: none - padding: 0 1em - > li - border-bottom: 1px solid var(--border) - margin-bottom: 6px - &:last-child - border-bottom: 0 - margin-bottom: 0 - -ul.inline - list-style: none - padding: 0 - margin: 0 - display: inline - > li - display: inline - &::before - content: ' · ' - margin: 0 .5em - &:first-child::before - content: '' - margin: 0 - -ul.grid - list-style: none - padding: 0 - display: grid - grid-template-columns: 1fr 1fr 1fr 1fr - grid-template-rows: auto - > li - border: 1px solid var(--border) - border-radius: .5em - padding: .5em - margin: 1em .5em - text-align: center - small - display: block - - -ul.message-options - color: var(--text-alt) - list-style: none - padding: 0 - font-size: smaller - -.post-frame - margin-left: 3em - position: relative - min-height: 6em - clear: right - [dir="rtl"] & - margin-left: 0 - margin-right: 3em - - .message-options - margin-bottom: 1em - - .message-stats - position: absolute - left: -3em - top: 0 - display: flex - flex-direction: column - width: 2em - text-align: center - line-height: 1.0 - - [dir="rtl"] & - right: -3em - left: unset - - > * - display: flex - flex-direction: column - - strong - font-size: smaller - - a - text-decoration: none - margin: .25em 0 - -.message-meta - font-size: smaller - color: var(--text-alt) - -.shorten - max-height: 18em - overflow-y: hidden - position: relative - - &::after - content: '' - position: absolute - z-index: 10 - top: 16em - left: 0 - width: 100% - height: 2em - display: block - background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, var(--background) 100%) - - -.comments-button - .comment-count - display: inline-block - min-width: 1em - text-align: center - -i.icon - font-size: inherit - font-style: normal - -form.boundaryless - flex: 1 - background: transparent - color: inherit - border: 0 - border-top: 1px solid var(--border) - border-bottom: 1px solid var(--border) - - dd - display: flex - flex-direction: row - width: 100% - box-sizing: border-box - margin: 0 - - textarea, input[type="text"] - width: 100% - - textarea - min-height: 4em - - p input[type="text"] - width: unset - -.big-search-bar - form - display: flex - flex-direction: row - font-size: 1.6em - width: 80% - margin: auto - > [type="search"] - flex: 1 - border-bottom: 2px solid var(--border) - -footer.footer - text-align: center - font-size: smaller - ul - list-style: none - padding: 0 - margin: 0 - > li - display: inline-block - margin: 0 2em - -textarea.comment-area - width: 100% - -button, [type="submit"], [type="reset"], [type="button"] - background-color: transparent - color: var(--accent) - border: 1px solid var(--accent) - border-radius: 6px - padding: 6px 12px - margin: 6px - cursor: pointer - - &.primary - background-color: var(--accent) - color: var(--background) - - &[disabled] - opacity: .5 - cursor: not-allowed - border: var(--border) - color: var(--border) - - &.primary[disabled] - color: var(--background) - background-color: var(--border) - - &:first-child - margin-inline-start: 0 - - &:last-child - margin-inline-end: 0 - -.button-row-right - display: flex - flex-direction: row - justify-content: flex-end - -.comment-frame - border: 1px solid var(--border) - background: var(--background) - padding: 12px 12px 6px - border-radius: 24px - border-start-start-radius: 0 - min-width: 50% - width: 0 - margin-inline-end: auto - margin-bottom: 12px - position: relative - &::before - content: '' - border: 1px solid var(--border) - border-inline-end: 0 - border-bottom: 0 - background: var(--background) - height: 1em - width: 1em - position: absolute - left: calc(-1px - .5em) - top: -1px - transform: skewX(45deg) - li:has(> &) - list-style: none - - -.border-accent - border: var(--accent) 1px solid - display: inline-flex - align-items: center - padding: 0 4px - -.round - border-radius: 1em - -.done - opacity: .5 - -button.card - width: 100% - padding: .5em 1em - background-color: transparent - border-color: var(--accent) - color: var(--accent) - border-radius: 1em - - &.primary - background-color: var(--accent) - color: var(--background) - -.big_icon - display: block - margin: 12px auto - font-size: 36px - text-align: center - - -textarea.create_text - min-height: 8em - - // specificity ew // - form.boundaryless & - min-height: 8em - -\:is(input, select, textarea).fullwidth - width: 100% - padding: 0 - - -label:has([type="checkbox"]:not(:checked)) - opacity: .75 - diff --git a/freak/static/sass/mobile.sass b/freak/static/sass/mobile.sass deleted file mode 100644 index 4d45ce0..0000000 --- a/freak/static/sass/mobile.sass +++ /dev/null @@ -1,87 +0,0 @@ - -@media screen and (max-width: 800px) - .content-container - display: block - - .content-nav, .content-main - width: 100% - - ul.grid - grid-template-columns: 1fr 1fr - - .nomobile - display: none !important - - body - position: relative - - footer.mobile-nav - position: sticky - bottom: 0 - left: 0 - width: 100% - overflow: hidden - margin: 0 - padding: 0 - background-color: var(--background) - box-shadow: 0 0 6px var(--border) - z-index: 150 - - > ul - display: flex - list-style: none - margin: 0 - padding: 0 - flex-direction: row - align-items: stretch - justify-content: stretch - > li - flex: 1 - padding: .5em - margin: 0 - text-align: center - a - text-decoration: none - .icon - font-size: 2rem - - .content-nav - margin: 1em - width: unset - - header.header h1 - margin-top: 4px - margin-left: 6px - - .content-header - text-align: center - - .big-search-bar form - flex-direction: column - - [type="submit"] - width: unset - margin: 12px auto - -@media screen and (max-width: 960px) - .header-username - display: none - - header.header - padding: .5em .5em - - .mini-search-bar - display: none - - + a - display: inline-block - - ul > li:has(.mini-search-bar) - flex: unset - - -// not mobile: // - -@media screen and (min-width: 801px) - .mobileonly - display: none !important \ No newline at end of file diff --git a/freak/static/sass/style.sass b/freak/static/sass/style.sass deleted file mode 100644 index cc8c18c..0000000 --- a/freak/static/sass/style.sass +++ /dev/null @@ -1,4 +0,0 @@ -@import "base.sass" -@import "layout.sass" -@import "content.sass" -@import "mobile.sass" diff --git a/pyproject.toml b/pyproject.toml index b26dfd7..d5c0c0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,9 +16,8 @@ dependencies = [ "Alembic", "Markdown>=3.0.0", "PsycoPG2-binary", - "libsass", "setuptools>=78.1.0", - "sakuragasaki46-suou>=0.4.0" + "suou>=0.14.2" ] requires-python = ">=3.10" classifiers = [