Compare commits

...

59 Commits

Author SHA1 Message Date
awesomerobot b292befd1d header search alignment 2025-03-19 17:53:57 -04:00
awesomerobot f0834f197c UX: attempt to keep title centered with content 2025-03-19 17:32:00 -04:00
chapoi d062468f93 Undo sticky topic header (#64) 2025-03-19 10:19:25 -05:00
chapoi b6db617017 Mobile: New alert info width fix (#63) 2025-03-19 10:01:43 +01:00
Jordan Vidrine efc3dd5475 cleanup dropdown button (#62) 2025-03-18 19:29:42 -05:00
Jordan Vidrine d79313436d fix (#61) 2025-03-18 19:18:32 -05:00
Jordan Vidrine 19c957aecc apply anti-aliased font to topics as well (#60) 2025-03-18 18:43:27 -05:00
chapoi 3816c49bbf Tiny misc fixes (#59) 2025-03-18 17:02:45 +01:00
chapoi f64d0cc6dc UX: update styling of overlapping alert new/updated topics (#56) 2025-03-18 17:01:49 +01:00
chapoi 71f246c8a3 Button hover style reapply (#58) 2025-03-18 09:28:25 -05:00
Jordan Vidrine 970ee33771 cleanup (#55) 2025-03-17 19:49:30 -05:00
Jordan Vidrine 2c41c2ffab fix user page (#54) 2025-03-17 15:13:39 -05:00
Martin Brennan 185651b10d DEV: Remove search banner dependency (#53)
Followup dfa22d21b6,
the search banner has been replaced in core
with the welcome banner, this is no longer needed,
c.f. https://github.com/discourse/discourse/pull/31516
2025-03-17 11:45:14 +08:00
Jordan Vidrine dfa22d21b6 UX: Welcome banner merge prep (#49)
This PR preps the Horizon theme for the merger of the search banner into core. This PR should only be merged once this PR in core has been merged.
2025-03-17 12:18:54 +10:00
Jordan Vidrine 598f4fce65 fix (#52) 2025-03-14 17:13:38 -05:00
Jordan Vidrine 144c3dff8f DEV: main container sizing & border radius cleanup (#51) 2025-03-14 16:12:54 -05:00
Jordan Vidrine 8b09523510 DEV: Button stylesheet cleanup (#50) 2025-03-14 15:30:00 -05:00
Jordan Vidrine f70c452f26 selected (#48) 2025-03-12 13:52:05 -05:00
Jordan Vidrine 3911572b29 UX: More fixes (#47) 2025-03-12 13:39:27 -05:00
Jordan Vidrine 7fe1b87f82 small tweaks (#46) 2025-03-12 12:27:56 -05:00
Martin Brennan d85097774f DEV: Add high level system spec and clean up JS (#34) 2025-03-12 10:18:36 -05:00
chapoi 9a5759ae86 Tweak to color shadows, sidebar font-size, general small fixes (#36) 2025-03-12 10:02:45 -05:00
Jordan Vidrine 7023cc0f97 add margin to select menu (#45) 2025-03-11 17:21:46 -05:00
Jordan Vidrine feae5a0214 hide topic list trigger (#44) 2025-03-11 17:21:28 -05:00
Jordan Vidrine 81b7466224 fix sidebar group chat icon (#43) 2025-03-11 17:20:26 -05:00
Jordan Vidrine 97b379eb08 UX: font smoothing (#42) 2025-03-11 17:20:14 -05:00
Jordan Vidrine 1f55a9d9a2 fixes (#41) 2025-03-11 17:19:41 -05:00
Jordan Vidrine f4d5b3b97e UX: Color fixes (#40) 2025-03-11 16:29:35 -05:00
Jordan Vidrine 09ef1d2a14 paintbrush (#39) 2025-03-11 14:48:10 -05:00
Jordan Vidrine d1800ffd98 PR: Custom Color Choice (#38) 2025-03-11 14:45:04 -05:00
Jordan Vidrine 664e3a5910 UX: Small tweaks to colors (#37) 2025-03-11 14:01:34 -05:00
chapoi cdf49bd516 Button styling and states (#35) 2025-03-11 12:01:18 -05:00
Jordan Vidrine a90b691505 UX: Color exploration & base (#33) 2025-03-11 11:24:20 -05:00
Jordan Vidrine eca05948c3 UX:Breakpoint padding (#32) 2025-03-10 15:56:17 -05:00
Jordan Vidrine cef5ad279c fix target (#31) 2025-03-10 13:15:44 -05:00
chapoi fc97ab99fe Mobile: topic list, topic view, sidebar tweaks 2025-03-10 16:50:13 +01:00
Jordan Vidrine 9e96704c24 UX: Mobile fix (#29) 2025-03-08 09:45:06 +00:00
Jordan Vidrine 536b58feba small-mobile-fix (#28) 2025-03-07 14:54:20 -06:00
Jordan Vidrine 35a4642042 UX: Width & calculation adjustments for main container (#27) 2025-03-07 12:01:26 -06:00
David Taylor 3777405f0b DEV: Use resize observer (#25) 2025-03-07 11:40:19 -06:00
Jordan Vidrine e18b9e89eb fix (#24) 2025-03-06 20:30:27 -06:00
Jordan Vidrine 9381e56c47 UX: Dark mode changes to move toward a base of accent-color (#23) 2025-03-06 20:30:07 -06:00
Jordan Vidrine 9a8a9d4ad3 UX: More tweaks & fixes (#22) 2025-03-06 15:54:45 -06:00
chapoi 91f3cc3ebb Mobile: Topic list and topic (#19) 2025-03-06 14:09:19 -06:00
Jordan Vidrine 7d53fe08ce button/chat fixes (#21) 2025-03-06 13:20:12 -06:00
Jordan Vidrine 328b8cbab5 UX: More desktop tweaks (#20) 2025-03-06 13:00:56 -06:00
Martin Brennan ef2925a663 FIX: i18n import in status column component (#18) 2025-03-06 13:49:32 +10:00
Jordan Vidrine 41ee5a5358 DEV: Merge topic list card component (#17)
This PR merges the topic-list-item card component into the nextgen theme.

Also does the following cleanup:

* Use template-only ember components
* Use `fire` instead of deprecated `fa-fire` icon
* Lower version requirement for node to 18 to match core
* Add english locale strings for topic status column
* Remove dummy theme settings

---------

Co-authored-by: Martin Brennan <martin@discourse.org>
2025-03-06 13:35:27 +10:00
Jordan Vidrine f406bfbedf UX: Misc desktop edits (#15) 2025-03-05 20:29:58 -06:00
chapoi af4c0c540f UX: desktop tweaks (#14) 2025-03-05 17:05:48 +01:00
Kris b6d11ddb9b UX: more dark mode adjustments (#13) 2025-03-04 19:07:52 -05:00
Kris 257032dc01 UX: start removing hardcoded colors for dark mode support (#12) 2025-03-04 16:10:11 -05:00
Ty Correll 229ad5d6bd UI: Fix overlap between search banner search results and nav container (#10) 2025-03-01 13:34:07 -06:00
Jordan Vidrine 076263c7f5 UX: More small fixes (#9) 2025-02-28 15:33:06 -06:00
Jordan Vidrine 8e841a4b2e UX: z-index box view (#8) 2025-02-28 15:01:04 -06:00
Jordan Vidrine a69c5216ed fixes (#7) 2025-02-28 14:48:14 -06:00
Jordan Vidrine 447ed0f27c admin (#6) 2025-02-28 11:44:55 -06:00
chapoi 353b955eed Non layout styling (#5) 2025-02-28 11:29:27 -06:00
chapoi 720f0bb127 some styling + scope chat (#3) 2025-02-28 09:28:45 +10:00
39 changed files with 2295 additions and 152 deletions
+26 -12
View File
@@ -1,5 +1,5 @@
{ {
"name": "next-gen", "name": "Horizon Theme",
"authors": "Design Team", "authors": "Design Team",
"about_url": "TODO: Put your theme's public repo or Meta topic URL here", "about_url": "TODO: Put your theme's public repo or Meta topic URL here",
"license_url": "TODO: Put your theme's LICENSE URL here", "license_url": "TODO: Put your theme's LICENSE URL here",
@@ -8,19 +8,33 @@
"minimum_discourse_version": null, "minimum_discourse_version": null,
"maximum_discourse_version": null, "maximum_discourse_version": null,
"assets": {}, "assets": {},
"modifiers": {}, "modifiers": {
"svg_icons": ["fire"]
},
"components": [
"https://github.com/discourse/discourse-sidebar-new-topic-button.git",
"https://github.com/discourse/discourse-full-width-component.git"
],
"color_schemes": { "color_schemes": {
"next_gen": { "Horizon": {
"primary": "1A1A1A", "primary": "1A1A1A",
"secondary": "F5F8FF", "secondary": "ffffff",
"header_background": "F5F8FF", "header_background": "f5f8ff",
"tertiary": "595bca" "tertiary": "595bca",
"tertiary-low": "d8d9f3",
"tertiary-50": "f5f8ff",
"selected": "d8d9f3",
"hover": "ebebf9"
}, },
"next_gen_dark": { "Horizon Dark": {
"primary": "F5F8FF", "primary": "F1EFF9",
"secondary": "1A1A1A", "secondary": "1e1a36",
"header_background": "1A1A1A", "header_background": "00091d",
"tertiary": "595bca" "header_primary": "F5F8FF",
"tertiary": "6465ab",
"tertiary-50": "131124",
"selected": "1e1a36",
"hover": "131124"
} }
} }
} }
+14 -7
View File
@@ -1,10 +1,17 @@
@import "variables"; @import "box-view";
@import "header";
@import "sidebar";
@import "main";
@import "topic-cards";
@import "search-banner";
@import "nav-pills";
@import "buttons"; @import "buttons";
@import "chat"; @import "chat";
@import "color-choice";
@import "color-exploration";
@import "composer";
@import "header";
@import "hiddenstuff"; @import "hiddenstuff";
@import "main";
@import "misc";
@import "mobile-stuff";
@import "nav-pills";
@import "search-banner";
@import "sidebar";
@import "topic";
@import "topic-cards";
@import "variables";
@@ -0,0 +1,8 @@
import { apiInitializer } from "discourse/lib/api";
import CustomColorHtmlClass from "../components/custom-color-html-class";
import ExperimentalScreen from "../components/experimental-screen";
export default apiInitializer("1.8.0", (api) => {
api.renderInOutlet("above-main-container", ExperimentalScreen);
api.renderInOutlet("above-main-container", CustomColorHtmlClass);
});
@@ -1,5 +0,0 @@
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.8.0", (/* api */) => {
// console.log("hello world from api initializer!");
});
@@ -0,0 +1,6 @@
import { apiInitializer } from "discourse/lib/api";
import CustomUserPalette from "../components/custom-user-palette";
export default apiInitializer("1.8.0", (api) => {
api.renderInOutlet("sidebar-footer-actions", CustomUserPalette);
});
@@ -0,0 +1,9 @@
import avatar from "discourse/helpers/avatar";
const TopicAuthorAvatarColumn = <template>
<span class="topic-author-avatar">
{{avatar @topic.creator imageSize="large"}}
</span>
</template>;
export default TopicAuthorAvatarColumn;
@@ -0,0 +1,5 @@
const TopicAuthorColumn = <template>
<span class="topic-author">@{{@topic.creator.username}}</span>
</template>;
export default TopicAuthorColumn;
@@ -0,0 +1,7 @@
import { categoryLinkHTML } from "discourse/helpers/category-link";
const TopicCategoryColumn = <template>
{{categoryLinkHTML @topic.category}}
</template>;
export default TopicCategoryColumn;
@@ -0,0 +1,9 @@
import icon from "discourse/helpers/d-icon";
const TopicLikesColumn = <template>
{{#if @topic.like_count}}
<span class="topic-likes">{{icon "heart"}}{{@topic.like_count}}</span>
{{/if}}
</template>;
export default TopicLikesColumn;
@@ -0,0 +1,10 @@
import icon from "discourse/helpers/d-icon";
import gt from "truth-helpers/helpers/gt";
const TopicRepliesColumn = <template>
{{#if (gt @topic.posts_count 1)}}
<span class="topic-replies">{{icon "reply"}}{{@topic.posts_count}}</span>
{{/if}}
</template>;
export default TopicRepliesColumn;
@@ -0,0 +1,115 @@
import Component from "@glimmer/component";
import { on } from "@ember/modifier";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { and } from "truth-helpers";
import icon from "discourse/helpers/d-icon";
import { i18n } from "discourse-i18n";
export default class TopicStatusColumn extends Component {
@service currentUser;
@service siteSettings;
get canAct() {
return this.currentUser && !this.args.disableActions;
}
get statusClass() {
let classes = ["topic-status-card"];
if (this.args.topic.bookmarked) {
classes.push("--bookmark");
} else if (this.args.topic.closed && this.args.topic.archived) {
classes.push("--locked --archived");
} else if (this.args.topic.closed) {
classes.push("--locked");
} else if (this.args.topic.archived) {
classes.push("--archived");
} else if (this.args.topic.is_warning) {
classes.push("--warning");
} else if (
this.args.showPrivateMessageIcon &&
this.args.topic.isPrivateMessage
) {
classes.push("--private-message");
} else if (this.args.topic.pinned) {
classes.push("--pinned");
} else if (this.args.topic.unpinned) {
classes.push("--unpinned");
}
return classes.join(" ");
}
get heatMap() {
return this.args.topic.views > this.siteSettings.topic_views_heat_medium;
}
@action
togglePinned(event) {
event.preventDefault();
this.args.topic.togglePinnedForUser();
}
<template>
{{#if @topic.bookmarked}}
<span class={{this.statusClass}}>{{icon "bookmark"}}{{i18n
(themePrefix "topic_bookmarked")
}}</span>
{{/if}}
{{#if (and @topic.closed @topic.archived)~}}
<span class={{this.statusClass}}>{{i18n
(themePrefix "topic_closed_and_archived")
}}</span>
{{else if @topic.closed}}
<span class={{this.statusClass}}>{{i18n
(themePrefix "topic_closed")
}}</span>
{{else if @topic.archived}}
<span class={{this.statusClass}}>{{i18n
(themePrefix "topic_archived")
}}</span>
{{/if}}
{{#if @topic.is_warning}}
<span class={{this.statusClass}}>{{i18n
(themePrefix "topic_warning")
}}</span>
{{else if (and @showPrivateMessageIcon @topic.isPrivateMessage)}}
<span class={{this.statusClass}}>{{i18n
(themePrefix "topic_personal_message")
}}</span>
{{/if}}
{{#if @topic.pinned}}
{{#if this.canAct}}
<button
type="button"
{{on "click" this.togglePinned}}
class={{this.statusClass}}
>{{icon "thumbtack"}}{{i18n (themePrefix "topic_pinned")}}</button>
{{else}}
<span class={{this.statusClass}}>{{icon "thumbtack"}}{{i18n
(themePrefix "topic_pinned")
}}</span>
{{/if}}
{{else if @topic.unpinned}}
{{#if this.canAct}}
<button
type="button"
{{on "click" this.togglePinned}}
class={{this.statusClass}}
>{{icon "thumbtack" class="unpinned"}}{{i18n
(themePrefix "topic_unpinned")
}}</button>
{{else}}
<span class={{this.statusClass}}>{{icon
"thumbtack"
class="unpinned"
}}{{i18n (themePrefix "topic_unpinned")}}</span>
{{/if}}
{{/if}}
{{#if this.heatMap}}
<span class="topic-status-card --hot">{{icon "fire"}}{{i18n
(themePrefix "topic_hot")
}}</span>
{{/if}}
</template>
}
@@ -0,0 +1,12 @@
import Component from "@glimmer/component";
import { concat } from "@ember/helper";
import { service } from "@ember/service";
import htmlClass from "discourse/helpers/html-class";
export default class CustomColorHtmlClass extends Component {
@service customColor;
<template>
{{htmlClass (concat "custom-color-" this.customColor.color)}}
</template>
}
@@ -0,0 +1,60 @@
import icon from "discourse/helpers/d-icon";
import DMenu from "float-kit/components/d-menu";
import SitePaletteMenuItem from "./site-palette-menu-item";
const PALETTES = [
{
label: "Marigold",
name: "marigold",
color: "#d3881f",
},
{
label: "Violet",
name: "violet",
color: "#9b15de",
},
{
label: "Lily",
name: "lily",
color: "#CC336F",
},
{
label: "Clover",
name: "clover",
color: "#45a06e",
},
{
label: "Royal",
name: "royal",
color: "#4169e1",
},
{
label: "Horizon",
name: "horizon",
color: "#595bca",
},
];
export const DEFAULT_PALETTE_NAME = "horizon";
<template>
<DMenu
@identifier="user-color-palette"
@placementStrategy="fixed"
class="btn-flat user-color-palette sidebar-footer-actions-button"
@inline={{true}}
>
<:trigger>
{{icon "paintbrush"}}
</:trigger>
<:content>
<div class="color-palette-menu">
<div class="color-palette-menu__content">
{{#each PALETTES as |colorPalette|}}
<SitePaletteMenuItem @colorPalette={{colorPalette}} />
{{/each}}
</div>
</div>
</:content>
</DMenu>
</template>
@@ -0,0 +1,57 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
import { htmlSafe } from "@ember/template";
import { bind } from "discourse/lib/decorators";
export default class ExperimentalScreen extends Component {
@tracked left = 0;
@tracked right = 0;
resizeObserver;
willDestroy() {
super.willDestroy(...arguments);
this.resizeObserver.disconnect();
}
@bind
calculateDistance(element) {
const distance = element.getBoundingClientRect();
this.left = distance.left;
this.right = distance.right;
}
get distanceStyles() {
return htmlSafe(
`--left-distance: ${this.left}px; --right-distance: ${this.right}px;`
);
}
@action
onInsert(element) {
this.calculateDistance(element);
this.resizeObserver = new ResizeObserver((entries) => {
for (const entry of entries) {
this.calculateDistance(entry.target);
}
});
this.resizeObserver.observe(element);
}
<template>
<ul
class="experimental-screen"
{{didInsert this.onInsert}}
style={{this.distanceStyles}}
>
<li class="experimental-screen__top-left"></li>
<li class="experimental-screen__top-right"></li>
<li class="experimental-screen__bottom-left"></li>
<li class="experimental-screen__bottom-right"></li>
<li class="experimental-screen__bottom-bar"></li>
</ul>
</template>
}
@@ -0,0 +1,41 @@
import Component from "@glimmer/component";
import { fn } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
export default class SitePaletteMenuItem extends Component {
@service customColor;
get siteStyle() {
return `--icon-color: ${this.args.colorPalette.color}`;
}
get activeClass() {
if (this.customColor.color === this.args.colorPalette.name) {
return "active";
}
}
@action
handleInput(colorPalette) {
this.customColor.setColor(colorPalette.name);
}
<template>
<div class="color-palette-menu__item" data-color={{@colorPalette.name}}>
<DButton
class={{concatClass
"btn-flat color-palette-menu__item-choice"
this.activeClass
}}
style={{htmlSafe this.siteStyle}}
@icon="circle"
@translatedLabel={{@colorPalette.label}}
@action={{fn this.handleInput @colorPalette}}
/>
</div>
</template>
}
@@ -0,0 +1,81 @@
import { withPluginApi } from "discourse/lib/plugin-api";
import TopicAuthorAvatarColumn from "../components/card/topic-author-avatar-column";
import TopicAuthorColumn from "../components/card/topic-author-column";
import TopicCategoryColumn from "../components/card/topic-category-column";
import TopicLikesColumn from "../components/card/topic-likes-column";
import TopicRepliesColumn from "../components/card/topic-replies-column";
import TopicStatusColumn from "../components/card/topic-status-column";
const TopicAuthor = <template>
<td class="topic-author-data">
<TopicAuthorColumn @topic={{@topic}} />
</td>
</template>;
const TopicAuthorAvatar = <template>
<td class="topic-author-avatar-data">
<TopicAuthorAvatarColumn @topic={{@topic}} />
</td>
</template>;
const TopicCategoryStatus = <template>
<td class="topic-category-status-data">
<TopicCategoryColumn @topic={{@topic}} />
<TopicStatusColumn @topic={{@topic}} />
</td>
</template>;
const TopicLikesReplies = <template>
<td class="topic-likes-replies-data">
<TopicLikesColumn @topic={{@topic}} />
<TopicRepliesColumn @topic={{@topic}} />
</td>
</template>;
export default {
name: "topic-list-customizations",
initialize() {
withPluginApi("1.39.0", (api) => {
api.registerValueTransformer(
"topic-list-columns",
({ value: columns }) => {
columns.add("topic-author", {
item: TopicAuthor,
after: "activity",
});
columns.add("topic-category-status", {
item: TopicCategoryStatus,
after: "topic-author",
});
columns.add("topic-author-avatar", {
item: TopicAuthorAvatar,
after: "topic-category-status",
});
columns.add("topic-likes-replies", {
item: TopicLikesReplies,
after: "topic-author-avatar",
});
columns.delete("posters");
columns.delete("views");
columns.delete("replies");
return columns;
}
);
api.registerValueTransformer(
"topic-list-item-class",
({ value: classes, context }) => {
if (context.topic.pinned || context.topic.pinned_globally) {
classes.push("--pinned");
}
return classes;
}
);
api.registerValueTransformer("topic-list-item-mobile-layout", () => {
return false;
});
});
},
};
@@ -0,0 +1,18 @@
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import Service, { service } from "@ember/service";
import { DEFAULT_PALETTE_NAME } from "../components/custom-user-palette";
const CUSTOM_COLOR_KEY = "d-custom-color-preference";
export default class CustomColor extends Service {
@service keyValueStore;
@tracked
color = this.keyValueStore.getItem(CUSTOM_COLOR_KEY) || DEFAULT_PALETTE_NAME;
@action
setColor(color) {
this.color = color;
this.keyValueStore.setItem(CUSTOM_COLOR_KEY, color);
}
}
+10 -3
View File
@@ -1,5 +1,12 @@
en: en:
theme_metadata: theme_metadata:
description: '' description: "A simple, beautiful theme that improves the out of the box experience for Discourse sites."
settings: topic_bookmarked: "Bookmarked"
example_setting: A description of a setting. topic_closed_archived: "Closed and archived"
topic_closed: "Closed"
topic_archived: "Archived"
topic_warning: "Warning"
topic_personal_message: "Personal message"
topic_pinned: "Pinned"
topic_unpinned: "Unpinned"
topic_hot: "Hot"
View File
+1 -1
View File
@@ -7,7 +7,7 @@
"prettier": "2.8.8" "prettier": "2.8.8"
}, },
"engines": { "engines": {
"node": ">= 22", "node": ">= 18",
"npm": "please-use-pnpm", "npm": "please-use-pnpm",
"yarn": "please-use-pnpm", "yarn": "please-use-pnpm",
"pnpm": "9.x" "pnpm": "9.x"
+133
View File
@@ -0,0 +1,133 @@
@media screen and (min-width: 1300px) {
#main-outlet {
border-top-right-radius: var(--d-border-radius-large);
border-top-left-radius: var(--d-border-radius-large);
}
}
.chat-drawer-active.chat-drawer-expanded {
.experimental-screen {
&__top-left,
&__top-right,
&__bottom-left,
&__bottom-right,
&__bottom-bar {
z-index: 199;
}
}
}
.has-full-page-chat .chat-replying-indicator-container {
margin-bottom: var(--d-border-radius-large);
@include breakpoint(medium) {
margin-bottom: 0;
}
}
.has-full-page-chat .chat-selection-management {
margin-bottom: var(--d-border-radius-large);
@include breakpoint(medium) {
margin-bottom: 0;
}
}
.experimental-screen {
@include breakpoint(medium) {
display: none;
}
max-width: unset !important;
@media screen and (max-width: 488px) {
display: none;
}
width: 100%;
display: block;
margin: 0;
padding: 0;
position: relative;
container: content-width / inline-size;
li {
list-style: none;
margin: 0;
padding: 0;
}
&__top-left,
&__top-right,
&__bottom-left,
&__bottom-right {
position: fixed;
width: var(--d-border-radius-large);
height: var(--d-border-radius-large);
background-color: var(--background-color);
z-index: 399;
-webkit-mask: radial-gradient(
circle at var(--d-border-radius-large) var(--d-border-radius-large),
transparent var(--d-border-radius-large),
transparent var(--d-border-radius-large),
black var(--d-border-radius-large)
);
}
&__top-left {
top: var(--header-offset);
left: var(--left-distance);
}
&__top-right {
top: var(--header-offset);
transform: rotate(90deg);
left: calc(var(--right-distance) - var(--d-border-radius-large));
}
&__bottom-left {
transform: rotate(-90deg);
bottom: var(--d-border-radius-large);
left: var(--left-distance);
@media screen and (max-width: 768px) {
bottom: calc(var(--d-border-radius-large) * 2);
}
}
&__bottom-right {
transform: rotate(180deg);
bottom: var(--d-border-radius-large);
left: calc(var(--right-distance) - var(--d-border-radius-large));
@media screen and (max-width: 768px) {
bottom: calc(var(--d-border-radius-large) * 2);
}
}
&__bottom-bar {
position: fixed;
width: 100%;
z-index: 399;
background-color: var(--background-color);
bottom: 0;
left: var(--left-distance);
height: var(--d-border-radius-large);
@media screen and (max-width: 768px) {
height: calc(var(--d-border-radius-large) * 2);
}
@container content-width (width > 1px) {
width: 100cqw;
}
}
}
@media screen and (min-width: 768px) {
.with-topic-progress {
bottom: calc(
env(safe-area-inset-bottom) + var(--composer-height, 0px) +
var(--d-border-radius-large)
);
}
}
@media screen and (max-width: 768px) {
.with-topic-progress {
bottom: calc(
env(safe-area-inset-bottom) + var(--composer-height, 0px) +
calc(var(--d-border-radius-large) * 2)
);
}
}
@media screen and (max-width: 400px) {
.with-topic-progress {
bottom: calc(env(safe-area-inset-bottom) + var(--composer-height, 0px));
}
}
+78 -10
View File
@@ -2,18 +2,86 @@
--d-button-border-radius: 6.25rem; --d-button-border-radius: 6.25rem;
} }
.btn { .discourse-no-touch .topic-body .actions .fade-out {
padding: 0.5em 1rem; transition: none;
} }
.btn-default { .sidebar-new-topic-button__wrapper .topic-drafts-menu-trigger.btn.no-text {
border: 1px solid var(--accent-color); background: var(--accent-color);
background: var(--secondary); &:hover,
} &:focus-visible {
#create-topic.btn { background: oklch(from var(--accent-color) 40% c h) !important;
background-color: var(--accent-color); box-shadow: none;
color: var(--accent-text-color); }
svg { .d-icon {
color: var(--accent-text-color); color: var(--accent-text-color);
} }
} }
.discourse-no-touch .dropdown-menu__item .btn {
background: transparent;
}
.discourse-no-touch .btn-default.sidebar-new-topic-button,
.discourse-no-touch .btn-default,
.discourse-no-touch .select-kit .select-kit-header.btn-default {
background: var(--primary-100);
.d-icon {
color: var(--accent-color);
}
&:hover {
border-color: transparent;
box-shadow: 0px 0px 8px 1px var(--button-box-shadow);
background: var(--d-content-background);
color: var(--accent-color);
.d-icon {
color: var(--accent-color);
}
}
&:focus-visible {
background: var(--d-content-background);
color: var(--accent-color);
box-shadow: 0px 0px 0px 3px var(--button-box-shadow);
.d-icon {
color: var(--accent-color);
}
}
&:active:not(:hover, :focus) {
color: var(--primary);
background: var(--tertiary-300);
background-image: none;
.d-icon {
color: var(--tertiary-high);
}
}
}
.btn-primary,
#create-topic.btn {
background-color: var(--accent-color);
color: var(--accent-text-color);
.d-icon {
color: var(--accent-text-color);
}
&:hover {
.discourse-no-touch & {
background: oklch(from var(--accent-color) 40% c h) !important;
box-shadow: 0px 0px 6px 1px var(--button-box-shadow);
color: var(--accent-text-color);
.d-icon {
color: var(--accent-text-color);
}
}
}
&:focus-visible {
.discourse-no-touch & {
background: oklch(from var(--accent-color) 40% c h) !important;
box-shadow: 0px 0px 0px 4px var(--button-box-shadow);
color: var(--accent-text-color);
}
}
&:active {
background: oklch(from var(--accent-color) 30% c h) !important;
}
}
+50 -7
View File
@@ -1,10 +1,53 @@
.c-navbar-container { .full-page-chat.full-page-chat-sidebar-enabled {
background-color: light-dark(#ffffff, #000000); border: none;
border-top-right-radius: var(--d-border-radius-large);
border-top-left-radius: var(--d-border-radius-large);
} }
.chat-message-container, .c-navbar-container {
.chat-transcript { padding: 0 1.5em;
background: transparent; background-color: var(--d-content-background);
}
body.has-full-page-chat {
background-color: var(--background-color);
}
.chat-drawer-container {
.is-expanded & {
box-shadow: 0px 0px 0px 2px var(--d-chat-border);
}
.chat-drawer.is-expanded & {
border: none;
}
}
.chat-drawer-outlet-container {
z-index: z("composer", "content");
}
.chat-drawer .channels-list-container .chat-channel-row {
margin-bottom: var(--spacing-block-xs);
font-size: var(--font-up-1);
border-radius: var(--d-border-radius);
border-bottom: none;
&:hover {
background-color: var(--d-sidebar-active-background);
}
}
.channel-title {
font-weight: bold;
text-transform: uppercase;
font-size: var(--font-down-1);
}
.chat-composer__wrapper {
background: var(--d-content-background);
}
.chat-message-actions .more-buttons .btn-icon-text {
&:hover {
background-color: var(--d-selected);
box-shadow: none;
color: var(--primary);
}
} }
+49
View File
@@ -0,0 +1,49 @@
.color-palette-menu {
&__item .btn-icon-text.btn-flat {
background-color: var(--d-content-background);
width: 100%;
justify-content: flex-start;
}
&__item .btn-icon-text.btn-flat:hover {
background-color: var(--d-selected);
box-shadow: none;
color: var(--primary);
}
&__item .btn-icon-text.btn-flat:hover svg {
color: var(--icon-color);
}
&__item .btn-icon-text.btn-flat svg {
color: var(--icon-color);
}
&__item-choice.active.btn-icon-text.btn-flat {
background-color: var(--d-selected);
}
}
.user-color-palette-content .fk-d-menu__inner-content {
border: none;
}
html.custom-color-horizon {
--accent-base-color: #595bca;
}
html.custom-color-marigold {
--accent-base-color: #d3881f;
}
html.custom-color-violet {
--accent-base-color: #9b15de;
}
html.custom-color-lily {
--accent-base-color: #cc338c;
}
html.custom-color-clover {
--accent-base-color: #45a06e;
}
html.custom-color-royal {
--accent-base-color: #4169e1;
}
+121
View File
@@ -0,0 +1,121 @@
:root {
--accent-base-color: #595bca;
--accent-color: light-dark(
var(--accent-base-color),
oklch(from var(--accent-base-color) calc(l * 0.95) c h)
);
// --background-color: light-dark(#f5f8ff, #101112);
--background-color: light-dark(
oklch(from var(--accent-color) 98% calc(c * 0.25) h),
oklch(from var(--accent-color) 10% 0.025 h)
);
--header_primary-low-mid: light-dark(
oklch(from var(--background-color) calc(l * 0.75) calc(c * 2) h),
oklch(from var(--accent-color) calc(l * 1) calc(c * 0.25) h)
);
--header_primary-medium: light-dark(
oklch(from var(--background-color) calc(l * 0.55) calc(c * 2) h),
oklch(from var(--accent-color) calc(l * 1.35) calc(c * 0.25) h)
);
--d-content-background: light-dark(
oklch(from var(--accent-color) calc(l * 2) 0 h),
oklch(from var(--accent-color) calc(l * 0.375) 0 h)
);
--primary-100: light-dark(#f2f2f2, #333333);
--primary-300: light-dark(#d1d1d1, #838383);
--primary-low: light-dark(#e9e9e9, #313131);
--primary-high: light-dark(#646464, #a6a6a6);
--primary-very-high: light-dark(#434343, #c7c7c7);
--d-hover: oklch(from var(--d-selected) l c h / 0.75);
--tertiary: var(--accent-color);
--tertiary-medium: light-dark(
oklch(from var(--accent-color) calc(l * 1.25) calc(c * 0.25) h),
oklch(from var(--accent-color) calc(l * 0.75) calc(c * 0.25) h)
);
--tertiary-very-low: light-dark(
oklch(from var(--accent-color) calc(l * 1.75) calc(c * 0.25) h),
oklch(from var(--accent-color) calc(l * 0.5) calc(c * 0.25) h)
);
--tertiary-med-or-tertiary: var(--accent-color);
--tertiary-low: light-dark(
oklch(from var(--accent-color) calc(l * 1.6) calc(c * 0.25) h),
oklch(from var(--accent-color) calc(l * 0.6) calc(c * 0.25) h)
);
--tertiary-300: light-dark(
oklch(from var(--accent-color) calc(l * 1.5) calc(c * 2) h),
oklch(from var(--accent-color) calc(l * 0.65) calc(c * 0.65) h)
);
--tertiary-high: light-dark(
oklch(from var(--accent-color) calc(l * 1) c h),
oklch(from var(--accent-color) calc(l * 1) c h)
);
--d-sidebar-highlight-hover-icon: var(--d-sidebar-link-color);
--search-color: light-dark(
oklch(from var(--accent-color) calc(l * 0.65) calc(c * 0.65) h),
oklch(from var(--accent-color) calc(l * 1.5) calc(c * 2) h)
);
--search-banner-text-color: light-dark(
oklch(from var(--accent-color) calc(l * 0.65) calc(c * 0.65) h),
oklch(from var(--accent-color) calc(l * 1.85) calc(c * 2) h)
);
--topic-card-shadow: light-dark(
oklch(from var(--accent-color) calc(l * 1.85) calc(c * 0.5) h),
oklch(from var(--accent-color) calc(l * 0.2) calc(c * 0.01) h / 0.25)
);
--button-box-shadow: light-dark(
oklch(from var(--accent-color) calc(l * 1.5) calc(c * 0.35) h),
oklch(from var(--accent-color) calc(l * 0.75) calc(c * 0.5) h)
);
--d-selected: light-dark(
oklch(from var(--background-color) calc(l * 0.9375) calc(c * 2) h),
oklch(from var(--accent-color) calc(l * 0.7) calc(c * 0.25) h)
);
--d-sidebar-highlight-hover-background: var(--d-selected);
--d-sidebar-border-color: light-dark(
oklch(from var(--background-color) calc(l * 0.9) calc(c * 1) h),
oklch(from var(--accent-color) calc(l * 0.7) calc(c * 0.25) h)
);
--d-chat-border: light-dark(
oklch(from var(--accent-color) calc(l * 1.25) calc(c * 0.25) h),
oklch(from var(--accent-color) calc(l * 0.25) calc(c * 0.25) h)
);
--accent-text-color: light-dark(#ffffff, #212121);
--d-nav-color--active: var(--accent-color);
--d-sidebar-background: var(--background-color);
--d-sidebar-footer-fade: rgba(var(--tertiary-50-rgb), 1);
--d-sidebar-link-color: light-dark(
oklch(from var(--accent-color) calc(l * 0.8) calc(c * 0.25) h),
oklch(from var(--accent-color) calc(l * 1.5) calc(c * 0.25) h)
);
--d-sidebar-link-icon-color: var(--d-sidebar-link-color);
--d-sidebar-header-color: var(--d-sidebar-link-color);
--d-sidebar-header-icon-color: var(--d-sidebar-link-color);
--d-sidebar-suffix-color: light-dark(
oklch(from var(--accent-base-color) calc(l * 1) calc(c * 0.9) h),
oklch(from var(--accent-base-color) calc(l * 1) calc(c * 0.9) h)
);
--d-sidebar-active-suffix-color: var(--d-sidebar-suffix-color);
--link-color: light-dark(
var(--accent-base-color),
oklch(from var(--accent-base-color) calc(l * 0.95) c h)
);
--link-color-hover: light-dark(
var(--accent-base-color),
oklch(from var(--accent-base-color) calc(l * 1.5) calc(c * 2.25) h)
);
--d-sidebar-prefix-background: var(--d-selected);
--d-sidebar-active-prefix-background: light-dark(
oklch(from var(--d-selected) calc(l * 0.85) c h),
oklch(from var(--d-selected) calc(l * 0.7) c h)
);
--d-sidebar-highlight-prefix-background: light-dark(
oklch(from var(--d-selected) calc(l * 0.85) c h),
oklch(from var(--d-selected) calc(l * 0.7) c h)
);
--d-sidebar-highlight-suffix-color: var(--d-sidebar-active-suffix-color);
--d-sidebar-highlight-color: var(--primary);
--d-sidebar-highlight-background: var(--d-selected);
--d-sidebar-section-link-icon-size: 1em;
--d-input-bg-color: var(--d-content-background);
--tertiary-hover: var(--accent-color);
}
+40
View File
@@ -0,0 +1,40 @@
#reply-control
.select-kit.dropdown-select-box.composer-actions
.select-kit-header {
border: 1px solid var(--tertiary-700);
background: var(--secondary);
&:hover {
.d-icon {
color: var(--accent-color);
}
}
}
.d-editor-button-bar {
.btn:hover,
.toolbar-popup-menu-options.is-expanded {
.discourse-no-touch & {
background: var(--tertiary-very-low);
color: var(--accent-color);
.d-icon {
color: inherit;
}
//to have parity with regular select-kit styling used elsewhere
.select-kit-row {
.d-icon {
color: var(--primary-high);
}
&:hover {
.d-icon {
color: var(--primary);
}
}
}
}
}
.toolbar-popup-menu-options.is-expanded {
border-radius: var(--d-border-radius);
}
}
+204 -2
View File
@@ -1,6 +1,208 @@
.d-header { .d-header {
box-shadow: none; box-shadow: none;
background: var(--background-color);
@include breakpoint(extra-large, $rule: min-width) {
padding-bottom: 1em;
}
} }
.desktop-view .d-header {
background: transparent; .has-full-page-chat .d-header {
background-color: transparent;
}
.user-menu .quick-access-panel,
.user-notifications-list {
li {
&.pending,
&.unread {
background: var(--d-hover);
.discourse-no-touch & {
&:hover,
&:focus {
background: var(--d-selected);
}
}
}
}
}
.user-menu.revamped .tabs-list .btn.active {
background: var(--d-hover);
}
.discourse-no-touch .d-header-icons .icon:hover,
.discourse-no-touch .d-header-icons .icon:focus,
.header-sidebar-toggle button:focus:hover,
.discourse-no-touch .header-sidebar-toggle button:hover {
background-color: transparent;
}
.discourse-no-touch .d-header-icons .icon:hover > .d-icon,
.drop-down-mode .d-header-icons .active .icon > .d-icon,
.drop-down-mode
.d-header-icons
.header-color-scheme-toggle
.-expanded
> .d-icon {
color: var(--header_primary-medium);
}
.discourse-no-touch .interface-color-selector-content {
border: none;
border-radius: var(--d-border-radius);
.btn {
border: none;
&:hover {
box-shadow: none;
}
}
}
.drop-down-mode .d-header-icons .active .icon,
.drop-down-mode .d-header-icons .header-color-scheme-toggle .-expanded {
border-color: transparent;
}
.drop-down-mode .d-header-icons .active .icon,
.drop-down-mode .d-header-icons .header-color-scheme-toggle .-expanded {
background-color: transparent;
}
.badge-notification {
color: var(--accent-text-color);
}
/*
.user-menu .quick-access-panel li,
.user-notifications-list li,
.user-menu .quick-access-panel li.do-not-disturb,
.menu-panel .panel-body-bottom .btn,
.menu-panel .panel-body-bottom .btn:hover {
background-color: var(--d-content-background);
}
*/
body.login-page,
body.signup-page,
body.invite-page,
body.password-reset-page,
body.activate-account-page {
.d-header {
background: var(--background-color);
}
}
// attempt to center the title
// by mirroring the body grid
.has-sidebar-page {
.d-header > .wrap {
.contents {
display: grid;
grid-template-columns: var(--d-sidebar-width) minmax(0, 1fr);
grid-template-rows: auto;
gap: 0; // gap will ruin the alignment
.header-sidebar-toggle,
.home-logo-wrapper-outlet {
grid-column: 1;
grid-row: 1;
justify-self: start;
}
.home-logo-wrapper-outlet {
margin-left: 3.5em;
margin-right: 0;
max-width: 13em; // crosses into column 2 beyond this
overflow: hidden;
}
.extra-info-wrapper {
grid-column: 2;
grid-row: 1;
justify-self: center;
max-width: 59em; // width of topic + timeline
padding: 0;
@media screen and (max-width: 1350px) {
justify-self: start;
box-sizing: border-box;
padding-left: 3em;
}
}
.panel {
grid-column: 2;
grid-row: 1;
justify-self: end;
padding-right: 1em;
// the title and panel don't exist on the same plane
// so we let the panel overlap the title
// and fade it out so it looks intentional
background: var(--background-color);
@media screen and (max-width: 850px) {
background: var(--secondary);
}
&:before {
content: "";
background: linear-gradient(
90deg,
rgba(255, 255, 255, 0) 0%,
var(--background-color) 80%
);
@media screen and (max-width: 850px) {
background: linear-gradient(
90deg,
rgba(255, 255, 255, 0) 0%,
var(--secondary) 80%
);
}
top: -0.5em;
bottom: 0;
height: 4em;
width: 3em;
left: -3em;
position: absolute;
display: flex;
}
}
// these will probably cause problems when used
.before-header-panel-outlet,
.after-header-panel-outlet {
grid-row: 1;
}
.before-header-panel-outlet {
&:has(.search-banner) {
grid-column: 2;
}
@media screen and (max-width: 1280px) {
.floating-search-input {
margin-left: 2.75em;
padding-right: 15em;
}
}
}
}
}
@media screen and (max-width: 1000px) {
&.search-header--visible
.floating-search-input
.search-banner-inner.wrap
.search-menu {
width: 100%;
}
}
} }
+6 -2
View File
@@ -1,5 +1,9 @@
.sidebar__panel-switch-button, .sidebar__panel-switch-button,
.sidebar-section[data-section-name="messages"], .list-controls #create-topic,
.list-controls #create-topic { .notifications-button-footer .reason .text,
.pinned-button .reason .text,
.more-topics__browse-more,
//footer-message might cause issues, not sure what possible stuff can be in there, but the general idea is to hide it bcs having an ugly H3 (what?) CTA at the bottom is just ugly imo
.footer-message {
display: none; display: none;
} }
+104 -58
View File
@@ -1,73 +1,119 @@
body, :root {
html { --main-grid-gap: 2em;
background-color: #f5f8ff;
} }
body:not(.archetype-regular, .has-full-page-chat) html:not(:has(.has-full-page-chat)) {
#main-outlet-wrapper background-color: var(--background-color);
#main-outlet {
overflow: scroll;
border-radius: var(--d-border-radius-large);
} }
body {
-webkit-font-smoothing: antialiased;
}
#main-outlet-wrapper { #main-outlet-wrapper {
margin-top: 1.5rem; gap: var(--main-grid-gap);
gap: 2em !important; }
height: calc(100vh - var(--header-offset) - 4rem);
box-sizing: border-box; body.has-sidebar-page.has-full-page-chat #main-outlet-wrapper {
> * { grid-column-gap: var(--main-grid-gap);
height: inherit; }
box-sizing: border-box;
body.has-full-page-chat:not(.has-sidebar-page) {
.d-header {
background-color: var(--background-color);
} }
#main-outlet-wrapper {
gap: var(--main-grid-gap);
@include breakpoint(medium) {
gap: 0;
}
}
}
body.has-sidebar-page #main-outlet-wrapper {
grid-template-columns: var(--d-sidebar-width) minmax(0, 1fr) 0px;
#main-outlet { #main-outlet {
width: 100%; max-width: unset;
height: inherit;
overflow: scroll;
&:has(.list-controls) {
padding-top: 0;
}
&:has(#topic-title) {
padding-top: 0;
}
> *:not(.full-page-chat) {
max-width: 1000px;
margin-inline: auto;
}
border-radius: var(--d-border-radius-large);
border-radius: 1.25rem;
.navigation-topics & {
background: radial-gradient(
100.59% 70.87% at 41.19% 73.28%,
rgba(188, 241, 238, 0.2) 0%,
rgba(255, 255, 255, 0) 100%
),
radial-gradient(
75.11% 79.17% at 66.02% 41.71%,
rgba(162, 164, 225, 0.2) 0%,
rgba(255, 255, 255, 0) 100%
),
#fff;
}
box-shadow: 0px 0px 1px 2px #e2e8f8, 0px 0px 24px 4px #e2e8f8;
background-color: light-dark(#ffffff, #000000);
} }
} }
#topic-title { body:not(.has-sidebar-page) #main-outlet-wrapper {
z-index: 999; @include breakpoint(medium, $rule: min-width) {
margin-bottom: 1em; grid-template-columns: 0px minmax(0, 1fr) 0px;
padding: 1.5rem 2rem 0.5em; }
position: sticky;
top: 0;
background: var(--secondary);
} }
.container.posts, body:not(.has-full-page-chat) {
.more-topics__container, @include breakpoint(extra-large, $rule: min-width) {
#topic-footer-buttons { background-color: var(--background-color);
padding: 0 24px; }
#main-outlet-wrapper {
@include breakpoint(medium) {
--main-grid-gap: 0;
}
@include breakpoint(tablet, $rule: min-width) {
gap: var(--main-grid-gap);
}
#main-outlet {
width: 100%;
padding-bottom: var(--spacing-block-l);
max-width: unset;
//thanks to random container elements on the page, I can't do a direct child selector here because it targets all the randomness, so I see no other option than MANUALLY adding every possible element that can appear in the main outlet YAY
.list-controls,
.list-container,
#topic-title,
.container.posts,
#topic-footer-buttons,
.more-topics__container,
.welcome-banner,
.container .user-main,
.reviewable,
.admin-content,
.discourse-post-event-upcoming-events,
.container.groups-index,
.body-page,
.container.badges,
.topic-above-footer-buttons-outlet .presence-users,
.global-notice {
@include breakpoint(medium, $rule: min-width) {
max-width: 1000px;
margin-inline: auto;
padding-inline: var(--spacing-inline-l);
}
}
border-radius: var(--d-border-radius-large);
@include breakpoint(medium) {
border-radius: 0px;
}
background-color: var(--d-content-background);
}
}
} }
.container.posts .topic-navigation { #list-area {
top: calc(var(--header-offset, 60px) + 4em); .show-more.has-topics {
@include breakpoint(medium, $rule: min-width) {
width: auto;
right: 50%;
transform: translateX(50%);
.alert {
padding: var(--spacing-block-sm) var(--spacing-inline-m);
border-radius: var(--d-border-radius-large);
font-size: var(--font-down-1-rem);
}
}
}
.topic-list-body {
padding-top: var(--spacing-block-m);
}
}
aside.onebox {
background-color: var(--d-content-background);
}
.d-editor-preview-wrapper {
border-radius: var(--d-border-radius);
padding: 1em;
background-color: var(--d-content-background);
} }
+100
View File
@@ -0,0 +1,100 @@
.user-main .about.collapsed-info .details {
background: var(--d-content-background);
}
.user-menu .quick-access-panel .read,
.user-notifications-list .read {
background: var(--d-content-background);
}
.powered-by-discourse {
z-index: 9999;
}
.boxed.white {
background-color: var(--d-content-background);
}
.admin-area .sidebar-wrapper .admin-panel {
background-color: transparent;
}
.admin-report .main .report-alert.no-data,
.admin-report .main .report-alert.rate-limited {
background-color: var(--d-content-background);
}
.admin-detail {
background-color: var(--d-content-background);
}
.select-kit.combo-box .select-kit-header,
.select-kit.multi-select .multi-select-header,
.d-editor-textarea-wrapper,
.fk-d-menu__inner-content,
.menu-panel {
background-color: var(--d-content-background);
}
.fk-d-menu .btn {
border-radius: 0;
}
.d-editor-button-bar {
padding: 3px;
}
.open .grippie {
background-color: var(--accent-color);
}
.d-editor-textarea-wrapper.in-focus,
input[type="text"]:focus,
input[type="password"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="time"]:focus,
input[type="week"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
.select-kit.multi-select.is-expanded .multi-select-header,
.select-kit.multi-select .multi-select-header:focus {
border-color: var(--accent-color);
outline: 2px solid var(--accent-color);
}
#reply-control {
background-color: var(--background-color);
}
.fk-d-menu__trigger.topic-list-layout-trigger {
display: none;
}
.search-container .search-header,
.search-container .search-bar,
.search-container .search-filters,
.search-container .search-filters .search-advanced-filters {
background-color: var(--d-content-background);
}
.user-main .about .details {
padding: 1em 1em 0;
border-bottom: 0px;
border-radius: var(--d-border-radius);
background-color: var(--primary-50);
}
.alert.alert-info {
background: var(--tertiary-very-low);
}
.discourse-reactions-list .reactions {
gap: 0.15em;
}
+209
View File
@@ -0,0 +1,209 @@
//temp sepeate file to avoid merge hell… to be distributed later
@include breakpoint(medium) {
html,
.d-header {
background-color: var(--secondary);
}
}
#main-outlet-wrapper {
*[class*="navigation-"] & {
@include breakpoint(mobile-extra-large) {
padding: 0;
}
}
}
#main-outlet {
@include breakpoint(mobile-extra-large) {
padding-top: var(--spacing-block-sm);
}
.list-controls {
@include breakpoint(mobile-extra-large) {
padding-inline: var(
--spacing-inline-m
) !important; //override will be fixed when the whole chat page shenanigans is resolved
padding-block: var(--spacing-block-s);
border-bottom: 1px solid var(--primary-200);
}
.navigation-container {
@include breakpoint(mobile-extra-large) {
gap: var(--spacing-inline-s);
//dont know why we even hide this crucial navigation on mobile
.category-breadcrumb.hidden,
.category-breadcrumb {
display: flex !important;
column-gap: var(--spacing-inline-s);
row-gap: var(--spacing-block-xs);
flex-basis: 100%;
.select-kit-header {
padding-block: var(--spacing-block-s);
padding-inline: 0;
border: 0;
}
}
.btn-default {
border: 0;
margin-right: 0;
.d-icon {
font-size: var(--font-up-1);
}
}
.fk-d-button-tooltip {
margin-right: 0;
margin-left: var(
--spacing-inline-xs
); //pure visual correction for horitzontal alignment
&:has(#create-topic) {
order: 1;
}
}
}
#navigation-bar,
.navigation-controls,
.category-breadcrumb {
@include breakpoint(mobile-extra-large) {
margin-bottom: 0;
}
}
.navigation-controls {
@include breakpoint(mobile-extra-large) {
gap: var(--spacing-inline-s);
}
}
}
}
.list-container {
@include breakpoint(mobile-extra-large) {
padding-inline: 0 !important;
}
.topic-list-body {
@include breakpoint(mobile-extra-large) {
border-top: 0;
padding-top: 0;
}
}
.topic-list-item {
@include breakpoint(mobile-extra-large) {
box-shadow: none;
border-radius: 0;
//to be moved to topic card segment for general use
// .navigation-category & {
// .badge-category__wrapper {
// display: none;
// }
// }
}
}
}
#topic-title {
@include breakpoint(mobile-extra-large) {
padding-inline: var(--spacing-inline-m) !important;
.title-wrapper {
gap: var(--spacing-block-s);
}
.topic-category {
order: -1;
}
//make mixin of this
.badge-category__wrapper {
font-size: var(--font-down-2-rem);
border-radius: var(--d-border-radius);
padding: var(--spacing-inline-xs) var(--spacing-inline-s);
background-color: light-dark(
oklch(from var(--category-badge-color) 97% calc(c * 0.3) h),
oklch(from var(--category-badge-color) 45% calc(c * 0.5) h)
);
border: 1px solid
light-dark(
oklch(from var(--category-badge-color) 97% calc(c * 0.3) h),
oklch(from var(--category-badge-color) 45% calc(c * 0.5) h)
);
}
.badge-category__name {
color: light-dark(
oklch(from var(--category-badge-color) 20% calc(c * 1) h),
oklch(from var(--category-badge-color) 100% calc(c * 0.9) h)
);
}
.discourse-tag {
font-size: var(--font-down-2-rem);
padding: var(--spacing-inline-xs) var(--spacing-inline-s);
gap: var(--spacing-inline-xs);
border-radius: var(--d-border-radius-large);
border: 1px solid var(--primary-low-mid);
background: var(--secondary);
}
}
}
.container.posts {
@include breakpoint(mobile-extra-large) {
padding-inline: var(--spacing-inline-xs) !important;
.main-avatar .avatar {
width: 40px;
height: 40px;
border-radius: var(--d-border-radius);
}
.topic-body {
.topic-meta-data {
.username {
font-size: var(--font-0-rem);
}
}
.contents {
padding-top: var(--spacing-block-m);
}
}
.small-action {
&-desc {
padding: var(--spacing-block-xs) 0;
}
//for core eventually, better way imo
.topic-avatar {
padding-top: 0;
align-items: center;
.d-icon {
font-size: var(--font-up-1);
}
}
}
}
}
#topic-footer-buttons {
@include breakpoint(mobile-extra-large) {
padding-inline: var(--spacing-inline-xs) !important;
}
}
}
//should be changed in core, should not be a primary btn
//changing this into straight buttons to match the progress one, which doesnt work well with rounded corners
#topic-progress-wrapper {
.progress-back-container {
margin-right: 0;
margin-bottom: var(--spacing-block-xs);
.btn-primary.progress-back {
border-radius: 0;
background: var(--secondary);
border: 1px solid var(--tertiary-low);
color: var(--accent-color);
padding: var(--spacing-inline-s) var(--spacing-inline-m);
.d-icon {
color: var(--accent-color);
}
}
}
.topic-admin-menu-trigger {
border-radius: 0;
background: var(--secondary);
border: 1px solid var(--tertiary-low);
}
}
+44 -18
View File
@@ -1,35 +1,61 @@
.list-controls { .list-controls {
position: sticky; position: sticky;
top: 0; top: var(--header-offset);
background: var(--secondary); background: var(--d-content-background);
z-index: 100; z-index: 100;
padding-top: 1.5rem; padding: 1.5rem 0 1rem 0;
max-width: unset; max-width: unset;
width: 100%;
.navigation-container { .navigation-container {
gap: 1rem;
.category-breadcrumb { .category-breadcrumb {
order: 1; order: 1;
} }
} }
.combo-box .combo-box-header, .combo-box .combo-box-header {
.select-kit.is-expanded .select-kit-body, // needs more specificy than just in the button file
.discourse-post-event .discourse-post-event-widget {
background-color: var(--secondary); background-color: var(--secondary);
border-radius: 6.25rem; border-radius: var(--d-border-radius-large);
border: 1px solid var(--primary-300);
// font-size: var(--font-up-1-rem);
&:hover {
border: 1px solid var(--accent-color);
}
&:focus-visible {
.discourse-no-touch & {
background: var(--secondary);
color: var(--accent-color);
box-shadow: 0px 0px 0px 3px var(--button-box-shadow);
.d-icon {
color: var(--accent-color);
}
}
}
}
.select-kit.combo-box.category-drop.has-selection
.category-drop-header:hover {
border-color: transparent;
} }
} }
.select-kit.is-expanded .select-kit-body {
border-radius: var(--d-border-radius);
background-color: var(--d-content-background);
}
.nav-pills > li > a:hover, .nav-pills > li > a:hover,
.nav-pills > li button:hover { .nav-pills > li button:hover {
background: transparent; .discourse-no-touch & {
color: var(--accent-color); background: transparent;
&::after { color: var(--accent-color);
content: ""; &::after {
position: absolute; content: "";
left: 0; position: absolute;
bottom: 0; left: 0;
right: 0; bottom: 0;
height: var(--d-nav-underline-height); right: 0;
background: var(--accent-color); height: var(--d-nav-underline-height);
background: var(--accent-color);
}
} }
} }
+44 -9
View File
@@ -1,35 +1,67 @@
.custom-search-banner-wrap { .custom-search-banner-wrap {
display: grid; display: grid;
grid-template-rows: 0.33fr 0.33fr 0.33fr; grid-template-rows: 0.33fr 0.33fr 0.33fr;
grid-template-columns: 0.5fr 0.5fr; grid-template-columns: 1fr 1fr;
grid-column-gap: 1em; grid-column-gap: 1em;
grid-row-gap: 0.5em; grid-row-gap: 0.5em;
border-bottom: 1px solid var(--primary-300); border-bottom: 1px solid var(--primary-300);
padding: 2.5em 0 2.5em; padding: 1.5em 0 2.5em;
margin-bottom: 2.5em; margin-bottom: 0;
--search-color: #595bca; @media screen and (max-width: 768px) {
padding: 1em;
}
h1 { h1 {
grid-column: 1/2; grid-column: 1/2;
grid-row: 1/-1; grid-row: 1/-1;
padding: 0 1em;
text-align: left; text-align: left;
align-self: center; align-self: center;
margin: 0; margin: 0;
font-weight: 400; font-weight: 400;
color: #350c73; color: var(--search-banner-text-color);
@media screen and (max-width: 1028px) {
font-size: var(--font-up-4);
grid-column: 1/-1;
grid-row: 1;
text-align: center;
margin-bottom: 0.5em;
}
@media screen and (max-width: 768px) {
text-align: left;
grid-column: 1/2;
grid-row: 1/-1;
font-size: var(--font-up-3);
}
@media screen and (max-width: 600px) {
grid-column: 1/-1;
grid-row: 1;
text-align: center;
margin-bottom: 0.5em;
}
} }
.search-menu { .search-menu {
grid-column: 2/3; grid-column: 2/3;
grid-row: 1/-1; grid-row: 1/-1;
width: 100%; width: 100%;
align-self: center; align-self: center;
@media screen and (max-width: 1028px) {
grid-row: 2/-1;
grid-column: 1/-1;
}
@media screen and (max-width: 768px) {
grid-column: 2/-1;
grid-row: 1/-1;
}
@media screen and (max-width: 600px) {
grid-row: 2/-1;
grid-column: 1/-1;
}
} }
p { p {
display: none; display: none;
} }
.search-input { .search-input {
background: light-dark(#ffffff, #1f1f1f); background: var(--d-content-background);
border: 1px solid oklch(from var(--search-color) 80% calc(c * 2.5) h); border: 1px solid var(--search-color);
box-shadow: 0 4px 10px rgba(52, 6, 121, 15%); box-shadow: 0 4px 10px rgba(52, 6, 121, 15%);
} }
.search-menu .search-input:focus-within, .search-menu .search-input:focus-within,
@@ -41,7 +73,10 @@
.search-menu .searching .d-icon { .search-menu .searching .d-icon {
color: var(--search-color); color: var(--search-color);
} }
.panel-body {
z-index: z("dropdown");
}
.results { .results {
background: light-dark(#ffffff, #1f1f1f); background: var(--d-content-background);
} }
} }
+65 -5
View File
@@ -1,8 +1,18 @@
:root { .sidebar-wrapper,
--d-sidebar-background: #f5f8ff; .sidebar-hamburger-dropdown {
} @include breakpoint(medium) {
background: var(--secondary);
.sidebar-wrapper { .sidebar-footer-wrapper {
background: var(--secondary);
.sidebar-footer-container::before {
display: none;
}
}
}
.has-full-page-chat &,
.has-full-page-chat & .sidebar-footer-wrapper {
background: transparent;
}
.sidebar-container { .sidebar-container {
border-right: none; border-right: none;
} }
@@ -10,4 +20,54 @@
.sidebar-sections { .sidebar-sections {
padding: 0; padding: 0;
} }
.sidebar-section-link {
transition: none;
border-radius: var(--d-border-radius);
}
.dropdown-menu__item .sidebar-section-link {
border-radius: 0px;
}
}
.sidebar-section-wrapper {
@include breakpoint(extra-large, $rule: min-width) {
padding-block: 0.45em;
}
@include breakpoint(mobile-extra-large) {
.hamburger-panel .revamped & {
margin-bottom: var(--spacing-block-m);
}
}
.sidebar-section-header {
font-size: var(--font-down-2);
}
.sidebar-section-content {
margin: 0;
display: flex;
flex-direction: column;
@include breakpoint(extra-large, $rule: min-width) {
gap: var(--spacing-block-xs);
}
}
}
.sidebar-wrapper .sidebar-sections {
--scrollbarThumbBg: var(--d-selected);
}
.sidebar-section-link-wrapper .sidebar-section-link:focus,
.sidebar-section-link-wrapper .sidebar-section-link:hover {
.d-icon {
color: var(--primary);
}
}
.sidebar-new-topic-button__wrapper {
margin: 0 var(--spacing-inline-m) var(--spacing-block-l);
.sidebar-new-topic-button .d-icon {
display: none;
}
}
.sidebar-wrapper .sidebar-sections {
padding: 0 1rem;
} }
+374 -6
View File
@@ -1,7 +1,375 @@
.topic-list-item { // 390x844 mobile/portrait (Figma iPhone 13 & 14)
background: light-dark(#ffffff, #1f1f1f); // 744x1133 tablet/portrait (Figma iPad mini 8.3)
&:hover { // 1280x832 desktop small (Figma MacBook Air)
background: light-dark(#fcfcfc, #161616);
} :root {
border: 1px solid #cedde3; --hot-color: oklch(63.79% 0.1823 34.77);
}
$extra-small: 435px;
$small: 576px;
$medium: 980px;
$extra-large: 1280px;
.topic-list .topic-list-item-separator {
display: none;
}
.topic-list > .topic-list-body > .topic-list-item.last-visit {
border-bottom: 1px solid var(--primary-300);
&:hover {
border-color: var(--accent-color);
}
}
.topic-list-body {
border: none;
display: flex;
flex-direction: column;
gap: 1em;
@include breakpoint(medium) {
gap: 0.5em;
}
}
.bulk-select-enabled .topic-list-item {
grid-template-areas:
"bulk-select avatar author status status . activity"
". topic-title topic-title topic-title likes-replies likes-replies category";
.bulk-select {
grid-area: bulk-select;
padding: 0;
margin: 0;
align-self: center;
justify-self: center;
label {
margin: 0;
}
}
@media screen and (max-width: $medium) {
grid-template-columns: 44px min-content min-content auto min-content min-content min-content;
grid-template-rows: 22px minmax(22px, auto);
grid-template-areas:
"bulk-select avatar author status status . activity"
". topic-title topic-title topic-title . . likes-replies"
". topic-title topic-title topic-title . . category";
}
@media screen and (max-width: $small) {
grid-template-columns: 25px auto repeat(6, 1fr);
grid-template-rows: auto auto auto;
grid-template-areas:
"bulk-select category-status category-status . . . . activity"
"topic-title topic-title topic-title topic-title topic-title topic-title topic-title topic-title"
"avatar author . . . . . likes-replies";
}
}
body.user-messages-page .topic-list-item {
.topic-category-status-data {
display: none;
}
grid-template-areas:
"avatar author status status . . activity"
". topic-title topic-title topic-title likes-replies likes-replies likes-replies";
&.excerpt-expanded {
grid-template-columns: 44px repeat(6, 1fr) auto;
grid-template-rows: 22px auto auto 30px;
grid-template-areas:
"avatar author status status . . . activity"
"avatar topic-title topic-title topic-title topic-title . . ."
". excerpt excerpt excerpt excerpt excerpt . ."
". excerpt excerpt excerpt excerpt excerpt likes-replies likes-replies";
@media screen and (max-width: $extra-large) {
grid-template-areas:
"avatar author status status . . . activity"
"avatar topic-title topic-title topic-title topic-title . . ."
". excerpt excerpt excerpt excerpt excerpt . likes-replies"
". excerpt excerpt excerpt excerpt excerpt . likes-replies";
}
}
@media screen and (max-width: $small) {
grid-template-columns: 25px auto repeat(6, 1fr);
grid-template-rows: auto auto;
grid-template-areas:
"topic-title topic-title topic-title topic-title topic-title topic-title topic-title activity"
"avatar author . . . . . likes-replies";
.topic-excerpt {
display: none;
}
}
}
.topic-list-item {
text-overflow: ellipsis;
padding: 0.75em 1rem;
border: 1px solid var(--primary-300);
display: grid;
grid-template-columns: 44px min-content min-content auto min-content min-content min-content;
grid-template-rows: 22px minmax(22px, auto);
grid-template-areas:
"avatar author status status . . activity"
". topic-title topic-title topic-title likes-replies likes-replies category";
grid-column-gap: 12px;
grid-row-gap: 8px;
border-radius: var(--d-border-radius);
&.excerpt-expanded {
grid-template-columns: 44px repeat(6, 1fr) auto;
grid-template-rows: 22px auto auto 30px;
grid-template-areas:
"avatar author status status . . . activity"
"avatar topic-title topic-title topic-title topic-title . . ."
". excerpt excerpt excerpt excerpt excerpt . ."
". excerpt excerpt excerpt excerpt excerpt likes-replies category";
@media screen and (max-width: $extra-large) {
grid-template-areas:
"avatar author status status . . . activity"
"avatar topic-title topic-title topic-title topic-title . . ."
". excerpt excerpt excerpt excerpt excerpt . likes-replies"
". excerpt excerpt excerpt excerpt excerpt . category";
}
@media screen and (max-width: $small) {
grid-template-columns: 25px auto repeat(6, 1fr);
grid-template-rows: auto auto auto;
grid-template-areas:
"category-status category-status category-status . . . . activity"
"topic-title topic-title topic-title topic-title topic-title topic-title topic-title topic-title"
"avatar author . . . . . likes-replies";
.topic-excerpt {
display: none;
}
}
}
@media screen and (max-width: $medium) {
grid-template-columns: 44px min-content min-content auto min-content min-content min-content;
grid-template-rows: 22px minmax(22px, auto);
grid-template-areas:
"avatar author status status . . activity"
". topic-title topic-title topic-title . . likes-replies"
". topic-title topic-title topic-title . . category";
}
@media screen and (max-width: $small) {
grid-template-columns: 25px auto repeat(6, 1fr);
grid-template-rows: auto auto auto;
grid-template-areas:
"category-status category-status category-status . . . . activity"
"topic-title topic-title topic-title topic-title topic-title topic-title topic-title topic-title"
"avatar author . . . . . likes-replies";
}
@include breakpoint(medium) {
border: none;
border-bottom: 1px solid var(--primary-200);
}
// display contents
td.main-link,
td.posters,
td.posts,
td.views,
td.activity {
display: contents;
}
td.num.posts a {
padding: 0;
}
// avatar & author
.topic-author-avatar-data {
grid-area: avatar;
margin: 0;
}
.topic-author-avatar img.avatar {
width: 44px;
height: 44px;
border-radius: var(--d-border-radius);
@media screen and (max-width: $small) {
width: 25px;
height: 25px;
}
}
td.topic-author-data {
grid-area: author;
display: flex;
gap: 0.5em;
align-items: center;
}
.topic-author-data .topic-author {
color: var(--primary-500);
}
// status
.topic-status-card {
display: flex;
flex-direction: row;
gap: 4px;
align-items: center;
padding: 0 6px;
font-size: var(--font-down-2);
font-weight: 600;
border-radius: var(--d-border-radius);
border: 1px solid var(--status-color);
color: var(--status-color);
height: min-content;
grid-area: status;
width: min-content;
@media screen and (max-width: $small) {
height: calc(100% - 2px);
}
svg {
font-size: var(--font-down-1);
color: var(--status-color);
}
}
.topic-status-card.--bookmark {
display: none;
}
.topic-status-card.--pinned,
.topic-status-card.--unpinned {
--status-color: var(--primary-500);
cursor: pointer;
background-color: transparent;
line-height: unset;
}
.topic-status-card.--hot {
--status-color: var(--hot-color);
}
// title
td.main-link .link-top-line {
font-size: var(--font-0);
grid-area: topic-title;
font-weight: 500;
}
.link-top-line .event-date {
font-size: var(--font-down-3);
}
td.main-link a.topic-status {
display: none;
}
td.main-link .link-top-line a.raw-topic-link {
padding: 0;
}
.topic-post-badges .badge-notification.unread-posts {
background-color: var(--tertiary);
color: var(--tertiary);
overflow: hidden;
height: 8px;
width: 8px;
padding: 0;
top: -2px;
min-width: unset;
}
// excerpt
.topic-excerpt {
grid-area: excerpt;
margin: 0;
font-size: var(--font-down-2);
}
// timestamp
td.activity .post-activity {
grid-area: activity;
font-size: var(--font-down-1);
color: var(--primary-500);
margin-left: auto;
padding: 0;
}
// metadata
// metadata - category
td.main-link .link-bottom-line {
display: none;
}
td.topic-category-status-data {
display: contents;
@media screen and (max-width: $small) {
grid-area: category-status;
display: flex;
gap: 0.5em;
align-items: center;
}
}
td.topic-category-status-data .badge-category__wrapper {
grid-area: category;
}
td.topic-category-status-data .badge-category__wrapper {
overflow: unset;
border-radius: var(--d-border-radius);
padding: 6px;
align-self: flex-end;
background-color: light-dark(
oklch(from var(--category-badge-color) 97% calc(c * 0.3) h),
oklch(from var(--category-badge-color) 45% calc(c * 0.5) h)
);
@media screen and (max-width: $small) {
padding: 2px 6px;
}
.badge-category__name {
color: light-dark(
oklch(from var(--category-badge-color) 20% calc(c * 1) h),
oklch(from var(--category-badge-color) 100% calc(c * 0.9) h)
);
}
}
td.main-link .discourse-tags {
display: none;
}
// metadata - likes and replies
td.posts .badge-posts {
grid-area: replies;
align-self: center;
font-weight: normal;
}
td.topic-likes-replies-data {
grid-area: likes-replies;
display: flex;
flex-direction: row;
gap: 0.5em;
justify-content: flex-end;
height: min-content;
align-self: flex-end;
padding-bottom: 4px;
}
.topic-likes-replies-data .topic-likes,
.topic-likes-replies-data .topic-replies {
display: flex;
flex-direction: row;
gap: 0.5em;
align-items: center;
color: var(--primary-500);
svg {
color: var(--primary-600);
}
}
}
.topic-list-header {
display: none;
}
.topic-list-item {
background: var(--d-content-background);
box-shadow: 0px 0px 12px 1px var(--topic-card-shadow);
&:hover {
.discourse-no-touch & {
border-color: var(--accent-color);
background: var(--d-content-background);
}
}
&.selected {
box-shadow: 0px 0px 0px 2px var(--accent-color),
0px 0px 12px 1px var(--topic-card-shadow);
}
} }
+103
View File
@@ -0,0 +1,103 @@
.post-stream {
.contents {
font-size: var(--font-up-1);
line-height: 1.25;
-webkit-font-smoothing: antialiased;
}
}
.container.posts .topic-navigation {
// super fragile because new sticky topic title doesnt have a calculated value (= 53px with this font and size but…)
top: calc(
var(--header-offset, 60px) + 53px + calc(var(--spacing-block-l) * 2)
);
z-index: 300;
}
.timeline-container .topic-timeline {
min-width: unset; // why we have this?
.timeline-scrollarea {
border-left: 1px solid var(--accent-color);
}
.timeline-scroller {
padding: 0.25em;
border: 1px solid var(--accent-color);
border-radius: 0.75em;
padding-left: 0.5em;
margin-left: calc(-0.5em - 2.5px);
background: var(--d-content-background);
height: 40px !important; // height is coming from element style have no other choice
}
.timelime-scroller-content {
display: flex;
flex-direction: column;
gap: 0.25em;
}
.timeline-replies,
.timeline-ago {
line-height: 1;
}
.timeline-ago {
// font-size: var(--font-down-1);
}
.timeline-handle {
background-color: var(--accent-color);
width: 3px;
border-radius: 2px;
height: calc(100% - 6px);
}
}
.container.posts,
#topic-footer-buttons {
padding: 0 24px;
}
.container.posts {
grid-template-columns: auto 150px;
@media screen and (max-width: 924px) {
grid-template-columns: auto auto;
}
}
.timeline-container .topic-timeline .timeline-ago {
max-width: unset;
overflow: unset;
text-overflow: unset;
}
.timeline-container .topic-timeline .timeline-scroller-content {
overflow: unset;
}
.more-topics__container
.more-topics__list
.topic-list-body
.topic-list-item:last-of-type {
border-bottom: 1px solid var(--primary-300);
}
.discourse-post-event .discourse-post-event-widget {
background: var(--d-content-background);
}
.more-topics__container .nav {
position: unset;
margin-block: unset;
margin-bottom: 1em;
}
.timeline-container.timeline-fullscreen
.topic-timeline
.timeline-scrollarea
.timeline-scroller
.timeline-handle {
float: none;
width: 5px;
position: relative;
right: -4px;
}
nav.post-controls .actions button {
font-size: var(--font-0);
}
+18 -5
View File
@@ -1,9 +1,22 @@
:root { :root {
--d-max-width: 1000px;
--d-border-radius-large: 20px; --d-border-radius-large: 20px;
--d-border-radius: 6px; --d-border-radius: 8px;
--d-input-border-radius: 6px; --d-input-border-radius: 6px;
--accent-color: #595bca; // --d-sidebar-row-height: 2.8em;
--accent-text-color: #ffffff; //the idea is: block spacing can grow with font-size, but inline spacing should not to maintain horizontal (text) alignment
--d-nav-color--active: var(--accent-color); --spacing-block-xs: 0.25em;
--primary: #0c0d27; --spacing-block-s: 0.5em;
--spacing-block-sm: 0.75em;
--spacing-block-m: 1em;
--spacing-block-l: 1.5em;
--spacing-block-xl: 2em;
--spacing-block-xxl: 4em;
--spacing-inline-xs: 0.25em;
--spacing-inline-s: 0.5rem;
--spacing-inline-sm: 0.75rem;
--spacing-inline-m: 1rem;
--spacing-inline-l: 1.5rem;
--spacing-inline-xl: 2rem;
--spacing-inline-xxl: 4rem;
} }
-2
View File
@@ -1,2 +0,0 @@
example_setting:
default: true
+64
View File
@@ -0,0 +1,64 @@
# frozen_string_literal: true
describe "Horizon theme | High level", type: :system do
let!(:theme) { upload_theme }
fab!(:current_user) { Fabricate(:user) }
fab!(:tag_1) { Fabricate(:tag, name: "wow-cool") }
fab!(:tag_2) { Fabricate(:tag, name: "another-tag") }
fab!(:category)
fab!(:topic_1) { Fabricate(:topic_with_op, category: category, tags: [tag_1, tag_2]) }
let(:topic_list) { PageObjects::Components::TopicList.new }
let(:topic_page) { PageObjects::Pages::Topic.new }
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
def run_all_high_level_tests
expect(page).to have_css(".experimental-screen")
expect(sidebar).to have_categories_section
expect(sidebar).to have_section_link(category.name)
expect(topic_list).to have_topic(topic_1)
# Ensure the topic list columns are in the correct order via 'topic-list-columns' valueTransformer
#
# NOTE(martin): Maybe there is a better way to do this in a qunit test instead.
topic_item = find(topic_list.topic_list_item_class(topic_1))
expect(topic_item.all("td").map { |el| el["class"] }).to eq(
[
"main-link clearfix topic-list-data",
"activity num topic-list-data age",
"topic-author-data",
"topic-category-status-data",
"topic-author-avatar-data",
"topic-likes-replies-data",
],
)
# Can see a topic in the list and navigate to it successfully
topic_list.visit_topic(topic_1)
expect(topic_page).to have_topic_title(topic_1.title)
# Can change site colors from the sidebar palette, which are remembered across page reloads
palette_menu =
PageObjects::Components::DMenu.new(find(".sidebar-footer-actions .user-color-palette"))
palette_menu.expand
find(".color-palette-menu__content .color-palette-menu__item[data-color='marigold']").click
expect(page).to have_css(".custom-color-marigold")
page.refresh
expect(page).to have_css(".custom-color-marigold")
end
it "works for anon" do
visit "/"
run_all_high_level_tests
end
context "for signed in users" do
before { sign_in(current_user) }
it "works" do
visit "/"
run_all_high_level_tests
end
end
end