From 2be87c397d918a0f15e53e273f3d1006dca9aa11 Mon Sep 17 00:00:00 2001 From: trisua Date: Sun, 3 Aug 2025 23:24:57 -0400 Subject: [PATCH] add: forum posts ui --- crates/app/src/public/css/root.css | 7 +- crates/app/src/public/css/style.css | 59 +- crates/app/src/public/css/utility.css | 51 +- crates/app/src/public/html/auth/base.lisp | 6 +- .../app/src/public/html/auth/connection.lisp | 2 +- crates/app/src/public/html/auth/login.lisp | 10 +- crates/app/src/public/html/auth/register.lisp | 24 +- .../public/html/auth/seller_connection.lisp | 2 +- crates/app/src/public/html/body.lisp | 60 +- crates/app/src/public/html/chats/app.lisp | 16 +- .../app/src/public/html/chats/channels.lisp | 8 +- crates/app/src/public/html/chats/stream.lisp | 8 +- .../app/src/public/html/communities/base.lisp | 24 +- .../public/html/communities/create_post.lisp | 48 +- .../app/src/public/html/communities/feed.lisp | 14 +- .../app/src/public/html/communities/list.lisp | 35 +- .../src/public/html/communities/members.lisp | 16 +- .../src/public/html/communities/question.lisp | 20 +- .../public/html/communities/questions.lisp | 8 +- .../src/public/html/communities/search.lisp | 16 +- .../src/public/html/communities/settings.lisp | 96 +-- crates/app/src/public/html/components.lisp | 800 ++++++++++-------- crates/app/src/public/html/developer/app.lisp | 74 +- .../app/src/public/html/developer/home.lisp | 26 +- .../app/src/public/html/developer/link.lisp | 10 +- crates/app/src/public/html/forge/base.lisp | 14 +- crates/app/src/public/html/forge/home.lisp | 14 +- crates/app/src/public/html/forge/info.lisp | 2 +- crates/app/src/public/html/forge/tickets.lisp | 14 +- crates/app/src/public/html/journals/app.lisp | 72 +- .../src/public/html/littleweb/browser.lisp | 8 +- .../app/src/public/html/littleweb/domain.lisp | 40 +- .../src/public/html/littleweb/domains.lisp | 24 +- .../src/public/html/littleweb/service.lisp | 30 +- .../src/public/html/littleweb/services.lisp | 22 +- crates/app/src/public/html/macros.lisp | 12 +- crates/app/src/public/html/mail/compose.lisp | 18 +- crates/app/src/public/html/mail/letter.lisp | 2 +- crates/app/src/public/html/mail/received.lisp | 10 +- crates/app/src/public/html/mail/sent.lisp | 10 +- .../src/public/html/marketplace/seller.lisp | 12 +- .../src/public/html/misc/achievements.lisp | 22 +- crates/app/src/public/html/misc/error.lisp | 8 +- crates/app/src/public/html/misc/markdown.lisp | 8 +- .../src/public/html/misc/notifications.lisp | 14 +- crates/app/src/public/html/misc/requests.lisp | 40 +- crates/app/src/public/html/mod/audit_log.lisp | 12 +- .../app/src/public/html/mod/file_report.lisp | 10 +- crates/app/src/public/html/mod/ip_bans.lisp | 18 +- crates/app/src/public/html/mod/profile.lisp | 52 +- crates/app/src/public/html/mod/reports.lisp | 16 +- crates/app/src/public/html/mod/stats.lisp | 8 +- crates/app/src/public/html/mod/warnings.lisp | 28 +- crates/app/src/public/html/post/likes.lisp | 8 +- crates/app/src/public/html/post/post.lisp | 58 +- crates/app/src/public/html/post/quotes.lisp | 8 +- crates/app/src/public/html/post/reposts.lisp | 14 +- .../app/src/public/html/profile/banned.lisp | 12 +- crates/app/src/public/html/profile/base.lisp | 68 +- .../app/src/public/html/profile/blocked.lisp | 12 +- .../src/public/html/profile/followers.lisp | 6 +- .../src/public/html/profile/following.lisp | 6 +- crates/app/src/public/html/profile/media.lisp | 8 +- .../app/src/public/html/profile/outbox.lisp | 14 +- crates/app/src/public/html/profile/posts.lisp | 14 +- .../app/src/public/html/profile/private.lisp | 12 +- .../app/src/public/html/profile/replies.lisp | 8 +- .../src/public/html/profile/responses.lisp | 14 +- .../app/src/public/html/profile/settings.lisp | 298 +++---- .../app/src/public/html/profile/warning.lisp | 12 +- crates/app/src/public/html/root.lisp | 26 +- .../app/src/public/html/stacks/add_user.lisp | 10 +- crates/app/src/public/html/stacks/feed.lisp | 18 +- crates/app/src/public/html/stacks/list.lisp | 16 +- crates/app/src/public/html/stacks/manage.lisp | 32 +- crates/app/src/public/html/timelines/all.lisp | 10 +- .../public/html/timelines/all_questions.lisp | 4 +- .../src/public/html/timelines/following.lisp | 4 +- .../html/timelines/following_questions.lisp | 4 +- .../app/src/public/html/timelines/home.lisp | 8 +- .../public/html/timelines/home_questions.lisp | 4 +- .../src/public/html/timelines/popular.lisp | 4 +- .../html/timelines/popular_questions.lisp | 4 +- .../app/src/public/html/timelines/search.lisp | 16 +- .../src/public/html/timelines/swiss_army.lisp | 4 +- crates/app/src/public/js/atto.js | 18 +- crates/app/src/public/js/me.js | 4 +- .../src/routes/api/v1/communities/posts.rs | 2 +- crates/app/src/routes/pages/communities.rs | 11 +- crates/core/src/database/posts.rs | 7 +- 90 files changed, 1459 insertions(+), 1299 deletions(-) diff --git a/crates/app/src/public/css/root.css b/crates/app/src/public/css/root.css index e1c196b..a0c2a18 100644 --- a/crates/app/src/public/css/root.css +++ b/crates/app/src/public/css/root.css @@ -122,7 +122,7 @@ article { body .card:not(.card *):not(.user_plate), body .pillmenu:not(.card *) > a, - body .card-nest:not(.card *) > .card, + body .card_nest:not(.card *) > .card, body .banner { border-radius: 0 !important; } @@ -261,7 +261,10 @@ hr.margin { margin: var(--pad-4) 0; } -p, +hr.margin_top { + margin-top: var(--pad-4); +} + li, span, code { diff --git a/crates/app/src/public/css/style.css b/crates/app/src/public/css/style.css index a706c7d..9284577 100644 --- a/crates/app/src/public/css/style.css +++ b/crates/app/src/public/css/style.css @@ -195,27 +195,78 @@ table ol { color: var(--color-text-lowered); } -.card-nest { +.card_nest { box-shadow: var(--shadow-x-offset) var(--shadow-y-offset) var(--shadow-size) var(--color-shadow); border-radius: var(--radius); } -.card-nest .card { +.card_nest .card { box-shadow: none; } -.card-nest > .card:first-child { +.card_nest > .card:first-child { border-bottom-left-radius: 0; border-bottom-right-radius: 0; background: var(--color-super-raised); } -.card-nest > .card:last-child { +.card_nest > .card:last-child { border-top-left-radius: 0; border-top-right-radius: 0; } +.card_nest_horizontal_wrapper { + box-shadow: var(--shadow-x-offset) var(--shadow-y-offset) var(--shadow-size) + var(--color-shadow); +} + +.card_nest_horizontal { + display: flex; + flex-direction: row; +} + +.card_nest_horizontal_header { + border-top-left-radius: var(--radius); + border-top-right-radius: var(--radius); + padding: var(--pad-2) var(--pad-4); +} + +.card_nest_horizontal .side { + padding: var(--pad-4); +} + +.card_nest_horizontal .side:nth-child(1) { + background: var(--color-lowered); + border-right: solid 1px var(--color-super-lowered); + border-bottom-left-radius: var(--radius); +} + +.card_nest_horizontal .side:nth-child(2) { + background: var(--color-raised); + border-bottom-right-radius: var(--radius); +} + +.card_nest_horizontal_header { + background: var(--color-lowered); + border-bottom: solid 1px var(--color-super-lowered); + display: flex; + align-items: center; + gap: var(--pad-2); +} + +@media screen and (max-width: 900px) { + .card_nest_horizontal { + flex-direction: column; + } + + .card_nest_horizontal .side:nth-child(1) { + border-right: none; + border-bottom: solid 1px var(--color-super-lowered); + border-radius: 0; + } +} + /* supporter card */ @property --border-angle { syntax: ""; diff --git a/crates/app/src/public/css/utility.css b/crates/app/src/public/css/utility.css index b95227b..4b0460f 100644 --- a/crates/app/src/public/css/utility.css +++ b/crates/app/src/public/css/utility.css @@ -3,35 +3,35 @@ display: flex; } -.flex-col { +.flex_col { flex-direction: column; } -.flex-rev-col { +.flex_rev_col { flex-direction: column-reverse; } -.flex-row { +.flex_row { flex-direction: row !important; } -.flex-rev-row { +.flex_rev_row { flex-direction: row-reverse; } -.flex-wrap { +.flex_wrap { flex-wrap: wrap; } -.justify-center { +.justify_center { justify-content: center; } -.justify-between { +.justify_between { justify-content: space-between; } -.justify-right { +.justify_right { justify-content: right; } @@ -39,23 +39,23 @@ justify-content: flex-start !important; } -.items-center { +.items_center { align-items: center; } -.gap-1 { +.gap_1 { gap: var(--pad-1); } -.gap-2 { +.gap_2 { gap: var(--pad-2); } -.gap-4 { +.gap_4 { gap: var(--pad-4); } -.gap-8 { +.gap_8 { gap: 1.25rem; } @@ -74,7 +74,7 @@ } @media screen and (max-width: 900px) { - .flex-collapse { + .flex_collapse { flex-direction: column !important; } @@ -86,16 +86,21 @@ display: flex !important; } - .sm\:w-full { + .sm\:w_full { width: 100% !important; min-width: 100% !important; } + .sm\:w_content { + width: max-content !important; + min-width: max-content !important; + } + .sm\:mt-2 { margin-top: 2rem !important; } - .sm\:items-start { + .sm\:items_start { align-items: flex-start !important; } @@ -112,7 +117,7 @@ box-shadow: 0 8px 16px var(--color-shadow); } -.round-sm { +.round_sm { border-radius: calc(var(--radius) / 2) !important; } @@ -120,19 +125,19 @@ border-radius: var(--radius) !important; } -.round-md { +.round_md { border-radius: calc(var(--radius) * 2) !important; } -.round-lg { +.round_lg { border-radius: calc(var(--radius) * 4) !important; } -.w-full { +.w_full { width: 100% !important; } -.w-content { +.w_content { width: max-content !important; } @@ -162,12 +167,12 @@ } [align="center"], -.text-center { +.text_center { text-align: center; } [align="right"], -.text-right { +.text_right { text-align: right; } diff --git a/crates/app/src/public/html/auth/base.lisp b/crates/app/src/public/html/auth/base.lisp index 3ed7b5a..4940089 100644 --- a/crates/app/src/public/html/auth/base.lisp +++ b/crates/app/src/public/html/auth/base.lisp @@ -1,13 +1,13 @@ (text "{% extends \"root.html\" %} {% block body %}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("style" "max-width: 48ch") (h2 - ("class" "w-full text-center") + ("class" "w_full text-center") ; block for title (text "{% block title %}{% endblock %}")) (div - ("class" "card w-full flex flex-col gap-4 justify-center align-center") + ("class" "card w_full flex flex_col gap_4 justify_center align-center") ; block for actual page content (text "{% block content %}{% endblock %}")) ; small footer block (for switching context) diff --git a/crates/app/src/public/html/auth/connection.lisp b/crates/app/src/public/html/auth/connection.lisp index 8c4fcef..0f95fe9 100644 --- a/crates/app/src/public/html/auth/connection.lisp +++ b/crates/app/src/public/html/auth/connection.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block title %}Connection{% endblock %} {% block content %}") (div - ("class" "w-full flex-col gap-2") + ("class" "w_full flex_col gap_2") ("id" "status") ; display loading text because we have to wait for the data to update on remote (b diff --git a/crates/app/src/public/html/auth/login.lisp b/crates/app/src/public/html/auth/login.lisp index e887b2b..9c1e2e4 100644 --- a/crates/app/src/public/html/auth/login.lisp +++ b/crates/app/src/public/html/auth/login.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block title %}Login{% endblock %} {% block content %}") (form - ("class" "w-full flex flex-col gap-4") + ("class" "w_full flex flex_col gap_4") ("onsubmit" "login(event)") (div ("id" "flow_1") ("style" "display: contents") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "username") (b @@ -22,7 +22,7 @@ ("name" "username") ("id" "username"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "username") (b @@ -37,7 +37,7 @@ ("id" "flow_2") ("style" "display: none") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "totp") (b @@ -113,7 +113,7 @@ (text "{% endblock %} {% block footer %}") (span - ("class" "small w-full text-center") + ("class" "small w_full text-center") (text "Or, ") (a ("href" "/auth/register") diff --git a/crates/app/src/public/html/auth/register.lisp b/crates/app/src/public/html/auth/register.lisp index 05b3d71..4beb2fb 100644 --- a/crates/app/src/public/html/auth/register.lisp +++ b/crates/app/src/public/html/auth/register.lisp @@ -8,10 +8,10 @@ ("defer" "")) (form - ("class" "w-full flex flex-col gap-4") + ("class" "w_full flex flex_col gap_4") ("onsubmit" "register(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "username") (b @@ -23,7 +23,7 @@ ("name" "username") ("id" "username"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "password") (b @@ -36,7 +36,7 @@ ("id" "password"))) (text "{% if config.security.enable_invite_codes -%}") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") ("oninput" "check_should_show_purchase(event)") (label ("for" "invite_code") @@ -65,14 +65,14 @@ (text "{%- endif %}") (hr) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"scroll-text\" }}") (b (text "Policies"))) (div - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (span (text "By continuing, you agree to the following policies:")) (ul @@ -85,12 +85,12 @@ ("href" "{{ config.policies.privacy }}") (text "Privacy policy")))) (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (input ("type" "checkbox") ("name" "policy_consent") ("id" "policy_consent") - ("class" "w-content") + ("class" "w_content") ("required" "")) (label ("for" "policy_consent") @@ -101,7 +101,7 @@ (hr) (text "{% if config.security.enable_invite_codes -%}") (div - ("class" "w-full flex gap-2 justify-between") + ("class" "w_full flex gap_2 justify_between") ("ui_ident" "purchase_account") (button @@ -115,7 +115,7 @@ (icon (text "circle-question-mark")))) (div - ("class" "hidden lowered card w-full no_p_margin") + ("class" "hidden lowered card w_full no_p_margin") ("ui_ident" "purchase_help") (b (text "What does \"Purchase account\" mean?")) (p (text "Your account will be created, but you cannot use it until you activate it for {{ config.stripe.price_texts.supporter }}.")) @@ -170,7 +170,7 @@ (text "{% endblock %} {% block footer %}") (span - ("class" "small w-full text-center") + ("class" "small w_full text-center") (text "Or, ") (a ("href" "/auth/login") diff --git a/crates/app/src/public/html/auth/seller_connection.lisp b/crates/app/src/public/html/auth/seller_connection.lisp index 43381da..c13b498 100644 --- a/crates/app/src/public/html/auth/seller_connection.lisp +++ b/crates/app/src/public/html/auth/seller_connection.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block title %}Connection{% endblock %} {% block content %}") (div - ("class" "w-full flex-col gap-2") + ("class" "w_full flex_col gap_2") ("id" "status") (b (text "Working..."))) diff --git a/crates/app/src/public/html/body.lisp b/crates/app/src/public/html/body.lisp index 0e7caf9..00dcfd8 100644 --- a/crates/app/src/public/html/body.lisp +++ b/crates/app/src/public/html/body.lisp @@ -16,29 +16,29 @@ (template ("id" "loading_skeleton") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("ui_ident" "loading_skel") (div - ("class" "card lowered green flex items-center gap-2") + ("class" "card lowered green flex items_center gap_2") (div ("class" "loader") (icon (text "loader-circle"))) (span (str (text "general:label.loading")))) (div - ("class" "card secondary flex gap-2") + ("class" "card secondary flex gap_2") (div ("class" "skel avatar")) (div - ("class" "flex flex-col gap-2 w-full") + ("class" "flex flex_col gap_2 w_full") (div ("class" "skel") ("style" "width: 25%; height: 25px;")) (div ("class" "skel") ("style" "width: 100%; height: 150px")))))) (template ("id" "carp_canvas") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("ui_ident" "canvas_loc")) (div - ("class" "flex justify-between gap-2") + ("class" "flex justify_between gap_2") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (input ("type" "color") ("style" "width: 5rem") @@ -53,7 +53,7 @@ ("ui_ident" "stroke_range"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("title" "Undo") ("ui_ident" "undo") @@ -138,7 +138,7 @@ (dialog ("id" "link_filter") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") ; warning stuff (p (text "Pressing continue will bring you to the following URL:")) @@ -147,7 +147,7 @@ (hr ("class" "margin")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (a ("class" "button primary") @@ -168,29 +168,29 @@ (dialog ("id" "littleweb") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (a - ("class" "button w-full lowered justify-start") + ("class" "button w_full lowered justify-start") ("href" "/net") (icon (text "globe")) (str (text "littleweb:label.browser"))) (a - ("class" "button w-full lowered justify-start") + ("class" "button w_full lowered justify-start") ("href" "/services") (icon (text "panel-top")) (str (text "littleweb:label.my_services"))) (a - ("class" "button w-full lowered justify-start") + ("class" "button w_full lowered justify-start") ("href" "/domains") (icon (text "panel-top")) (str (text "littleweb:label.my_domains"))) (hr ("class" "margin")) (div - ("class" "flex gap-2 justify-between") + ("class" "flex gap_2 justify_between") (div null?) (button ("class" "lowered red") @@ -202,18 +202,18 @@ (dialog ("id" "web_api_prompt") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (form - ("class" "flex gap-2 flex-col") + ("class" "flex gap_2 flex_col") ("onsubmit" "event.preventDefault()") (label ("for" "prompt") ("id" "web_api_prompt:msg")) (input ("id" "prompt") ("name" "prompt")) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div null?) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "primary bold circle") ("onclick", "globalThis.web_api_prompt_submit(document.getElementById('prompt').value); document.getElementById('prompt').value = ''") @@ -231,18 +231,18 @@ (dialog ("id" "web_api_prompt_long") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (form - ("class" "flex gap-2 flex-col") + ("class" "flex gap_2 flex_col") ("onsubmit" "event.preventDefault()") (label ("for" "prompt_long") ("id" "web_api_prompt_long:msg")) (input ("id" "prompt_long") ("name" "prompt_long")) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div null?) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "primary bold circle") ("onclick", "globalThis.web_api_prompt_long_submit(document.getElementById('prompt_long').value); document.getElementById('prompt_long').value = ''") @@ -260,17 +260,17 @@ (dialog ("id" "web_api_confirm") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (form - ("class" "flex gap-2 flex-col") + ("class" "flex gap_2 flex_col") ("onsubmit" "event.preventDefault()") (span ("id" "web_api_confirm:msg")) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div null?) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "primary bold circle") ("onclick", "globalThis.web_api_confirm_submit(true)") @@ -304,14 +304,14 @@ (dialog ("id" "tokens_dialog") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (form - ("class" "flex gap-2 flex-col") + ("class" "flex gap_2 flex_col") ("onsubmit" "event.preventDefault()") (div ("id" "tokens") ("style" "display: contents")) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (a ("href" "/auth/login") ("class" "button") diff --git a/crates/app/src/public/html/chats/app.lisp b/crates/app/src/public/html/chats/app.lisp index a5bf139..8d0b3d4 100644 --- a/crates/app/src/public/html/chats/app.lisp +++ b/crates/app/src/public/html/chats/app.lisp @@ -6,7 +6,7 @@ (nav ("class" "chats_nav") (button - ("class" "flex gap-2 items-center active") + ("class" "flex gap_2 items_center active") ("onclick" "toggle_sidebars(event)") (text "{{ icon \"panel-left\" }} {% if community -%}") (b @@ -19,7 +19,7 @@ (div ("class" "flex") (div - ("class" "sidebar flex flex-col items-center gap-2") + ("class" "sidebar flex flex_col items_center gap_2") ("id" "community_list") ("style" "width: var(--list-bar-width)") (a @@ -35,12 +35,12 @@ (text "{{ components::community_avatar(id=community.id, community=community, size=\"48px\") }}")) (text "{%- endif %} {% endfor %}")) (div - ("class" "sidebar flex flex-col gap-2 justify-between") + ("class" "sidebar flex flex_col gap_2 justify_between") ("id" "channels_list") (div - ("class" "flex flex-col gap-2 w-full") + ("class" "flex flex_col gap_2 w_full") (div - ("class" "title flex items-center justify-between channel_header") + ("class" "title flex items_center justify_between channel_header") (text "{% if community -%}") (b ("class" "name shorter") @@ -73,7 +73,7 @@ (text "{%- endif %}")) (text "{% if can_manage_channels -%}") (a - ("class" "button w-full justify-start lowered") + ("class" "button w_full justify-start lowered") ("href" "/community/{{ selected_community }}/manage#/channels") (text "{{ icon \"plus\" }}") (span @@ -86,14 +86,14 @@ (text "{{ components::user_plate(user=user, show_menu=true) }}")) (text "{% if channel -%}") (div - ("class" "w-full flex flex-col gap-2 padded_section") + ("class" "w_full flex flex_col gap_2 padded_section") ("id" "stream") ("style" "padding: var(--pad-4)") (turbo-frame ("id" "stream_body_frame") ("src" "/chats/{{ selected_community }}/{{ selected_channel }}/_stream?page={{ page }}&message={{ message }}")) (form - ("class" "card flex flex-row gap-2") + ("class" "card flex flex_row gap_2") ("onsubmit" "create_message_from_form(event)") (textarea ("type" "text") diff --git a/crates/app/src/public/html/chats/channels.lisp b/crates/app/src/public/html/chats/channels.lisp index f789d32..2e12b18 100644 --- a/crates/app/src/public/html/chats/channels.lisp +++ b/crates/app/src/public/html/chats/channels.lisp @@ -2,12 +2,12 @@ (turbo-frame ("id" "channels_list_frame") (div - ("class" "channels_list_half flex flex-col gap-2 {% if selected_community != 0 or selected_channel == 0%}no_members{%- endif -%}") + ("class" "channels_list_half flex flex_col gap_2 {% if selected_community != 0 or selected_channel == 0%}no_members{%- endif -%}") (text "{% for channel in channels %}") (div - ("class" "flex flex-row gap-1") + ("class" "flex flex_row gap_1") (a - ("class" "w-full justify-start button {% if selected_channel == channel.id -%}lowered{% else %}camo{%- endif %}") + ("class" "w_full justify-start button {% if selected_channel == channel.id -%}lowered{% else %}camo{%- endif %}") ("href" "/chats/{{ selected_community }}/{{ channel.id }}") ("data-turbo" "{{ selected_community == '0' }}") (text "{{ icon \"rss\" }}") @@ -71,6 +71,6 @@ (text "{% endfor %}")) (text "{% if selected_community == 0 and selected_channel -%}") (div - ("class" "members_list_half flex flex-col gap-2") + ("class" "members_list_half flex flex_col gap_2") (text "{% for member in members %} {{ components::user_plate(user=member, show_kick=user.id == channel.owner) }} {% endfor %}")) (text "{%- endif %}")) diff --git a/crates/app/src/public/html/chats/stream.lisp b/crates/app/src/public/html/chats/stream.lisp index 9b9affa..af891e5 100644 --- a/crates/app/src/public/html/chats/stream.lisp +++ b/crates/app/src/public/html/chats/stream.lisp @@ -2,11 +2,11 @@ (turbo-frame ("id" "stream_body_frame") (div - ("class" "gap-2") + ("class" "gap_2") ("id" "stream_body") (text "{% if page != 0 -%}") (div - ("class" "card flex gap-2 small lowered flex-wrap") + ("class" "card flex gap_2 small lowered flex_wrap") (b (text "{{ text \"chats:label.viewing_old_messages\" }}")) (a @@ -16,7 +16,7 @@ (text "{{ text \"chats:label.go_back\" }}"))) (text "{%- endif %} {% if message -%}") (div - ("class" "card flex gap-2 small lowered flex-wrap") + ("class" "card flex gap_2 small lowered flex_wrap") (b (text "{{ text \"chats:label.viewing_single_message\" }}")) (a @@ -27,7 +27,7 @@ (text "{{ text \"chats:label.go_back\" }}"))) (text "{{ components::message(user=message_owner, message=message, grouped=false) }} {% else %} {% for message in messages %} {{ components::message(user=message[1], message=message[0], grouped=message[2]) }} {% endfor %} {%- endif %} {% if messages|length > 0 -%}") (div - ("class" "flex gap-2 w-full justify-center") + ("class" "flex gap_2 w_full justify_center") (a ("class" "button") ("href" "/chats/{{ community }}/{{ channel.id }}/_stream?page={{ page + 1 }}") diff --git a/crates/app/src/public/html/communities/base.lisp b/crates/app/src/public/html/communities/base.lisp index 04bbd68..e5d3bf3 100644 --- a/crates/app/src/public/html/communities/base.lisp +++ b/crates/app/src/public/html/communities/base.lisp @@ -45,30 +45,30 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (article (div - ("class" "content_container flex flex-col gap-4") + ("class" "content_container flex flex_col gap_4") (text "{{ components::community_banner(id=community.id, community=community) }}") (div - ("class" "w-full flex gap-4 flex-collapse") + ("class" "w_full flex gap_4 flex_collapse") (div - ("class" "lhs flex flex-col gap-2 sm:w-full") + ("class" "lhs flex flex_col gap_2 sm:w_full") ("style" "width: 22rem; min-width: 22rem") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") ("id" "community_avatar_and_name") (text "{{ components::community_avatar(id=community.id, community=community, size=\"72px\") }}") (div - ("class" "flex flex-col") + ("class" "flex flex_col") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (h3 ("id" "title") - ("class" "title name shorter flex gap-2") + ("class" "title name shorter flex gap_2") (text "{% if community.context.display_name -%} {{ community.context.display_name }} {% else %} {{ community.title }} {%- endif %} {% if community.context.is_nsfw -%}") (span ("title" "NSFW community") - ("class" "flex items-center") + ("class" "flex items_center") ("style" "color: var(--color-primary)") (text "{{ icon \"square-asterisk\" }}")) (text "{%- endif %}"))) @@ -78,12 +78,12 @@ (text "{{ components::community_actions(community=community) }}")) (text "{{ components::community_info(community=community) }}")) (div - ("class" "rhs w-full") + ("class" "rhs w_full") (text "{% if can_read -%} {% block content %}{% endblock %} {% else %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"frown\" }}") (b (text "{{ text \"communities:label.not_allowed_to_read\" }}"))) diff --git a/crates/app/src/public/html/communities/create_post.lisp b/crates/app/src/public/html/communities/create_post.lisp index 0b7cf19..d3dd270 100644 --- a/crates/app/src/public/html/communities/create_post.lisp +++ b/crates/app/src/public/html/communities/create_post.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if drafts|length > 0 -%}") (div ("class" "pillmenu") @@ -23,12 +23,12 @@ (text "{{ text \"communities:label.drafts\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") ("data-tab" "create") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"pen\" }}") (span (text "{{ text \"communities:label.create_post\" }}"))) @@ -39,19 +39,19 @@ (span (text "{{ text \"dialog:action.cancel\" }}")))) (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (text "{% if draft -%}") (div - ("class" "card secondary w-full flex items-center justify-between gap-2 small") + ("class" "card secondary w_full flex items_center justify_between gap_2 small") (a - ("class" "flex items-center gap-2 flush") + ("class" "flex items_center gap_2 flush") ("href" "#/drafts") (text "{{ icon \"notepad-text-dashed\" }}") (span ("class" "date") (text "{{ draft.created }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (a ("href" "?") ("class" "button lowered small") @@ -66,9 +66,9 @@ (text "{{ text \"general:action.delete\" }}"))))) (text "{%- endif %} {% if quoting -%}") (div - ("class" "card secondary w-full flex items-center justify-between gap-2 small") + ("class" "card secondary w_full flex items_center justify_between gap_2 small") (a - ("class" "flex items-center gap-2 flush") + ("class" "flex items_center gap_2 flush") ("href" "/post/{{ quoting[1].id }}") (text "{{ icon \"quote\" }}") (span @@ -81,9 +81,9 @@ (text "{{ text \"dialog:action.cancel\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex flex-row gap-2 items-center") + ("class" "card small flex flex_row gap_2 items_center") (text "{{ components::avatar(username=user.id, size=\"32px\", selector_type=\"id\") }}") (select ("id" "community_to_post_to") @@ -106,11 +106,11 @@ (text "{{ stack.name }} (circle)")) (text "{% endfor %}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("id" "create_form") ("onsubmit" "create_post_from_form(event)") (div - ("class" "flex flex-col gap-1 hidden") + ("class" "flex flex_col gap_1 hidden") ("id" "title_field") (label ("for" "content") @@ -123,7 +123,7 @@ ("minlength" "2") ("maxlength" "128"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -137,12 +137,12 @@ (text "{% if draft -%}{{ draft.content }}{%- endif %}"))) (div ("id" "files_list") - ("class" "flex gap-2 flex-wrap")) + ("class" "flex gap_2 flex_wrap")) (div - ("class" "flex justify-between flex-collapse gap-2") + ("class" "flex justify_between flex_collapse gap_2") (text "{{ components::create_post_options() }}") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{% if not quoting -%} {% if draft -%}") (button ("class" "secondary small square") @@ -351,20 +351,20 @@ (text "{%- endif %}"))) (text "{% if drafts|length > 0 -%}") (div - ("class" "card-nest lowered hidden") + ("class" "card_nest lowered hidden") ("data-tab" "drafts") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"notepad-text-dashed\" }}") (span (text "{{ text \"communities:label.drafts\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{{ components::supporter_ad(body=\"Become a supporter to save infinite post drafts!\") }} {% for draft in drafts %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex flex-col gap-2") + ("class" "card small flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ draft.content|markdown|safe }}")) @@ -372,7 +372,7 @@ ("class" "fade date") (text "{{ draft.created }}"))) (div - ("class" "card flex gap-2 secondary") + ("class" "card flex gap_2 secondary") (a ("href" "?from_draft={{ draft.id }}") ("class" "button small") diff --git a/crates/app/src/public/html/communities/feed.lisp b/crates/app/src/public/html/communities/feed.lisp index 7e817e1..9853deb 100644 --- a/crates/app/src/public/html/communities/feed.lisp +++ b/crates/app/src/public/html/communities/feed.lisp @@ -1,27 +1,27 @@ (text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}") (div - ("class" "flex flex-col gap-4 w-full") + ("class" "flex flex_col gap_4 w_full") (text "{{ macros::community_nav(community=community, selected=\"posts\") }} {% if pinned|length != 0 %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"pin\" }}") (span (text "{{ text \"communities:label.pinned\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in pinned %} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[2], post=post[0], owner=post[1], secondary=true, show_community=false, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, can_manage_post=can_manage_posts, poll=post[4]) }} {%- endif %} {% endfor %}"))) (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"newspaper\" }}") (span (text "{{ text \"communities:label.posts\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in feed %} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[2], post=post[0], owner=post[1], secondary=true, show_community=false, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, can_manage_post=can_manage_posts, poll=post[4]) }} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=feed|length) }}")))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/communities/list.lisp b/crates/app/src/public/html/communities/list.lisp index cf1cb48..5c0abac 100644 --- a/crates/app/src/public/html/communities/list.lisp +++ b/crates/app/src/public/html/communities/list.lisp @@ -4,19 +4,19 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"communities\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if user -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"communities:label.create_new\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_community_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.name\" }}")) @@ -28,21 +28,31 @@ ("required" "") ("minlength" "2") ("maxlength" "32"))) + (label + ("for" "is_forum") + ("class" "flex items_center gap_2") + (input + ("type" "checkbox") + ("id" "is_forum") + ("name" "is_forum") + ("class" "w_content")) + (span + (text "Is forum"))) (button (text "{{ text \"communities:action.create\" }}")))) (text "{% if list|length >= 4 -%} {{ components::supporter_ad(body=\"Become a supporter to create up to 10 communities!\") }} {%- endif %} {%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"award\" }}") (span (text "{{ text \"communities:label.my_communities\" }}"))) (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (a ("href" "/forges") ("class" "button lowered small") @@ -58,17 +68,17 @@ ("class" "desktop") (text "{{ text \"communities:label.join_new\" }}"))))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %}"))) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"trending-up\" }}") (span (text "{{ text \"communities:label.popular_communities\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in popular_list %} {{ components::community_listing_card(community=item) }} {% endfor %}")))) (script @@ -83,6 +93,7 @@ }, body: JSON.stringify({ title: e.target.title.value, + forum: e.target.is_forum.checked, }), }) .then((res) => res.json()) diff --git a/crates/app/src/public/html/communities/members.lisp b/crates/app/src/public/html/communities/members.lisp index ad9b766..5720da9 100644 --- a/crates/app/src/public/html/communities/members.lisp +++ b/crates/app/src/public/html/communities/members.lisp @@ -1,20 +1,20 @@ (text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}") (div - ("class" "flex flex-col gap-4 w-full") + ("class" "flex flex_col gap_4 w_full") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"communities:tab.members\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% if page == 0 -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"crown\" }}") (span (text "Owner"))) @@ -22,9 +22,9 @@ (text "{%- endif %}") (text "{% for item in list %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2 justify-between") + ("class" "card small flex items_center gap_2 justify_between") (span (text "Since ") (span diff --git a/crates/app/src/public/html/communities/question.lisp b/crates/app/src/public/html/communities/question.lisp index 4468d25..707b5fd 100644 --- a/crates/app/src/public/html/communities/question.lisp +++ b/crates/app/src/public/html/communities/question.lisp @@ -4,23 +4,23 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("style" "display: contents") (text "{{ components::question(question=question, owner=owner) }}")) (text "{% if user and (user.id == question.receiver or question.is_global) and not has_answered %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"square-pen\" }}") (b (text "{{ text \"requests:label.answer\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "answer_question_from_form(event, '{{ question.id }}')") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -34,23 +34,23 @@ ("maxlength" "4096"))) (div ("id" "files_list") - ("class" "flex gap-2 flex-wrap")) + ("class" "flex gap_2 flex_wrap")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::emoji_picker(element_id=\"content\", render_dialog=true) }} {% if is_supporter -%} {{ components::file_picker(files_list_id=\"files_list\") }} {% endif %}") (button (text "{{ text \"requests:label.answer\" }}"))))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") ("data-tab" "replies") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"newspaper\" }}") (span (text "{{ text \"communities:label.replies\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in replies %} {{ components::post(post=post[0], owner=post[1], question=false, secondary=true, show_community=false) }} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}")))) (script diff --git a/crates/app/src/public/html/communities/questions.lisp b/crates/app/src/public/html/communities/questions.lisp index b3e37a6..2ff0eaf 100644 --- a/crates/app/src/public/html/communities/questions.lisp +++ b/crates/app/src/public/html/communities/questions.lisp @@ -1,6 +1,6 @@ (text "{% import \"components.html\" as components %} {% extends \"communities/base.html\" %} {% block content %}") (div - ("class" "flex flex-col gap-4 w-full") + ("class" "flex flex_col gap_4 w_full") (text "{{ macros::community_nav(community=community, selected=\"questions\") }}") (text "{% if user and can_post -%}") (div @@ -8,14 +8,14 @@ (text "{{ components::create_question_form(community=community.id, is_global=true) }}")) (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"newspaper\" }}") (span (text "{{ text \"communities:label.questions\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for question in feed %} {{ components::global_question(question=question, can_manage_questions=can_manage_questions, show_community=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=feed|length) }}")))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/communities/search.lisp b/crates/app/src/public/html/communities/search.lisp index a985e91..778325d 100644 --- a/crates/app/src/public/html/communities/search.lisp +++ b/crates/app/src/public/html/communities/search.lisp @@ -4,18 +4,18 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"communities\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"search\" }}") (span (text "{{ text \"general:link.search\" }}"))) (form - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "text") (text "{{ text \"communities:label.query\" }}")) @@ -30,14 +30,14 @@ (button (text "{{ text \"dialog:action.continue\" }}")))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"book-marked\" }}") (span (text "{{ text \"communities:label.search_results\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %} {{ components::pagination(page=page, items=list|length, key=\"&text=\", value=text) }}")))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/communities/settings.lisp b/crates/app/src/public/html/communities/settings.lisp index fa5ddcf..6c096e3 100644 --- a/crates/app/src/public/html/communities/settings.lisp +++ b/crates/app/src/public/html/communities/settings.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("class" "pillmenu") (a @@ -42,13 +42,13 @@ (text "{{ text \"communities:tab.emojis\" }}"))) (text "{%- endif %}")) (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") ("data-tab" "general") (div ("id" "manage_fields") - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "read_access") (div ("class" "card small") @@ -67,7 +67,7 @@ ("selected" "{% if community.read_access == 'Joined' -%}true{% else %}false{%- endif %}") (text "Joined"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "join_access") (div ("class" "card small") @@ -90,7 +90,7 @@ ("selected" "{% if community.join_access == 'Nobody' -%}true{% else %}false{%- endif %}") (text "Nobody"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "write_access") (div ("class" "card small") @@ -113,17 +113,17 @@ ("selected" "{% if community.write_access == 'Owner' -%}true{% else %}false{%- endif %}") (text "Owner only"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_title") (div ("class" "card small") (b (text "{{ text \"communities:label.change_title\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_title(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "new_title") (text "{{ text \"communities:label.new_title\" }}")) @@ -139,15 +139,15 @@ (span (text "{{ text \"general:action.save\" }}")))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "danger_zone") (div - ("class" "card small flex gap-1 items-center red") + ("class" "card small flex gap_1 items_center red") (text "{{ icon \"skull\" }}") (b (text "{{ text \"communities:label.danger_zone\" }}"))) (div - ("class" "card flex flex-wrap gap-2") + ("class" "card flex flex_wrap gap_2") (button ("class" "red lowered") ("onclick" "delete_community()") @@ -155,7 +155,7 @@ (span (text "{{ text \"communities:label.delete_community\" }}"))))) (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (button ("onclick" "save_context()") (text "{{ icon \"check\" }}") @@ -168,17 +168,17 @@ (span (text "{{ text \"general:action.back\" }}"))))) (div - ("class" "card lowered w-full hidden flex flex-col gap-2") + ("class" "card lowered w_full hidden flex flex_col gap_2") ("data-tab" "images") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_avatar") (div ("class" "card small") (b (text "{{ text \"settings:label.change_avatar\" }}"))) (form - ("class" "card flex gap-2 flex-row flex-wrap items-center") + ("class" "card flex gap_2 flex_row flex_wrap items_center") ("method" "post") ("enctype" "multipart/form-data") ("onsubmit" "upload_avatar(event)") @@ -187,50 +187,50 @@ ("name" "file") ("type" "file") ("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif") - ("class" "w-content")) + ("class" "w_content")) (button (text "{{ icon \"check\" }}")))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_banner") (div ("class" "card small") (b (text "{{ text \"settings:label.change_banner\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("method" "post") ("enctype" "multipart/form-data") ("onsubmit" "upload_banner(event)") (div - ("class" "flex gap-2 flex-row flex-wrap items-center") + ("class" "flex gap_2 flex_row flex_wrap items_center") (input ("id" "banner_file") ("name" "file") ("type" "file") ("accept" "image/png,image/jpeg,image/avif,image/webp") - ("class" "w-content")) + ("class" "w_content")) (button (text "{{ icon \"check\" }}"))) (span ("class" "fade") (text "Use an image of 1100x350px for the best results."))))) (div - ("class" "card lowered w-full hidden flex flex-col gap-2") + ("class" "card lowered w_full hidden flex flex_col gap_2") ("data-tab" "members") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"communities:label.select_member\" }}"))) (form - ("class" "card flex-col gap-2") + ("class" "card flex_col gap_2") ("onsubmit" "select_user_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "uid") (text "{{ text \"communities:label.user_id\" }}")) @@ -244,15 +244,15 @@ (button (text "{{ text \"communities:action.select\" }}"))))) (div - ("class" "card flex flex-col gap-2 w-full") + ("class" "card flex flex_col gap_2 w_full") ("id" "membership_info")) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"blocks\" }}") (span (text "{{ text \"mod_panel:label.permissions_level_builder\" }}"))) @@ -263,23 +263,23 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("id" "permission_builder")))) (text "{% if can_manage_channels -%}") (div - ("class" "card lowered w-full hidden flex flex-col gap-2") + ("class" "card lowered w_full hidden flex flex_col gap_2") ("data-tab" "channels") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"communities:action.create_channel\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_channel_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.name\" }}")) @@ -295,14 +295,14 @@ (text "{{ text \"communities:action.create\" }}")))) (text "{% for channel in channels %}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ channel.position }} ")) (text "{{ channel.title }}")) (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") (button ("class" "red lowered small") ("onclick" "delete_channel('{{ channel.id }}')") @@ -423,22 +423,22 @@ }")) (text "{%- endif %} {% if can_manage_emojis -%}") (div - ("class" "card lowered w-full hidden flex flex-col gap-2") + ("class" "card lowered w_full hidden flex flex_col gap_2") ("data-tab" "emojis") (text "{{ components::supporter_ad(body=\"Become a supporter to upload GIF animated emojis!\") }}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_banner") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"upload\" }}") (b (text "{{ text \"communities:label.upload\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "upload_emoji(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "name") (text "{{ text \"communities:label.name\" }}")) @@ -451,7 +451,7 @@ ("minlength" "2") ("maxlength" "32"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "file") (text "{{ text \"communities:label.file\" }}")) @@ -460,7 +460,7 @@ ("name" "file") ("type" "file") ("accept" "image/png,image/jpeg,image/avif,image/webp") - ("class" "w-full"))) + ("class" "w_full"))) (button (text "{{ text \"communities:action.create\" }}")) (span @@ -469,9 +469,9 @@ height).")))) (text "{% for emoji in emojis %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (img ("src" "/api/v1/communities/{{ community.id }}/emojis/{{ emoji.name }}") ("alt" "{{ emoji.name }}") @@ -480,7 +480,7 @@ (b (text "{{ emoji.name }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "lowered small") ("onclick" "rename_emoji('{{ emoji.id }}')") @@ -694,7 +694,7 @@ ); // ... - element.innerHTML = `
+ element.innerHTML = `
Open user profile ${res.payload.role !== 33 ? `` : ``} ${res.payload.role !== 65 ? `` : ``} diff --git a/crates/app/src/public/html/components.lisp b/crates/app/src/public/html/components.lisp index 9dccf9a..602347d 100644 --- a/crates/app/src/public/html/components.lisp +++ b/crates/app/src/public/html/components.lisp @@ -28,7 +28,7 @@ ("title" "{{ username }}'s banner") ("src" "/api/v1/auth/user/{{ username }}/banner") ("alt" "@{{ username }}'s banner") - ("class" "banner shadow w-full") + ("class" "banner shadow w_full") ("loading" "lazy") ("style" "border-radius: {{ border_radius }};")) @@ -48,13 +48,13 @@ (text "{%- endif %} {%- endmacro %} {% macro community_listing_card(community) -%}") (a - ("class" "card secondary w-full flex items-center gap-4") + ("class" "card secondary w_full flex items_center gap_4") ("href" "{% if community.is_forge -%}/forge/{{ community.title }}{% else %}/community/{{ community.title }}{%- endif %}") (text "{{ self::community_avatar(id=community.id, community=community, size=\"48px\") }}") (div - ("class" "flex flex-col") + ("class" "flex flex_col") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{% if community.is_forge -%}") (icon (text "anvil")) (text "{%- endif %}") @@ -99,7 +99,7 @@ (text "{%- endif %} {%- endmacro %} {% macro full_username(user) -%} {% if user and user.username -%}") (div - ("class" "flex items-center") + ("class" "flex items_center") (a ("href" "/@{{ user.username }}") ("class" "flush") @@ -114,57 +114,270 @@ (span ("title" "Verified") ("style" "color: var(--color-primary)") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"badge-check\" }}")) (text "{%- endif %} {% if user.permissions|has_supporter -%}") (span ("title" "Supporter") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"star\" }}")) (text "{%- endif %} {% if user.permissions|has_staff_badge -%}") (span ("title" "Staff") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"shield-user\" }}")) (text "{%- endif %}")) (text "{%- endif %} {%- endmacro %} {% macro repost(repost, post, owner, secondary=false, community=false, show_community=true, can_manage_post=false) -%}") (div ("style" "display: contents") (text "{{ self::post(post=post, owner=owner, secondary=secondary, community=community, show_community=show_community, can_manage_post=can_manage_post, repost=repost, expect_repost=true) }}")) -(text "{%- endmacro %} {% macro post(post, owner, question=false, secondary=false, community=false, show_community=true, can_manage_post=false, repost=false, expect_repost=false, poll=false, dont_show_title=false, is_repost=false) -%} {% if community and show_community and community.id != config.town_square or question %}") +(text "{%- endmacro %}") + +(text "{% macro post_info(post, community) -%}") +; info about the post: edited, date, etc. +(text "{% if post.context.edited != 0 -%}") (div - ("class" "card-nest post_outer:{{ post.id }} post_outer") + ("class" "flex") + (span + ("class" "fade date w_content") + (text "{{ post.context.edited }}")) + (sup + ("title" "Edited") + (text "*"))) +(text "{% else %}") +(span + ("class" "fade date w_content") + (text "{{ post.created }}")) +(text "{%- endif %} {% if post.context.is_nsfw -%}") +(span + ("title" "NSFW post") + ("class" "flex items_center") + ("style" "color: var(--color-primary)") + (text "{{ icon \"square-asterisk\" }}")) +(text "{%- endif %} {% if post.context.full_unlist -%}") +(span + ("title" "Unlisted") + ("class" "flex items_center") + ("style" "color: var(--color-primary)") + (icon (text "eye-off"))) +(text "{%- endif %} {% if post.stack -%}") +(a + ("title" "Posted to a stack you're in") + ("class" "flex items_center flush") + ("style" "color: var(--color-primary)") + ("href" "/stacks/{{ post.stack }}") + (text "{{ icon \"layers\" }}")) +(text "{%- endif %} {% if community and community.is_forge -%} {% if post.is_open -%}") +(span + ("title" "Open") + ("class" "flex items_center green") + (text "{{ icon \"circle-dot\" }}")) +(text "{% else %}") +(span + ("title" "Closed") + ("class" "flex items_center purple") + (text "{{ icon \"circle-check\" }}")) +(text "{%- endif %} {%- endif %}") +(text "{% if post.context.repost and post.context.repost.reposting %}") +(span + ("title" "Repost") + ("class" "flex items_center") + ("style" "color: var(--color-primary)") + (text "{{ icon \"repeat-2\" }}")) +(text "{%- endif %} {% if post.community == config.town_square -%}") +(span + ("title" "Posted to profile") + ("class" "flex items_center") + ("style" "color: var(--color-primary)") + (text "{{ icon \"user-round\" }}")) +(text "{%- endif %} {% if post.is_deleted -%}") +(span + ("title" "Deleted") + ("class" "flex items_center") + ("style" "color: var(--color-primary)") + (text "{{ icon \"trash-2\" }}")) +(text "{%- endif %}") +(text "{%- endmacro %}") + +(text "{% macro post_buttons_box(post, community, owner, can_manage_post) -%}") +(div + ("class" "flex justify_between items_center gap_2 w_full") + (text "{% if user -%}") + (div + ("class" "flex gap_1 reactions_box") + ("hook" "check_reactions") + ("hook-arg:id" "{{ post.id }}") + (text "{% if post.context.reactions_enabled -%} {% if post.content|length > 0 or post.uploads|length > 0 -%} {{ self::likes(id=post.id, asset_type=\"Post\", likes=post.likes, dislikes=post.dislikes, disable_dislikes=owner.settings.hide_dislikes) }} {%- endif %} {%- endif %} {% if post.context.repost and post.context.repost.reposting -%}") + (a + ("href" "/post/{{ post.context.repost.reposting }}") + ("class" "button small camo") + (text "{{ icon \"expand\" }}")) + (text "{%- endif %}")) + (text "{% else %}") + (div) + (text "{%- endif %}") + (div + ("class" "flex gap_1 buttons_box") + (text "{% if post.context.comments_enabled %}") + (a + ("href" "/post/{{ post.id }}") + ("class" "button camo small") + (text "{{ icon \"message-circle\" }}") + (span + (text "{{ post.comment_count }}"))) + (text "{% endif %}") + + (a + ("href" "/post/{{ post.id }}") + ("class" "button camo small") + ("target" "_blank") + (text "{{ icon \"external-link\" }}")) + (div + ("class" "dropdown") + (button + ("class" "camo small") + ("onclick" "trigger('atto::hooks::dropdown', [event])") + ("exclude" "dropdown") + ("title" "More options") + (text "{{ icon \"ellipsis\" }}")) + (div + ("class" "inner") + (text "{% if config.town_square and post.context.reposts_enabled %}") + (b + ("class" "title") + (text "{{ text \"general:label.share\" }}")) + (text "{% if user -%}") + (button + ("onclick" "trigger('me::repost', ['{{ post.id }}', '', '{{ config.town_square }}', true])") + (text "{{ icon \"repeat-2\" }}") + (span + (text "{{ text \"communities:label.repost\" }}"))) + (a + ("class" "button") + ("href" "/communities/intents/post?quote={{ post.id }}") + (text "{{ icon \"quote\" }}") + (span + (text "{{ text \"communities:label.quote_post\" }}"))) + (button + ("onclick" "trigger('me::intent_twitter', [trigger('me::gen_share', [{ q: '{{ post.context.answering }}', p: '{{ post.id }}' }, 280, true])])") + (icon (text "bird")) + (span + (text "Twitter"))) + (button + ("onclick" "trigger('me::intent_bluesky', [trigger('me::gen_share', [{ q: '{{ post.context.answering }}', p: '{{ post.id }}' }, 280, true])])") + (icon (text "cloud")) + (span + (text "BlueSky"))) + (text "{%- endif %}") + (text "{% if owner.settings.enable_questions -%}") + (a + ("class" "button") + ("href" "/@{{ owner.username }}?asking_about={{ post.id }}") + (icon (text "reply")) + (span + (str (text "communities:label.ask_about_this")))) + (text "{%- endif %}") + (text "{%- endif %}") + (text "{% if user and user.id != post.owner -%}") + (b + ("class" "title") + (text "{{ text \"general:label.safety\" }}")) + (button + ("class" "red") + ("onclick" "trigger('me::report', ['{{ post.id }}', 'post'])") + (text "{{ icon \"flag\" }}") + (span + (text "{{ text \"general:action.report\" }}"))) + (text "{%- endif %} {% if user and (user.id == post.owner) or is_helper or can_manage_post %}") + (b + ("class" "title") + (text "{{ text \"general:action.manage\" }}")) + ; forge stuff + (text "{% if user and community and community.is_forge -%} {% if post.is_open -%}") + (button + ("class" "green") + ("onclick" "trigger('me::update_open', ['{{ post.id }}', false])") + (text "{{ icon \"circle-check\" }}") + (span + (text "{{ text \"forge:action.close\" }}"))) + (text "{% else %}") + (button + ("class" "purple") + ("onclick" "trigger('me::update_open', ['{{ post.id }}', true])") + (text "{{ icon \"refresh-ccw-dot\" }}") + (span + (text "{{ text \"forge:action.reopen\" }}"))) + (text "{%- endif %} {%- endif %}") + ; owner stuff + (text "{% if user and user.id == post.owner -%}") + (a + ("href" "/post/{{ post.id }}#/edit") + (text "{{ icon \"pen\" }}") + (span + (text "{{ text \"communities:label.edit_content\" }}"))) + (text "{%- endif %}") + (a + ("href" "/post/{{ post.id }}#/configure") + (text "{{ icon \"settings\" }}") + (span + (text "{{ text \"communities:action.configure\" }}"))) + (text "{% if not post.is_deleted -%}") + (button + ("class" "red") + ("onclick" "trigger('me::remove_post', ['{{ post.id }}'])") + (text "{{ icon \"trash\" }}") + (span + (text "{{ text \"general:action.delete\" }}"))) + (text "{%- endif %} {% if is_helper and post.is_deleted -%}") + (button + ("class" "red") + ("onclick" "trigger('me::purge_post', ['{{ post.id }}'])") + (text "{{ icon \"trash-2\" }}") + (span + (text "{{ text \"general:action.purge\" }}"))) + (button + ("class" "green") + ("onclick" "trigger('me::restore_post', ['{{ post.id }}'])") + (text "{{ icon \"undo\" }}") + (span + (text "{{ text \"general:action.restore\" }}"))) + (text "{%- endif %} {%- endif %}"))))) +(text "{%- endmacro %}") + +(text "{% macro post(post, owner, question=false, secondary=false, community=false, show_community=true, can_manage_post=false, repost=false, expect_repost=false, poll=false, dont_show_title=false, is_repost=false) -%} {% if community and show_community and community.id != config.town_square or question %}") +(div + ("class" "card_nest post_outer:{{ post.id }} post_outer") ("is_repost" "{{ is_repost }}") (text "{% if question -%} {{ self::question(question=question[0], owner=question[1], asking_about=question[2], profile=owner) }} {% else %}") (div ("class" "card small") (a ("href" "/api/v1/communities/find/{{ post.community }}") - ("class" "flush flex gap-1 items-center") + ("class" "flush flex gap_1 items_center") (text "{{ self::community_avatar(id=post.community, community=community) }}") (b (text "{% if community.context.display_name -%} {{ community.context.display_name }} {% else %} {{ community.title }} {%- endif %}")) (text "{% if post.context.is_pinned or post.context.is_profile_pinned -%} {{ icon \"pin\" }} {%- endif %}"))) (text "{%- endif %} {%- endif %}") (div - ("class" "card flex flex-col post gap-2 post:{{ post.id }} {% if secondary -%}secondary{%- endif %}") + ("class" "card flex flex_col post gap_2 post:{{ post.id }} {% if secondary -%}secondary{%- endif %}") ("data-community" "{{ post.community }}") ("data-ownsup" "{{ owner.permissions|has_supporter }}") ("data-id" "{{ post.id }}") ("hook" "verify_emojis") (div - ("class" "w-full flex gap-2") + ("class" "w_full flex gap_2 {% if community.is_forum -%}flex_collapse{%- endif %}") (text "{% if not expect_repost -%}") (a ("href" "/@{{ owner.username }}") (text "{{ self::avatar(username=owner.username, size=\"52px\", selector_type=\"username\") }}")) (text "{%- endif %}") (div - ("class" "flex flex-col w-full gap-1 post_right {% if expect_repost -%}repost{%- endif %}") + ("class" "flex flex_col w_full gap_1 post_right {% if expect_repost -%}repost{%- endif %}") (div - ("class" "flex flex-wrap gap-2 items-center") + ("class" "flex flex_wrap gap_2 items_center") (text "{% if expect_repost -%}") (a ("href" "/@{{ owner.username }}") @@ -173,68 +386,7 @@ (span ("class" "name") (text "{{ self::full_username(user=owner) }}")) - (text "{% if post.context.edited != 0 -%}") - (div - ("class" "flex") - (span - ("class" "fade date") - (text "{{ post.context.edited }}")) - (sup - ("title" "Edited") - (text "*"))) - (text "{% else %}") - (span - ("class" "fade date") - (text "{{ post.created }}")) - (text "{%- endif %} {% if post.context.is_nsfw -%}") - (span - ("title" "NSFW post") - ("class" "flex items-center") - ("style" "color: var(--color-primary)") - (text "{{ icon \"square-asterisk\" }}")) - (text "{%- endif %} {% if post.context.full_unlist -%}") - (span - ("title" "Unlisted") - ("class" "flex items-center") - ("style" "color: var(--color-primary)") - (icon (text "eye-off"))) - (text "{%- endif %} {% if post.stack -%}") - (a - ("title" "Posted to a stack you're in") - ("class" "flex items-center flush") - ("style" "color: var(--color-primary)") - ("href" "/stacks/{{ post.stack }}") - (text "{{ icon \"layers\" }}")) - (text "{%- endif %} {% if community and community.is_forge -%} {% if post.is_open -%}") - (span - ("title" "Open") - ("class" "flex items-center green") - (text "{{ icon \"circle-dot\" }}")) - (text "{% else %}") - (span - ("title" "Closed") - ("class" "flex items-center purple") - (text "{{ icon \"circle-check\" }}")) - (text "{%- endif %} {%- endif %}") - (text "{% if post.context.repost and post.context.repost.reposting %}") - (span - ("title" "Repost") - ("class" "flex items-center") - ("style" "color: var(--color-primary)") - (text "{{ icon \"repeat-2\" }}")) - (text "{%- endif %} {% if post.community == config.town_square -%}") - (span - ("title" "Posted to profile") - ("class" "flex items-center") - ("style" "color: var(--color-primary)") - (text "{{ icon \"user-round\" }}")) - (text "{%- endif %} {% if post.is_deleted -%}") - (span - ("title" "Deleted") - ("class" "flex items-center") - ("style" "color: var(--color-primary)") - (text "{{ icon \"trash-2\" }}")) - (text "{%- endif %}")) + (text "{{ self::post_info(post=post, community=community) }}")) (text "{% if not dont_show_title and post.title and community and community.context.enable_titles -%}") ; post has a title AND whatever is rendering this component wants to see it (a @@ -263,20 +415,20 @@ (span ("id" "post_content:{{ post.id }}") (text "{{ post.content|markdown|safe }}")) (text "{% if expect_repost -%} {% if repost -%} {{ self::post(post=repost[1], owner=repost[0], secondary=not secondary, community=false, show_community=false, can_manage_post=false, is_repost=true) }} {% else %}") (div - ("class" "card lowered red flex items-center gap-2") + ("class" "card lowered red flex items_center gap_2") (text "{{ icon \"frown\" }}") (span (str (text "general:label.could_not_find_post")))) (text "{%- endif %} {%- endif %}")) (text "{{ self::post_media(upload_ids=post.uploads) }} {% else %}") (details - ("class" "card tiny lowered w-full") + ("class" "card tiny lowered w_full") (summary - ("class" "red w-full") + ("class" "red w_full") (b (text "{{ post.context.content_warning }}"))) (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (span ("class" "no_p_margin post_content") ("hook" "long") @@ -290,7 +442,7 @@ (span ("id" "post_content:{{ post.id }}") (text "{{ post.content|markdown|safe }}")) (text "{% if expect_repost -%} {% if repost -%} {{ self::post(post=repost[1], owner=repost[0], secondary=not secondary, community=false, show_community=false, can_manage_post=false) }} {% else %}") (div - ("class" "card lowered red flex items-center gap-2") + ("class" "card lowered red flex items_center gap_2") (text "{{ icon \"frown\" }}") (span (text "Could not find original post..."))) @@ -301,160 +453,20 @@ (text "{% if poll -%} {{ self::poll(post=post, poll=poll) }} {%- endif %}") (div - ("class" "flex flex-wrap gap-2 fade") + ("class" "flex flex_wrap gap_2 fade") (text "{% for tag in post.context.tags %}") (a ("href" "/@{{ owner.username }}?tag={{ tag }}") ("class" "flush fade") (text "#{{ tag }}")) (text "{% endfor %}")))) - (div - ("class" "flex justify-between items-center gap-2 w-full") - (text "{% if user -%}") - (div - ("class" "flex gap-1 reactions_box") - ("hook" "check_reactions") - ("hook-arg:id" "{{ post.id }}") - (text "{% if post.context.reactions_enabled -%} {% if post.content|length > 0 or post.uploads|length > 0 -%} {{ self::likes(id=post.id, asset_type=\"Post\", likes=post.likes, dislikes=post.dislikes, disable_dislikes=owner.settings.hide_dislikes) }} {%- endif %} {%- endif %} {% if post.context.repost and post.context.repost.reposting -%}") - (a - ("href" "/post/{{ post.context.repost.reposting }}") - ("class" "button small camo") - (text "{{ icon \"expand\" }}")) - (text "{%- endif %}")) - (text "{% else %}") - (div) - (text "{%- endif %}") - (div - ("class" "flex gap-1 buttons_box") - (text "{% if post.context.comments_enabled %}") - (a - ("href" "/post/{{ post.id }}") - ("class" "button camo small") - (text "{{ icon \"message-circle\" }}") - (span - (text "{{ post.comment_count }}"))) - (text "{% endif %}") - - (a - ("href" "/post/{{ post.id }}") - ("class" "button camo small") - ("target" "_blank") - (text "{{ icon \"external-link\" }}")) - (div - ("class" "dropdown") - (button - ("class" "camo small") - ("onclick" "trigger('atto::hooks::dropdown', [event])") - ("exclude" "dropdown") - ("title" "More options") - (text "{{ icon \"ellipsis\" }}")) - (div - ("class" "inner") - (text "{% if config.town_square and post.context.reposts_enabled %}") - (b - ("class" "title") - (text "{{ text \"general:label.share\" }}")) - (text "{% if user -%}") - (button - ("onclick" "trigger('me::repost', ['{{ post.id }}', '', '{{ config.town_square }}', true])") - (text "{{ icon \"repeat-2\" }}") - (span - (text "{{ text \"communities:label.repost\" }}"))) - (a - ("class" "button") - ("href" "/communities/intents/post?quote={{ post.id }}") - (text "{{ icon \"quote\" }}") - (span - (text "{{ text \"communities:label.quote_post\" }}"))) - (button - ("onclick" "trigger('me::intent_twitter', [trigger('me::gen_share', [{ q: '{{ post.context.answering }}', p: '{{ post.id }}' }, 280, true])])") - (icon (text "bird")) - (span - (text "Twitter"))) - (button - ("onclick" "trigger('me::intent_bluesky', [trigger('me::gen_share', [{ q: '{{ post.context.answering }}', p: '{{ post.id }}' }, 280, true])])") - (icon (text "cloud")) - (span - (text "BlueSky"))) - (text "{%- endif %}") - (text "{% if owner.settings.enable_questions -%}") - (a - ("class" "button") - ("href" "/@{{ owner.username }}?asking_about={{ post.id }}") - (icon (text "reply")) - (span - (str (text "communities:label.ask_about_this")))) - (text "{%- endif %}") - (text "{%- endif %}") - (text "{% if user and user.id != post.owner -%}") - (b - ("class" "title") - (text "{{ text \"general:label.safety\" }}")) - (button - ("class" "red") - ("onclick" "trigger('me::report', ['{{ post.id }}', 'post'])") - (text "{{ icon \"flag\" }}") - (span - (text "{{ text \"general:action.report\" }}"))) - (text "{%- endif %} {% if user and (user.id == post.owner) or is_helper or can_manage_post %}") - (b - ("class" "title") - (text "{{ text \"general:action.manage\" }}")) - ; forge stuff - (text "{% if user and community and community.is_forge -%} {% if post.is_open -%}") - (button - ("class" "green") - ("onclick" "trigger('me::update_open', ['{{ post.id }}', false])") - (text "{{ icon \"circle-check\" }}") - (span - (text "{{ text \"forge:action.close\" }}"))) - (text "{% else %}") - (button - ("class" "purple") - ("onclick" "trigger('me::update_open', ['{{ post.id }}', true])") - (text "{{ icon \"refresh-ccw-dot\" }}") - (span - (text "{{ text \"forge:action.reopen\" }}"))) - (text "{%- endif %} {%- endif %}") - ; owner stuff - (text "{% if user and user.id == post.owner -%}") - (a - ("href" "/post/{{ post.id }}#/edit") - (text "{{ icon \"pen\" }}") - (span - (text "{{ text \"communities:label.edit_content\" }}"))) - (text "{%- endif %}") - (a - ("href" "/post/{{ post.id }}#/configure") - (text "{{ icon \"settings\" }}") - (span - (text "{{ text \"communities:action.configure\" }}"))) - (text "{% if not post.is_deleted -%}") - (button - ("class" "red") - ("onclick" "trigger('me::remove_post', ['{{ post.id }}'])") - (text "{{ icon \"trash\" }}") - (span - (text "{{ text \"general:action.delete\" }}"))) - (text "{%- endif %} {% if is_helper and post.is_deleted -%}") - (button - ("class" "red") - ("onclick" "trigger('me::purge_post', ['{{ post.id }}'])") - (text "{{ icon \"trash-2\" }}") - (span - (text "{{ text \"general:action.purge\" }}"))) - (button - ("class" "green") - ("onclick" "trigger('me::restore_post', ['{{ post.id }}'])") - (text "{{ icon \"undo\" }}") - (span - (text "{{ text \"general:action.restore\" }}"))) - (text "{%- endif %} {%- endif %}")))))) + (text "{{ self::post_buttons_box(post=post, community=community, owner=owner, can_manage_post=can_manage_post) }}")) (text "{% if community and show_community and community.id != config.town_square or question %}")) +(text "{%- endif %} {%- endmacro %}") -(text "{%- endif %} {%- endmacro %} {% macro post_media(upload_ids) -%} {% if upload_ids|length > 0 -%}") +(text "{% macro post_media(upload_ids) -%} {% if upload_ids|length > 0 -%}") (div - ("class" "media_gallery gap-2") + ("class" "media_gallery gap_2") (text "{% for upload in upload_ids %}") (img ("src" "/api/v1/uploads/{{ upload }}") @@ -463,11 +475,11 @@ (text "{% endfor %}")) (text "{%- endif %} {%- endmacro %} {% macro notification(notification) -%}") (div - ("class" "w-full card-nest") + ("class" "w_full card_nest") (div - ("class" "card small notif_title flex gap-2 justify-between items-center") + ("class" "card small notif_title flex gap_2 justify_between items_center") (div - ("class" "flex items-center") + ("class" "flex items_center") (text "{% if not notification.read -%}") (svg ("width" "24") @@ -485,12 +497,12 @@ (span ("class" "date") (text "{{ notification.created }}"))) (div - ("class" "card notif_content flex flex-col gap-2") + ("class" "card notif_content flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ notification.content|markdown|safe }}")) (div - ("class" "card secondary w-full flex flex-wrap gap-2") + ("class" "card secondary w_full flex flex_wrap gap_2") (text "{% if notification.read -%}") (button ("class" "raised") @@ -512,27 +524,78 @@ (text "{{ icon \"trash\" }}") (span (text "{{ text \"general:action.delete\" }}")))))) +(text "{%- endmacro %}") -(text "{%- endmacro %} {% macro user_card(user) -%}") +(text "{% macro forum_post(post, owner, community, can_manage_post, poll=false) -%}") +(div + ("class" "card_nest_horizontal_wrapper post post:{{ post.id }}") + ("data-community" "{{ post.community }}") + ("data-ownsup" "{{ owner.permissions|has_supporter }}") + ("data-id" "{{ post.id }}") + ("hook" "verify_emojis") + (div + ("class" "card_nest_horizontal_header flex justify_between gap_2") + (div + ("class" "flex items_center gap_2") + (a + ("href" "/@{{ owner.username }}") + ("class" "mobile") + (text "{{ self::avatar(username=owner.username, size=\"24px\", selector_type=\"username\") }}")) + (span + ("class" "name") + (text "{{ self::full_username(user=owner) }}"))) + (text "{{ self::post_info(post=post, community=community) }}")) + (div + ("class" "card_nest_horizontal") + ; author info + (div + ("class" "side flex flex_col gap_2 desktop") + ("style" "min-width: 200px") + (a + ("href" "/@{{ owner.username }}") + (text "{{ self::avatar(username=owner.username, size=\"64px\", selector_type=\"username\") }}")) + (div + ("class" "fade flex flex_col") + ("style" "font-size: 12px") + (span (text "Joined: ") (span ("class" "date") (text "{{ owner.created }}"))) + (span (text "Posts: ") (text "{{ owner.post_count }}")) + (span (text "Followers: ") (text "{{ owner.follower_count }}")) + (span (text "Following: ") (text "{{ owner.following_count }}")))) + + ; post + (div + ("class" "flex flex_col gap_2 side w_full") + (div + ("class" "flex flex_col gap_2") + ("style" "flex: 1 0 auto") + (span ("class" "no_p_margin") (text "{{ post.content|markdown|safe }}")) + (text "{{ self::post_media(upload_ids=post.uploads) }}") + (text "{% if poll -%} {{ self::poll(post=post, poll=poll) }} {%- endif %}")) + + (hr ("class" "margin_top")) + (text "{{ self::post_buttons_box(post=post, community=community, owner=owner, can_manage_post=can_manage_post) }}")))) +(text "{%- endmacro %}") + +(text "{% macro user_card(user) -%}") (a - ("class" "card-nest w-full") + ("class" "card_nest w_full") ("href" "/@{{ user.username }}") (div ("class" "card small") ("style" "padding: 0") (text "{{ self::banner(username=user.username, border_radius=\"0px\") }}")) (div - ("class" "card secondary flex items-center gap-4") + ("class" "card secondary flex items_center gap_4") (text "{{ self::avatar(username=user.username, size=\"48px\") }}") (div - ("class" "flex items-center") + ("class" "flex items_center") (b (text "{{ self::username(user=user) }}")) (text "{{ self::online_indicator(user=user) }}")))) (text "{%- endmacro %} {% macro pagination(page=0, items=0, key=\"\", value=\"\") -%}") (div - ("class" "flex justify-between gap-2 w-full") + ("class" "flex justify_between gap_2 w_full") (text "{% if page > 0 -%}") (a ("class" "button lowered") @@ -663,7 +726,7 @@ (text "{%- endif %} {%- endmacro %} {% macro question(question, owner, asking_about=false, show_community=true, secondary=false, profile=false) -%}") (div - ("class" "card question {% if secondary -%}secondary{%- endif %} flex gap-2") + ("class" "card question {% if secondary -%}secondary{%- endif %} flex gap_2") (text "{% if owner.id == 0 or question.context.mask_owner -%}") (span (text "{% if profile and profile.settings.anonymous_avatar_url -%}") @@ -680,19 +743,19 @@ (text "{{ self::avatar(username=owner.username, selector_type=\"username\", size=\"52px\") }}")) (text "{%- endif %}") (div - ("class" "flex flex-col gap-1 w-full") + ("class" "flex flex_col gap_1 w_full") (div - ("class" "flex items-center gap-2 flex-wrap") + ("class" "flex items_center gap_2 flex_wrap") (span ("class" "name") (text "{% if owner.id == 0 or question.context.mask_owner -%} {% if profile and profile.settings.anonymous_username -%}") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (b (text "{{ profile.settings.anonymous_username }}")) (span ("title" "Anonymous user") - ("class" "flex items-center") + ("class" "flex items_center") ("style" "color: var(--color-primary)") (text "{{ icon \"drama\" }}"))) (text "{% else %}") @@ -704,19 +767,19 @@ (text "{{ question.created }}")) (span ("title" "Question") - ("class" "flex items-center") + ("class" "flex items_center") ("style" "color: var(--color-primary)") (text "{{ icon \"message-circle-heart\" }}")) (text "{% if question.context.is_nsfw -%}") (span ("title" "NSFW community") - ("class" "flex items-center") + ("class" "flex items_center") ("style" "color: var(--color-primary)") (text "{{ icon \"square-asterisk\" }}")) (text "{%- endif %} {% if question.community > 0 and show_community -%}") (a ("href" "/api/v1/communities/find/{{ question.community }}") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ self::community_avatar(id=question.community, size=\"24px\") }}")) (text "{%- endif %} {% if question.is_global -%}") (a @@ -739,9 +802,9 @@ ; this is only shown if the post author is anonymous AND we are a helper (text "{% if is_helper and (owner.id == 0 or question.context.mask_owner) -%}") (details - ("class" "card tiny lowered w-full") + ("class" "card tiny lowered w_full") (summary - ("class" "w-full flex gap-2 flex-wrap items-center") + ("class" "w_full flex gap_2 flex_wrap items_center") (icon (text "shield")) (span (text "View IP"))) @@ -749,9 +812,9 @@ (text "{% if question.context.mask_owner -%}") (details - ("class" "card tiny lowered w-full") + ("class" "card tiny lowered w_full") (summary - ("class" "w-full flex gap-2 flex-wrap items-center") + ("class" "w_full flex gap_2 flex_wrap items_center") (icon (text "venetian-mask")) (span (text "Unmask"))) @@ -759,23 +822,23 @@ (text "{%- endif %} {%- endif %}") ; ... (div - ("class" "flex gap-2 items-center justify-between")))) + ("class" "flex gap_2 items_center justify_between")))) (text "{%- endmacro %} {% macro create_question_form(receiver=\"0\", community=\"\", header=\"\", is_global=false, drawing_enabled=false, allow_anonymous=false) -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"message-circle-heart\" }}") (span ("class" "no_p_margin") (text "{% if header -%} {{ header|markdown|safe }} {% else %} {{ text \"requests:label.ask_question\" }} {%- endif %}"))) (form ("id" "create_question_form") - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_question_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") ; carp canvas (text "{% if drawing_enabled -%}") (div ("ui_ident" "carp_canvas_field")) @@ -794,9 +857,9 @@ ("minlength" "2") ("maxlength" "4096"))) (div - ("class" "flex w-full justify-between gap-2 flex-collapse") + ("class" "flex w_full justify_between gap_2 flex_collapse") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button (text "{{ text \"communities:action.create\" }}")) @@ -843,12 +906,12 @@ (text "{% if not is_global and allow_anonymous and user -%}") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (input ("type" "checkbox") ("name" "mask_owner") ("id" "mask_owner") - ("class" "w-content")) + ("class" "w_content")) (label ("for" "mask_owner") @@ -916,17 +979,17 @@ (text "{%- endmacro %} {% macro global_question(question, can_manage_questions=false, secondary=false, show_community=true) -%}") (div - ("class" "card-nest") + ("class" "card_nest") (text "{{ self::question(question=question[0], owner=question[1], asking_about=false, show_community=show_community) }}") (div - ("class" "small card flex justify-between flex-wrap gap-2{% if secondary -%} secondary{%- endif %}") + ("class" "small card flex justify_between flex_wrap gap_2{% if secondary -%} secondary{%- endif %}") (div - ("class" "flex gap-1 reactions_box") + ("class" "flex gap_1 reactions_box") ("hook" "check_reactions") ("hook-arg:id" "{{ question[0].id }}") (text "{{ self::likes(id=question[0].id, asset_type=\"Question\", likes=question[0].likes, dislikes=question[0].dislikes, secondary=false) }}")) (div - ("class" "flex gap-1 buttons_box") + ("class" "flex gap_1 buttons_box") (a ("href" "/question/{{ question[0].id }}") ("class" "button small") @@ -955,14 +1018,13 @@ (span (text "{{ text \"general:action.delete\" }}"))))) (text "{%- endif %} {%- endif %}")))) - (text "{%- endmacro %} {% macro spotify_playing(state, size=\"60px\") -%} {% if state and state.data %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center justify-between gap-2 small") + ("class" "card flex items_center justify_between gap_2 small") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (b (text "Listening on")) (text "{{ icon \"spotify\" }}")) @@ -970,7 +1032,7 @@ ("class" "fade date short") (text "{{ state.data.timestamp }}"))) (div - ("class" "card secondary flex gap-2") + ("class" "card secondary flex gap_2") (a ("href" "{{ state.external_urls.album }}") (img @@ -980,9 +1042,9 @@ ("class" "avatar") ("style" "--size: {{ size }}"))) (div - ("class" "flex flex-col") + ("class" "flex flex_col") (h5 - ("class" "w-full") + ("class" "w_full") (a ("href" "{{ state.external_urls.track }}") ("class" "flush") @@ -999,14 +1061,13 @@ ("hook-arg:progress" "{{ state.data.progress_ms }}") ("hook-arg:duration" "{{ state.data.duration_ms }}") ("hook-arg:display" "full"))))) - (text "{%- endif %} {%- endmacro %} {% macro last_fm_playing(state, size=\"60px\") -%} {% if state and state.data %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center justify-between gap-2 small") + ("class" "card flex items_center justify_between gap_2 small") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (b (text "Listening on")) (text "{{ icon \"last_fm\" }}")) @@ -1014,7 +1075,7 @@ ("class" "fade date short") (text "{{ state.data.timestamp }}"))) (div - ("class" "card secondary flex gap-2") + ("class" "card secondary flex gap_2") (a ("href" "{{ state.external_urls.track }}") (img @@ -1024,9 +1085,9 @@ ("class" "avatar") ("style" "--size: {{ size }}"))) (div - ("class" "flex flex-col") + ("class" "flex flex_col") (h5 - ("class" "w-full") + ("class" "w_full") (a ("href" "{{ state.external_urls.track }}") ("class" "flush") @@ -1050,7 +1111,6 @@ (div ("style" "display: contents;") (text "{% if key == \"Spotify\" -%} {{ icon \"spotify\" }} {% elif key == \"LastFm\" %} {{ icon \"last_fm\" }} {%- endif %}")) - (text "{%- endmacro %} {% macro connection_url(key, value) -%} {% if value[0].data.url %} {{ value[0].data.url }} {% elif key == \"LastFm\" %} https://last.fm/user/{{ value[0].data.name }} {%- endif %} {%- endmacro %} {% macro message_actions(can_manage_message, owner, message, owner) -%}") (div ("class" "dropdown") @@ -1088,7 +1148,7 @@ (text "{%- endmacro %} {% macro message(user, message, can_manage_message=false, grouped=false) -%}") (div - ("class" "card secondary message flex gap-2 {% if grouped -%}grouped{%- endif %}") + ("class" "card secondary message flex gap_2 {% if grouped -%}grouped{%- endif %}") ("id" "message-{{ message.id }}") (text "{% if not grouped -%}") (a @@ -1097,12 +1157,12 @@ (text "{{ self::avatar(username=user.username, size=\"42px\") }}")) (text "{%- endif %}") (div - ("class" "flex flex-col gap-1 w-full") + ("class" "flex flex_col gap_1 w_full") (text "{% if not grouped -%}") (div - ("class" "flex gap-2 w-full justify-between flex-wrap") + ("class" "flex gap_2 w_full justify_between flex_wrap") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ self::full_username(user=user) }} {% if message.edited != message.created %}") (span ("class" "date") @@ -1116,19 +1176,19 @@ (text "{{ message.created }}")) (text "{%- endif %}")) (div - ("class" "flex gap-2 hidden") + ("class" "flex gap_2 hidden") (text "{{ self::message_actions(owner=user, message=message, can_manage_message=can_manage_message) }}"))) (text "{%- endif %}") (div - ("class" "flex w-full gap-2 justify-between") + ("class" "flex w_full gap_2 justify_between") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ message.content|markdown|safe }}")) (div - ("class" "flex w-full gap-1 flex-wrap") + ("class" "flex w_full gap_1 flex_wrap") ("onclick" "window.EMOJI_PICKER_REACTION_MESSAGE_ID = '{{ message.id }}'") ("hook" "check_message_reactions") ("hook-arg:id" "{{ message.id }}") @@ -1233,7 +1293,7 @@ (text "{%- endmacro %} {% macro user_status(other_user) -%} {% if other_user.settings.status %}") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (span (text "{{ other_user.settings.status }}")) ; connection icon @@ -1241,7 +1301,7 @@ (text "{% elif other_user.connections.LastFm[0].data.name and other_user.connections.LastFm[1].data and other_user.connections.LastFm[1].data.track %}") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"music\" }}") (span (b @@ -1250,7 +1310,7 @@ (text "{% elif other_user.connections.Spotify[0].data.name and other_user.connections.Spotify[1].data and other_user.connections.Spotify[1].data.track %}") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"music\" }}") (span (b @@ -1259,12 +1319,12 @@ (text "{%- endif %} {%- endmacro %} {% macro user_plate(user, show_menu=false, show_kick=false, secondary=false) -%}") (div - ("class" "flex gap-2 items-center card tiny user_plate {% if secondary -%}secondary{%- endif %}") + ("class" "flex gap_2 items_center card tiny user_plate {% if secondary -%}secondary{%- endif %}") (a ("href" "/@{{ user.username }}") (text "{{ self::avatar(username=user.username, size=\"42px\", selector_type=\"username\") }}")) (div - ("class" "flex justify-center flex-col") + ("class" "flex justify_center flex_col") ("style" "{% if show_menu or show_kick -%}width: 60%{% else %}max-width: 150px{%- endif %}") (text "{{ self::full_username(user=user) }}") (div @@ -1313,7 +1373,7 @@ (dialog ("id" "emoji_dialog") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (script ("type" "module") ("src" "https://unpkg.com/emoji-picker-element@1.22.8/index.js")) @@ -1327,7 +1387,7 @@ --emoji-padding: var(--pad-1); box-shadow: 0 0 4px var(--color-shadow); ") - ("class" "w-full")) + ("class" "w_full")) (script (text "setTimeout(async () => { document.querySelector(\"emoji-picker\").customEmoji = @@ -1391,10 +1451,10 @@ document.getElementById(\"emoji_dialog\").close(); });")) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "bold red lowered") ("onclick" "document.getElementById('emoji_dialog').close()") @@ -1440,7 +1500,7 @@ let idx = 0; for (const file of input.files) { - element.innerHTML += `
${template.innerHTML.replace( + element.innerHTML += `
${template.innerHTML.replace( \".file_name\", file.name, )}
`; @@ -1475,11 +1535,11 @@ (text "{% macro supporter_ad(body=\"\") -%} {% if config.stripe and not is_supporter %}") (div - ("class" "card w-full supporter_ad") + ("class" "card w_full supporter_ad") ("ui_ident" "supporter_ad") ("onclick" "window.location.href = '/settings#/account/billing'") (div - ("class" "card w-full flex flex-wrap items-center gap-2 justify-between") + ("class" "card w_full flex flex_wrap items_center gap_2 justify_between") (text "{% if body -%}") (b (text "{{ body }}")) @@ -1497,7 +1557,7 @@ (text "{% macro create_post_options() -%}") (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (text "{{ components::emoji_picker(element_id=\"content\", render_dialog=true) }} {% if not quoting -%} {% if is_supporter -%} {{ components::file_picker(files_list_id=\"files_list\") }} {%- endif %} {%- endif %}") (button @@ -1516,7 +1576,7 @@ (text "{{ icon \"ellipsis\" }}")) (label - ("class" "flex items-center gap-1 button lowered") + ("class" "flex items_center gap_1 button lowered") ("title" "Mark as NSFW/hide from public timelines") ("for" "is_nsfw") (input @@ -1531,16 +1591,16 @@ (dialog ("id" "post_options_dialog") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (div ("id" "post_options") - ("class" "flex flex-col gap-2")) + ("class" "flex flex_col gap_2")) (hr) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "bold red lowered") ("onclick" "document.getElementById('post_options_dialog').close()") @@ -1681,15 +1741,15 @@ (dialog ("id" "poll_options_dialog") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (div ("id" "poll_options") - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (b (text "Attach poll")) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span (b (text "Option A ")) (span ("class" "fade red") (text "(required)"))) @@ -1697,7 +1757,7 @@ (input ("type" "text") ("placeholder" "option A") ("onchange" "window.POLL_OPTION_A = event.target.value"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span (b (text "Option B ")) (span ("class" "fade red") (text "(required)"))) @@ -1705,25 +1765,25 @@ (input ("type" "text") ("placeholder" "option B") ("onchange" "window.POLL_OPTION_B = event.target.value"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (b (text "Option C")) (input ("type" "text") ("placeholder" "option A") ("onchange" "window.POLL_OPTION_C = event.target.value"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (b (text "Option D")) (input ("type" "text") ("placeholder" "option D") ("onchange" "window.POLL_OPTION_D = event.target.value"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (b (text "Expires")) (input ("type" "date") ("onchange" "window.POLL_EXPIRES = event.target.valueAsDate.getTime() - new Date().getTime()")))) (hr) (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "bold red lowered") ("onclick" "document.getElementById('poll_options_dialog').close()") @@ -1733,7 +1793,7 @@ (text "{%- endmacro %}") (text "{% macro poll(post, poll) -%}") (div - ("class" "card lowered w-full flex flex-col gap-2") + ("class" "card lowered w_full flex flex_col gap_2") (text "{% set total = poll[0].votes_a + poll[0].votes_b + poll[0].votes_c + poll[0].votes_d %}") (text "{% if poll[1] or poll[2] or user and user.id == poll[0].owner -%}") @@ -1746,20 +1806,20 @@ ; option a (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (span (text "{{ poll[0].option_a }} ({{ poll[0].votes_a }} votes)")) (div ("class" "poll_bar") ("style" "width: {{ (poll[0].votes_a / total) * 100 }}%"))) ; option b (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (span (text "{{ poll[0].option_b }} ({{ poll[0].votes_b }} votes)")) (div ("class" "poll_bar") ("style" "width: {{ (poll[0].votes_b / total) * 100 }}%"))) ; option c (text "{% if poll[0].option_c -%}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (span (text "{{ poll[0].option_c }} ({{ poll[0].votes_c }} votes)")) (div ("class" "poll_bar") ("style" "width: {{ (poll[0].votes_c / total) * 100 }}%"))) (text "{%- endif %}") @@ -1767,7 +1827,7 @@ ; option d (text "{% if poll[0].option_d -%}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (span (text "{{ poll[0].option_d }} ({{ poll[0].votes_d }} votes)")) (div ("class" "poll_bar") ("style" "width: {{ (poll[0].votes_d / total) * 100 }}%"))) (text "{%- endif %}") @@ -1776,14 +1836,14 @@ ; option a (button - ("class" "hover_left_bar raised justify-start w-full poll_option") + ("class" "hover_left_bar raised justify-start w_full poll_option") ("onclick" "trigger('me::vote', ['{{ post.id }}', 'A'])") (icon (text "tally-1")) (text "{{ poll[0].option_a }}")) ; option b (button - ("class" "hover_left_bar raised justify-start w-full poll_option") + ("class" "hover_left_bar raised justify-start w_full poll_option") ("onclick" "trigger('me::vote', ['{{ post.id }}', 'B'])") (icon (text "tally-2")) (text "{{ poll[0].option_b }}")) @@ -1791,7 +1851,7 @@ ; option c (text "{% if poll[0].option_c -%}") (button - ("class" "hover_left_bar raised justify-start w-full poll_option") + ("class" "hover_left_bar raised justify-start w_full poll_option") ("onclick" "trigger('me::vote', ['{{ post.id }}', 'C'])") (icon (text "tally-3")) (text "{{ poll[0].option_c }}")) @@ -1800,7 +1860,7 @@ ; option d (text "{% if poll[0].option_d -%}") (button - ("class" "hover_left_bar raised justify-start w-full poll_option") + ("class" "hover_left_bar raised justify-start w_full poll_option") ("onclick" "trigger('me::vote', ['{{ post.id }}', 'D'])") (icon (text "tally-4")) (text "{{ poll[0].option_d }}")) @@ -1809,11 +1869,11 @@ ; show expiration date + totals (div - ("class" "flex w-full flex-wrap gap-2") + ("class" "flex w_full flex_wrap gap_2") (span ("class" "notification chip") (text "{{ total }} votes")) (text "{% if not poll[2] -%}") (span - ("class" "notification chip flex items-center gap-1") + ("class" "notification chip flex items_center gap_1") (text "Expires in") (span ("class" "poll_date") @@ -1824,15 +1884,15 @@ (text "{% macro community_info(community) %}") (div - ("class" "card-nest flex flex-col") + ("class" "card_nest flex flex_col") (div ("id" "bio") ("class" "card small no_p_margin") (text "{{ community.context.description|markdown|safe }}")) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "ID")) @@ -1842,7 +1902,7 @@ ("class" "camo small") (text "{{ icon \"copy\" }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Created ")) @@ -1850,7 +1910,7 @@ ("class" "date") (text "{{ community.created }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Members")) @@ -1858,7 +1918,7 @@ ("href" "/community/{{ community.title }}/members") (text "{{ community.member_count }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Posts")) @@ -1866,17 +1926,17 @@ ("href" "/community/{{ community.title }}") (text "{{ community.post_count }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Score")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (b (text "{{ community.likes - community.dislikes }}")) (text "{% if user -%}") (div - ("class" "flex gap-1 reactions_box") + ("class" "flex gap_1 reactions_box") ("hook" "check_reactions") ("hook-arg:id" "{{ community.id }}") (text "{{ components::likes(id=community.id, asset_type=\"Community\", likes=community.likes, dislikes=community.dislikes) }}")) @@ -1886,7 +1946,7 @@ (text "{% macro community_actions(community) -%}") (text "{% if user -%}") (div - ("class" "card flex gap-2 flex-wrap") + ("class" "card flex gap_2 flex_wrap") ("id" "join_or_leave") (text "{% if not is_owner -%} {% if not is_joined -%} {% if not is_pending %}") (button @@ -2027,9 +2087,9 @@ (text "{% macro ticket(post, owner) -%}") (div ("href" "/post/{{ post.id }}") - ("class" "card secondary w-fill flex flex-col gap-2") + ("class" "card secondary w-fill flex flex_col gap_2") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") ; user info (a ("href" "/@{{ owner.username }}") @@ -2049,17 +2109,17 @@ ; post title (a ("href" "/post/{{ post.id }}") - ("class" "flush flex gap-2 items-center") + ("class" "flush flex gap_2 items_center") ; open/closed icon (text "{% if community and community.is_forge -%} {% if post.is_open -%}") (span ("title" "Open") - ("class" "flex items-center green") + ("class" "flex items_center green") (text "{{ icon \"circle-dot\" }}")) (text "{% else %}") (span ("title" "Closed") - ("class" "flex items-center purple") + ("class" "flex items_center purple") (text "{{ icon \"circle-check\" }}")) (text "{%- endif %} {%- endif %}") @@ -2071,9 +2131,9 @@ (text "{% macro stack_listing(stack) -%}") (a ("href" "/stacks/{{ stack.id }}") - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"list\" }}") (b (text "{{ stack.name }}"))) @@ -2089,10 +2149,10 @@ (text "{% if selected_journal != journal.id -%}") ; not selected (div - ("class" "flex flex-row gap-1") + ("class" "flex flex_row gap_1") (a ("href" "/journals/{{ journal.id }}/0?view={{ view_mode }}") - ("class" "button justify-start lowered w-full") + ("class" "button justify-start lowered w_full") (icon (text "notebook")) (text "{{ journal.title }}")) @@ -2116,9 +2176,9 @@ (text "{% else %}") ; selected (div - ("class" "flex flex-row gap-1") + ("class" "flex flex_row gap_1") (button - ("class" "justify-start lowered w-full") + ("class" "justify-start lowered w_full") (icon (text "arrow-down")) (text "{{ journal.title }}")) @@ -2163,12 +2223,12 @@ (text "{%- endif %}") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("style" "margin-left: 10px; padding-left: 5px; border-left: solid 2px var(--color-super-lowered); width: calc(100% - 10px)") ; create note (text "{% if user and user.id == journal.owner -%}") (button - ("class" "lowered justify-start w-full") + ("class" "lowered justify-start w_full") ("onclick" "create_note()") (icon (text "plus")) (str (text "journals:action.create_note"))) @@ -2182,12 +2242,12 @@ (text "{% macro notes_list_dir_listing(dir, dirs, notes, owner, journal, view_mode=false) -%}") (details (summary - ("class" "button w-full justify-start raised w-full") + ("class" "button w_full justify-start raised w_full") (icon (text "folder")) (text "{{ dir[2] }}")) (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("style" "margin-left: 10px; padding-left: 5px; border-left: solid 2px var(--color-super-lowered); width: calc(100% - 10px)") (text "{{ self::notes_list_dir_listing_inner(dir=dir, dirs=dirs, notes=notes, owner=owner, journal=journal, view_mode=view_mode) }}"))) (text "{%- endmacro %}") @@ -2206,11 +2266,11 @@ (text "{% macro notes_list_note_listing(owner, journal, note) -%}") (div - ("class" "flex flex-row gap-1") + ("class" "flex flex_row gap_1") ("ui_ident" "{% if selected_note == note.id -%} active_note {%- else -%} inactive_note {%- endif %}") (a ("href" "{% if owner -%} /@{{ owner.username }}/{{ journal.title }}/{{ note.title }} {%- else -%} /journals/{{ journal.id }}/{{ note.id }} {%- endif %}") - ("class" "button justify-start w-full {% if selected_note == note.id -%} lowered {%- else -%} raised {%- endif %}") + ("class" "button justify-start w_full {% if selected_note == note.id -%} lowered {%- else -%} raised {%- endif %}") (icon (text "file-text")) (text "{{ note.title }}")) @@ -2267,7 +2327,7 @@ (text "{% macro note_tags(note) -%} {% if note and note.tags|length > 0 -%}") (div - ("class" "flex gap-1 flex-wrap") + ("class" "flex gap_1 flex_wrap") (text "{% for tag in note.tags %}") (a ("href" "{% if view_mode -%} /@{{ owner.username }} {%- else -%} /@{{ user.username }} {%- endif -%} /{{ journal.title }}?tag={{ tag }}") @@ -2289,9 +2349,9 @@ (text "{% macro directories_editor_listing(dir, dirs) -%}") (div - ("class" "flex flex-row gap-1") + ("class" "flex flex_row gap_1") (button - ("class" "justify-start lowered w-full") + ("class" "justify-start lowered w_full") (icon (text "folder-open")) (text "{{ dir[2] }}")) @@ -2317,7 +2377,7 @@ (str (text "general:action.delete")))))) (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("style" "margin-left: 10px; padding-left: 5px; border-left: solid 2px var(--color-super-lowered); width: calc(100% - 10px)") ; subdir listings (text "{% for subdir in dirs %} {% if subdir[1] == dir[0] -%}") @@ -2334,12 +2394,12 @@ (text "{% macro note_mover_dirs_listing(dir, dirs) -%}") (button ("onclick" "move_note_dir(window.NOTE_MOVER_NOTE_ID, '{{ dir[0] }}'); document.getElementById('note_mover_dialog').close()") - ("class" "justify-start lowered w-full") + ("class" "justify-start lowered w_full") (icon (text "folder-open")) (text "{{ dir[2] }}")) (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("style" "margin-left: 10px; padding-left: 5px; border-left: solid 2px var(--color-super-lowered); width: calc(100% - 10px)") ; subdir listings (text "{% for subdir in dirs %} {% if subdir[1] == dir[0] -%}") @@ -2450,11 +2510,11 @@ (text "{% macro developer_pass_ad(body) -%} {% if config.stripe and not has_developer_pass %}") (div - ("class" "card w-full supporter_ad") + ("class" "card w_full supporter_ad") ("ui_ident" "supporter_ad") ("onclick" "window.location.href = '/settings#/account/billing'") (div - ("class" "card w-full flex flex-wrap items-center gap-2 justify-between") + ("class" "card w_full flex flex_wrap items_center gap_2 justify_between") (b (text "{{ body }}")) (a @@ -2467,20 +2527,20 @@ (text "{% macro letter_listing(letter, owner) -%}") (div - ("class" "card lowered flex gap-2 flex-row") + ("class" "card lowered flex gap_2 flex_row") (a ("href" "/@{{ owner.username }}") (text "{{ self::avatar(username=owner.username, size=\"32px\") }}")) (div - ("class" "flex flex-col") + ("class" "flex flex_col") (text "{{ self::full_username(user=owner) }}") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") ; read status (text "{% if user.id in letter.read_by -%}") - (div ("class" "flex items-center green") (icon (text "mail-check"))) + (div ("class" "flex items_center green") (icon (text "mail-check"))) (text "{% else %}") - (div ("class" "flex items-center") (icon (text "mail"))) + (div ("class" "flex items_center") (icon (text "mail"))) (text "{%- endif %}") ; subject @@ -2489,15 +2549,15 @@ (text "{% macro letter(letter, owner, show_subject=true) -%}") (div - ("class" "card-nest") + ("class" "card_nest") (text "{% if show_subject -%}") (div - ("class" "card flex gap-2 flex-row") + ("class" "card flex gap_2 flex_row") (a ("href" "/@{{ owner.username }}") (text "{{ self::avatar(username=owner.username, size=\"32px\") }}")) (div - ("class" "flex flex-col") + ("class" "flex flex_col") (text "{{ self::full_username(user=owner) }}") (span (b (text "{{ letter.subject }}")) @@ -2507,7 +2567,7 @@ (text " (up)")) (text "{%- endif %}")) (div - ("class" "flex flex-wrap gap-2") + ("class" "flex flex_wrap gap_2") (text "{% for receiver in letter.receivers %}") (a ("href" "/api/v1/auth/user/find/{{ receiver }}") @@ -2515,7 +2575,7 @@ (text "{%- endfor %}")))) (text "{% else %}") (div - ("class" "card small flex gap-2 flex-row") + ("class" "card small flex gap_2 flex_row") (a ("href" "/@{{ owner.username }}") (text "{{ self::avatar(username=owner.username, size=\"24px\") }}")) @@ -2523,11 +2583,11 @@ (text "{%- endif %}") (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{{ letter.content|markdown|safe }}") (hr) (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (a ("class" "button small lowered") ("href" "/mail/compose?receivers={{ owner.username }}&subject=Re%3A%20{{ letter.subject }}&replying_to={{ letter.id }}") diff --git a/crates/app/src/public/html/developer/app.lisp b/crates/app/src/public/html/developer/app.lisp index d19fb10..86c43e4 100644 --- a/crates/app/src/public/html/developer/app.lisp +++ b/crates/app/src/public/html/developer/app.lisp @@ -4,32 +4,32 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") (div ("id" "manage_fields") - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "database")) (b (str (text "developer:label.data_usage")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (p ("class" "fade") (text "App data keys are not included in this metric, only stored values count towards your limit.")) (text "{% set percentage = (app.data_used / data_limit) * 100 %}") (div ("class" "progress_bar") (div ("class" "poll_bar") ("style" "width: {{ percentage }}%"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span (text "{{ app.data_used|filesizeformat }}")) (span (text "{{ data_limit|filesizeformat }}"))))) (text "{% if is_helper -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "infinity")) (b (str (text "developer:label.change_quota_status")))) (div @@ -45,9 +45,9 @@ ("selected" "{% if app.quota_status == 'Unlimited' -%}true{% else %}false{%- endif %}") (text "Unlimited"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "database-zap")) (b (str (text "developer:label.change_storage_capacity")))) (div @@ -68,16 +68,16 @@ (text "Tier 3 (100 MB)"))))) (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "pencil")) (b (str (text "developer:label.change_title")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_title(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.new_title\" }}")) @@ -93,16 +93,16 @@ (span (text "{{ text \"general:action.save\" }}"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "house")) (b (str (text "developer:label.change_homepage")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_homepage(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "homepage") (text "{{ text \"developer:label.homepage\" }}")) @@ -118,16 +118,16 @@ (span (text "{{ text \"general:action.save\" }}"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "goal")) (b (str (text "developer:label.change_redirect")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_redirect(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "redirect") (text "{{ text \"developer:label.redirect\" }}")) @@ -143,16 +143,16 @@ (span (text "{{ text \"general:action.save\" }}"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "telescope")) (b (str (text "developer:label.manage_scopes")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_scopes(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "scopes") (text "{{ text \"developer:label.scopes\" }}")) @@ -165,12 +165,12 @@ ("minlength" "2") ("value" "{% for scope in app.scopes -%} {{ scope }} {% endfor %}"))) - (pre ("class" "hidden red w-full") (code ("id" "scope_error_message") ("style" "white-space: pre-wrap"))) + (pre ("class" "hidden red w_full") (code ("id" "scope_error_message") ("style" "white-space: pre-wrap"))) (details (summary ("class" "button lowered small") (icon (text "circle-question-mark")) (text "Help")) (div - ("class" "card flex flex-col gap-1") + ("class" "card flex flex_col gap_1") (span ("class" "fade") (text "Scopes should be separated by a single space.")) (a ("class" "button") @@ -183,20 +183,20 @@ (span (text "{{ text \"general:action.save\" }}"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "rotate-ccw-key")) (b (str (text "developer:label.secret_key")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (p ("class" "fade") (text "Your app's API key can only be seen once, so don't lose it. Rolling the key will invalidate the old one.")) (pre (code ("id" "new_key"))) (button ("onclick" "roll_key()") (str (text "developer:label.roll_key")))))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (ul (li (b (text "Homepage: ")) (text "{{ app.homepage }}")) (li (b (text "Redirect URL: ")) (text "{{ app.redirect }}")) @@ -211,21 +211,21 @@ ("target" "_blank") (icon (text "external-link")) (text "Docs"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-1 items-center red") + ("class" "card small flex gap_1 items_center red") (text "{{ icon \"skull\" }}") (b (text "{{ text \"communities:label.danger_zone\" }}"))) (div - ("class" "card flex flex-wrap gap-2") + ("class" "card flex flex_wrap gap_2") (button ("class" "red lowered") ("onclick" "delete_app()") (text "{{ icon \"trash\" }}") (span (str (text "developer:action.delete")))))) (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (a ("href" "/developer") ("class" "button secondary") diff --git a/crates/app/src/public/html/developer/home.lisp b/crates/app/src/public/html/developer/home.lisp index 160181b..a5f31e9 100644 --- a/crates/app/src/public/html/developer/home.lisp +++ b/crates/app/src/public/html/developer/home.lisp @@ -4,21 +4,21 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; create new (text "{{ components::supporter_ad(body=\"Become a supporter to create multiple apps!\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"developer:label.create_new\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_app_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.name\" }}")) @@ -31,7 +31,7 @@ ("minlength" "2") ("maxlength" "32"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"developer:label.homepage\" }}")) @@ -43,7 +43,7 @@ ("required" "") ("minlength" "2"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"developer:label.redirect\" }} (optional)")) @@ -58,20 +58,20 @@ ; app listing (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "bot")) (str (text "developer:label.my_apps"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %}") (a ("href" "/developer/app/{{ item.id }}") - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"code\" }}") (b (text "{{ item.title }}"))) @@ -85,9 +85,9 @@ ; useful links (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "circle-question-mark")) (str (text "developer:label.guides_and_help"))) diff --git a/crates/app/src/public/html/developer/link.lisp b/crates/app/src/public/html/developer/link.lisp index f50ad18..90731c1 100644 --- a/crates/app/src/public/html/developer/link.lisp +++ b/crates/app/src/public/html/developer/link.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (h4 (text "Would you like to allow \"{{ app.title }}\" to access your account?")) (p (text "This app is requesting the following permissions on your account:")) @@ -28,7 +28,7 @@ (p (text "You can revoke this app's permissions at any time through your connection settings."))) (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") (button ("onclick" "authorize()") (str (text "developer:action.authorize"))) diff --git a/crates/app/src/public/html/forge/base.lisp b/crates/app/src/public/html/forge/base.lisp index 646babd..044bf60 100644 --- a/crates/app/src/public/html/forge/base.lisp +++ b/crates/app/src/public/html/forge/base.lisp @@ -47,24 +47,24 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main (div - ("class" "content_container flex flex-col gap-4") + ("class" "content_container flex flex_col gap_4") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") ("id" "community_avatar_and_name") (text "{{ components::community_avatar(id=community.id, community=community, size=\"72px\") }}") (div - ("class" "flex flex-col") + ("class" "flex flex_col") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (h3 ("id" "title") - ("class" "title name shorter flex gap-2") + ("class" "title name shorter flex gap_2") (text "{% if community.context.display_name -%} {{ community.context.display_name }} {% else %} {{ community.title }} {%- endif %} {% if community.context.is_nsfw -%}") (span ("title" "NSFW community") - ("class" "flex items-center") + ("class" "flex items_center") ("style" "color: var(--color-primary)") (text "{{ icon \"square-asterisk\" }}")) (text "{%- endif %}"))) diff --git a/crates/app/src/public/html/forge/home.lisp b/crates/app/src/public/html/forge/home.lisp index 3208a63..a25cf5d 100644 --- a/crates/app/src/public/html/forge/home.lisp +++ b/crates/app/src/public/html/forge/home.lisp @@ -4,20 +4,20 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; create new (text "{% if user.secondary_permissions|has_dev_pass -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"forge:label.create_new\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_community_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.name\" }}")) @@ -37,14 +37,14 @@ ; forge listing (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "anvil")) (str (text "forge:label.my_forges"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %} {{ components::community_listing_card(community=item) }} {% endfor %}")))) (script diff --git a/crates/app/src/public/html/forge/info.lisp b/crates/app/src/public/html/forge/info.lisp index 4019546..e58dbca 100644 --- a/crates/app/src/public/html/forge/info.lisp +++ b/crates/app/src/public/html/forge/info.lisp @@ -1,6 +1,6 @@ (text "{% extends \"forge/base.html\" %} {% block content %}") (div - ("class" "flex flex-col gap-4 w-full") + ("class" "flex flex_col gap_4 w_full") (text "{{ macros::forge_nav(community=community, selected=\"info\") }}") (text "{{ components::community_info(community=community) }}")) (text "{% endblock %}") diff --git a/crates/app/src/public/html/forge/tickets.lisp b/crates/app/src/public/html/forge/tickets.lisp index 7c9a7e8..2c949da 100644 --- a/crates/app/src/public/html/forge/tickets.lisp +++ b/crates/app/src/public/html/forge/tickets.lisp @@ -1,29 +1,29 @@ (text "{% extends \"forge/base.html\" %} {% block content %}") (div - ("class" "flex flex-col gap-4 w-full") + ("class" "flex flex_col gap_4 w_full") (text "{{ macros::forge_nav(community=community, selected=\"tickets\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "pin")) (str (text "communities:label.pinned"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for post in pinned -%}") (text "{{ components::ticket(post=post[0], owner=post[1]) }}") (text "{%- endfor %}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "circle-dot")) (str (text "forge:tab.tickets"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for post in feed -%}") (text "{{ components::ticket(post=post[0], owner=post[1]) }}") (text "{%- endfor %}") diff --git a/crates/app/src/public/html/journals/app.lisp b/crates/app/src/public/html/journals/app.lisp index 71fbd4d..246e930 100644 --- a/crates/app/src/public/html/journals/app.lisp +++ b/crates/app/src/public/html/journals/app.lisp @@ -99,7 +99,7 @@ (nav ("class" "chats_nav") (button - ("class" "flex gap-2 items-center active") + ("class" "flex gap_2 items_center active") ("onclick" "toggle_sidebars(event)") (text "{{ icon \"panel-left\" }} {% if community -%}") (b @@ -116,12 +116,12 @@ (text "{% if not view_mode -%}") ; this isn't shown if we're in view mode (div - ("class" "sidebar flex flex-col gap-2 justify-between") + ("class" "sidebar flex flex_col gap_2 justify_between") ("id" "notes_list") (div - ("class" "flex flex-col gap-2 w-full") + ("class" "flex flex_col gap_2 w_full") (button - ("class" "lowered justify-start w-full") + ("class" "lowered justify-start w_full") ("onclick" "create_journal()") (icon (text "plus")) (str (text "journals:action.create_journal"))) @@ -132,21 +132,21 @@ (text "{%- endif %}") ; editor (div - ("class" "w-full padded_section") + ("class" "w_full padded_section") ("id" "editor") ("style" "padding: var(--pad-4)") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; the journal/note header is always shown (text "{% if journal and not global_mode -%}") (div - ("class" "mobile_nav w-full flex items-center justify-between gap-2") + ("class" "mobile_nav w_full flex items_center justify_between gap_2") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (a - ("class" "flex items-center") + ("class" "flex items_center") ("href" "/@{{ owner.username }}") (text "{{ components::avatar(username=owner.username, selector_type=\"username\", size=\"18px\") }}")) @@ -182,7 +182,7 @@ (text "{% if selected_journal == 0 -%}") ; no journal selected (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (h3 (str (text "journals:label.welcome"))) (span (str (text "journals:label.select_a_journal"))) (span ("class" "mobile") (str (text "journals:label.mobile_click_my_journals"))) @@ -195,7 +195,7 @@ (text "{% if not view_mode -%}") ; we're the journal owner and we're not in view mode (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (h3 (text "{{ journal.title }}")) (span (str (text "journals:label.select_a_note"))) (button @@ -205,16 +205,16 @@ ; we'll also let users edit the journal's settings here i guess (details - ("class" "w-full") + ("class" "w_full") (summary - ("class" "button lowered w-full justify-start") + ("class" "button lowered w_full justify-start") (icon (text "settings")) (str (text "general:action.manage"))) (div - ("class" "card flex flex-col gap-2 lowered") + ("class" "card flex flex_col gap_2 lowered") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b @@ -233,7 +233,7 @@ (text "Public"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (label @@ -241,10 +241,10 @@ (b (str (text "communities:label.title"))))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_journal_title(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (input ("type" "text") ("name" "title") @@ -259,23 +259,23 @@ ; users should also be able to manage the journal's sub directories here (details - ("class" "w-full") + ("class" "w_full") (summary - ("class" "button lowered w-full justify-start") + ("class" "button lowered w_full justify-start") (icon (text "folders")) (str (text "journals:label.directories"))) (div - ("class" "card flex flex-col gap-2 lowered") + ("class" "card flex flex_col gap_2 lowered") (text "{{ components::directories_editor(dirs=journal.dirs) }}"))) (text "{% else %}") ; we're in view mode; just show journal listing and notes as journal homepage (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% if tag|length > 0 -%}") (a ("href" "?") - ("class" "notification chip w-content") + ("class" "notification chip w_content") (text "{{ tag }}")) (text "{%- endif %}") @@ -346,9 +346,9 @@ (div ("data-tab" "editor") - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "flex flex-col gap-2 card") + ("class" "flex flex_col gap_2 card") ("style" "animation: fadein ease-in-out 1 0.5s forwards running") ("id" "editor_tab")) @@ -359,17 +359,17 @@ (div ("data-tab" "preview") - ("class" "flex flex-col gap-2 card hidden") + ("class" "flex flex_col gap_2 card hidden") ("style" "animation: fadein ease-in-out 1 0.5s forwards running") ("id" "preview_tab")) (div ("data-tab" "tags") - ("class" "flex flex-col gap-2 card hidden") + ("class" "flex flex_col gap_2 card hidden") ("style" "animation: fadein ease-in-out 1 0.5s forwards running") (form ("onsubmit" "save_tags(event)") - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "tags") (str (text "journals:action.tags")) @@ -475,17 +475,17 @@ (text "{% else %}") ; we're just viewing this note (div - ("class" "flex flex-col gap-2 card") + ("class" "flex flex_col gap_2 card") (text "{{ note.content|markdown|safe }}")) (div - ("class" "flex w-full justify-between gap-2") + ("class" "flex w_full justify_between gap_2") (div - ("class" "flex flex-col gap-2 fade") + ("class" "flex flex_col gap_2 fade") (span (text "Last updated: ") (span ("class" "date") (text "{{ note.edited }}"))) (text "{% if global_mode -%}") - (span ("class" "flex gap-1") (text "Created by: ") (text "{{ components::full_username(user=owner) }}")) + (span ("class" "flex gap_1") (text "Created by: ") (text "{{ components::full_username(user=owner) }}")) (span (text "Views: {{ redis_views }}")) (text "{% elif note.is_global -%}") ; globsl note, but we aren't viewing globally... @@ -948,14 +948,14 @@ Publishing your note is specifically for making the note accessible through the (dialog ("id" "note_mover_dialog") (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p (text "Select a directory to move this note into:")) (text "{{ components::note_mover_dirs(dirs=journal.dirs) }}") (div - ("class" "flex justify-between") + ("class" "flex justify_between") (div) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "bold red lowered") ("onclick" "document.getElementById('note_mover_dialog').close()") diff --git a/crates/app/src/public/html/littleweb/browser.lisp b/crates/app/src/public/html/littleweb/browser.lisp index 95f35d8..5267031 100644 --- a/crates/app/src/public/html/littleweb/browser.lisp +++ b/crates/app/src/public/html/littleweb/browser.lisp @@ -5,7 +5,7 @@ (text "{% endblock %} {% block body %}") (div ("id" "panel") - ("class" "flex flex-row gap-2") + ("class" "flex flex_row gap_2") (a ("class" "button camo") ("href" "/") @@ -27,11 +27,11 @@ (icon (text "rotate-cw"))) (form - ("class" "w-full flex gap-1 flex-row") + ("class" "w_full flex gap_1 flex_row") ("onsubmit" "event.preventDefault(); littleweb_navigate(event.target.uri.getAttribute('true_value'))") (input ("type" "uri") - ("class" "w-full") + ("class" "w_full") ("true_value" "") ("name" "uri") ("id" "uri")) @@ -42,7 +42,7 @@ (div ("class" "dropdown") (button - ("class" "flex-row camo") + ("class" "flex_row camo") ("onclick" "trigger('atto::hooks::dropdown', [event])") ("exclude" "dropdown") ("style" "gap: var(--pad-1) !important") diff --git a/crates/app/src/public/html/littleweb/domain.lisp b/crates/app/src/public/html/littleweb/domain.lisp index d4bc359..629ad15 100644 --- a/crates/app/src/public/html/littleweb/domain.lisp +++ b/crates/app/src/public/html/littleweb/domain.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if user -%}") (div ("class" "pillmenu") @@ -12,20 +12,20 @@ (a ("href" "/domains") ("class" "active") (str (text "littleweb:label.domains")))) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ domain.name }}.{{ domain.tld|lower }}"))) (div - ("class" "flex flex-col gap-2 card") + ("class" "flex flex_col gap_2 card") (code - ("class" "w-content") + ("class" "w_content") (a ("href" "atto://{{ domain.name }}.{{ domain.tld|lower }}") (text "atto://{{ domain.name }}.{{ domain.tld|lower }}"))) (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (button ("class" "red lowered") ("onclick" "delete_domain()") @@ -33,19 +33,19 @@ (str (text "general:action.delete")))))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex flex-col gap-2") + ("class" "card small flex flex_col gap_2") (div - ("class" "flex items-center justify-between gap-2") + ("class" "flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "panel-top")) (span (str (text "littleweb:label.domain_data")))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "small lowered") ("title" "Help") @@ -59,22 +59,22 @@ (str (text "littleweb:action.add"))))) (div - ("class" "card w-full lowered flex flex-col gap-2 hidden no_p_margin") + ("class" "card w_full lowered flex flex_col gap_2 hidden no_p_margin") ("id" "domain_help") (p (text "To link your domain to a site, go to the site and press \"Copy ID\".")) (p (text "After you have the site's ID, click \"Add\" on this page, then paste the ID into the \"value\" field.")) (p (text "If you've ever managed a real domain's DNS, this should be familiar.")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ; add data (form ("id" "add_data") - ("class" "card hidden w-full lowered flex flex-col gap-2") + ("class" "card hidden w_full lowered flex flex_col gap_2") ("onsubmit" "add_data_from_form(event)") (div - ("class" "flex gap-2 flex-collapse") + ("class" "flex gap_2 flex_collapse") (div - ("class" "flex w-full flex-col gap-1") + ("class" "flex w_full flex_col gap_1") (label ("for" "name") (str (text "littleweb:label.type"))) @@ -87,7 +87,7 @@ (option ("value" "Service") (text "Site ID")) (option ("value" "Text") (text "Text")))) (div - ("class" "flex w-full flex-col gap-1") + ("class" "flex w_full flex_col gap_1") (label ("for" "name") (str (text "littleweb:label.name"))) @@ -100,7 +100,7 @@ ("maxlength" "32")) (span ("class" "fade") (text "Use \"@\" for root."))) (div - ("class" "flex w-full flex-col gap-1") + ("class" "flex w_full flex_col gap_1") (label ("for" "value") (str (text "littleweb:label.value"))) @@ -113,17 +113,17 @@ ("minlength" "2") ("maxlength" "256")))) (div - ("class" "flex w-full justify-between") + ("class" "flex w_full justify_between") (div) (button (icon (text "check")) (str (text "general:action.save"))))) ; data (div - ("class" "w-full") + ("class" "w_full") ("style" "max-width: 100%; overflow: auto; min-height: 512px") (table - ("class" "w-full") + ("class" "w_full") (thead (tr (th (text "Name")) diff --git a/crates/app/src/public/html/littleweb/domains.lisp b/crates/app/src/public/html/littleweb/domains.lisp index c79ab3e..b39c716 100644 --- a/crates/app/src/public/html/littleweb/domains.lisp +++ b/crates/app/src/public/html/littleweb/domains.lisp @@ -4,12 +4,12 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; viewing other user's domains warning (text "{% if profile.id != user.id -%}") (div - ("class" "card w-full red flex gap-2 items-center") + ("class" "card w_full red flex gap_2 items_center") (text "{{ icon \"skull\" }}") (b (text "Viewing other user's domains! Please be careful."))) @@ -23,16 +23,16 @@ (a ("href" "/domains") ("class" "active") (str (text "littleweb:label.domains")))) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (str (text "littleweb:label.create_new_domain")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_domain_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "name") (text "{{ text \"communities:label.name\" }}")) @@ -45,7 +45,7 @@ ("minlength" "2") ("maxlength" "32"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "tld") (str (text "littleweb:label.tld"))) @@ -74,22 +74,22 @@ (p (text "All domains have first-class support on {{ config.name }}, meaning all links to them will work properly on this site.")))))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "panel-top")) (span (str (text "littleweb:label.my_domains"))))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %}") (a ("href" "/domains/{{ item.id }}") - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "globe")) (b (text "{{ item.name }}.{{ item.tld|lower }}"))) diff --git a/crates/app/src/public/html/littleweb/service.lisp b/crates/app/src/public/html/littleweb/service.lisp index 7cd9597..13f6a70 100644 --- a/crates/app/src/public/html/littleweb/service.lisp +++ b/crates/app/src/public/html/littleweb/service.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if user -%}") (div ("class" "pillmenu") @@ -12,11 +12,11 @@ (a ("href" "/domains") (str (text "littleweb:label.domains")))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex flex-col gap-2") + ("class" "card small flex flex_col gap_2") (div - ("class" "flex w-full gap-2 justify-between") + ("class" "flex w_full gap_2 justify_between") (b (text "{{ service.name }}")) @@ -27,14 +27,14 @@ (icon (text "circle-question-mark")))) (div - ("class" "card w-full lowered flex flex-col gap-2 hidden no_p_margin") + ("class" "card w_full lowered flex flex_col gap_2 hidden no_p_margin") ("id" "site_help") (p (text "Your site should include an \"index.html\" file in order to show content on its homepage.")) (p (text "In the HTML editor, you can type `!` and use the provided suggestion to get an HTML boilerplate.")) (p (text "After you've created a page, you can click \"Copy ID\" and go to manage a domain you own. On the domain management page, click \"Add\" and paste the ID you copied into the value field.")))) (div - ("class" "flex gap-2 flex-wrap card") + ("class" "flex gap_2 flex_wrap card") (text "{% if file and file.children|length == 0 -%}") (button ("onclick" "update_content()") @@ -61,16 +61,16 @@ (str (text "general:action.delete"))))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "folder-open")) (span (text "{% if path -%} {{ path }} {%- else -%} / {%- endif %}"))) (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (button ("class" "lowered small") ("onclick" "go_up()") @@ -84,14 +84,14 @@ (str (text "communities:action.create"))) (text "{%- endif %}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% if not file or file.children|length > 0 -%}") ; directory browser (div - ("class" "w-full") + ("class" "w_full") ("style" "max-width: 100%; overflow: auto; min-height: 512px") (table - ("class" "w-full") + ("class" "w_full") (thead (tr (th (text "Name")) @@ -103,7 +103,7 @@ (text "{% for item in files %}") (tr (td - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{% if item.children|length > 0 -%}") (icon (text "folder")) (text "{% else %}") @@ -140,7 +140,7 @@ (text "{% endfor %}")))) (text "{% else %}") ; file editor - (div ("id" "editor_container") ("class" "w-full") ("style" "height: 600px")) + (div ("id" "editor_container") ("class" "w_full") ("style" "height: 600px")) (text "{%- endif %}")))) (script ("id" "all_service_files") ("type" "application/json") (text "{{ service.files|json_encode()|remove_script_tags|safe }}")) diff --git a/crates/app/src/public/html/littleweb/services.lisp b/crates/app/src/public/html/littleweb/services.lisp index 261b006..1b7eea0 100644 --- a/crates/app/src/public/html/littleweb/services.lisp +++ b/crates/app/src/public/html/littleweb/services.lisp @@ -4,12 +4,12 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; viewing other user's services warning (text "{% if profile.id != user.id -%}") (div - ("class" "card w-full red flex gap-2 items-center") + ("class" "card w_full red flex gap_2 items_center") (text "{{ icon \"skull\" }}") (b (text "Viewing other user's sites! Please be careful."))) @@ -23,16 +23,16 @@ (a ("href" "/domains") (str (text "littleweb:label.domains")))) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (str (text "littleweb:label.create_new")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_service_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "name") (text "{{ text \"communities:label.name\" }}")) @@ -48,22 +48,22 @@ (text "{{ text \"communities:action.create\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "panel-top")) (span (str (text "littleweb:label.my_services"))))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %}") (a ("href" "/services/{{ item.id }}") - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "globe")) (b (text "{{ item.name }}"))) diff --git a/crates/app/src/public/html/macros.lisp b/crates/app/src/public/html/macros.lisp index 56495d5..2a49ecf 100644 --- a/crates/app/src/public/html/macros.lisp +++ b/crates/app/src/public/html/macros.lisp @@ -1,7 +1,7 @@ (text "{% macro nav(selected=\"\", show_lhs=true, hide_user_menu=false) -%}") (nav (div - ("class" "content_container flex justify-between") + ("class" "content_container flex justify_between") (div ("class" "flex nav_side") (a @@ -63,7 +63,7 @@ (div ("class" "dropdown") (button - ("class" "flex-row {% if selected == 'chats' or selected == 'journals' -%}active{%- endif %}") + ("class" "flex_row {% if selected == 'chats' or selected == 'journals' -%}active{%- endif %}") ("onclick" "trigger('atto::hooks::dropdown', [event])") ("exclude" "dropdown") ("title" "More services") @@ -105,7 +105,7 @@ (div ("class" "dropdown") (button - ("class" "flex-row title") + ("class" "flex_row title") ("onclick" "trigger('atto::hooks::dropdown', [event])") ("exclude" "dropdown") ("style" "gap: var(--pad-1) !important") @@ -188,7 +188,7 @@ (text "{%- endif %}")) (div - ("class" "desktop flex flex-col gap-2") + ("class" "desktop flex flex_col gap_2") ; primary nav desktop only (text "{{ macros::timelines_nav_options(selected=selected) }}") @@ -200,7 +200,7 @@ (text "{% macro timelines_nav_options(selected=\"\") -%}") (div - ("class" "pillmenu {% if user -%}rows{% endif %} w-full") + ("class" "pillmenu {% if user -%}rows{% endif %} w_full") (div ("class" "row") (text "{% if user -%}") @@ -254,7 +254,7 @@ (text "{% macro timelines_secondary_nav(posts=\"\", questions=\"\", selected=\"posts\") -%} {% if user -%}") (div - ("class" "pillmenu w-full") + ("class" "pillmenu w_full") (a ("href" "{{ posts }}") ("class" "{% if selected == 'posts' -%}active{%- endif %}") diff --git a/crates/app/src/public/html/mail/compose.lisp b/crates/app/src/public/html/mail/compose.lisp index 909cfdc..5b9f401 100644 --- a/crates/app/src/public/html/mail/compose.lisp +++ b/crates/app/src/public/html/mail/compose.lisp @@ -5,11 +5,11 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small items-center gap-2 flex justify-between") + ("class" "card small items_center gap_2 flex justify_between") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (icon (text "mail-plus")) (str (text "mail:label.compose"))) @@ -20,15 +20,15 @@ (str (text "general:action.back")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_letter_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (span (b (str (text "mail:label.receivers")))) (div - ("class" "flex flex-wrap gap-2 small card lowered") - (div ("id" "receivers") ("class" "flex flex-wrap gap-2")) + ("class" "flex flex_wrap gap_2 small card lowered") + (div ("id" "receivers") ("class" "flex flex_wrap gap_2")) (button ("class" "small tiny big_icon square raised") ("onclick" "add_receiver()") @@ -36,7 +36,7 @@ (icon (text "plus"))))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "subject") (b (str (text "mail:label.subject")))) @@ -48,7 +48,7 @@ ("id" "subject"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (b (str (text "mail:label.content")))) diff --git a/crates/app/src/public/html/mail/letter.lisp b/crates/app/src/public/html/mail/letter.lisp index 4eb5d2d..81a6bb9 100644 --- a/crates/app/src/public/html/mail/letter.lisp +++ b/crates/app/src/public/html/mail/letter.lisp @@ -3,7 +3,7 @@ (text "Letter - {{ config.name }}")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ components::letter(letter=letter, owner=owner) }}") (text "{% for letter in replies %}") diff --git a/crates/app/src/public/html/mail/received.lisp b/crates/app/src/public/html/mail/received.lisp index 054c405..b6b71c3 100644 --- a/crates/app/src/public/html/mail/received.lisp +++ b/crates/app/src/public/html/mail/received.lisp @@ -3,7 +3,7 @@ (text "Received mail - {{ config.name }}")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("class" "pillmenu") (a @@ -16,11 +16,11 @@ ; letters (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "mailbox")) (str (text "mail:label.received"))) (a @@ -29,7 +29,7 @@ (icon (text "plus")) (str (text "mail:label.compose")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for letter in list %}") (text "{{ components::letter_listing(letter=letter[1], owner=letter[0]) }}") (text "{% endfor %}") diff --git a/crates/app/src/public/html/mail/sent.lisp b/crates/app/src/public/html/mail/sent.lisp index 0e5d2b3..095b61e 100644 --- a/crates/app/src/public/html/mail/sent.lisp +++ b/crates/app/src/public/html/mail/sent.lisp @@ -3,7 +3,7 @@ (text "Sent mail - {{ config.name }}")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("class" "pillmenu") (a @@ -16,11 +16,11 @@ ; letters (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "mailbox")) (str (text "mail:label.sent"))) (a @@ -29,7 +29,7 @@ (icon (text "plus")) (str (text "mail:label.compose")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for letter in list %}") (text "{{ components::letter_listing(letter=letter[1], owner=letter[0]) }}") (text "{% endfor %}") diff --git a/crates/app/src/public/html/marketplace/seller.lisp b/crates/app/src/public/html/marketplace/seller.lisp index 0efa4f0..c16bb70 100644 --- a/crates/app/src/public/html/marketplace/seller.lisp +++ b/crates/app/src/public/html/marketplace/seller.lisp @@ -3,7 +3,7 @@ (text "Seller settings - {{ config.name }}")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; nav (div @@ -29,12 +29,12 @@ ; ... (div - ("class" "card w-full lowered flex flex-col gap-2") + ("class" "card w_full lowered flex flex_col gap_2") ("data-tab" "account") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (div ("class" "notification") ("style" "width: 46px") @@ -70,10 +70,10 @@ (text "{%- endif %}")))) (div - ("class" "card w-full lowered hidden flex flex-col gap-2") + ("class" "card w_full lowered hidden flex flex_col gap_2") ("data-tab" "products") (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") ))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/misc/achievements.lisp b/crates/app/src/public/html/misc/achievements.lisp index 93f895e..9407faa 100644 --- a/crates/app/src/public/html/misc/achievements.lisp +++ b/crates/app/src/public/html/misc/achievements.lisp @@ -4,15 +4,15 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"achievements\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "coffee")) (span (text "Welcome to {{ config.name }}!"))) (div - ("class" "card no_p_margin flex flex-col gap-2") + ("class" "card no_p_margin flex flex_col gap_2") (p (text "To help you move in, you'll be rewarded with small achievements for completing simple tasks on {{ config.name }}!")) (p (text "You'll find out what each achievement is when you get it, so look around!")) (hr) @@ -20,24 +20,24 @@ (div ("class" "progress_bar") (div ("class" "poll_bar") ("style" "width: {{ percentage }}%"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "award")) (span (str (text "general:link.achievements"))))) (div - ("class" "card lowered flex flex-col gap-4") + ("class" "card lowered flex flex_col gap_4") (text "{% for achievement in achievements %}") (div - ("class" "w-full card-nest") + ("class" "w_full card_nest") (div - ("class" "card small flex items-center gap-2 {% if achievement[2] == 'Uncommon' -%} green {%- elif achievement[2] == 'Rare' -%} purple {%- endif %}") + ("class" "card small flex items_center gap_2 {% if achievement[2] == 'Uncommon' -%} green {%- elif achievement[2] == 'Rare' -%} purple {%- endif %}") (icon (text "award")) (text "{{ achievement[0] }}")) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ achievement[1]|markdown|safe }}")) (hr) (span ("class" "fade") (text "Unlocked: ") (span ("class" "date") (text "{{ achievement[3].unlocked }}"))))) diff --git a/crates/app/src/public/html/misc/error.lisp b/crates/app/src/public/html/misc/error.lisp index 758be6f..6a1e902 100644 --- a/crates/app/src/public/html/misc/error.lisp +++ b/crates/app/src/public/html/misc/error.lisp @@ -3,19 +3,19 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "Error 😦"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (span (text "{{ error_text }}")) (div - ("class" "w-full flex gap-2") + ("class" "w_full flex gap_2") (a ("class" "button primary") ("href" "/") (text "Home")) diff --git a/crates/app/src/public/html/misc/markdown.lisp b/crates/app/src/public/html/misc/markdown.lisp index 18ee05e..511b761 100644 --- a/crates/app/src/public/html/misc/markdown.lisp +++ b/crates/app/src/public/html/misc/markdown.lisp @@ -3,13 +3,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "scroll-text")) (span (text "{{ file_name }}")))) diff --git a/crates/app/src/public/html/misc/notifications.lisp b/crates/app/src/public/html/misc/notifications.lisp index 6a0b40e..31980b9 100644 --- a/crates/app/src/public/html/misc/notifications.lisp +++ b/crates/app/src/public/html/misc/notifications.lisp @@ -4,12 +4,12 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"notifications\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; viewing other user's notifications warning (text "{% if profile.id != user.id -%}") (div - ("class" "card w-full red flex gap-2 items-center") + ("class" "card w_full red flex gap_2 items_center") (text "{{ icon \"skull\" }}") (b (text "Viewing other user's notifications! Please be careful."))) @@ -17,16 +17,16 @@ ; ... (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"bell\" }}") (span (text "{{ text \"notifs:label.notifications\" }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("onclick" "trigger('me::clear_notifs')") ("class" "small red lowered") @@ -53,7 +53,7 @@ (span (text "{{ text \"notifs:label.mark_all_as_unread\" }}"))))))) (div - ("class" "card lowered flex flex-col gap-4") + ("class" "card lowered flex flex_col gap_4") (text "{% for notification in notifications %} {{ components::notification(notification=notification) }} {% endfor %}"))) (text "{{ components::pagination(page=page, items=notifications|length, key=\"&id=\", value=profile.id) }}")) diff --git a/crates/app/src/public/html/misc/requests.lisp b/crates/app/src/public/html/misc/requests.lisp index f49b6f4..2735e0e 100644 --- a/crates/app/src/public/html/misc/requests.lisp +++ b/crates/app/src/public/html/misc/requests.lisp @@ -4,12 +4,12 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"requests\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ; viewing other user's requests warning (text "{% if profile.id != user.id -%}") (div - ("class" "card w-full red flex gap-2 items-center") + ("class" "card w_full red flex gap_2 items_center") (text "{{ icon \"skull\" }}") (b (text "Viewing other user's requests! Please be careful."))) @@ -17,11 +17,11 @@ ; ... (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"inbox\" }}") (span (text "{{ text \"requests:label.requests\" }}"))) @@ -34,17 +34,17 @@ (text "{{ text \"notifs:action.clear\" }}"))) (text "{% endif %}")) (div - ("class" "card lowered flex flex-col gap-4") + ("class" "card lowered flex flex_col gap_4") (text "{% for request in requests %} {% if request.action_type == \"CommunityJoin\" %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"user-plus\" }}") (span (text "{{ text \"requests:label.community_join_request\" }}"))) (div - ("class" "card flex flex-wrap gap-2") + ("class" "card flex flex_wrap gap_2") (a ("href" "/community/{{ request.linked_asset }}/manage?uid={{ request.id }}#/members") ("class" "button") @@ -59,21 +59,21 @@ (text "{{ text \"general:action.delete\" }}"))))) (text "{% elif request.action_type == \"Follow\" %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (a ("href" "/api/v1/auth/user/find/{{ request.id }}") (text "{{ components::avatar(username=request.id, selector_type=\"id\") }}")) (span (text "{{ text \"requests:label.user_follow_request\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ text \"requests:label.user_follow_request_message\" }}")) (div - ("class" "card flex flex-wrap w-full secondary gap-2") + ("class" "card flex flex_wrap w_full secondary gap_2") (a ("href" "/api/v1/auth/user/find/{{ request.id }}") ("class" "button") @@ -94,13 +94,13 @@ (text "{{ text \"general:action.delete\" }}")))))) (text "{%- endif %} {% endfor %} {% for question in questions %}") (div - ("class" "card-nest") + ("class" "card_nest") (text "{{ components::question(question=question[0], owner=question[1], asking_about=question[2], profile=user) }}") (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "answer_question_from_form(event, '{{ question[0].id }}')") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -114,11 +114,11 @@ ("maxlength" "4096"))) (div ("id" "files_list") - ("class" "flex gap-2 flex-wrap")) + ("class" "flex gap_2 flex_wrap")) (div - ("class" "flex w-full justify-between flex-collapse gap-2") + ("class" "flex w_full justify_between flex_collapse gap_2") (div - ("class" "flex flex-wrap w-full gap-2") + ("class" "flex flex_wrap w_full gap_2") (text "{{ components::create_post_options() }}") (button ("type" "button") diff --git a/crates/app/src/public/html/mod/audit_log.lisp b/crates/app/src/public/html/mod/audit_log.lisp index 7a1ec78..7ce09ae 100644 --- a/crates/app/src/public/html/mod/audit_log.lisp +++ b/crates/app/src/public/html/mod/audit_log.lisp @@ -4,21 +4,21 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"scroll\" }}") (span (text "{{ text \"general:link.audit_log\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in items %}") (div - ("class" "card-nest") + ("class" "card_nest") (a - ("class" "card small flex items-center gap-2 flush") + ("class" "card small flex items_center gap_2 flush") ("href" "/api/v1/auth/user/find/{{ item.moderator }}") (text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}") (span diff --git a/crates/app/src/public/html/mod/file_report.lisp b/crates/app/src/public/html/mod/file_report.lisp index 39f7669..f1748c0 100644 --- a/crates/app/src/public/html/mod/file_report.lisp +++ b/crates/app/src/public/html/mod/file_report.lisp @@ -4,19 +4,19 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"flag\" }}") (span (text "{{ text \"general:label.file_report\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_report_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (text "{{ text \"communities:label.content\" }}")) diff --git a/crates/app/src/public/html/mod/ip_bans.lisp b/crates/app/src/public/html/mod/ip_bans.lisp index b1fa5c3..c612cf9 100644 --- a/crates/app/src/public/html/mod/ip_bans.lisp +++ b/crates/app/src/public/html/mod/ip_bans.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"ban\" }}") (span (text "{{ text \"general:link.ip_bans\" }}"))) @@ -21,12 +21,12 @@ (span (text "{{ text \"communities:action.create\" }}")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in items %}") (div - ("class" "card-nest") + ("class" "card_nest") (a - ("class" "card small flex items-center gap-2 flush") + ("class" "card small flex items_center gap_2 flush") ("href" "/api/v1/auth/user/find/{{ item.moderator }}") (text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}") (span @@ -35,13 +35,13 @@ ("class" "fade date") (text "{{ item.created }}"))) (div - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (code (text "{{ item.ip }}")) (span (text "{{ item.reason|markdown|safe }}")) (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") (button ("onclick" "remove_ipban('{{ item.ip }}')") ("class" "red lowered") diff --git a/crates/app/src/public/html/mod/profile.lisp b/crates/app/src/public/html/mod/profile.lisp index 5a84aac..3201178 100644 --- a/crates/app/src/public/html/mod/profile.lisp +++ b/crates/app/src/public/html/mod/profile.lisp @@ -4,21 +4,21 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"shield\" }}") (span (text "{{ text \"mod_panel:label.manage_profile\" }}"))) (div ("class" "card lowered") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("id" "mod_options") (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") ("ui_ident" "actions") (a ("href" "/settings?username={{ profile.username }}") @@ -256,47 +256,47 @@ }, 100); }, 150);")))) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"mod_panel:label.associations\" }}")))) (div - ("class" "card lowered flex flex-wrap gap-2") + ("class" "card lowered flex flex_wrap gap_2") (text "{% for user in associations -%}") (text "{{ components::user_plate(user=user, show_menu=false) }}") (text "{%- endfor %}"))) (text "{% if invite -%}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"ticket\" }}") (span (text "{{ text \"mod_panel:label.invited_by\" }}")))) (div - ("class" "card lowered flex flex-wrap gap-2") + ("class" "card lowered flex flex_wrap gap_2") (text "{{ components::user_plate(user=invite[0], show_menu=false) }}"))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "scale")) (span (str (text "mod_panel:label.ban_reason"))))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "event.preventDefault(); profile_request(false, 'ban_reason', { reason: event.target.reason.value || '' })") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "title") (str (text "mod_panel:label.ban_reason"))) @@ -310,11 +310,11 @@ (button (str (text "general:action.save"))))) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"blocks\" }}") (span (text "{{ text \"mod_panel:label.permissions_level_builder\" }}"))) @@ -325,14 +325,14 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("id" "permission_builder"))) (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"blocks\" }}") (span (text "{{ text \"mod_panel:label.permissions_level_builder\" }}"))) @@ -343,7 +343,7 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("id" "secondary_permission_builder"))) (script (text "setTimeout(async () => { diff --git a/crates/app/src/public/html/mod/reports.lisp b/crates/app/src/public/html/mod/reports.lisp index 14910fa..8e9ddc6 100644 --- a/crates/app/src/public/html/mod/reports.lisp +++ b/crates/app/src/public/html/mod/reports.lisp @@ -4,21 +4,21 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"flag\" }}") (span (text "{{ text \"general:link.reports\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in items %}") (div - ("class" "card-nest") + ("class" "card_nest") (a - ("class" "card small flex items-center gap-2 flush") + ("class" "card small flex items_center gap_2 flush") ("href" "/api/v1/auth/user/find/{{ item.owner }}") (text "{{ components::avatar(username=item.owner, selector_type=\"id\") }}") (span @@ -27,12 +27,12 @@ ("class" "fade date") (text "{{ item.created }}"))) (div - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ item.content|markdown|safe }}")) (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") (button ("onclick" "open_reported_content('{{ item.asset }}', '{{ item.asset_type }}')") (text "{{ icon \"external-link\" }}") diff --git a/crates/app/src/public/html/mod/stats.lisp b/crates/app/src/public/html/mod/stats.lisp index d9ac9f5..94a49f7 100644 --- a/crates/app/src/public/html/mod/stats.lisp +++ b/crates/app/src/public/html/mod/stats.lisp @@ -4,16 +4,16 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"chart-line\" }}") (span (text "{{ text \"general:link.stats\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (ul (li (b diff --git a/crates/app/src/public/html/mod/warnings.lisp b/crates/app/src/public/html/mod/warnings.lisp index 203fa3e..c5b783a 100644 --- a/crates/app/src/public/html/mod/warnings.lisp +++ b/crates/app/src/public/html/mod/warnings.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"gavel\" }}") (span (text "{{ text \"mod_panel:label.create_warning\" }}"))) @@ -21,10 +21,10 @@ (span (text "{{ text \"dialog:action.cancel\" }}")))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_warning_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -39,23 +39,23 @@ (button (text "{{ text \"communities:action.create\" }}")))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (span - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"message-circle-warning\" }}") (span (text "{{ text \"mod_panel:label.warnings\" }}")))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for item in items %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (a - ("class" "flex items-center gap-2 flush") + ("class" "flex items_center gap_2 flush") ("href" "/api/v1/auth/user/find/{{ item.moderator }}") ("title" "Moderator") (text "{{ components::avatar(username=item.moderator, selector_type=\"id\") }}") @@ -71,7 +71,7 @@ (span (text "{{ text \"general:action.delete\" }}")))) (div - ("class" "card secondary flex flex-col gap-2") + ("class" "card secondary flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ item.content|markdown|safe }}")))) diff --git a/crates/app/src/public/html/post/likes.lisp b/crates/app/src/public/html/post/likes.lisp index 6e414aa..c7f0af8 100644 --- a/crates/app/src/public/html/post/likes.lisp +++ b/crates/app/src/public/html/post/likes.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if post.replying_to -%}") (a ("href" "/post/{{ post.replying_to }}") @@ -56,14 +56,14 @@ (text "{{ text \"communities:action.configure\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"heart\" }}") (span (text "{{ text \"communities:label.likes\" }}"))) (div - ("class" "card flex flex-wrap gap-4 flex-collapse") + ("class" "card flex flex_wrap gap_4 flex_collapse") (text "{% for tu in list %} {% set reaction = tu[0] %} {% set user = tu[1] %}") (div ("style" "display: contents") diff --git a/crates/app/src/public/html/post/post.lisp b/crates/app/src/public/html/post/post.lisp index 8013461..518f973 100644 --- a/crates/app/src/public/html/post/post.lisp +++ b/crates/app/src/public/html/post/post.lisp @@ -39,7 +39,7 @@ ("content" "View this post from @{{ owner.username }} on {{ config.name }}!")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2 {% if community.is_forum -%}content_container{%- endif %}") (text "{% if post.replying_to -%}") (a ("href" "/post/{{ post.replying_to }}") @@ -48,21 +48,29 @@ (span (text "{{ text \"communities:action.continue_thread\" }}"))) (text "{%- endif %}") + ; post + (text "{% if not community.is_forum -%}") (div - ("style" "display: contents;") + ("style" "display: contents") (text "{% if post.context.repost and post.context.repost.reposting -%} {{ components::repost(repost=reposting, post=post, owner=owner, community=community, show_community=true, can_manage_post=can_manage_posts) }} {% else %} {{ components::post(post=post, owner=owner, question=question, community=community, show_community=true, can_manage_post=can_manage_posts, poll=poll, dont_show_title=true) }} {%- endif %}")) + (text "{% else %}") + (div + ("style" "display: contents") + (text "{{ components::forum_post(post=post, owner=owner, community=community, can_manage_post=can_manage_posts, poll=poll) }}")) + (text "{%- endif %}") + ; ... (text "{% if user and post.context.comments_enabled -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"communities:label.create_reply\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_reply_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -75,9 +83,9 @@ ("maxlength" "4096"))) (div ("id" "files_list") - ("class" "flex gap-2 flex-wrap")) + ("class" "flex gap_2 flex_wrap")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::emoji_picker(element_id=\"content\", render_dialog=true) }} {% if is_supporter -%} {{ components::file_picker(files_list_id=\"files_list\") }} {% endif %}") (button (text "{{ text \"communities:action.create\" }}"))))) @@ -124,17 +132,17 @@ (span (text "{{ text \"communities:action.configure\" }}")))) (div - ("class" "flex flex-col gap-2 hidden") + ("class" "flex flex_col gap_2 hidden") ("data-tab" "configure") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"settings\" }}") (span (text "{{ text \"communities:action.configure\" }}"))) (div - ("class" "card lowered flex flex-col gap-4") + ("class" "card lowered flex flex_col gap_4") ("id" "post_context"))) (button ("onclick" "save_context()") @@ -250,18 +258,18 @@ (text "{%- endif %}") (text "{% if user and user.id == post.owner -%}") (div - ("class" "card-nest w-full hidden") + ("class" "card_nest w_full hidden") ("data-tab" "edit") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"pen\" }}") (span (text "{{ text \"communities:label.edit_content\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "edit_post_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "content") (text "{{ text \"communities:label.content\" }}")) @@ -275,7 +283,7 @@ ("maxlength" "4096") (text "{{ post.content }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::emoji_picker(element_id=\"new_content\", render_dialog=false) }}") (button (text "{{ text \"general:action.save\" }}"))))) @@ -302,16 +310,26 @@ }")) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") ("data-tab" "replies") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"newspaper\" }}") (span (text "{{ text \"communities:label.replies\" }}"))) (div - ("class" "card flex flex-col gap-4") - (text "{% for post in replies %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}")))) + ("class" "card flex flex_col gap_4") + (text "{% for post in replies %}") + ; reply + (text "{% if not community.is_forum -%}") + (div + ("style" "display: contents") + (text "{{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }}")) + (text "{% else %}") + (div + ("style" "display: contents") + (text "{{ components::forum_post(post=post[0], owner=post[1], community=community, can_manage_post=can_manage_posts, poll=post[4]) }}")) + (text "{%- endif %} {% endfor %} {{ components::pagination(page=page, items=replies|length) }}")))) (script (text "async function create_reply_from_form(e) { diff --git a/crates/app/src/public/html/post/quotes.lisp b/crates/app/src/public/html/post/quotes.lisp index 45cdd9f..c178bcb 100644 --- a/crates/app/src/public/html/post/quotes.lisp +++ b/crates/app/src/public/html/post/quotes.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if post.replying_to -%}") (a ("href" "/post/{{ post.replying_to }}") @@ -56,14 +56,14 @@ (text "{{ text \"communities:action.configure\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"quote\" }}") (span (text "{{ text \"communities:label.quotes\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in list %} {{ components::post(post=post[0], owner=post[1], question=post[3], secondary=true, show_community=false, poll=post[4]) }} {% endfor %} {{ components::pagination(page=page, items=list|length, key=\""es=\", value=\"true\") }}")))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/post/reposts.lisp b/crates/app/src/public/html/post/reposts.lisp index 510c800..1890e1a 100644 --- a/crates/app/src/public/html/post/reposts.lisp +++ b/crates/app/src/public/html/post/reposts.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if post.replying_to -%}") (a ("href" "/post/{{ post.replying_to }}") @@ -56,19 +56,19 @@ (text "{{ text \"communities:action.configure\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"repeat-2\" }}") (span (text "{{ text \"communities:label.reposts\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in list %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2") + ("class" "card flex items_center gap_2") (a ("href" "/@{{ post[1].username }}") (text "{{ components::avatar(username=post[1].username, size=\"24px\", selector_type=\"username\") }}")) @@ -76,7 +76,7 @@ ("class" "name") (text "{{ components::full_username(user=post[1]) }}"))) (div - ("class" "card flex items-center gap-2 flex-wrap secondary") + ("class" "card flex items_center gap_2 flex_wrap secondary") (a ("href" "/post/{{ post[0].id }}") ("class" "lowered small button") diff --git a/crates/app/src/public/html/profile/banned.lisp b/crates/app/src/public/html/profile/banned.lisp index 7378c82..17f540b 100644 --- a/crates/app/src/public/html/profile/banned.lisp +++ b/crates/app/src/public/html/profile/banned.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ components::avatar(username=profile.username, size=\"24px\") }}") (span (text "{{ profile.username }}"))) @@ -18,11 +18,11 @@ ("class" "notification chip") (text "{{ text \"auth:label.banned\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span (text "{{ text \"auth:label.banned_message\" }}")) (div - ("class" "card w-full secondary flex gap-2") + ("class" "card w_full secondary flex gap_2") (a ("href" "/") ("class" "button red lowered") diff --git a/crates/app/src/public/html/profile/base.lisp b/crates/app/src/public/html/profile/base.lisp index efe7605..a7e1cd3 100644 --- a/crates/app/src/public/html/profile/base.lisp +++ b/crates/app/src/public/html/profile/base.lisp @@ -45,24 +45,24 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (article (div - ("class" "content_container flex flex-col gap-4") + ("class" "content_container flex flex_col gap_4") (text "{{ components::banner(username=profile.username) }}") (div - ("class" "w-full flex gap-4 flex-collapse") + ("class" "w_full flex gap_4 flex_collapse") (div - ("class" "lhs flex flex-col gap-2 sm:w-full") + ("class" "lhs flex flex_col gap_2 sm:w_full") ("style" "width: 22rem; min-width: 22rem") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") ("id" "user_avatar_and_name") (text "{{ components::avatar(username=profile.username,size=\"72px\") }}") (div - ("class" "flex flex-col") + ("class" "flex flex_col") (h3 ("id" "username") - ("class" "username flex items-center gap-2 flex-wrap w-full") + ("class" "username flex items_center gap_2 flex_wrap w_full") (span ("class" "name shorter") (text "{{ components::username(user=profile) }}")) @@ -70,38 +70,38 @@ (span ("title" "Verified") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"badge-check\" }}")) (text "{%- endif %} {% if profile.permissions|has_supporter -%}") (span ("title" "Supporter") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"star\" }}")) (text "{%- endif %} {% if profile.secondary_permissions|has_dev_pass -%}") (span ("title" "Developer pass") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"id-card-lanyard\" }}")) (text "{%- endif %} {% if profile.permissions|has_staff_badge -%}") (span ("title" "Staff") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"shield-user\" }}")) (text "{%- endif %} {% if profile.permissions|has_banned -%}") (span ("title" "Banned") ("style" "color: var(--color-primary);") - ("class" "flex items-center") + ("class" "flex items_center") (text "{{ icon \"shield-ban\" }}")) (text "{%- endif %}")) (span ("class" "fade") (text "{{ profile.username }}")))) (div - ("class" "card flex flex-col items-center gap-2") + ("class" "card flex flex_col items_center gap_2") ("id" "social") (text "{% if profile.settings.status -%}") (p @@ -109,17 +109,17 @@ (text "{%- endif %}") (text "{% if not profile.settings.hide_social_follows or (user and user.id == profile.id) -%}") (div - ("class" "w-full flex") + ("class" "w_full flex") (a ("href" "/@{{ profile.username }}/followers") - ("class" "w-full flex justify-center items-center gap-2") + ("class" "w_full flex justify_center items_center gap_2") (h4 (text "{{ profile.follower_count }}")) (span (text "{{ text \"auth:label.followers\" }}"))) (a ("href" "/@{{ profile.username }}/following") - ("class" "w-full flex justify-center items-center gap-2") + ("class" "w_full flex justify_center items_center gap_2") (h4 (text "{{ profile.following_count }}")) (span @@ -127,26 +127,26 @@ (text "{%- endif %}") (text "{% if is_following_you -%}") (b - ("class" "notification chip w-content flex items-center gap-2") + ("class" "notification chip w_content flex items_center gap_2") (text "{{ icon \"heart\" }}") (span (text "Follows you"))) (text "{%- endif %}"))) (div - ("class" "card-nest flex flex-col") + ("class" "card_nest flex flex_col") (div ("id" "bio") ("class" "card small no_p_margin") (text "{{ profile.settings.biography|markdown|safe }}")) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% if user -%}") (div ("style" "display: contents;") (text "{% if profile.connections.Spotify and profile.connections.Spotify[0].data.name -%} {{ components::spotify_playing(state=profile.connections.Spotify[1]) }} {% elif profile.connections.LastFm and profile.connections.LastFm[0].data.name %} {{ components::last_fm_playing(state=profile.connections.LastFm[1]) }} {%- endif %}")) (text "{%- endif %}") (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "ID")) @@ -156,7 +156,7 @@ ("class" "camo small") (text "{{ icon \"copy\" }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Joined")) @@ -164,7 +164,7 @@ ("class" "date") (text "{{ profile.created }}"))) (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Posts")) @@ -172,7 +172,7 @@ (text "{{ profile.post_count }}"))) (text "{% if gpa and gpa > 0 and (not user.settings.disable_gpa_fun or is_helper) -%}") (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") ("title" "great post average (limited time fun)") (span ("class" "notification chip") @@ -182,7 +182,7 @@ (text "{%- endif %}") (text "{% if not profile.settings.private_last_seen or is_self or is_helper %}") (div - ("class" "w-full flex justify-between items-center") + ("class" "w_full flex justify_between items_center") (span ("class" "notification chip") (text "Last seen")) @@ -197,7 +197,7 @@ (text "{% if user and user.id != profile.id -%}") (hr) (div - ("class" "flex flex-wrap gap-2 w-full fade") + ("class" "flex flex_wrap gap_2 w_full fade") (a ("class" "red") ("href" "javascript:trigger('me::report', ['{{ profile.id }}', 'user'])") @@ -205,13 +205,13 @@ (text "{%- endif %}"))) (text "{% if not is_self and user -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"auth:label.relationship\" }}"))) (div - ("class" "card flex gap-2 flex-wrap") + ("class" "card flex gap_2 flex_wrap") (text "{% if not is_blocking -%}") (button ("onclick" "toggle_follow_user(event)") @@ -396,14 +396,14 @@ };")))) (text "{%- endif %} {% if not profile.settings.private_communities or is_self or is_helper %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"auth:label.joined_communities\" }}"))) (div - ("class" "card flex flex-wrap gap-2") + ("class" "card flex flex_wrap gap_2") (text "{% for community in communities %}") (a ("href" "/community/{{ community.title }}") @@ -411,14 +411,14 @@ (text "{% endfor %}"))) (text "{%- endif %}") (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("id" "connections") (text "{% for key, value in profile.connections %} {% if value[0].data.name and value[0].show_on_profile %}") (a - ("class" "card small flush flex items-center justify-between gap-2") + ("class" "card small flush flex items_center justify_between gap_2") ("href" "{{ components::connection_url(key=key, value=value) }}") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ components::connection_icon(key=key) }}") (b (text "{{ value[0].data.name }}"))) @@ -427,7 +427,7 @@ (text "{{ icon \"external-link\" }}"))) (text "{%- endif %} {% endfor %}"))) (div - ("class" "rhs w-full flex flex-col gap-4") + ("class" "rhs w_full flex flex_col gap_4") (text "{% block content %}{% endblock %}"))))) (text "{% if not is_self and profile.settings.warning -%}") diff --git a/crates/app/src/public/html/profile/blocked.lisp b/crates/app/src/public/html/profile/blocked.lisp index 660be0d..919cbcb 100644 --- a/crates/app/src/public/html/profile/blocked.lisp +++ b/crates/app/src/public/html/profile/blocked.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ components::avatar(username=profile.username, size=\"24px\") }}") (span (text "{{ profile.username }}"))) @@ -18,11 +18,11 @@ ("class" "notification chip") (text "{{ text \"auth:label.blocked_profile\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span (text "{{ text \"auth:label.blocked_profile_message\" }}")) (div - ("class" "card w-full secondary flex gap-2") + ("class" "card w_full secondary flex gap_2") (text "{% if user -%} {% if not is_blocking -%}") (div ("class" "dropdown") diff --git a/crates/app/src/public/html/profile/followers.lisp b/crates/app/src/public/html/profile/followers.lisp index e35811b..935daa8 100644 --- a/crates/app/src/public/html/profile/followers.lisp +++ b/crates/app/src/public/html/profile/followers.lisp @@ -1,13 +1,13 @@ (text "{% extends \"profile/base.html\" %} {% block content %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"auth:label.followers\" }}"))) (div - ("class" "card flex flex-wrap gap-4 flex-collapse") + ("class" "card flex flex_wrap gap_4 flex_collapse") (text "{% for item in list %} {{ components::user_plate(user=item[1], secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (style diff --git a/crates/app/src/public/html/profile/following.lisp b/crates/app/src/public/html/profile/following.lisp index 7912052..ea24b98 100644 --- a/crates/app/src/public/html/profile/following.lisp +++ b/crates/app/src/public/html/profile/following.lisp @@ -1,13 +1,13 @@ (text "{% extends \"profile/base.html\" %} {% block content %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"auth:label.following\" }}"))) (div - ("class" "card flex flex-wrap gap-4 flex-collapse") + ("class" "card flex flex_wrap gap_4 flex_collapse") (text "{% for item in list %} {{ components::user_plate(user=item[1], secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (style diff --git a/crates/app/src/public/html/profile/media.lisp b/crates/app/src/public/html/profile/media.lisp index b4bf80c..0328f97 100644 --- a/crates/app/src/public/html/profile/media.lisp +++ b/crates/app/src/public/html/profile/media.lisp @@ -5,11 +5,11 @@ (text "{%- endif %} {{ macros::profile_nav(selected=\"media\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 justify-between items-center") + ("class" "card small flex gap_2 justify_between items_center") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{{ icon \"clock\" }}") (span (text "{{ text \"auth:label.recent_posts_with_media\" }}"))) @@ -22,7 +22,7 @@ (text "{{ text \"general:link.search\" }}"))) (text "{%- endif %}")) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in posts %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=posts|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/profile/outbox.lisp b/crates/app/src/public/html/profile/outbox.lisp index 7dbcabb..a8c8563 100644 --- a/crates/app/src/public/html/profile/outbox.lisp +++ b/crates/app/src/public/html/profile/outbox.lisp @@ -5,29 +5,29 @@ (text "{%- endif %} {{ macros::profile_nav(selected=\"outbox\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 justify-between items-center") + ("class" "card small flex gap_2 justify_between items_center") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{{ icon \"send\" }}") (span (text "{{ text \"auth:label.outbox\" }}")))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for question in questions %}") (div - ("class" "card-nest") + ("class" "card_nest") ; show the actual question (text "{{ components::question(question=question[0], owner=question[1], profile=user, secondary=true) }}") ; options (div - ("class" "card small flex justify-between items-center gap-2") + ("class" "card small flex justify_between items_center gap_2") ; show the avatar of the person we sent the question to (a - ("class" "flex items-center gap-2 flush") + ("class" "flex items_center gap_2 flush") ("href" "/api/v1/auth/user/find/{{ question[0].receiver }}") (icon (text "send")) (text "{{ components::avatar(username=question[0].receiver, selector_type='id') }}")) diff --git a/crates/app/src/public/html/profile/posts.lisp b/crates/app/src/public/html/profile/posts.lisp index 183aeca..ab33a08 100644 --- a/crates/app/src/public/html/profile/posts.lisp +++ b/crates/app/src/public/html/profile/posts.lisp @@ -5,23 +5,23 @@ (text "{%- endif %} {% if not tag and pinned|length != 0 -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"pin\" }}") (span (text "{{ text \"communities:label.pinned\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in pinned %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %}"))) (text "{%- endif %} {{ macros::profile_nav(selected=\"posts\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 justify-between items-center") + ("class" "card small flex gap_2 justify_between items_center") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{% if not tag -%} {{ icon \"clock\" }}") (span (text "{{ text \"auth:label.recent_posts\" }}")) @@ -40,7 +40,7 @@ (text "{{ text \"general:link.search\" }}"))) (text "{%- endif %}")) (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker")))) diff --git a/crates/app/src/public/html/profile/private.lisp b/crates/app/src/public/html/profile/private.lisp index 4654298..e0cfee8 100644 --- a/crates/app/src/public/html/profile/private.lisp +++ b/crates/app/src/public/html/profile/private.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ components::avatar(username=profile.username, size=\"24px\") }}") (span (text "{{ profile.username }}"))) @@ -18,7 +18,7 @@ ("class" "notification chip") (text "{{ text \"auth:label.private_profile\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span ("class" "fade") (text "{{ text \"auth:label.private_profile_message\" }}")) @@ -26,7 +26,7 @@ ("class" "no_p_margin") (text "{{ profile.settings.private_biography|markdown|safe }}")) (div - ("class" "card w-full secondary flex gap-2") + ("class" "card w_full secondary flex gap_2") (text "{% if user -%} {% if not is_following -%}") (button ("onclick" "toggle_follow_user(event)") diff --git a/crates/app/src/public/html/profile/replies.lisp b/crates/app/src/public/html/profile/replies.lisp index 5f70d68..66b5ec3 100644 --- a/crates/app/src/public/html/profile/replies.lisp +++ b/crates/app/src/public/html/profile/replies.lisp @@ -5,11 +5,11 @@ (text "{%- endif %} {{ macros::profile_nav(selected=\"replies\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 justify-between items-center") + ("class" "card small flex gap_2 justify_between items_center") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{{ icon \"clock\" }}") (span (text "{{ text \"auth:label.recent_replies\" }}"))) @@ -22,7 +22,7 @@ (text "{{ text \"general:link.search\" }}"))) (text "{%- endif %}")) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in posts %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %} {{ components::pagination(page=page, items=posts|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/profile/responses.lisp b/crates/app/src/public/html/profile/responses.lisp index 868f959..93c605e 100644 --- a/crates/app/src/public/html/profile/responses.lisp +++ b/crates/app/src/public/html/profile/responses.lisp @@ -5,23 +5,23 @@ (text "{%- endif %} {% if not tag and pinned|length != 0 -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 items-center") + ("class" "card small flex gap_2 items_center") (text "{{ icon \"pin\" }}") (span (text "{{ text \"communities:label.pinned\" }}"))) (div - ("class" "card flex flex-col gap-4") + ("class" "card flex flex_col gap_4") (text "{% for post in pinned %} {% if post[2].read_access == \"Everybody\" -%} {% if post[0].context.repost and post[0].context.repost.reposting -%} {{ components::repost(repost=post[3], post=post[0], owner=post[1], secondary=true, community=post[2], show_community=true, can_manage_post=is_self) }} {% else %} {{ components::post(post=post[0], owner=post[1], question=post[4], secondary=true, community=post[2], can_manage_post=is_self, poll=post[5]) }} {%- endif %} {%- endif %} {% endfor %}"))) (text "{%- endif %} {{ macros::profile_nav(selected=\"responses\") }}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex gap-2 justify-between items-center") + ("class" "card small flex gap_2 justify_between items_center") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (text "{% if not tag -%} {{ icon \"clock\" }}") (span (text "{{ text \"auth:label.recent_posts\" }}")) @@ -40,7 +40,7 @@ (text "{{ text \"general:link.search\" }}"))) (text "{%- endif %}")) (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker")))) diff --git a/crates/app/src/public/html/profile/settings.lisp b/crates/app/src/public/html/profile/settings.lisp index 4037cd8..52d41d8 100644 --- a/crates/app/src/public/html/profile/settings.lisp +++ b/crates/app/src/public/html/profile/settings.lisp @@ -3,10 +3,10 @@ (text "Settings - {{ config.name }}")) (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{% if profile.id != user.id -%}") (div - ("class" "card w-full red flex gap-2 items-center") + ("class" "card w_full red flex gap_2 items_center") (text "{{ icon \"skull\" }}") (b (text "Editing other user's settings! Please be careful."))) @@ -36,10 +36,10 @@ ; ... (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "presets") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -47,23 +47,23 @@ (span (str (text "general:action.back")))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (icon (text "cooking-pot")) (span (str (text "settings:tab.presets")))) (div - ("class" "card flex flex-col gap-2 secondary") + ("class" "card flex flex_col gap_2 secondary") (p (text "Not sure where to start? Try some settings presets!")) (details - ("class" "w-full accordion") + ("class" "w_full accordion") (summary (icon (text "rss")) (text "Microblogging")) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p ("class" "fade") (text "Focus on yourself and your communities.")) (ul ("id" "preset_microblogging_ul")) (button @@ -72,13 +72,13 @@ (str (text "general:action.apply"))))) (details - ("class" "w-full accordion") + ("class" "w_full accordion") (summary (icon (text "message-circle-heart")) (text "Q&A")) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p ("class" "fade") (text "Just like Neospring!")) (ul ("id" "preset_questions_ul")) (button @@ -87,13 +87,13 @@ (str (text "general:action.apply"))))) (details - ("class" "w-full accordion") + ("class" "w_full accordion") (summary (icon (text "key")) (text "Private")) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p ("class" "fade") (text "This preset allows you to keep your profile and posts hidden to people you aren't following.")) (ul ("id" "preset_private_ul")) (button @@ -102,13 +102,13 @@ (str (text "general:action.apply"))))) (details - ("class" "w-full accordion") + ("class" "w_full accordion") (summary (icon (text "eye-closed")) (text "NSFW")) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p ("class" "fade") (text "NSFW content is allowed if it is hidden from main timelines. This preset will help you do that quickly.")) (ul ("id" "preset_nsfw_ul")) (button @@ -117,10 +117,10 @@ (str (text "general:action.apply"))))))))) (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") ("data-tab" "account") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("id" "account_settings") (div ("class" "pillmenu") @@ -178,7 +178,7 @@ (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "home_timeline") (div ("class" "card small") @@ -232,14 +232,14 @@ ("class" "fade") (text "This represents the timeline the home button takes you to.")))) (div - ("class" "card-nest desktop") + ("class" "card_nest desktop") ("ui_ident" "notifications") (div ("class" "card small") (b (text "Notifications"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (button ("id" "notifications_button")) (span @@ -254,17 +254,17 @@ ]); }, 150);")) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_username") (div ("class" "card small") (b (text "{{ text \"settings:label.change_username\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_username(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "new_username") (text "{{ text \"settings:label.new_username\" }}")) @@ -280,22 +280,22 @@ (span (text "{{ text \"general:action.save\" }}")))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "delete_account") (div - ("class" "card small flex items-center gap-2 red") + ("class" "card small flex items_center gap_2 red") (icon (text "skull")) (b (str (text "communities:label.danger_zone")))) (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (details ("class" "accordion") (summary - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon_class (text "chevron-down") (text "dropdown_arrow")) (str (text "settings:label.deactivate_account"))) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (p (text "Deactivating your account will treat it as deleted, but all your data will be recoverable if you change your mind. This option is recommended over a full deletion.")) (button ("onclick" "deactivate_account()") @@ -305,14 +305,14 @@ (details ("class" "accordion") (summary - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon_class (text "chevron-down") (text "dropdown_arrow")) (str (text "settings:label.delete_account"))) (form - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") ("onsubmit" "delete_account(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "current_password") (text "{{ text \"settings:label.current_password\" }}")) @@ -335,10 +335,10 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/security") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -346,23 +346,23 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"user-lock\" }}") (span (text "{{ text \"settings:tab.security\" }}"))) (div - ("class" "card flex flex-col gap-2 secondary") + ("class" "card flex flex_col gap_2 secondary") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "two_factor_authentication") (div ("class" "card small") (b (text "{{ text \"settings:label.two_factor_authentication\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% if profile.totp|length == 0 -%}") (div ("id" "totp_stuff") @@ -391,7 +391,7 @@ ("id" "totp_recovery_codes") ("style" "display: none")) (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (button ("class" "lowered red") ("onclick" "refresh_totp_codes(event)") @@ -402,17 +402,17 @@ (text "Disable TOTP 2FA"))) (text "{%- endif %}"))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_password") (div ("class" "card small") (b (text "{{ text \"settings:label.change_password\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_password(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "current_password") (text "{{ text \"settings:label.current_password\" }}")) @@ -425,7 +425,7 @@ ("minlength" "6") ("autocomplete" "off"))) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "new_password") (text "{{ text \"settings:label.new_password\" }}")) @@ -442,10 +442,10 @@ (span (text "{{ text \"general:action.save\" }}"))))))))) (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/following") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -453,22 +453,22 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"rss\" }}") (span (text "{{ text \"auth:label.following\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for userfollow in following %} {% set user = userfollow[1] %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "lowered red small") ("onclick" "toggle_follow_user('{{ user.id }}')") @@ -498,10 +498,10 @@ }); };"))) (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/followers") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -509,22 +509,22 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"rss\" }}") (span (text "{{ text \"auth:label.followers\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for userfollow in followers %} {% set user = userfollow[1] %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "lowered red small") ("onclick" "force_unfollow_me('{{ user.id }}')") @@ -554,10 +554,10 @@ }); };"))) (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/blocks") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -567,36 +567,36 @@ ; stack blocks (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"layers\" }}") (span (text "{{ text \"stacks:link.stacks\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for stack in stackblocks %}") (text "{{ components::stack_listing(stack=stack) }}") (text "{% endfor %}"))) ; user blocks (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"users-round\" }}") (span (text "{{ text \"settings:label.users\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for user in blocks %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}")) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (a ("href" "/stacks/add_user/{{ user.id }}") ("target" "_blank") @@ -612,21 +612,21 @@ ; ip blocks (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"wifi\" }}") (span (text "{{ text \"settings:label.ips\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for ip in ipblocks %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (span (text "Block from: ") (span ("class" "date") (text "{{ ip.created }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("onclick" "trigger('me::remove_ip_block', ['{{ ip.id }}'])") ("class" "lowered small red") @@ -634,10 +634,10 @@ (span (str (text "auth:action.unblock")))))) (text "{% endfor %}"))))) (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/uploads") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -645,21 +645,21 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"image-up\" }}") (span (text "{{ text \"settings:tab.uploads\" }}"))) (div - ("class" "card flex flex-col gap-2 secondary") + ("class" "card flex flex_col gap_2 secondary") (text "{{ components::supporter_ad(body=\"Become a supporter to upload images directly to posts!\") }} {% for upload in uploads %}") (details - ("class" "accordion w-full") + ("class" "accordion w_full") (summary - ("class" "card flex flex-wrap gap-2 items-center justify-between") + ("class" "card flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (icon_class (text "chevron-down") (text "dropdown_arrow")) (b (span @@ -667,7 +667,7 @@ (text "{{ upload.created }}")) (text " ({{ upload.what }})"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (button ("class" "raised small") ("onclick" "trigger('ui::lightbox_open', ['/api/v1/uploads/{{ upload.id }}'])") @@ -682,17 +682,17 @@ (text "{{ text \"stacks:label.remove\" }}"))))) (div - ("class" "inner flex flex-col gap-2") + ("class" "inner flex flex_col gap_2") (form - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("onsubmit" "update_upload_alt(event, '{{ upload.id }}')") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "alt_{{ upload.id }}") (b (str (text "settings:label.alt_text")))) (textarea ("id" "alt_{{ upload.id }}") ("name" "alt") - ("class" "w-full") + ("class" "w_full") ("placeholder" "Alternative text") (text "{{ upload.alt|safe }}"))) @@ -744,10 +744,10 @@ (text "{% if config.security.enable_invite_codes -%}") (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/invites") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -755,14 +755,14 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"ticket\" }}") (span (text "{{ text \"settings:tab.invites\" }}"))) (div - ("class" "card flex flex-col gap-2 secondary") + ("class" "card flex flex_col gap_2 secondary") (pre ("id" "invite_codes_output") ("class" "hidden") (code)) (pre ("id" "invite_codes_error_output") ("class" "hidden") (code ("class" "red"))) @@ -773,7 +773,7 @@ (text "{{ components::supporter_ad(body=\"Become a supporter to generate up to 48 invite codes! You can currently have 2 maximum.\") }} {% for code in invites %}") (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% if code[1].is_used -%}") ; used (b ("class" "{% if code[1].is_used -%} fade {%- endif %}") (s (text "{{ code[1].code }}"))) @@ -824,10 +824,10 @@ (text "{%- endif %}") (div - ("class" "w-full flex flex-col gap-2 hidden") + ("class" "w_full flex flex_col gap_2 hidden") ("data-tab" "account/billing") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (a ("href" "#/account") ("class" "button secondary") @@ -835,26 +835,26 @@ (span (text "{{ text \"general:action.back\" }}"))) (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card flex items-center gap-2 small") + ("class" "card flex items_center gap_2 small") (text "{{ icon \"credit-card\" }}") (span (text "{{ text \"settings:tab.billing\" }}"))) (div - ("class" "card flex flex-col gap-2 secondary") + ("class" "card flex flex_col gap_2 secondary") (text "{% if config.stripe -%}") (text "{% if has_developer_pass or is_supporter -%}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "supporter_card") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "credit-card")) (b (text "Manage billing"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (p (text "You currently have a subscription! You can manage your billing information below. ") (b @@ -868,15 +868,15 @@ (text "{%- endif %}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "supporter_card") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"star\" }}") (b (text "Supporter status"))) (div - ("class" "card flex flex-col gap-2 no_p_margin") + ("class" "card flex flex_col gap_2 no_p_margin") (text "{% if is_supporter -%}") (p (text "You ") @@ -887,15 +887,15 @@ (text "{%- endif %}"))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "supporter_card") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (icon (text "id-card-lanyard")) (b (text "Developer pass status"))) (div - ("class" "card flex flex-col gap-2 no_p_margin") + ("class" "card flex flex_col gap_2 no_p_margin") (text "{% if has_developer_pass -%}") (p (text "You currently have a developer pass!")) @@ -905,12 +905,12 @@ (text "{% if user.was_purchased and user.invite_code == 0 -%}") (form - ("class" "card w-full lowered flex flex-col gap-2") + ("class" "card w_full lowered flex flex_col gap_2") ("onsubmit" "update_invite_code(event)") (p (text "Your account is currently activated without an invite code. If you stop paying for supporter, your account will be locked again until you renew. You can provide an invite code to avoid this if you're planning on cancelling.")) (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "invite_code") (b @@ -927,32 +927,32 @@ (text "{%- endif %}") (text "{%- endif %}"))))) (div - ("class" "w-full hidden flex flex-col gap-2") + ("class" "w_full hidden flex flex_col gap_2") ("data-tab" "profile") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("id" "profile_settings") (text "{{ components::supporter_ad(body=\"Become a supporter to upload GIF images!\") }}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_avatar") (div ("class" "card small") (b (text "{{ text \"settings:label.change_avatar\" }}"))) (form - ("class" "card flex gap-2 flex-row flex-wrap items-center") + ("class" "card flex gap_2 flex_row flex_wrap items_center") ("method" "post") ("enctype" "multipart/form-data") ("onsubmit" "upload_avatar(event)") (div - ("class" "flex gap-2 flex-row flex-wrap items-center") + ("class" "flex gap_2 flex_row flex_wrap items_center") (input ("id" "avatar_file") ("name" "file") ("type" "file") ("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif") - ("class" "w-content")) + ("class" "w_content")) (button (text "{{ icon \"check\" }}"))) (span @@ -961,32 +961,32 @@ only supported for supporter users. GIFs can be at most 2 MB large.")))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_banner") (div ("class" "card small") (b (text "{{ text \"settings:label.change_banner\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("method" "post") ("enctype" "multipart/form-data") ("onsubmit" "upload_banner(event)") (div - ("class" "flex gap-2 flex-row flex-wrap items-center") + ("class" "flex gap_2 flex_row flex_wrap items_center") (input ("id" "banner_file") ("name" "file") ("type" "file") ("accept" "image/png,image/jpeg,image/avif,image/webp,image/gif") - ("class" "w-content")) + ("class" "w_content")) (button (text "{{ icon \"check\" }}"))) (span ("class" "fade") (text "Use an image of 1100x350px for the best results.")))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "default_profile_page") (div ("class" "card small") @@ -1008,11 +1008,11 @@ ("class" "fade") (text "This represents the timeline that is shown on your profile by default.")))) (div - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") ("ui_ident" "show_presets") (hr ("class" "margin")) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b @@ -1030,13 +1030,13 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "card w-full lowered hidden flex flex-col gap-2") + ("class" "card w_full lowered hidden flex flex_col gap_2") ("data-tab" "sessions") (text "{% for token in profile.tokens %}") (div - ("class" "card w-full flex justify-between flex-collapse gap-2") + ("class" "card w_full flex justify_between flex_collapse gap_2") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (b ("style" " width: 200px; @@ -1046,7 +1046,7 @@ (text "{{ token[1] }}")) (text "{% if is_helper -%}") (span - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (span ("class" "fade") (a @@ -1068,18 +1068,18 @@ (text "{{ text \"general:action.delete\" }}"))) (text "{% endfor %}")) (div - ("class" "w-full hidden flex flex-col gap-2") + ("class" "w_full hidden flex flex_col gap_2") ("data-tab" "theme") (div - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") ("id" "theme_settings") (text "{% if failing_color_keys|length > 0 -%}") (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("style" "background: white; color: black") ("ui_ident" "awful_contrast") (div - ("class" "flex gap-2 items-center") + ("class" "flex gap_2 items_center") (span ("class" "desktop") ("style" "display: contents") @@ -1095,7 +1095,7 @@ (text "{% endfor %}"))) (text "{%- endif %}") (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") ("ui_ident" "import_export") (button ("onclick" "import_theme_settings()") @@ -1110,7 +1110,7 @@ (text "{{ text \"settings:label.export\" }}")))) (text "{{ components::supporter_ad(body=\"Become a supporter to add custom CSS!\") }}") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "theme_preference") (div ("class" "card small") @@ -1136,7 +1136,7 @@ ("class" "fade") (text "This represents your local site theme.")))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "profile_theme") (div ("class" "card small") @@ -1169,10 +1169,10 @@ (span (text "{{ text \"general:action.save\" }}")))) (div - ("class" "card w-full lowered hidden flex flex-col gap-2") + ("class" "card w_full lowered hidden flex flex_col gap_2") ("data-tab" "connections") (div - ("class" "card w-full flex flex-wrap gap-2") + ("class" "card w_full flex flex_wrap gap_2") (text "{% if config.connections.spotify_client_id and not profile.connections.Spotify %}") (button ("class" "lowered") @@ -1190,12 +1190,12 @@ (text "{%- endif %}")) (text "{% for key, value in profile.connections %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ components::connection_icon(key=key) }}") (b - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{% if value[0].data.name -%}") (span (text "{{ value[0].data.name }}")) @@ -1211,50 +1211,50 @@ (text "{{ icon \"badge-alert\" }}")) (text "{%- endif %}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (button ("class" "lowered red small") ("onclick" "trigger('connections::delete', ['{{ key }}'])") (text "{{ text \"general:action.delete\" }}")) (label ("for" "{{ key }}-shown") - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (input ("type" "checkbox") ("checked" "{% if value[0].show_on_profile -%}true{% else %}false{%- endif %}") ("id" "{{ key }}-shown") ("onchange" "trigger('connections::push_con_shown', ['{{ key }}', event.target.checked])") - ("class" "w-content")) + ("class" "w_content")) (span (text "Shown on profile"))))) (text "{% endfor %}") (text "{% for grant in profile_grants %}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-4") + ("class" "card small flex items_center gap_4") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (icon (text "bot")) (a ("class" "flush") ("href" "{{ grant[0].homepage }}") ("target" "_blank") (b - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ grant[0].title }}")))) (span - ("class" "fade flex items-center gap-2") + ("class" "fade flex items_center gap_2") (icon (text "clock")) (span ("class" "date") (text "{{ grant[1].last_updated }}")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (details (summary (icon (text "scan-eye")) (text "{{ grant[1].scopes|length }} scope{{ grant[1].scopes|length|pluralize }}")) (div - ("class" "card lowered w-full") + ("class" "card lowered w_full") (ul (text "{% for scope in grant[1].scopes -%}") (li diff --git a/crates/app/src/public/html/profile/warning.lisp b/crates/app/src/public/html/profile/warning.lisp index a108d47..a1397e7 100644 --- a/crates/app/src/public/html/profile/warning.lisp +++ b/crates/app/src/public/html/profile/warning.lisp @@ -4,13 +4,13 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ components::avatar(username=profile.username, size=\"24px\") }}") (span (text "{{ profile.username }}"))) @@ -18,12 +18,12 @@ ("class" "notification chip") (text "{{ text \"auth:label.before_you_view\" }}"))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span ("class" "no_p_margin") (text "{{ profile.settings.warning|markdown|safe }}")) (div - ("class" "card w-full secondary flex gap-2") + ("class" "card w_full secondary flex gap_2") (button ("onclick" "trigger('warnings::accept', ['{{ profile.id }}', '{{ warning_hash }}'])") (text "{{ icon \"check\" }}") diff --git a/crates/app/src/public/html/root.lisp b/crates/app/src/public/html/root.lisp index 5cf7da9..76b38d9 100644 --- a/crates/app/src/public/html/root.lisp +++ b/crates/app/src/public/html/root.lisp @@ -63,19 +63,19 @@ (article (main (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2 red") + ("class" "card small flex items_center gap_2 red") (icon (text "frown")) (str (text "general:label.account_banned"))) (div - ("class" "card flex flex-col gap-2 no_p_margin") + ("class" "card flex flex_col gap_2 no_p_margin") (str (text "general:label.account_banned_body")) (hr) (span ("class" "fade") (text "The following reason was provided by a moderator:")) (div - ("class" "card lowered w-full") + ("class" "card lowered w_full") (text "{{ user.ban_reason|markdown|safe }}")))))) ; if we aren't banned, just show the page body (text "{% elif user and user.awaiting_purchase %}") @@ -83,25 +83,25 @@ (article (main (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2 red") + ("class" "card small flex items_center gap_2 red") (icon (text "frown")) (str (text "general:label.must_activate_account"))) (div - ("class" "card no_p_margin flex flex-col gap-2") + ("class" "card no_p_margin flex flex_col gap_2") (p (text "Since you didn't provide an invite code, you'll need to activate your account to use it.")) (p (text "Supporter is a recurring membership. If you cancel it, your account will be locked again unless you renew your subscription or provide an invite code.")) (div - ("class" "card w-full lowered flex flex-col gap-2") + ("class" "card w_full lowered flex flex_col gap_2") (text "{{ components::become_supporter_button() }}")) (p (text "Alternatively, you can provide an invite code to activate your account.")) (form - ("class" "card w-full lowered flex flex-col gap-2") + ("class" "card w_full lowered flex flex_col gap_2") ("onsubmit" "update_invite_code(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "invite_code") (b @@ -146,14 +146,14 @@ (article (main (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2 red") + ("class" "card small flex items_center gap_2 red") (icon (text "frown")) (str (text "settings:label.account_deactivated"))) (div - ("class" "card flex flex-col gap-2 no_p_margin") + ("class" "card flex flex_col gap_2 no_p_margin") (p (text "You have deactivated your account. You can undo this with the button below if you'd like.")) (hr) (button diff --git a/crates/app/src/public/html/stacks/add_user.lisp b/crates/app/src/public/html/stacks/add_user.lisp index 214decd..7318cfc 100644 --- a/crates/app/src/public/html/stacks/add_user.lisp +++ b/crates/app/src/public/html/stacks/add_user.lisp @@ -4,19 +4,19 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ components::avatar(username=add_user.username, size=\"24px\") }}") (text "{{ components::full_username(user=add_user) }}")) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (span (text "Select a stack to add this user to:")) (text "{% for stack in stacks %}") (button - ("class" "justify-start lowered w-full") + ("class" "justify-start lowered w_full") ("onclick" "choose_stack('{{ stack.id }}')") (icon (text "layers")) (text "{{ stack.name }}")) diff --git a/crates/app/src/public/html/stacks/feed.lisp b/crates/app/src/public/html/stacks/feed.lisp index 5002856..2d1ca4a 100644 --- a/crates/app/src/public/html/stacks/feed.lisp +++ b/crates/app/src/public/html/stacks/feed.lisp @@ -4,21 +4,21 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"stacks\") }}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (a ("href" "/api/v1/auth/user/find/{{ stack.owner }}") (text "{{ components::avatar(username=stack.owner, selector_type=\"id\") }}")) (span (text "{{ stack.name }}"))) (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{% if stack.mode == 'Circle' -%}") ; post button for circle stacks (a @@ -39,7 +39,7 @@ (text "{{ text \"general:action.manage\" }}"))) (text "{%- endif %}"))) (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% if stack.users|length == 0 -%}") (p (text "No users included yet! Maybe ") @@ -61,14 +61,14 @@ (str (text "stacks:label.unblock_all"))) (text "{%- endif %}") (div - ("class" "flex gap-2 flex-wrap w-full") + ("class" "flex gap_2 flex_wrap w_full") (text "{% for user in list %} {{ components::user_plate(user=user, secondary=true) }} {% endfor %}")) (text "{{ components::pagination(page=page, items=list|length) }}") (text "{% else %}") ; user icons for circle stack (text "{% if stack.mode == 'Circle' -%}") (div - ("class" "flex w-full gap-2 flex-wrap") + ("class" "flex w_full gap_2 flex_wrap") (text "{% for user in stack.users %}") (a ("href" "/api/v1/auth/user/find/{{ user }}") @@ -79,7 +79,7 @@ ; posts for all stacks except blocklist (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker"))) diff --git a/crates/app/src/public/html/stacks/list.lisp b/crates/app/src/public/html/stacks/list.lisp index 6381881..dbcf944 100644 --- a/crates/app/src/public/html/stacks/list.lisp +++ b/crates/app/src/public/html/stacks/list.lisp @@ -4,19 +4,19 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"stacks\") }} {% if user -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b (text "{{ text \"stacks:label.create_new\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "create_stack_from_form(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "name") (text "{{ text \"communities:label.name\" }}")) @@ -32,16 +32,16 @@ (text "{{ text \"communities:action.create\" }}")))) (text "{%- endif %}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"layers\" }}") (span (text "{{ text \"stacks:label.my_stacks\" }}")))) (div - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") (text "{% for item in list %}") (text "{{ components::stack_listing(stack=item) }}") (text "{% endfor %}")))) diff --git a/crates/app/src/public/html/stacks/manage.lisp b/crates/app/src/public/html/stacks/manage.lisp index ecd892c..31c6af8 100644 --- a/crates/app/src/public/html/stacks/manage.lisp +++ b/crates/app/src/public/html/stacks/manage.lisp @@ -4,7 +4,7 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div ("class" "pillmenu") (a @@ -21,13 +21,13 @@ (span (text "{{ text \"stacks:tab.users\" }}")))) (div - ("class" "w-full flex flex-col gap-2") + ("class" "w_full flex flex_col gap_2") ("data-tab" "general") (div ("id" "manage_fields") - ("class" "card lowered flex flex-col gap-2") + ("class" "card lowered flex flex_col gap_2") (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "privacy") (div ("class" "card small") @@ -46,7 +46,7 @@ ("selected" "{% if stack.privacy == 'Public' -%}true{% else %}false{%- endif %}") (text "Public"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "mode") (div ("class" "card small") @@ -73,7 +73,7 @@ ("selected" "{% if stack.mode == 'Circle' -%}true{% else %}false{%- endif %}") (text "Circle"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "sort") (div ("class" "card small") @@ -92,17 +92,17 @@ ("selected" "{% if stack.sort == 'Likes' -%}true{% else %}false{%- endif %}") (text "Likes"))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "change_name") (div ("class" "card small") (b (text "{{ text \"stacks:label.change_name\" }}"))) (form - ("class" "card flex flex-col gap-2") + ("class" "card flex flex_col gap_2") ("onsubmit" "change_name(event)") (div - ("class" "flex flex-col gap-1") + ("class" "flex flex_col gap_1") (label ("for" "name") (text "{{ text \"communities:label.name\" }}")) @@ -118,15 +118,15 @@ (span (text "{{ text \"general:action.save\" }}")))))) (div - ("class" "card-nest") + ("class" "card_nest") ("ui_ident" "danger_zone") (div - ("class" "card small flex gap-1 items-center red") + ("class" "card small flex gap_1 items_center red") (text "{{ icon \"skull\" }}") (b (text "{{ text \"communities:label.danger_zone\" }}"))) (div - ("class" "card flex flex-wrap gap-2") + ("class" "card flex flex_wrap gap_2") (button ("class" "red lowered") ("onclick" "delete_stack()") @@ -134,7 +134,7 @@ (span (text "{{ text \"general:action.delete\" }}")))))) (div - ("class" "card w-full flex flex-col gap-2 hidden") + ("class" "card w_full flex flex_col gap_2 hidden") ("data-tab" "users") (button ("onclick" "add_user()") @@ -143,9 +143,9 @@ (text "{{ text \"stacks:label.add_user\" }}"))) (text "{% for user in users %}") (div - ("class" "card secondary flex flex-wrap gap-2 items-center justify-between") + ("class" "card secondary flex flex_wrap gap_2 items_center justify_between") (div - ("class" "flex gap-2") + ("class" "flex gap_2") (text "{{ components::avatar(username=user.username) }} {{ components::full_username(user=user) }}")) (button ("class" "lowered small red") @@ -155,7 +155,7 @@ (text "{{ text \"stacks:label.remove\" }}")))) (text "{% endfor %}")) (div - ("class" "flex gap-2 flex-wrap") + ("class" "flex gap_2 flex_wrap") (a ("href" "/stacks/{{ stack.id }}") ("class" "button secondary") diff --git a/crates/app/src/public/html/timelines/all.lisp b/crates/app/src/public/html/timelines/all.lisp index d739b2e..4609e25 100644 --- a/crates/app/src/public/html/timelines/all.lisp +++ b/crates/app/src/public/html/timelines/all.lisp @@ -4,17 +4,17 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"all\", posts=\"/all\", questions=\"/all/questions\") }} {% if not user -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div - ("class" "card small flex items-center gap-2") + ("class" "card small flex items_center gap_2") (text "{{ icon \"heart\" }}") (b (text "{{ text \"general:label.better_with_account\" }}"))) (div - ("class" "card flex gap-2") + ("class" "card flex gap_2") (a ("href" "/auth/login") ("class" "button") @@ -29,7 +29,7 @@ (text "{{ text \"auth:action.register\" }}"))))) (text "{%- endif %}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker")))) diff --git a/crates/app/src/public/html/timelines/all_questions.lisp b/crates/app/src/public/html/timelines/all_questions.lisp index 4d415f4..70243ee 100644 --- a/crates/app/src/public/html/timelines/all_questions.lisp +++ b/crates/app/src/public/html/timelines/all_questions.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"all\", posts=\"/all\", questions=\"/all/questions\", secondary_selected=\"questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/timelines/following.lisp b/crates/app/src/public/html/timelines/following.lisp index ef23a55..1f288b4 100644 --- a/crates/app/src/public/html/timelines/following.lisp +++ b/crates/app/src/public/html/timelines/following.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"following\", posts=\"/following\", questions=\"/following/questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker")))) diff --git a/crates/app/src/public/html/timelines/following_questions.lisp b/crates/app/src/public/html/timelines/following_questions.lisp index 16dd725..d8c4657 100644 --- a/crates/app/src/public/html/timelines/following_questions.lisp +++ b/crates/app/src/public/html/timelines/following_questions.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"following\", posts=\"/following\", questions=\"/following/questions\", secondary_selected=\"questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/timelines/home.lisp b/crates/app/src/public/html/timelines/home.lisp index 65b3a60..47cd8d5 100644 --- a/crates/app/src/public/html/timelines/home.lisp +++ b/crates/app/src/public/html/timelines/home.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"home\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"home\", posts=\"/\", questions=\"/questions\") }} {% if list|length == 0 and page == 0 -%}") (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b @@ -25,7 +25,7 @@ ("href" "/communities/search") (text "searching for a community to join!"))))) (div - ("class" "card-nest") + ("class" "card_nest") (div ("class" "card small") (b @@ -38,7 +38,7 @@ (text "!")))) (text "{% else %}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker"))) (text "{%- endif %}")) diff --git a/crates/app/src/public/html/timelines/home_questions.lisp b/crates/app/src/public/html/timelines/home_questions.lisp index a67c0bf..dab4512 100644 --- a/crates/app/src/public/html/timelines/home_questions.lisp +++ b/crates/app/src/public/html/timelines/home_questions.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"home\", posts=\"/\", questions=\"/questions\", secondary_selected=\"questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/timelines/popular.lisp b/crates/app/src/public/html/timelines/popular.lisp index d0223df..125ddb9 100644 --- a/crates/app/src/public/html/timelines/popular.lisp +++ b/crates/app/src/public/html/timelines/popular.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav(selected=\"popular\") }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"popular\", posts=\"/popular\", questions=\"/popular/questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") ("ui_ident" "io_data_load") (div ("ui_ident" "io_data_marker")))) diff --git a/crates/app/src/public/html/timelines/popular_questions.lisp b/crates/app/src/public/html/timelines/popular_questions.lisp index 69197d3..b8772ec 100644 --- a/crates/app/src/public/html/timelines/popular_questions.lisp +++ b/crates/app/src/public/html/timelines/popular_questions.lisp @@ -4,10 +4,10 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"popular\", posts=\"/popular\", questions=\"/popular/questions\", secondary_selected=\"questions\") }}") (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% for question in list %} {{ components::global_question(question=question, can_manage_questions=false, secondary=true) }} {% endfor %} {{ components::pagination(page=page, items=list|length) }}"))) (text "{% endblock %}") diff --git a/crates/app/src/public/html/timelines/search.lisp b/crates/app/src/public/html/timelines/search.lisp index ef739fe..f25fbe1 100644 --- a/crates/app/src/public/html/timelines/search.lisp +++ b/crates/app/src/public/html/timelines/search.lisp @@ -4,14 +4,14 @@ (text "{% endblock %} {% block body %} {{ macros::nav() }}") (main - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (text "{{ macros::timelines_nav(selected=\"search\") }}") (div - ("class" "card-nest w-full") + ("class" "card_nest w_full") (div - ("class" "card small flex items-center justify-between gap-2") + ("class" "card small flex items_center justify_between gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"search\" }} {% if not profile -%}") (span (text "{{ text \"general:link.search\" }}")) @@ -20,12 +20,12 @@ (text "{{ components::full_username(user=profile) }}")) (text "{%- endif %}"))) (div - ("class" "card w-full flex flex-col gap-2") + ("class" "card w_full flex flex_col gap_2") (text "{% if not profile and not user.permissions|has_supporter -%} {{ components::supporter_ad(body=\"Become a supporter for full-site search!\") }} {% else %}") (form - ("class" "flex flex-col gap-2") + ("class" "flex flex_col gap_2") (div - ("class" "flex flex-row gap-2") + ("class" "flex flex_row gap_2") (input ("type" "text") ("name" "query") @@ -43,7 +43,7 @@ ("id" "profile")) (text "{%- endif %}") (div - ("class" "flex gap-2 flex-row") + ("class" "flex gap_2 flex_row") (button ("class" "small square") (text "{{ icon \"search\" }}")) diff --git a/crates/app/src/public/html/timelines/swiss_army.lisp b/crates/app/src/public/html/timelines/swiss_army.lisp index 02edda2..3b48c3c 100644 --- a/crates/app/src/public/html/timelines/swiss_army.lisp +++ b/crates/app/src/public/html/timelines/swiss_army.lisp @@ -13,9 +13,9 @@ (text "{%- endfor %}")) (text "{% if list|length == 0 -%}") (div - ("class" "card lowered green flex justify-between items-center gap-2") + ("class" "card lowered green flex justify_between items_center gap_2") (div - ("class" "flex items-center gap-2") + ("class" "flex items_center gap_2") (text "{{ icon \"shell\" }}") (span (str (text "general:label.timeline_end")) diff --git a/crates/app/src/public/js/atto.js b/crates/app/src/public/js/atto.js index 9c556cf..7126b84 100644 --- a/crates/app/src/public/js/atto.js +++ b/crates/app/src/public/js/atto.js @@ -919,7 +919,7 @@ media_theme_pref(); } if (option.input_element_type === "checkbox") { - into_element.innerHTML += `
+ into_element.innerHTML += `
@@ -937,10 +937,10 @@ media_theme_pref(); } if (option.input_element_type === "color") { - into_element.innerHTML += `
+ into_element.innerHTML += `
-
+
@@ -967,12 +967,12 @@ media_theme_pref(); return; } - into_element.innerHTML += `
+ into_element.innerHTML += `
-
+
<${option.input_element_type || "input"} type="text" onchange="window.set_setting_field${id_key}('${option.key}', event.target.value)" @@ -1122,14 +1122,14 @@ ${option.input_element_type === "textarea" ? `${option.value}` : ""} let permissions_html = ""; for (const match of matching) { - permissions_html += `
+ permissions_html += `
${match} ${permissions[match]}
`; } for (const match of not_matching) { - permissions_html += `
+ permissions_html += `
${match} ${permissions[match]}
`; diff --git a/crates/app/src/public/js/me.js b/crates/app/src/public/js/me.js index 99fda4e..9b8ad1d 100644 --- a/crates/app/src/public/js/me.js +++ b/crates/app/src/public/js/me.js @@ -725,8 +725,8 @@ self.define("render_token_picker", ({ $ }, element) => { element.innerHTML = ""; for (const token of Object.entries($.LOGIN_ACCOUNT_TOKENS)) { - element.innerHTML += `
-