diff --git a/about.json b/about.json
index 094101b..b7e22bc 100644
--- a/about.json
+++ b/about.json
@@ -8,14 +8,6 @@
"minimum_discourse_version": null,
"maximum_discourse_version": null,
"assets": {},
- "authors": "Carson",
- "about_url": "TODO: Put your theme's public repo or Meta topic URL here",
- "license_url": "TODO: Put your theme's LICENSE URL here",
- "learn_more": "TODO",
- "theme_version": "0.0.1",
- "minimum_discourse_version": null,
- "maximum_discourse_version": null,
- "assets": {},
"modifiers": {
"serialize_topic_excerpts": "true"
},
diff --git a/javascripts/discourse/api-initializers/central.gjs b/javascripts/discourse/api-initializers/central.gjs
index 75856e5..d8c82b0 100644
--- a/javascripts/discourse/api-initializers/central.gjs
+++ b/javascripts/discourse/api-initializers/central.gjs
@@ -1,4 +1,3 @@
-// import { inject as service } from "@ember/service";
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", () => {
diff --git a/javascripts/discourse/api-initializers/icons.gjs b/javascripts/discourse/api-initializers/icons.gjs
index a139c5e..943cef9 100644
--- a/javascripts/discourse/api-initializers/icons.gjs
+++ b/javascripts/discourse/api-initializers/icons.gjs
@@ -15,7 +15,7 @@ export default apiInitializer("1.0", (api) => {
<:trigger>
@@ -38,42 +38,64 @@ export default apiInitializer("1.0", (api) => {
{{currentUser.username}}
{{#if (or currentUser.moderator currentUser.admin)}}
+
}
diff --git a/javascripts/discourse/connectors/before-main-outlet/right-blocks.gjs b/javascripts/discourse/connectors/before-main-outlet/right-blocks.gjs
new file mode 100644
index 0000000..b7f9edc
--- /dev/null
+++ b/javascripts/discourse/connectors/before-main-outlet/right-blocks.gjs
@@ -0,0 +1,89 @@
+import Component from "@glimmer/component";
+import { concat } from "@ember/helper";
+import { action } from "@ember/object";
+import { inject as service } from "@ember/service";
+import { htmlSafe } from "@ember/template";
+import BlockBirthday from "../../components/blocks/birthday";
+import BlockCta from "../../components/blocks/cta";
+import BlockOnline from "../../components/blocks/online";
+import BlockProfile from "../../components/blocks/profile";
+import BlockTime from "../../components/blocks/time";
+import BlockTopContributors from "../../components/blocks/top-contributors";
+import BlockTopTopics from "../../components/blocks/top-topics";
+import StickySidebarComponent from "../../components/sticky-sidebar";
+
+export default class RightBlocks extends Component {
+ @service currentUser;
+ @service router;
+ @service site;
+ @service discovery;
+
+ get blocks() {
+ return settings.blocks;
+ }
+
+ get shouldRenderBlocks() {
+ return (
+ this.router?.currentRoute?.parent?.name === "discovery" &&
+ this.router?.currentRouteName !== "discovery.categories"
+ );
+ }
+
+ @action
+ blockify(block) {
+ switch (block.name) {
+ case "cta":
+ return BlockCta;
+ case "top_contributors":
+ return BlockTopContributors;
+ case "top_topics":
+ return BlockTopTopics;
+ case "time":
+ return BlockTime;
+ case "profile":
+ return BlockProfile;
+ case "online":
+ return BlockOnline;
+ case "birthday":
+ return BlockBirthday;
+ default:
+ return null;
+ }
+ }
+
+
+ {{#if this.shouldRenderBlocks}}
+ {{!log this.blocks}}
+
+
+
+ {{#each this.blocks as |row|}}
+
+ {{#each row.blocks as |block|}}
+ {{#let (this.blockify block) as |BlockComponent|}}
+ {{#if BlockComponent}}
+ {{component
+ BlockComponent
+ size=block.size
+ period=block.period
+ count=block.count
+ title=block.title
+ cta=block.cta
+ ctas=block.ctas
+ description=block.description
+ url=block.url
+ }}
+ {{/if}}
+ {{/let}}
+ {{/each}}
+
+ {{/each}}
+
+
+
+ {{/if}}
+
+}
diff --git a/javascripts/discourse/connectors/below-site-header/banner.gjs b/javascripts/discourse/connectors/below-site-header/banner.gjs
new file mode 100644
index 0000000..0d1eb78
--- /dev/null
+++ b/javascripts/discourse/connectors/below-site-header/banner.gjs
@@ -0,0 +1,10 @@
+import Component from "@glimmer/component";
+import DiscourseBanner from "discourse/components/discourse-banner";
+
+// eslint-disable-next-line ember/no-empty-glimmer-component-classes
+export default class Banner extends Component {
+ // moves banner topic from main-outlet to below-site-header
+
+
+
+}
diff --git a/javascripts/discourse/connectors/below-site-header/top-blocks.gjs b/javascripts/discourse/connectors/below-site-header/top-blocks.gjs
new file mode 100644
index 0000000..2f551ed
--- /dev/null
+++ b/javascripts/discourse/connectors/below-site-header/top-blocks.gjs
@@ -0,0 +1,105 @@
+import Component from "@glimmer/component";
+import { concat } from "@ember/helper";
+import { action } from "@ember/object";
+import { inject as service } from "@ember/service";
+import { htmlSafe } from "@ember/template";
+import BlockBanner from "../../components/blocks/banner";
+import BlockBirthday from "../../components/blocks/birthday";
+import BlockOnline from "../../components/blocks/online";
+import BlockProfile from "../../components/blocks/profile";
+import BlockTime from "../../components/blocks/time";
+import BlockTopContributors from "../../components/blocks/top-contributors";
+import BlockTopTopics from "../../components/blocks/top-topics";
+
+export default class TopBlocks extends Component {
+ @service currentUser;
+ @service router;
+ @service site;
+
+ get isHomepage() {
+ switch (this.router?.currentRoute?.parent?.name) {
+ case "discovery":
+ return true;
+ case "tags":
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ get blocksBackground() {
+ return settings.blocks_top_image;
+ }
+
+ get blocks() {
+ return settings.blocks_top;
+ }
+
+ @action
+ blockify(block) {
+ switch (block.name) {
+ case "banner":
+ return BlockBanner;
+ case "top_contributors":
+ return BlockTopContributors;
+ case "top_topics":
+ return BlockTopTopics;
+ case "time":
+ return BlockTime;
+ case "profile":
+ return BlockProfile;
+ case "online":
+ return BlockOnline;
+ case "birthday":
+ return BlockBirthday;
+ default:
+ return null;
+ }
+ }
+
+
+ {{#if this.isHomepage}}
+ {{#if this.blocks}}
+
+
+ {{#each this.blocks as |row|}}
+
+ {{#each row.blocks as |block|}}
+ {{#let (this.blockify block) as |BlockComponent|}}
+ {{#if BlockComponent}}
+ {{component
+ BlockComponent
+ size=block.size
+ period=block.period
+ count=block.count
+ title=block.title
+ cta=block.cta
+ ctas=block.ctas
+ description=block.description
+ url=block.url
+ image=block.image
+ }}
+ {{/if}}
+ {{/let}}
+ {{/each}}
+
+ {{/each}}
+
+
+ {{/if}}
+ {{/if}}
+
+}
diff --git a/javascripts/discourse/connectors/category-navigation/subcategories.gjs b/javascripts/discourse/connectors/category-navigation/subcategories.gjs
new file mode 100644
index 0000000..72dbde1
--- /dev/null
+++ b/javascripts/discourse/connectors/category-navigation/subcategories.gjs
@@ -0,0 +1,80 @@
+import Component from "@glimmer/component";
+// import { tracked } from "@glimmer/tracking";
+import { fn } from "@ember/helper";
+import { on } from "@ember/modifier";
+import { action } from "@ember/object";
+import { inject as service } from "@ember/service";
+import { htmlSafe } from "@ember/template";
+// import { eq } from "truth-helpers";
+import categoryColorVariable from "discourse/helpers/category-color-variable";
+import categoryLink from "discourse/helpers/category-link";
+import concatClass from "discourse/helpers/concat-class";
+import formatDate from "discourse/helpers/format-date";
+// import i18n from "discourse-common/helpers/i18n";
+
+export default class CentralCategories extends Component {
+ @service currentUser;
+ @service router;
+ @service discovery;
+ @service site;
+
+ @action
+ navigate(url, event) {
+ const anchor = event.target.closest("a, button");
+
+ if (anchor) {
+ return;
+ }
+ event.preventDefault();
+ this.router.transitionTo(url);
+ }
+
+
+ {{#if this.discovery.category.subcategories}}
+
+ {{#each this.discovery.category.subcategories as |subcategory|}}
+ {{! template-lint-disable no-invalid-interactive }}
+
+
+ {{categoryLink subcategory}}
+
+
+ {{#if subcategory.description}}
+
+ {{htmlSafe subcategory.description}}
+
+ {{/if}}
+
+ {{#if subcategory.topics}}
+
+ {{/if}}
+
+ {{/each}}
+
+ {{/if}}
+
+}
diff --git a/javascripts/discourse/connectors/discovery-navigation-bar-above/navigation.gjs b/javascripts/discourse/connectors/discovery-navigation-bar-above/navigation.gjs
deleted file mode 100644
index adc3bbd..0000000
--- a/javascripts/discourse/connectors/discovery-navigation-bar-above/navigation.gjs
+++ /dev/null
@@ -1,186 +0,0 @@
-import Component from "@glimmer/component";
-import { tracked } from "@glimmer/tracking";
-import { on } from "@ember/modifier";
-import { action } from "@ember/object";
-import { service } from "@ember/service";
-import { capitalize } from "@ember/string";
-import { eq } from "truth-helpers";
-import i18n from "discourse-common/helpers/i18n";
-
-export default class Breadcrumbs extends Component {
- @service router;
- @service site;
-
- @tracked routeType;
-
- @action
- updateRouteType() {
- if (this.router?.currentRoute?.parent?.name === "discovery") {
- switch (this.router?.currentRoute?.localName) {
- case "latest":
- case "hot":
- case "top":
- case "new":
- case "unread":
- this.routeType = "home";
- break;
- case "category":
- case "latestCategory":
- case "hotCategory":
- case "topCategory":
- case "newCategory":
- case "unreadCategory":
- this.routeType = "category";
- break;
- case "categories":
- this.routeType = "categories";
- break;
- default:
- this.routeType = null;
- break;
- }
- } else {
- this.routeType = null;
- }
- }
-
- get filterType() {
- if (this.router?.currentRoute?.localName === "categories") {
- return "categories";
- }
- return this.router?.currentRoute?.attributes?.filterType || "";
- }
-
- get isHomepage() {
- this.updateRouteType();
- return this.routeType === "home";
- }
-
- get isCategoryView() {
- this.updateRouteType();
- return this.routeType === "category";
- }
-
- get isCategoryList() {
- this.updateRouteType();
- return this.routeType === "categories";
- }
-
- get categoryName() {
- return this.router?.currentRoute?.attributes?.category?.name || "Category";
- }
-
- get categoryBadge() {
- const defaultBadge = settings.default_category_badge || "📁";
-
- const badge = settings.category_icons?.find(
- (category) =>
- category.id[0] === this.router?.currentRoute?.attributes?.category?.id
- )?.emoji;
-
- if (!badge) {
- return defaultBadge;
- }
-
- try {
- // check for valid emoji
- const regex = /\p{Emoji}/u;
- if (regex.test(badge)) {
- return badge;
- }
- return defaultBadge;
- } catch (e) {
- // \p{Emoji} not supported -> skip validation
- return badge;
- }
- }
-
- @action
- home() {
- this.router.transitionTo("/");
- }
-
-
-
- {{#if this.isHomepage}}
-
-
- home
-
- {{i18n "js.home"}}
-
- {{else if this.isCategoryView}}
-
-
- {{this.categoryBadge}}
-
- {{this.categoryName}}
-
- {{else if this.isCategoryList}}
-
-
- 🗃️
-
- {{capitalize (i18n "js.categories.categories_label")}}
-
- {{/if}}
-
-
-
-}
-class TopicFilter extends Component {
- @service router;
- @service site;
-
- @tracked filterOptions;
-
- constructor() {
- super(...arguments);
-
- this.filterOptions =
- this.site.siteSettings?.top_menu?.split("|").map((item) => {
- return { name: item, localization: `js.filters.${item}.title` };
- }) || [];
- }
-
- @action
- filterTopics(event) {
- const routeType = this.args.routeType;
- const category = this.router?.currentRoute?.attributes?.category;
-
- if (routeType === "category" && event.target.value !== "categories") {
- this.router.transitionTo(
- `/c/${category.slug}/${category.id}/l/${event.target.value}`
- );
- } else {
- this.router.transitionTo(`/${event.target.value}`);
- }
- }
-
-
-
-
-}
diff --git a/javascripts/discourse/connectors/topic-title/back.hbs b/javascripts/discourse/connectors/topic-title/back.hbs
index 67827d7..bc41394 100644
--- a/javascripts/discourse/connectors/topic-title/back.hbs
+++ b/javascripts/discourse/connectors/topic-title/back.hbs
@@ -1,4 +1,4 @@
{{#unless this.model.isPrivateMessage}}
-
+ {{i18n "js.back_button"}}
{{/unless}}
\ No newline at end of file
diff --git a/javascripts/discourse/modifiers/scroll.js b/javascripts/discourse/modifiers/scroll.js
index 09a8c22..a9818e1 100644
--- a/javascripts/discourse/modifiers/scroll.js
+++ b/javascripts/discourse/modifiers/scroll.js
@@ -1,11 +1,11 @@
-import { modifier } from 'ember-modifier';
+import { modifier } from "ember-modifier";
export default modifier((element, [callback]) => {
const handleScroll = () => callback();
- window.addEventListener('scroll', handleScroll);
+ window.addEventListener("scroll", handleScroll);
return () => {
- window.removeEventListener('scroll', handleScroll);
+ window.removeEventListener("scroll", handleScroll);
};
});
diff --git a/locales/en.yml b/locales/en.yml
index b17d6c4..a7d8445 100644
--- a/locales/en.yml
+++ b/locales/en.yml
@@ -1,9 +1,14 @@
en:
theme_metadata:
description: ""
+ user:
+ view_your_profile: "View your profile"
post:
like: "Like"
- replied: "replied"
+ replied: "%{name} replied %{timeago}"
+ categories:
+ category:
+ view_all_topics: "View all topics (%{count})"
blocks:
top_contributors:
title: "Top Contributors"
@@ -12,3 +17,5 @@ en:
title: "Top Topics"
online:
label: "online"
+ profile:
+ hello: "Hi, %{name}!"
diff --git a/scss/_base.scss b/scss/_base.scss
index b894692..73d337e 100644
--- a/scss/_base.scss
+++ b/scss/_base.scss
@@ -1,6 +1,7 @@
@import "standards/colors";
@import "standards/typography";
@import "standards/fonts";
+@import "standards/icons";
@import "standards/other";
@import "overrides";
@@ -8,6 +9,8 @@
@import "components/buttons";
@import "components/other";
@import "components/navigation";
+@import "components/user-menu";
+@import "components/categories";
@import "blocks/base";
@@ -25,3 +28,6 @@
@import "discourse/admin";
@import "discourse/d-menu";
@import "discourse/compose";
+@import "discourse/banner";
+@import "discourse/docs";
+@import "discourse/inputs";
diff --git a/scss/blocks/banner.scss b/scss/blocks/banner.scss
new file mode 100644
index 0000000..7691533
--- /dev/null
+++ b/scss/blocks/banner.scss
@@ -0,0 +1,31 @@
+.block-banner {
+ --b: 0;
+ --jc: center;
+ --ai: center;
+ --bg: url($block-banner-bg) no-repeat 50% 50%;
+ --c: #14263f;
+ --p: 1rem;
+ --fd: column;
+ --w: span 12;
+ padding: 2rem;
+ box-sizing: border-box;
+
+ text-align: center;
+
+ &__ctas {
+ display: flex;
+ gap: 0.5rem;
+ margin-top: 1rem;
+ }
+
+ h1 {
+ margin: 0;
+ // max-width: 24ch;
+ @include headline-small;
+ }
+ &__blurb {
+ margin-top: 0.75rem;
+ // max-width: 42ch;
+ @include body-medium;
+ }
+}
diff --git a/scss/blocks/base.scss b/scss/blocks/base.scss
index 0fb2a9e..d224d9a 100644
--- a/scss/blocks/base.scss
+++ b/scss/blocks/base.scss
@@ -5,52 +5,111 @@
@import "profile";
@import "top-contributors";
@import "top-topics";
-// @import "cta";
+@import "cta";
+@import "banner";
// @import "img";
// @import "canvas";
// @import "emoji";
-.blocks {
- padding-top: 2rem;
- @include breakpoint(large) {
- padding-top: 1rem;
- }
- width: 100%;
-
- &__wrapper {
- gap: 1rem;
+// #main-outlet-wrapper {
+.blocks.--top {
+ justify-content: center;
+ container-type: inline-size;
+ border-bottom: var(--border-outer);
+ display: flex;
+ justify-content: center;
+ background: var(--neutral-100);
- width: 19rem;
- display: flex;
- flex-direction: column;
+ .blocks__wrapper {
+ padding: 1rem;
+ background-size: 47rem;
+ background-repeat: no-repeat;
+ background-position: 100% 50%;
+ display: grid;
+ justify-content: center;
+ width: 59rem;
+ box-sizing: content-box;
+ grid-template-columns: repeat(12, 4rem);
+ // grid-auto-rows: 4rem;
+ height: 100%;
+ container-type: inline-size;
+ @container (max-width: 59rem) {
+ display: flex;
+ flex-direction: column;
+ }
+ max-height: 19rem;
gap: 1rem;
- }
-
- &__row {
- &:not(:has(.block--4w)) {
+ box-sizing: border-box;
+ align-items: stretch;
+ .blocks__row {
+ @container (max-width: 59rem) {
+ display: flex;
+ flex-direction: column;
+ }
+ .block {
+ --bg: transparent;
+ }
display: grid;
- grid-template-columns: repeat(4, 4rem);
- grid-auto-rows: 4rem;
gap: 1rem;
- align-items: stretch;
+ grid-column: span 12;
+ grid-template-columns: repeat(12, 4rem);
}
}
+}
+// }
- // &__column {
- // display: grid;
- // grid-auto-rows: 4rem;
- // gap: 1rem;
- // }
+#main-outlet-wrapper {
+ .blocks {
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+ @include breakpoint(large) {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ }
+ width: 100%;
+
+ &__wrapper {
+ gap: 1rem;
+
+ width: 19rem;
+ display: flex;
+ flex-direction: column;
+
+ gap: 1rem;
+ }
+
+ &__row {
+ &:not(:has(.block--4w)) {
+ display: grid;
+ grid-template-columns: repeat(4, 4rem);
+ grid-auto-rows: 4rem;
+ gap: 1rem;
+ align-items: stretch;
+ }
+ }
+
+ // &__column {
+ // display: grid;
+ // grid-auto-rows: 4rem;
+ // gap: 1rem;
+ // }
+ }
}
.block {
+ --br: var(--rounded-#{$blocks_border_radius});
+
+ --b: 0;
+ --bg: var(--neutral-95);
+
position: relative;
display: flex;
box-sizing: border-box;
color: var(--c, var(--neutral-10));
- background: var(--bg, var(--neutral-95));
- border-radius: var(--br, var(--rounded-xl));
+ background: var(--bg, var(--neutral-100));
+ border-radius: var(--br, var(--rounded-md));
+ border: var(--b, var(--border-outer));
grid-column: var(--w, span 1);
grid-row: var(--h, span 1);
flex-direction: var(--fd, row);
diff --git a/scss/blocks/chart.scss b/scss/blocks/chart.scss
index 578505c..dae84d5 100644
--- a/scss/blocks/chart.scss
+++ b/scss/blocks/chart.scss
@@ -173,6 +173,8 @@
&__metadata {
display: inline-flex;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
&__details {
@@ -205,33 +207,43 @@
}
}
}
+ }
- ul {
- display: flex;
- gap: 0.375rem;
- list-style: none;
- align-items: baseline;
- margin: 0;
- li {
- a {
- display: inline-flex;
- align-items: center;
- gap: 0.125rem;
- color: var(--neutral-10);
- height: 1.25rem;
- padding: 0 0.25rem;
- box-sizing: border-box;
- border: var(--border-outer);
- border-radius: var(--rounded);
- @include label-small;
-
- &:before {
- @include i($font-size: 0.75rem);
- content: "comment";
- }
- span {
- padding: 0 0.0625rem;
- }
+ &__stats {
+ display: flex;
+ gap: 0.375rem;
+ list-style: none;
+ align-items: baseline;
+ margin: 0;
+ li {
+ a {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.125rem;
+ color: var(--neutral-10);
+ height: 1.25rem;
+ padding: 0 0.25rem;
+ box-sizing: border-box;
+ border: var(--border-outer);
+ border-radius: var(--rounded-md);
+ @include label-small;
+
+ &.--likes:before {
+ @include i($font-size: 0.75rem);
+ content: "favorite";
+ }
+
+ &.--liked:before {
+ @include i($font-size: 0.75rem, $fill: 1);
+ color: var(--love);
+ }
+
+ &.--comments:before {
+ @include i($font-size: 0.75rem);
+ content: "comment";
+ }
+ span {
+ padding: 0 0.0625rem;
}
}
}
diff --git a/scss/blocks/cta.scss b/scss/blocks/cta.scss
new file mode 100644
index 0000000..1c3cb76
--- /dev/null
+++ b/scss/blocks/cta.scss
@@ -0,0 +1,24 @@
+.block-cta {
+ --fd: column;
+ --p: 1rem;
+ --jc: space-between;
+
+ color: var(--primary);
+
+ &__img {
+ position: absolute;
+ top: var(--p);
+ right: var(--p);
+ }
+ h4 {
+ @include title-large;
+ margin: 0 0 0.75rem 0;
+ }
+ p {
+ @include body-small;
+ margin: 0 0 0.75rem;
+ }
+ a {
+ @include button($style: primary);
+ }
+}
diff --git a/scss/blocks/profile.scss b/scss/blocks/profile.scss
index 7455331..0537a03 100644
--- a/scss/blocks/profile.scss
+++ b/scss/blocks/profile.scss
@@ -4,7 +4,7 @@
--fd: column;
--ai: center;
--avatar-w: 5.5rem;
- --bg: var(--neutral-95);
+ --bg: var(--neutral-100);
&.block--2x2 {
--avatar-w: 3.5rem;
@@ -27,8 +27,8 @@
z-index: 1;
padding: 0.1875rem;
- img {
- }
+ // img {
+ // }
}
&__info {
flex: unset;
@@ -93,7 +93,7 @@
flex: 1;
gap: 0;
text-align: center;
- padding: 0 1.5rem 1.5rem 1.5rem;
+ padding: 0 1rem 1rem 1rem;
}
&__hello {
@@ -110,10 +110,7 @@
&__name {
display: inline-flex;
- &:after {
- content: "!";
- }
- // @include title-medium;
+ @include title-medium;
}
&__username {
@@ -126,13 +123,18 @@
@include body-small;
}
+ &__edit {
+ margin-top: 1rem;
+ @include button($style: neutral);
+ }
+
&__bio {
margin-top: 0.5rem;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
- @include body-medium;
+ @include body-small;
}
&__link {
diff --git a/scss/blocks/time.scss b/scss/blocks/time.scss
index 58eb9d7..c5d87ad 100644
--- a/scss/blocks/time.scss
+++ b/scss/blocks/time.scss
@@ -7,9 +7,9 @@
&__date {
@include body-small;
- line-height: 1;
}
&__time {
- @include headline-small;
+ padding-bottom: 0.125rem;
+ @include title-large;
}
}
diff --git a/scss/blocks/top-contributors.scss b/scss/blocks/top-contributors.scss
index 21321af..0a8e3bc 100644
--- a/scss/blocks/top-contributors.scss
+++ b/scss/blocks/top-contributors.scss
@@ -3,7 +3,7 @@
--h: span 4;
--fd: column;
--ai: stretch;
- --p: 1.5rem;
+ --p: 1rem;
&.block {
padding-bottom: 1rem;
diff --git a/scss/blocks/top-topics.scss b/scss/blocks/top-topics.scss
index ce2acdb..f156892 100644
--- a/scss/blocks/top-topics.scss
+++ b/scss/blocks/top-topics.scss
@@ -2,7 +2,7 @@
--w: span 4;
--fd: column;
--ai: stretch;
- --p: 1.5rem;
+ --p: 1rem;
&.block {
padding-bottom: 1rem;
diff --git a/scss/components/buttons.scss b/scss/components/buttons.scss
index 5e8fcd8..274e76c 100644
--- a/scss/components/buttons.scss
+++ b/scss/components/buttons.scss
@@ -1,11 +1,21 @@
-@mixin button($style: neutral, $size: md) {
+@mixin button($style: tertiary, $size: md) {
display: flex;
align-items: center;
box-sizing: border-box;
- @if $style == neutral {
+ @if $style == primary {
+ background-color: #f26826;
+
+ span {
+ color: var(--neutral-100);
+ }
+ }
+
+ @if $style == tertiary {
background-color: var(--neutral-100);
- color: var(--neutral-10);
+ span {
+ color: var(--neutral-10);
+ }
}
@if $size == sm {
@@ -29,10 +39,26 @@
} @else if $size == md {
height: 2.5rem;
+ &::before {
+ @include i($font-size: 1.25rem);
+ }
+
+ padding: 0 0.5rem;
+ border-radius: var(--rounded-md);
+
span {
+ @include label-large;
padding: 0 0.25rem;
}
}
+
+ @if $style == icon {
+ height: 2.5rem;
+ width: 2.5rem;
+ border-radius: var(--rounded-full);
+ }
+
+ @include hover;
}
@mixin badge($style: neutral) {
@@ -54,3 +80,39 @@
@include hover;
}
+
+.button--primary {
+ @include button($style: primary);
+}
+
+.button--tertiary {
+ @include button($style: tertiary);
+}
+
+.btn-icon {
+ @include button($style: icon);
+}
+
+.select-kit.single-select.dropdown-select-box .select-kit-header.btn-icon {
+ @include button($style: icon);
+
+ .select-kit-header-wrapper {
+ justify-content: center;
+ }
+}
+
+.notifications-button {
+ .select-kit-selected-name {
+ &:before {
+ @include i;
+ content: "notifications";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+}
+
+.btn-icon-text {
+ @include button($style: neutral);
+}
diff --git a/scss/components/categories.scss b/scss/components/categories.scss
new file mode 100644
index 0000000..dd7fe26
--- /dev/null
+++ b/scss/components/categories.scss
@@ -0,0 +1,196 @@
+.contents {
+ container-type: inline-size;
+}
+
+.c-categories {
+ &__item {
+ @include hover($opacity: 0.02);
+
+ cursor: pointer;
+
+ display: flex;
+ flex-direction: column;
+
+ box-sizing: border-box;
+ padding: 1rem;
+
+ background: var(--neutral-100);
+
+ border: var(--border-outer);
+ border-radius: var(--rounded-lg);
+
+ &-heading {
+ @include title-large;
+
+ margin-bottom: 0;
+
+ .badge-category__wrapper {
+ white-space: initial;
+
+ .badge-category {
+ gap: 0.5rem;
+ align-items: baseline;
+ }
+ }
+ }
+
+ &-description {
+ @include body-medium;
+
+ margin: 1rem 0 auto 0;
+ color: var(--neutral-50);
+
+ p {
+ margin: 0;
+ }
+ }
+
+ &-metadata {
+ @include label-small;
+
+ color: var(--neutral-50);
+ }
+
+ &-more {
+ @include body-small;
+ color: var(--neutral-50);
+ &::first-letter {
+ text-transform: capitalize;
+ }
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+
+ h6 {
+ @include body-small;
+ padding-top: 1rem;
+ border-top: var(--border-outer);
+ margin-top: 1rem;
+ }
+
+ &-subcategories {
+ display: flex;
+ margin-top: 1rem;
+ flex-wrap: wrap;
+ @include body-small;
+ align-items: center;
+ gap: 0.375rem;
+
+ .badge-category__wrapper {
+ background: var(--neutral-100);
+ border: var(--border-outer);
+ // padding: 0.5rem 0.625rem 0.5rem 0.5rem;
+ padding: 0.125rem 0.25rem 0.125rem 0.125rem;
+ border-radius: var(--rounded-md);
+ white-space: nowrap;
+ @include hover($opacity: 0.08);
+ .badge-category {
+ width: 100%;
+ gap: 0.25rem;
+ @include label-large;
+ &:before {
+ width: 1rem;
+ height: 1rem;
+ font-size: 1rem;
+ }
+ }
+ }
+ }
+
+ // &-label {
+ // &:after {
+ // // content: ":";
+ // }
+ // }
+
+ &-topics {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+ border-top: var(--border-outer);
+ padding-top: 1rem;
+ margin: 2rem 0 0;
+
+ ul {
+ display: flex;
+ margin: 0;
+ flex-direction: column;
+ gap: 0.125rem;
+ align-items: flex-start;
+ justify-self: flex-end;
+
+ list-style: none;
+
+ li {
+ @include body-medium;
+
+ overflow: hidden;
+ display: flex;
+ gap: 0.125rem;
+ max-width: 100%;
+
+ &::before {
+ content: "•";
+
+ width: 1rem;
+ display: flex;
+ justify-content: center;
+ align-items: baseline;
+ }
+
+ a {
+ overflow: hidden;
+ display: inline-flex;
+ flex: 1;
+ gap: 0.375rem;
+ align-items: baseline;
+
+ span:first-child {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ display: grid;
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+
+ grid-template-rows: auto;
+ gap: 1rem;
+
+ border-top: var(--border-inner);
+
+ padding: 1rem;
+ @container (max-width: 48rem) {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ @container (max-width: 32rem) {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ padding: 0;
+ background: var(--neutral-95);
+ gap: 0.5rem;
+
+ &__item {
+ border: 0;
+ border-radius: 0;
+ }
+ }
+}
+
+.category-boxes-with-topics {
+ display: none;
+}
+
+div:has(> .category-list) {
+ display: none;
+}
diff --git a/scss/components/navigation.scss b/scss/components/navigation.scss
index de83a1e..a8d3674 100644
--- a/scss/components/navigation.scss
+++ b/scss/components/navigation.scss
@@ -1,4 +1,8 @@
.c-navigation {
+ @include breakpoint(large) {
+ padding: 1rem 0;
+ }
+
@include breakpoint(tablet) {
position: fixed;
z-index: 999;
@@ -6,15 +10,18 @@
bottom: 0;
left: 0;
- height: unset;
- }
+ height: var(--mobile-nav-h);
+ padding: 0;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: center;
- @include breakpoint(large) {
- padding: 1rem 0;
+ background: var(--neutral-100);
+ border-top: var(--border-outer);
}
- width: 100%;
- // border-right: var(--border-outer);
+ display: flex;
+ flex-direction: column;
scrollbar-color: transparent transparent;
scrollbar-width: thin;
@@ -27,10 +34,9 @@
align-self: start;
box-sizing: border-box;
+ width: 100%;
height: calc(100vh - var(--header-offset));
- padding: 2rem 1rem 2rem 0;
-
- background: var(--neutral-100);
+ padding: 2rem 0;
&::-webkit-scrollbar {
width: 1rem;
@@ -47,11 +53,6 @@
border-radius: var(--rounded-full);
}
- ul {
- margin: 0;
- list-style: none;
- }
-
&:hover {
scrollbar-color: var(--neutral-90) transparent;
@@ -78,62 +79,57 @@
}
}
- ul.c-navigation__list,
- ul.c-navigation__categories-list {
- @include breakpoint(tablet) {
- flex-direction: row;
- justify-content: space-around;
- padding: 0;
- }
+ h6 {
+ @include body-small;
+ border-top: var(--border-outer);
+ padding-top: 1rem;
+ padding-left: 1rem;
+ margin: 1rem 0 0.5rem;
+ }
+ &__main,
+ &__categories,
+ &__you {
+ margin: 0;
+ list-style: none;
display: flex;
flex-direction: column;
-
& > li {
- display: block;
+ flex: 1;
&.active > a,
& > a.active {
- font-weight: 600;
- background-color: var(--neutral-95);
-
- &::before {
+ &:before {
@include i($fill: 1);
}
-
@include breakpoint(large) {
background-color: transparent;
- &:before {
- justify-content: center;
+
+ &::before {
display: flex;
align-items: center;
- border-radius: var(--rounded-xl);
- width: 3rem;
- height: 1.5rem;
+ justify-content: center;
+
background-color: var(--neutral-95);
+ border-radius: var(--rounded-xl);
+ }
+
+ &:hover:after {
+ content: unset;
}
}
+
+ font-weight: 600;
+ background-color: rgba(var(--neutral-10-rgb), 0.08);
}
& > a {
- @include breakpoint(large) {
- @include label-small;
-
- flex-direction: column;
- gap: 0.25rem;
- justify-content: center;
-
- height: 3.5rem;
- padding: 0;
-
- border-radius: 0;
- }
-
@include body-medium;
@include hover;
display: flex;
+ flex: 1;
gap: 1rem;
align-items: center;
@@ -152,181 +148,234 @@
}
}
}
+ }
+ }
- &.c-navigation__categories {
- & > ul {
- @include breakpoint(large) {
- display: none;
- }
-
- li {
- display: flex;
- flex-direction: column;
-
- .badge-category {
- gap: 1rem;
- }
+ &__main,
+ &__you {
+ @include breakpoint(tablet) {
+ flex-direction: row;
+ justify-content: space-around;
+ padding: 0;
+ }
- .badge-category__name {
- display: inline-flex;
- gap: 0.25rem;
- color: var(--neutral-10);
- }
+ & > li {
+ & > a {
+ @include breakpoint(large) {
+ &:before {
+ padding: 0.125rem 0.875rem;
}
- }
-
- .c-navigation__subcategories {
- position: relative;
+ @include label-small;
+ &:hover:after {
+ content: unset;
+ }
+ flex-direction: column;
+ gap: 0.25rem;
+ justify-content: center;
- display: inline-flex;
- flex-wrap: wrap;
- row-gap: 0.125rem;
+ height: 3.5rem;
+ padding: 0 0 0.25rem 0;
- margin: 0 0 0.5rem;
- padding-left: 3.25rem;
+ border-radius: 0;
+ }
+ }
- &::before {
- content: "";
+ &:has(a[data-name="chat"]) {
+ @include breakpoint(tablet) {
+ display: flex;
+ }
+ display: none;
+ }
+ }
+ }
- position: absolute;
- top: 0;
- left: 1.625rem;
+ &__categories {
+ & > li {
+ .badge-category__wrapper {
+ .badge-category {
+ overflow: hidden;
+ gap: 1rem;
+ text-overflow: ellipsis;
+
+ &__name {
+ color: var(--neutral-10);
+ }
+ }
+ }
+ }
+ }
- width: 1px;
- height: 100%;
+ &__subcategories {
+ position: relative;
+ list-style: none;
+ display: inline-flex;
+ flex-wrap: wrap;
+ row-gap: 0.125rem;
- background: var(--neutral-90);
- }
+ margin: 0 0 0.5rem;
+ padding-left: 3.25rem;
- li {
- &:not(:last-of-type) {
- a > span::after {
- content: ",\00a0";
- }
- }
+ &::before {
+ content: "";
- a {
- padding: 0;
+ position: absolute;
+ top: 0;
+ left: 1.625rem;
- span.badge-category__name {
- display: inline-flex;
- gap: 0.125rem;
- &:hover {
- text-decoration: underline;
- }
- }
+ width: 1px;
+ height: 100%;
- span {
- @include body-small;
+ background: var(--neutral-90);
+ }
- display: inline-flex;
- gap: 0;
- color: var(--neutral-50);
+ & > li {
+ display: inline-flex;
- &::before {
- content: unset;
- }
- }
- }
- }
+ &:not(:last-of-type) {
+ & > a > span::after {
+ content: ",\00a0";
}
+ }
- @media only screen and (width >= 1001px) {
- margin-top: 2rem;
+ .badge-category__wrapper {
+ padding: 0;
- & > a {
- @include body-small;
+ .badge-category {
+ display: inline-flex;
+ gap: 0;
+ color: var(--neutral-50);
+ @include body-small;
- background: none;
+ &::before {
+ content: unset;
+ }
+ &__name {
display: inline-flex;
- height: unset;
- margin-bottom: 0.5rem;
- padding: 0;
+ gap: 0.125rem;
+ @include body-small;
&:hover {
text-decoration: underline;
-
- &::after {
- content: unset;
- }
}
}
}
}
}
}
-}
-
-[data-name="home"] {
- &::before {
- content: "home";
- }
-}
-[data-name="topics"] {
- &::before {
- content: "feed";
+ &__you {
+ @include breakpoint(tablet) {
+ display: none;
+ }
}
-}
-[data-name="categories"] {
- @include breakpoint(large) {
- &::before {
- content: "list";
+ h6,
+ &__categories {
+ @include breakpoint(large) {
+ display: none;
}
}
}
-[data-name="messages"] {
- &::before {
- content: "mail";
+.navigation-container {
+ // display: none;
+ .category-breadcrumb,
+ #navigation-bar {
+ display: none;
}
}
-[data-name="admin"] {
- &::before {
- content: "settings";
+.navigation-container .navigation-controls {
+ background: var(--neutral-100);
+ & > *:not(:last-child) {
+ margin: 0;
}
-}
+ margin: 0;
+ display: grid;
+ width: 100%;
+ // border-bottom: var(--border-inner);
+ padding: 1rem;
-[data-name="bookmarks"] {
- &::before {
- content: "bookmark";
+ .bulk-select {
+ display: none;
}
-}
-[data-name="following"] {
- &::before {
- content: "news";
+ h2 {
+ &:before {
+ @include i;
+ width: 2rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
}
-}
-[data-name="assigned"] {
- &::before {
- content: "assignment_add";
+ .navigation-topics & {
+ display: flex;
}
-}
-[data-name="mentions"] {
- &::before {
- content: "alternate_email";
+ .navigation-categories & {
+ display: flex;
+ .breadcrumbs__title {
+ flex: 1;
+ }
+ #create-category {
+ order: 9;
+ }
+ .categories-admin-dropdown {
+ order: 9;
+ }
+ }
+ .navigation-category & {
+ grid-template-areas:
+ "title title notifications edit . list"
+ ". description description description description list";
+ grid-template-columns: 2rem auto 2.5rem 2.5rem 1fr auto;
+ grid-template-rows: auto auto;
+ row-gap: 0.5rem;
+ column-gap: 1rem;
}
-}
-.navigation-container {
- display: none;
+ .breadcrumbs {
+ display: contents;
+ &__select {
+ grid-area: list;
+ }
+ &__category {
+ display: contents;
+ }
+ &__title {
+ padding: 0;
+ min-height: 2.5rem;
+ grid-area: title;
+ grid-column: span 2;
+ }
+ &__desc {
+ grid-area: description;
+ white-space: initial;
+ }
+ }
+ .notifications-button {
+ grid-area: notifications;
+ }
+ .edit-category {
+ position: relative;
+ left: -0.5rem;
+ grid-area: edit;
+ }
}
.breadcrumbs {
+ order: -1;
display: flex;
- align-items: center;
-
+ align-items: flex-start;
+ gap: 2rem;
box-sizing: border-box;
- height: 4.5rem;
+ // min-height: 4.5rem;
+ padding: 1rem;
- border-bottom: var(--border-outer);
- padding: 0 1rem;
+ border-bottom: var(--border-inner);
&__title {
@include headline-small;
@@ -334,36 +383,86 @@
display: flex;
gap: 1rem;
align-items: center;
-
margin: 0;
+ .badge-category__wrapper {
+ font-size: inherit;
+
+ .badge-category {
+ gap: 1rem;
+ align-items: baseline;
+
+ .badge-category__name {
+ white-space: initial;
+ }
+
+ &::before {
+ width: 2rem;
+ }
+ }
+ }
+
.badge {
- &[data-badge-type="icon"]{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ padding: 0 0.375rem;
+
+ font-size: 24px;
+
+ &[data-badge-type="icon"] {
@include i;
}
- &[data-badge-type="emoji"]{
+
+ &[data-badge-type="emoji"] {
width: 1.25rem;
- line-height: 1;
font-size: 1.25rem;
+ line-height: 1;
}
- &[data-clickable="true"]{
+
+ &[data-clickable="true"] {
cursor: pointer;
}
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 24px;
- padding: 0 0.375rem;
}
}
- &__select {
- width: auto;
- max-width: 180px;
- margin-left: auto;
+ &__category {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ }
+
+ &__desc {
+ @include body-medium;
+
+ display: inline-block;
+ // padding-left: 3rem;
+
+ p {
+ margin: 0;
+ }
+ }
+
+ &__select {
+ @include body-medium;
+ text-align: right;
+ cursor: pointer;
+ height: 2.5rem;
+ width: min-content;
margin-bottom: 0;
+ margin-left: auto;
+ padding: 0;
+
+ color: var(--neutral-50);
+ background: none;
border: none;
- padding: 0 3px;
+ }
+}
+
+body:has(.admin-main-nav .nav-pills) {
+ .--temp.admin-main-nav {
+ display: none;
}
}
diff --git a/scss/components/user-menu.scss b/scss/components/user-menu.scss
new file mode 100644
index 0000000..02fa039
--- /dev/null
+++ b/scss/components/user-menu.scss
@@ -0,0 +1,80 @@
+.c-user-menu {
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ min-width: 16rem;
+
+ &__profile {
+ display: flex;
+ padding: 1rem;
+ gap: 1rem;
+ &-info {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ }
+ &-name {
+ display: flex;
+ flex-direction: column;
+ @include body-small;
+ line-height: 1;
+
+ span:first-child {
+ @include body-large;
+ }
+ span:nth-child(2) {
+ &:before {
+ content: "@";
+ }
+ }
+ }
+ &:hover {
+ .c-user-menu__profile-cta {
+ text-decoration: underline;
+ }
+ }
+ &-cta {
+ @include body-small;
+ color: var(--primary-50);
+ }
+ }
+ &__links {
+ border-top: var(--border-inner);
+ display: flex;
+ flex-direction: column;
+
+ list-style: none;
+ margin: 0;
+ padding: 0.5rem 0;
+ li {
+ display: flex;
+ a {
+ flex: 1;
+ gap: 1rem;
+ padding: 0.5rem 1rem;
+ align-items: center;
+ display: flex;
+ @include hover;
+ }
+ @include body-medium;
+ a:before {
+ @include i;
+ }
+ }
+ }
+ &__footer {
+ border-top: var(--border-inner);
+ display: flex;
+ list-style: none;
+ margin: 0;
+ padding: 1rem;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+ @include label-small;
+ a {
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+}
diff --git a/scss/discourse/badges.scss b/scss/discourse/badges.scss
index 1b7056e..19c14c4 100644
--- a/scss/discourse/badges.scss
+++ b/scss/discourse/badges.scss
@@ -1,7 +1,18 @@
.badge-category__wrapper {
+ font-size: inherit;
.badge-category {
+ gap: 0.25rem;
align-items: center;
+ &__name {
+ color: var(--neutral-10);
+ }
+ &.--has-parent {
+ &:before {
+ background: none;
+ }
+ }
&:before {
+ content: "📁";
background: none;
width: 1.25rem;
height: 1.25rem;
@@ -31,11 +42,15 @@
@include i($font-size: 0.75rem);
content: "lock" !important;
align-self: center;
+ display: inline-flex;
+ margin-right: 0.125rem;
+ align-items: center;
+ justify-content: center;
}
}
}
}
- &:before {
+ .badge-category:before {
content: "📁";
}
// &[data-category-id="124"]:before {
diff --git a/scss/discourse/banner.scss b/scss/discourse/banner.scss
new file mode 100644
index 0000000..bf01795
--- /dev/null
+++ b/scss/discourse/banner.scss
@@ -0,0 +1,35 @@
+#main-outlet {
+ .container:has(#banner) {
+ display: none;
+ }
+}
+
+#banner {
+ margin: 0;
+ padding: 0;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .floated-buttons {
+ // display: none;
+ position: absolute;
+ right: 1rem;
+ }
+ // &:hover .floated-buttons {
+ // display: flex;
+ // }
+ &-content {
+ flex: 1;
+ box-sizing: border-box;
+ padding: 1rem;
+ max-width: var(--d-max-width);
+ text-align: center;
+ h3 {
+ @include headline-small;
+ }
+ p {
+ @include body-medium;
+ }
+ }
+}
diff --git a/scss/discourse/d-menu.scss b/scss/discourse/d-menu.scss
index 437788a..2293af6 100644
--- a/scss/discourse/d-menu.scss
+++ b/scss/discourse/d-menu.scss
@@ -1,16 +1,27 @@
+:root {
+ --shadow-menu-panel: 0 0.25rem 2rem rgba(var(--neutral-0-rgb), 0.1);
+}
+
+.fk-d-button-tooltip {
+ &:has(#create-topic) {
+ display: none;
+ }
+}
+
.fk-d-menu {
z-index: 1000;
&__inner-content {
background: var(--neutral-100);
border: 0;
border-radius: var(--rounded-md);
- ul {
+ overflow: hidden;
+ & > ul {
list-style: none;
margin: 0;
padding: 0.5rem 0;
display: flex;
flex-direction: column;
- li {
+ & > li {
display: flex;
a {
width: 100%;
diff --git a/scss/discourse/docs.scss b/scss/discourse/docs.scss
new file mode 100644
index 0000000..55cf2a8
--- /dev/null
+++ b/scss/discourse/docs.scss
@@ -0,0 +1,121 @@
+.docs {
+ .docs-search {
+ background: none;
+ padding: 2rem;
+ margin: 0;
+ border-bottom: var(--border-inner);
+ &-wrapper {
+ display: flex;
+ align-items: center;
+ &:before {
+ padding: 0 0.875rem;
+ position: absolute;
+ color: var(--neutral-50);
+ }
+ }
+ &-bar {
+ padding-left: 2.5rem;
+ height: 2.5rem;
+ border-radius: var(--rounded-full);
+ }
+ }
+ .docs-browse {
+ .docs-items {
+ a {
+ color: inherit;
+ }
+ .item-controls-buttons {
+ .categories-amount,
+ .tags-amount {
+ display: none;
+ }
+ }
+ .docs-item {
+ padding: 0.5rem 0;
+ gap: 0.5rem;
+ // @include hover;
+ &:hover {
+ background: none;
+ }
+ &-count {
+ @include body-small;
+ color: var(--neutral-50);
+ }
+ .tag-id,
+ .category-id {
+ @include body-medium;
+ color: var(--neutral-10);
+ }
+ }
+ }
+ .docs-topic-list {
+ .docs-topic-link {
+ color: var(--neutral-10);
+ @include body-large;
+ }
+ }
+ .loading-container {
+ padding: 0;
+ }
+ .docs-topic {
+ .docs-nav-link {
+ &.more {
+ padding: 1rem;
+ @include body-large;
+ }
+ &.return {
+ padding: 1rem;
+ display: flex;
+ gap: 1rem;
+ &:before {
+ @include i;
+ content: "arrow_back";
+ margin: 0;
+ }
+ @include label-large;
+ }
+ }
+ .topic-content {
+ padding: 0;
+ & > h1 {
+ border-top: var(--border-inner);
+ border-bottom: var(--border-inner);
+ margin: 0;
+ padding: 1rem;
+ @include headline-small;
+ }
+ }
+ }
+ }
+
+ .docs-filters {
+ min-width: 14rem;
+ padding: 0;
+
+ border-right: var(--border-inner);
+
+ h3 {
+ @include title-small;
+ margin: 0;
+ }
+ }
+
+ .docs-browse .docs-items {
+ padding: 1rem;
+ }
+
+ .empty-state {
+ padding: 1rem;
+ color: inherit;
+ &-title {
+ @include headline-small;
+ margin-bottom: 1rem;
+ }
+ &-body {
+ p {
+ @include body-large;
+ margin: 0;
+ }
+ }
+ }
+}
diff --git a/scss/discourse/header.scss b/scss/discourse/header.scss
index 7c969d7..d6e5f32 100644
--- a/scss/discourse/header.scss
+++ b/scss/discourse/header.scss
@@ -1,23 +1,33 @@
.d-header {
- background-color: var(--neutral-100);
- box-shadow: none;
- height: 3rem;
+ &-wrap {
+ position: fixed;
+ width: 100%;
+ }
box-sizing: content-box;
+ height: 3rem;
padding: 0.75rem 0;
+
+ background-color: var(--neutral-100);
border-bottom: 1px solid var(--neutral-90);
+ box-shadow: none;
.wrap {
.contents {
- display: grid;
- grid-template-areas: "left center right";
- grid-template-columns: minmax(0, 18rem) minmax(26rem, 1fr) 21rem;
- column-gap: 0rem;
@include breakpoint(large) {
display: flex;
}
+ display: grid;
+ grid-template-areas: "logo search utility";
+ grid-template-columns: var(--column-navigation) var(--column-content) var(
+ --column-blocks
+ );
+ column-gap: 2rem;
+
&
- > *:not(.home-logo-wrapper-outlet):not(.before-header-panel-outlet):not(
+ > *:not(
+ .home-logo-wrapper-outlet,
+ .before-header-panel-outlet,
.panel
) {
display: none;
@@ -25,91 +35,173 @@
}
}
+ .hamburger-dropdown {
+ display: none;
+ }
+
.title {
display: none;
}
+
.home-logo-wrapper-outlet {
display: flex;
+ flex-shrink: 0;
+
.logo-temp {
+ @include headline-small;
+
display: flex;
width: min-content;
+ margin: 0;
+
img {
- max-width: 12rem;
width: auto;
- max-height: 2.5rem;
+ max-width: 12rem;
height: auto;
+ max-height: 2.5rem;
}
-
- margin: 0;
- @include headline-small;
}
}
.extra-info-wrapper {
display: none;
}
+
.d-header-icons {
+ margin: 0;
+
+ .badge-notification {
+ border: 2px solid var(--neutral-100);
+ background: var(--primary-50);
+ color: var(--neutral-100);
+ padding: 0 0.25rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ min-width: calc(1rem + 2px);
+ height: calc(1rem + 2px);
+ top: 0;
+ right: 0;
+ @include label-small;
+ }
+
li:has(.ai-bot-button) {
display: none;
}
+
li.c-user {
order: 9;
}
+
li > button,
li > .icon {
- border: 0;
- background: none;
+ @include hover;
+
+ box-sizing: border-box;
+ width: 2.5rem;
+ height: 2.5rem;
padding: 0;
+
color: var(--neutral-10);
+
+ background: none;
+ border: 0;
+ border-radius: var(--rounded-full);
+
transition: none;
- @include hover;
+
&:hover {
- border: 0;
- background: inherit;
color: inherit;
+ background: inherit;
+ border: 0;
}
- width: 2.5rem;
- height: 2.5rem;
- box-sizing: border-box;
- border-radius: var(--rounded-md);
+
.avatar {
width: 2rem;
height: 2rem;
}
}
+
.active {
.icon {
background-color: var(--neutral-95);
border: 0;
- &:after {
+
+ &::after {
content: unset;
}
}
}
+
+ li.search-dropdown {
+ order: -2;
+ .icon::before {
+ @include i($font-size: 1.25rem);
+
+ content: "search";
+ }
+
+ .d-icon {
+ display: none;
+ }
+ }
+
li.chat-header-icon {
.d-icon {
display: none;
}
- .icon:before {
+
+ @include breakpoint(tablet) {
+ display: none;
+ }
+
+ .icon::before {
@include i($font-size: 1.25rem);
+
content: "chat_bubble";
}
}
+
li.c-create {
order: -1;
- button:before {
+
+ button::before {
@include i($font-size: 1.25rem);
+
content: "edit_square";
}
}
+
li.user-menu-panel {
- button:before {
+ button::before {
@include i($font-size: 1.25rem);
+
content: "notifications";
}
+
img.avatar {
display: none;
}
}
}
}
+
+.search-header--visible {
+ .panel .header-dropdown-toggle.search-dropdown,
+ .panel .search-menu {
+ @include breakpoint(tablet) {
+ display: flex;
+ }
+
+ display: none;
+ }
+
+ .before-header-panel-outlet {
+ @include breakpoint(tablet) {
+ display: none;
+ }
+
+ flex: 1 1 auto;
+ }
+}
diff --git a/scss/discourse/inputs.scss b/scss/discourse/inputs.scss
new file mode 100644
index 0000000..6ab7845
--- /dev/null
+++ b/scss/discourse/inputs.scss
@@ -0,0 +1,20 @@
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"] {
+ background: var(--neutral-100);
+ color: var(--neutral-10);
+ padding: 0.5rem 1rem;
+ border: var(--border-outer);
+ @include body-large;
+}
diff --git a/scss/discourse/mixins.scss b/scss/discourse/mixins.scss
index 4e63af4..1c1aa90 100644
--- a/scss/discourse/mixins.scss
+++ b/scss/discourse/mixins.scss
@@ -13,3 +13,15 @@ $breakpoints: (
large: 1000px,
extra-large: 1140px,
);
+
+a {
+ &.mention,
+ &.mention-group {
+ display: inline;
+ @include body-medium;
+ color: var(--neutral-30);
+ padding: 0.0625rem 0.25rem;
+ background: var(--neutral-90);
+ border-radius: var(--rounded-md);
+ }
+}
diff --git a/scss/discourse/search-menu.scss b/scss/discourse/search-menu.scss
index 530bf87..1576ed7 100644
--- a/scss/discourse/search-menu.scss
+++ b/scss/discourse/search-menu.scss
@@ -15,6 +15,7 @@
display: none;
}
.search-menu-panel {
+ background: none;
box-shadow: var(--shadow-5);
padding-top: 3rem;
margin-top: -3rem;
@@ -116,7 +117,9 @@
.search-menu-container {
border-radius: var(--rounded-full);
- background: var(--neutral-95);
+ background: var(--neutral-100);
+ border: var(--border-outer);
+ box-sizing: border-box;
&:hover {
background: var(--neutral-100);
// @include elevation-3;
@@ -150,6 +153,8 @@
.search-input {
z-index: 1;
+ background: none;
+
position: relative;
margin: 0;
&:before {
@@ -158,6 +163,8 @@
color: var(--neutral-50);
}
&:focus-within {
+ background-color: transparent;
+
outline: 0;
}
#search-term {
@@ -168,7 +175,7 @@
}
background-color: transparent;
border: none;
- height: 3rem;
+ height: 2.5rem;
padding: 0 0.875rem 0;
gap: 0.5rem;
}
diff --git a/scss/discourse/tagging.scss b/scss/discourse/tagging.scss
index f9aa94d..bea6049 100644
--- a/scss/discourse/tagging.scss
+++ b/scss/discourse/tagging.scss
@@ -15,3 +15,22 @@
}
}
}
+
+.tags-index {
+ .list-controls {
+ padding: 1rem;
+ }
+ hr {
+ border-top: var(--border-inner);
+ margin: 0;
+ }
+ .tag-sort-options {
+ padding: 1rem;
+ margin: 0;
+ }
+ .tags-list {
+ margin: 0;
+ padding: 1rem;
+ border: 0;
+ }
+}
diff --git a/scss/discourse/topic-list.scss b/scss/discourse/topic-list.scss
index eaf481d..51f6fcc 100644
--- a/scss/discourse/topic-list.scss
+++ b/scss/discourse/topic-list.scss
@@ -13,10 +13,13 @@ table.topic-list {
tr.topic-list-item-separator {
display: flex;
+ background: var(--neutral-100);
+
td.topic-list-data {
+ max-width: unset;
flex: 1;
border-top: var(--border-inner);
- border-bottom: var(--border-inner);
+ // border-bottom: var(--border-inner);
padding: 1rem 0;
span {
@@ -27,12 +30,17 @@ table.topic-list {
}
}
tr.topic-list-item {
+ background: var(--neutral-100);
@include hover($opacity: 0.02);
cursor: pointer;
position: relative;
+ .docs-results & {
+ display: flex;
+ }
+
display: grid;
grid-template-areas: "avatar author actions" "avatar category actions" "avatar title actions" "avatar tags actions" "avatar content actions" "avatar replies actions";
grid-template-columns: 2rem auto auto;
@@ -70,12 +78,34 @@ table.topic-list {
// }
padding: 1rem;
-
- border-bottom: var(--border-inner);
+ border-bottom: 0;
+ border-top: var(--border-inner);
animation: none;
td.topic-list-data {
+ // mobile overrides
+ max-width: unset;
+ padding: 0;
+ .pull-left {
+ display: none;
+ }
+ .topic-item-metadata {
+ display: contents;
+ & > *:not(.main-link) {
+ display: none;
+ }
+ .main-link {
+ @include body-large;
+ width: unset;
+ color: var(--neutral-10);
+ a {
+ color: inherit;
+ }
+ }
+ }
+ // end
+
&.num,
&.posters {
display: none;
@@ -95,13 +125,13 @@ table.topic-list {
}
a.title {
- &:hover {
- span {
- // text-decoration: underline;
- }
- }
- span {
- }
+ // &:hover {
+ // span {
+ // // text-decoration: underline;
+ // }
+ // }
+ // span {
+ // }
padding: 0;
color: var(--neutral-10);
@@ -141,6 +171,14 @@ table.topic-list {
}
}
+.topic-statuses {
+ .topic-status {
+ &:before {
+ @include i($font-size: 0.875rem);
+ }
+ }
+}
+
.topic {
&__avatar {
grid-area: avatar;
@@ -177,24 +215,24 @@ table.topic-list {
&__author {
display: flex;
grid-area: author;
- gap: 0.5rem;
+ gap: 0.375rem;
align-items: baseline;
.topic__username {
- @include label-medium;
+ @include label-large;
&:hover {
text-decoration: underline;
}
}
- .topic__category {
- // &:before {
- // display: inline-flex;
- // transform: translateY(0.125rem);
- // @include i($font-size: 0.75rem);
- // content: "lock";
- // }
- }
+ // .topic__category {
+ // // &:before {
+ // // display: inline-flex;
+ // // transform: translateY(0.125rem);
+ // // @include i($font-size: 0.75rem);
+ // // content: "lock";
+ // // }
+ // }
.topic__metadata {
@include label-small;
@@ -328,10 +366,23 @@ table.topic-list {
// UX PREFERENCE
+@if $topic-list-show-usernames == "false" {
+ body:not(.user-messages-page) {
+ .topic__username,
+ .topic__last-reply > span:not(.relative-date) {
+ display: none;
+ }
+ .topic__author .topic__metadata {
+ @include body-small;
+ }
+ }
+}
+
body:not(.user-messages-page) {
- .topic__username,
- .topic__excerpt,
- .topic__last-reply > span:not(.relative-date) {
+ // .topic__username,
+ .topic__excerpt
+ // .topic__last-reply > span:not(.relative-date)
+ {
display: none;
}
.topic__author .topic__metadata {
@@ -340,9 +391,12 @@ body:not(.user-messages-page) {
}
#list-area {
+ margin-bottom: 0;
+
.show-more {
position: relative;
.alert {
+ border-bottom: var(--border-inner);
background: var(--neutral-95);
color: var(--neutral-10);
@include body-medium;
@@ -351,3 +405,24 @@ body:not(.user-messages-page) {
}
}
}
+
+.topic-list-bottom {
+ margin: 0;
+ .footer-message {
+ padding: 1rem;
+ text-align: center;
+ @include body-medium;
+
+ h3 {
+ @include body-medium;
+ margin: 0;
+ }
+ a {
+ color: var(--primary-50);
+ }
+
+ .education {
+ color: inherit;
+ }
+ }
+}
diff --git a/scss/discourse/topic.scss b/scss/discourse/topic.scss
index a836068..b8c7656 100644
--- a/scss/discourse/topic.scss
+++ b/scss/discourse/topic.scss
@@ -1,8 +1,16 @@
#topic-title {
display: flex;
- border-bottom: var(--border-outer);
+ border-bottom: var(--border-inner);
padding: 1rem;
margin: 0;
+ gap: 1rem;
+ .title-wrapper {
+ row-gap: 0.25rem;
+ }
+ &:before,
+ &:after {
+ content: unset;
+ }
h1 {
@include headline-small;
@@ -11,13 +19,15 @@
}
}
.topic-title-outlet {
- padding-top: 8px;
order: -1;
.topic-back-button {
&:before {
@include i;
- padding-left: 12px;
- padding-right: 16px;
+ width: 2rem;
+ height: 2rem;
+ align-items: center;
+ display: flex;
+ justify-content: center;
content: "arrow_back";
}
}
@@ -159,13 +169,24 @@
}
}
+.container.posts > .row {
+ border-right: var(--border-inner);
+}
+// .topic-navigation {
+// height: 100%;
+// border-left: var(--border-inner);
+// }
+
.topic-post {
border: 0;
border-bottom: var(--border-inner);
article.onscreen-post {
- padding: 1rem;
+ // padding: 1rem;
.row {
+ &:not(:has(.post-notice)) {
+ padding: 1rem;
+ }
column-gap: 1rem;
.topic-avatar {
position: sticky;
@@ -177,6 +198,10 @@
padding: 0;
width: unset;
margin: 0;
+ @include breakpoint(tablet) {
+ position: relative;
+ top: unset !important;
+ }
}
.topic-body {
&.highlighted {
@@ -200,4 +225,154 @@
}
}
}
-}
\ No newline at end of file
+}
+
+.post-notice {
+ padding: 1rem;
+ p {
+ @include body-medium;
+ }
+ &:before {
+ padding: 0 0.875rem;
+ }
+ border: 0;
+ border-bottom: var(--border-inner);
+ // border-radius: var(--rounded-lg);
+ &.old {
+ // background: var(--neutral-95);
+ color: inherit;
+ }
+ gap: 1rem;
+ max-width: unset;
+}
+
+.small-action {
+ padding: 1rem;
+ border-top: 0;
+ gap: 1rem;
+
+ .small-action-buttons {
+ button {
+ transition: none;
+ @include button($style: tertiary);
+ }
+ }
+
+ .topic-avatar,
+ .small-action-desc {
+ padding: 0;
+ border-top: 0;
+ }
+
+ .topic-avatar {
+ width: 3rem;
+ &:before {
+ @include i($font-size: 1.25rem, $fill: 1);
+ color: var(--neutral-70);
+ }
+
+ align-self: unset;
+
+ &:has(.locked),
+ &:has(.d-icon-lock) {
+ &:before {
+ content: "block";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+
+ &:has(.archived) {
+ &:before {
+ content: "folder_limited";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+ &:has(.d-icon-thumbtack) {
+ &:before {
+ content: "keep";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+
+ &:has(.d-icon-thumbtack.unpinned) {
+ &:before {
+ content: "keep_off";
+ }
+ transform: none;
+ .d-icon {
+ display: none;
+ }
+ }
+ &:has(.d-icon-bookmark) {
+ &:before {
+ content: "bookmark";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+ &:has(.d-icon-far-eye-slash) {
+ &:before {
+ content: "visibility_off";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+ &:has(.d-icon-folder) {
+ &:before {
+ content: "folder_limited";
+ }
+ .d-icon {
+ display: none;
+ }
+ }
+ }
+
+ .small-action-desc {
+ display: flex;
+ flex-wrap: nowrap;
+ .avatar {
+ margin: 0;
+ }
+ .small-action-buttons {
+ display: flex;
+ }
+ @include body-medium;
+
+ color: var(--neutral-50);
+
+ .small-action-contents {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ }
+
+ p {
+ padding: 0;
+ }
+ }
+}
+
+.regular {
+ .more-topics {
+ &__container {
+ padding: 0;
+ max-width: unset;
+ }
+ &__list-title {
+ @include title-medium;
+ }
+ &__browse-more {
+ padding: 1rem;
+ @include body-medium;
+ margin: 0;
+ }
+ }
+}
diff --git a/scss/discourse/user.scss b/scss/discourse/user.scss
index 0eaaf32..ccf07e0 100644
--- a/scss/discourse/user.scss
+++ b/scss/discourse/user.scss
@@ -4,13 +4,35 @@
.user-messages-page,
.user-assigned-page,
-.user-notifications-page {
+.user-notifications-page,
+.user-activity-bookmarks-page,
+.user-preferences-page {
.about,
.user-navigation-primary {
display: none;
}
}
+.user-activity-bookmarks-page {
+ .user-navigation-secondary {
+ display: none;
+ }
+}
+
+.user-notifications-responses,
+.user-notifications-mentions {
+ .navigation-controls {
+ display: none;
+ }
+ .nav-pills {
+ li:not(.user-nav__notifications-responses):not(
+ .user-nav__notifications-mentions
+ ) {
+ display: none;
+ }
+ }
+}
+
[data-user-card="Discourse"],
[data-user-card="system"] {
img.avatar {
diff --git a/scss/layout.scss b/scss/layout.scss
index 99dfa63..ad29232 100644
--- a/scss/layout.scss
+++ b/scss/layout.scss
@@ -1,20 +1,37 @@
html {
font-size: 16px;
color: var(--neutral-10);
- background-color: var(--neutral-100);
}
html,
body {
height: 100%;
min-height: 100vh;
+ background-color: var(--neutral-100);
+ @include breakpoint(tablet) {
+ background-color: var(--neutral-95);
+ }
}
:root {
--heading-font-family: system-ui, helvetica, sans-serif;
--font-family: system-ui, helvetica, sans-serif;
- --d-max-width: 83rem;
+ --d-max-width: 84rem;
--wrap-px: 1rem;
+
+ // --column-content: 29rem;
+
+ --column-navigation-mini: 5rem;
+ --column-blocks: 19rem;
+
+ --column-navigation: minmax(0, 19rem);
+ --column-content: minmax(24rem, 1fr);
+
+ --mobile-nav-h: 4.5rem;
+}
+
+#main {
+ padding-top: var(--header-offset);
}
body {
@@ -26,27 +43,24 @@ body {
padding: 0 var(--wrap-px);
}
- &.admin-interface,
- &.archetype-regular,
- &.user-messages-page {
+ &:not(:has(.blocks.--right)) {
#main-outlet-wrapper {
@include breakpoint(large) {
- grid-template-columns: 5rem 1fr;
+ grid-template-columns: var(--column-navigation-mini) minmax(0, 1fr);
column-gap: 0;
- padding: 0;
- #main-outlet {
- border-right: 0;
- }
+ padding-right: 0;
+ padding-left: 0;
}
@include breakpoint(tablet) {
- grid-template-areas: "center";
+ grid-template-areas: "content";
grid-template-columns: minmax(0, 1fr);
}
#main-outlet {
margin-right: 0rem;
}
- grid-template-areas: "left center";
- grid-template-columns: minmax(0, 18rem) minmax(24rem, 1fr);
+ --column-content: minmax(45rem, 1fr);
+ grid-template-areas: "navigation content";
+ grid-template-columns: var(--column-navigation) var(--column-content);
.blocks {
display: none;
}
@@ -55,37 +69,42 @@ body {
#main-outlet-wrapper {
@include breakpoint(large) {
- grid-template-columns: 5rem minmax(22rem, 1fr) 19rem;
+ grid-template-columns: var(--column-navigation-mini) minmax(0, 1fr) var(
+ --column-blocks
+ );
column-gap: 0;
padding-left: 0;
#main-outlet {
margin-right: 1rem;
+ margin-left: 0;
}
}
- // @include breakpoint(medium) {
- // grid-template-areas: "center right";
- // grid-template-columns: minmax(24rem, 1fr) 19rem;
- // }
-
@include breakpoint(tablet) {
- grid-template-areas: "center";
+ grid-template-areas: "content";
grid-template-columns: minmax(0, 1fr);
padding: 0;
+ padding-bottom: calc(
+ var(--mobile-nav-h) + env(safe-area-inset-bottom) + 2rem
+ );
+
.blocks {
display: none;
}
}
display: grid;
- grid-template-areas: "left center right";
- grid-template-columns: minmax(0, 18rem) minmax(26rem, 1fr) 19rem;
- column-gap: 0rem;
+ grid-template-areas: "navigation content blocks";
+ grid-template-columns: var(--column-navigation) var(--column-content) var(
+ --column-blocks
+ );
+ margin: 0 auto;
+ column-gap: 2rem;
box-sizing: border-box;
- padding: 0 var(--wrap-px);
+ padding: 0 var(--wrap-px) 0;
@include breakpoint(large) {
padding-left: 0;
@@ -96,28 +115,37 @@ body {
}
.blocks {
- grid-area: right;
+ grid-area: blocks;
}
.c-navigation {
- grid-area: left;
+ grid-area: navigation;
}
#main-outlet {
- margin-right: 2rem;
+ contain: paint;
+ background: var(--neutral-100);
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+ // margin-right: 2rem;
@include breakpoint(large) {
- margin-right: 1rem;
+ // margin-right: 1rem;
+ margin-top: 1rem;
}
@include breakpoint(tablet) {
margin: 0;
border: 0;
+ border-radius: 0;
+ }
+ @include breakpoint(mobile-extra-large) {
+ // background: transparent;
}
- border-right: var(--border-outer);
- border-left: var(--border-outer);
padding: 0;
- grid-area: center;
- // border: var(--border-outer);
- // border-radius: var(--rounded-xl);
+ grid-area: content;
+
+ align-self: flex-start;
+ border: var(--border-outer);
+ border-radius: var(--rounded-lg);
}
}
}
diff --git a/scss/standards/colors.scss b/scss/standards/colors.scss
index 41f2c42..a3b8cec 100644
--- a/scss/standards/colors.scss
+++ b/scss/standards/colors.scss
@@ -13,19 +13,48 @@
--neutral-95: rgba(245, 246, 246, 1);
--neutral-100: rgba(255, 255, 255, 1);
- --primary-0: #000000; /* Black */
- --primary-10: #1a237e; /* Very Dark Blue */
- --primary-20: #283593; /* Dark Blue */
- --primary-30: #303f9f; /* Medium Dark Blue */
- --primary-40: #3949ab; /* Medium Blue */
- --primary-50: #3f51b5; /* Slightly Lighter Medium Blue */
- --primary-60: #5c6bc0; /* Medium Light Blue */
- --primary-70: #7986cb; /* Lighter Blue */
- --primary-80: #9fa8da; /* Light Blue */
- --primary-90: #c5cae9; /* Very Light Blue */
- --primary-95: #e8eaf6; /* Pale Blue */
- --primary-99: #f5f5f5; /* Near White */
- --primary-100: #ffffff;
+ --neutral-0-rgb: 0, 0, 0;
+ --neutral-5-rgb: 30, 31, 32;
+ --neutral-10-rgb: 59, 60, 62;
+ --neutral-20-rgb: 67, 69, 71;
+ --neutral-30-rgb: 76, 80, 82;
+ --neutral-40-rgb: 90, 94, 96;
+ --neutral-50-rgb: 105, 110, 113;
+ --neutral-60-rgb: 132, 137, 140;
+ --neutral-70-rgb: 173, 177, 179;
+ --neutral-80-rgb: 207, 209, 210;
+ --neutral-90-rgb: 230, 231, 231;
+ --neutral-95-rgb: 245, 246, 246;
+ --neutral-100-rgb: 255, 255, 255;
+
+ // --primary-0: #000000; /* Black */
+ // --primary-10: #1a237e; /* Very Dark Blue */
+ // --primary-20: #283593; /* Dark Blue */
+ // --primary-3rgb(51, 55, 76)f9f; /* Medium Dark Blue */
+ // --primary-40: #3949ab; /* Medium Blue */
+ // --primary-50: #3f51b5; /* Slightly Lighter Medium Blue */
+ // --primary-60: #5c6bc0; /* Medium Light Blue */
+ // --primary-70: #7986cb; /* Lighter Blue */
+ // --primary-80: #9fa8da; /* Light Blue */
+ // --primary-90: #c5cae9; /* Very Light Blue */
+ // --primary-95: #e8eaf6; /* Pale Blue */
+ // --primary-99: #f5f5f5; /* Near White */
+ // --primary-100: #ffffff;
+
+ --primary-100: #fff;
+ --primary-95: #fef0e9; /* orange-50 */
+ --primary-90: #fbd0bc; /* orange-100 */
+ --primary-80: #f9ba9b; /* orange-200 */
+ --primary-70: #f69a6e; /* orange-300 */
+ --primary-60: #f58651; /* orange-400 */
+ --primary-50: #f26826; /* orange-500 */
+ --primary-40: #dc5f23; /* orange-600 */
+ --primary-30: #ac4a1b; /* orange-700 */
+ --primary-20: #853915; /* orange-800 */
+ --primary-10: #662c10; /* orange-900 */
+ --primary-0: #000;
+
+ --tertiary: var(--primary-50);
}
@mixin c($type, $shade, $alpha: 1) {
diff --git a/scss/standards/icons.scss b/scss/standards/icons.scss
new file mode 100644
index 0000000..b33762b
--- /dev/null
+++ b/scss/standards/icons.scss
@@ -0,0 +1,68 @@
+$icon-map: (
+ home: "home",
+ topics: "feed",
+ categories: "grid_view",
+ messages: "mail",
+ tags: "tag",
+ admin: "settings",
+ bookmarks: "bookmark",
+ following: "news",
+ assigned: "assignment_add",
+ mentions: "alternate_email",
+ drafts: "draft",
+ invites: "person_add",
+ preferences: "settings",
+ logout: "logout",
+ chat: "chat_bubble",
+ docs: "book_2",
+ flagged: "flag",
+ groups: "group",
+);
+
+@mixin generate-icons {
+ @each $name, $icon-name in $icon-map {
+ [data-name="#{$name}"] {
+ &::before {
+ content: "#{$icon-name}";
+ }
+ }
+ }
+}
+
+@include generate-icons;
+
+$d-icon-replace: (
+ d-icon-hands-helping: "handshake",
+ d-icon-reply: "reply",
+ d-icon-flag: "flag",
+ d-icon-bookmark: "bookmark",
+ d-icon-d-topic-share: "share",
+ d-icon-d-post-share: "link",
+ d-icon-wrench: "settings",
+ d-icon-pencil-alt: "edit",
+ d-icon-ellipsis-h: "more_horiz",
+ d-icon-search: "search",
+ d-icon-thumbtack: "keep",
+ d-icon-far-circle: "check_box_outline_blank",
+ d-icon-times-circle: "check_box",
+ d-icon-sort-alpha-up: "sort_by_alpha",
+ d-icon-plus: "add",
+ //check_box_outline_blank
+);
+
+*:has(> .d-icon):before {
+ @include i;
+}
+
+@mixin replaceIcons($map) {
+ @each $old, $new in $map {
+ *:has(> .d-icon.#{$old}):before {
+ content: $new;
+ }
+ .d-icon.#{$old} {
+ display: none;
+ }
+ }
+}
+
+@include replaceIcons($d-icon-replace);
diff --git a/scss/standards/other.scss b/scss/standards/other.scss
index c333ec1..921a301 100644
--- a/scss/standards/other.scss
+++ b/scss/standards/other.scss
@@ -1,9 +1,11 @@
:root {
+ --rounded-xs: 0.125rem;
--rounded-sm: 0.25rem;
- --rounded: 0.375rem;
- --rounded-md: 0.5rem;
- --rounded-lg: 0.75rem;
- --rounded-xl: 1rem;
+ --rounded-md: 0.375rem;
+ --rounded-lg: 0.5rem;
+ --rounded-xl: 0.75rem;
+ --rounded-2xl: 1rem;
+ --rounded-3xl: 1.5rem;
--rounded-full: 9999px;
--border-outer: 1px solid var(--neutral-90);
diff --git a/scss/standards/typography.scss b/scss/standards/typography.scss
index 10648fc..68734b9 100644
--- a/scss/standards/typography.scss
+++ b/scss/standards/typography.scss
@@ -1,3 +1,12 @@
+// @mixin display-large {
+// }
+
+// @mixin display-medium {
+// }
+
+// @mixin display-small {
+// }
+
@mixin headline-large {
font-size: 32px;
line-height: 40px;
@@ -23,10 +32,10 @@
}
@mixin title-large {
- font-size: 22px;
- line-height: 28px;
+ font-size: 20px;
+ line-height: 24px;
letter-spacing: 0;
- font-weight: 400;
+ font-weight: 500;
font-family: var(--heading-font-family);
}
@@ -74,7 +83,7 @@
font-size: 14px;
line-height: 20px;
letter-spacing: 0.1px;
- font-weight: 600;
+ font-weight: 500;
font-family: var(--font-family);
}
diff --git a/settings.yml b/settings.yml
index ddafa38..76a39ac 100644
--- a/settings.yml
+++ b/settings.yml
@@ -1,3 +1,11 @@
+topic_list_show_usernames:
+ default: false
+ type: bool
+ required: true
+
+# button_primary:
+# properties: id
+
category_icons:
default: []
type: objects
@@ -21,6 +29,9 @@ blocks:
schema:
name: row
properties:
+ order:
+ default: 0
+ type: integer
blocks:
type: objects
schema:
@@ -34,6 +45,7 @@ blocks:
- time
- profile
- online
+ - cta
required: true
size:
type: enum
@@ -41,9 +53,39 @@ blocks:
choices:
- 2x2
- 4x4
+ - 4x2
- 4w
- 2x1
- 1x1
+ title:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 26
+ description:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 140
+ cta:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 26
+ url:
+ default: ""
+ type: string
+ validations:
+ url: true
+ count:
+ default: 5
+ type: integer
+ validations:
+ min: 1
+ max: 12
period:
default: weekly
type: enum
@@ -122,21 +164,85 @@ blocks:
default: 1x1
period:
type: null
-category_badges:
- type: objects
+
+blocks_border_radius:
+ default: ""
+ type: enum
+ choices:
+ - xs
+ - sm
+ - md
+ - lg
+ - xl
+ - 2xl
+ - 3xl
+ - full
+
+blocks_top:
default: []
+ type: objects
schema:
- name: category_badge
+ name: row
properties:
- category:
- type: categories
- required: true
- badge:
- type: string
- description: a single emoji to use as a badge (copy and paste from https://emojipedia.org/twitter)
- max_length: 1
- required: true
-default_category_icon:
- default: 📁
- description: a single emoji to use as a default category icon (copy and paste from https://emojipedia.org/twitter)
- max: 1
\ No newline at end of file
+ order:
+ default: 0
+ type: integer
+ blocks:
+ type: objects
+ schema:
+ name: block
+ properties:
+ name:
+ type: enum
+ choices:
+ - banner
+ required: true
+ size:
+ type: enum
+ required: true
+ choices:
+ - 12w
+ title:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 26
+ description:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 140
+ ctas:
+ default: []
+ type: objects
+ schema:
+ name: cta
+ properties:
+ label:
+ default: ""
+ type: string
+ validations:
+ min: 0
+ max: 52
+ url:
+ default: ""
+ type: string
+ validations:
+ url: true
+ style:
+ default: primary
+ type: enum
+ required: true
+ choices:
+ - primary
+ - secondary
+ - tertiary
+ - uncontained
+
+blocks_top_image:
+ default: ""
+ type: string
+ validations:
+ url: true