1
0
mirror of https://github.com/flarum/core.git synced 2025-08-24 09:03:05 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
David Wheatley
61be08577d fix: .container set to width larger than viewport 2021-12-24 13:37:21 +01:00
David Wheatley
d1dd3d952d feat: use position: sticky on discussion sidenav 2021-12-24 13:33:42 +01:00
58 changed files with 662 additions and 829 deletions

19
.gitignore vendored
View File

@@ -9,22 +9,3 @@ tests/.phpunit.result.cache
.idea/* .idea/*
.vscode .vscode
js/coverage-ts js/coverage-ts
# Yarn
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
js/.pnp.*
js/.yarn/*
!js/.yarn/patches
!js/.yarn/plugins
!js/.yarn/releases
!js/.yarn/sdks
!js/.yarn/versions
node_modules

View File

@@ -1,2 +0,0 @@
yarnPath: .yarn/releases/yarn-3.1.1.cjs
nodeLinker: node-modules

9
js/.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
node_modules

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +1,2 @@
yarnPath: ../.yarn/releases/yarn-3.1.1.cjs yarnPath: .yarn/releases/yarn-3.1.0.cjs
nodeLinker: node-modules nodeLinker: node-modules

View File

@@ -47,5 +47,5 @@
"check-typings": "tsc --noEmit --emitDeclarationOnly false", "check-typings": "tsc --noEmit --emitDeclarationOnly false",
"check-typings-coverage": "typescript-coverage-report" "check-typings-coverage": "typescript-coverage-report"
}, },
"packageManager": "yarn@3.1.1" "packageManager": "yarn@3.1.0"
} }

View File

@@ -4106,7 +4106,7 @@ __metadata:
"typescript@patch:typescript@4.1.3#~builtin<compat/typescript>": "typescript@patch:typescript@4.1.3#~builtin<compat/typescript>":
version: 4.1.3 version: 4.1.3
resolution: "typescript@patch:typescript@npm%3A4.1.3#~builtin<compat/typescript>::version=4.1.3&hash=493e53" resolution: "typescript@patch:typescript@npm%3A4.1.3#~builtin<compat/typescript>::version=4.1.3&hash=ddd1e8"
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver tsserver: bin/tsserver
@@ -4116,7 +4116,7 @@ __metadata:
"typescript@patch:typescript@^4.3.2#~builtin<compat/typescript>, typescript@patch:typescript@^4.4.4#~builtin<compat/typescript>": "typescript@patch:typescript@^4.3.2#~builtin<compat/typescript>, typescript@patch:typescript@^4.4.4#~builtin<compat/typescript>":
version: 4.4.4 version: 4.4.4
resolution: "typescript@patch:typescript@npm%3A4.4.4#~builtin<compat/typescript>::version=4.4.4&hash=493e53" resolution: "typescript@patch:typescript@npm%3A4.4.4#~builtin<compat/typescript>::version=4.4.4&hash=ddd1e8"
bin: bin:
tsc: bin/tsc tsc: bin/tsc
tsserver: bin/tsserver tsserver: bin/tsserver

View File

@@ -1,14 +1,14 @@
@import 'common/common'; @import "common/common";
@import 'admin/AdminHeader'; @import "admin/AdminHeader";
@import 'admin/AdminNav'; @import "admin/AdminNav";
@import 'admin/DashboardPage'; @import "admin/DashboardPage";
@import 'admin/BasicsPage'; @import "admin/BasicsPage";
@import 'admin/PermissionsPage'; @import "admin/PermissionsPage";
@import 'admin/EditGroupModal'; @import "admin/EditGroupModal";
@import 'admin/ExtensionPage'; @import "admin/ExtensionPage";
@import 'admin/ExtensionWidget'; @import "admin/ExtensionWidget";
@import 'admin/AppearancePage'; @import "admin/AppearancePage";
@import 'admin/MailPage'; @import "admin/MailPage";
@import 'admin/NoJs'; @import "admin/NoJs";
@import 'admin/UsersListPage'; @import "admin/UsersListPage";

View File

@@ -25,7 +25,7 @@
margin: 10px; margin: 10px;
.SearchBar { .SearchBar {
width: 100%; width: 100%
} }
} }
} }
@@ -43,8 +43,8 @@
@media @tablet { @media @tablet {
.AdminNav { .AdminNav {
.item-search, .item-search,
li[class^='item-category'], li[class^="item-category"],
li[class^='item-extension'], li[class^="item-extension"],
.AdminLinkButton-description { .AdminLinkButton-description {
display: none !important; display: none !important;
} }
@@ -68,11 +68,12 @@
} }
} }
@media @desktop-up { @media @desktop-up {
.App-nav { .App-nav {
position: absolute; position: absolute;
top: var(--header-height); top: var(--header-height);
height: ~'calc(100vh - var(--header-height))'; height: ~"calc(100vh - var(--header-height))";
width: var(--admin-pane-width); width: var(--admin-pane-width);
box-shadow: 0 6px 6px var(--shadow-color); box-shadow: 0 6px 6px var(--shadow-color);
background: var(--body-bg); background: var(--body-bg);
@@ -167,6 +168,7 @@
padding: 0; padding: 0;
} }
} }
} }
.AdminLinkButton-description { .AdminLinkButton-description {
@@ -193,7 +195,7 @@
.ExtensionNavButton { .ExtensionNavButton {
.Button-label { .Button-label {
display: inline-block; display: inline-block;
max-width: ~'calc(100% - 18px)'; max-width: ~"calc(100% - 18px)";
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
vertical-align: middle; vertical-align: middle;

View File

@@ -20,17 +20,17 @@
.StatusWidget { .StatusWidget {
color: var(--muted-color); color: var(--muted-color);
> ul { >ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
list-style-type: none; list-style-type: none;
> li { >li {
display: inline-block; display: inline-block;
margin-right: 30px; margin-right: 30px;
vertical-align: middle; vertical-align: middle;
&[class^='item-version-'] { &[class^="item-version-"] {
max-width: 100px; max-width: 100px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;

View File

@@ -59,6 +59,7 @@
color: var(--muted-color); color: var(--muted-color);
margin-left: 13px; margin-left: 13px;
> a { > a {
color: var(--muted-color); color: var(--muted-color);
} }
@@ -84,16 +85,13 @@
position: relative; position: relative;
} }
.item-website, .item-website, .item-source, .item-documentation {
.item-source,
.item-documentation {
display: none; display: none;
} }
} }
} }
&-settings, &-settings, &-permissions {
&-permissions {
.ExtensionPage-subHeader { .ExtensionPage-subHeader {
margin: 5px 0px; margin: 5px 0px;
} }
@@ -153,11 +151,11 @@
} }
.ReadmeModal { .ReadmeModal {
.Placeholder { .Placeholder {
margin-bottom: 40px; margin-bottom: 40px;
} }
img { img {
max-width: 100%; max-width: 100%;
} }
} }

View File

@@ -58,7 +58,7 @@
} }
.ExtensionListItem { .ExtensionListItem {
transition: 0.15s ease-in-out; transition: .15s ease-in-out;
&:hover { &:hover {
transform: scale(1.05); transform: scale(1.05);
@@ -84,7 +84,7 @@
color: var(--control-color); color: var(--control-color);
border-radius: 6px; border-radius: 6px;
display: inline-flex; display: inline-flex;
font-size: calc(~'var(--size) / 2'); font-size: calc(~"var(--size) / 2");
text-align: center; text-align: center;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

View File

@@ -8,8 +8,7 @@
} }
} }
button, button, .Alert {
.Alert {
margin-bottom: 20px; margin-bottom: 20px;
} }
@@ -21,6 +20,7 @@
} }
.MailPage-MailSettings-input { .MailPage-MailSettings-input {
label { label {
display: block; display: block;
margin-bottom: 7px; margin-bottom: 7px;

View File

@@ -32,6 +32,7 @@
} }
} }
.PermissionsPage-permissions { .PermissionsPage-permissions {
margin: 20px 0 30px; margin: 20px 0 30px;
overflow-x: auto; overflow-x: auto;
@@ -41,8 +42,7 @@
.PermissionGrid { .PermissionGrid {
white-space: nowrap; white-space: nowrap;
td, td, th {
th {
padding: 5px; padding: 5px;
text-align: left; text-align: left;
} }
@@ -134,16 +134,14 @@
.PermissionGrid-section { .PermissionGrid-section {
background: var(--body-bg); background: var(--body-bg);
td, td, th {
th {
padding-top: 10px; padding-top: 10px;
} }
} }
.PermissionGrid-child { .PermissionGrid-child {
background: var(--body-bg); background: var(--body-bg);
td, td, th {
th {
position: relative; position: relative;
} }
th { th {

View File

@@ -16,7 +16,7 @@
// Table refreshing overlay // Table refreshing overlay
&--loadingPage { &--loadingPage {
&::after { &::after {
content: ''; content: "";
display: block; display: block;
position: absolute; position: absolute;
top: 0; top: 0;
@@ -53,7 +53,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
&[data-column-name='editUser'] { &[data-column-name="editUser"] {
padding: 0; padding: 0;
position: relative; position: relative;
} }
@@ -100,7 +100,7 @@
display: flex; display: flex;
flex-grow: 1; flex-grow: 1;
&[data-email-shown='false'] { &[data-email-shown="false"] {
.UserList-emailAddress { .UserList-emailAddress {
user-select: none; user-select: none;
filter: blur(4px); filter: blur(4px);

View File

@@ -23,8 +23,7 @@
.Alert--success { .Alert--success {
.Alert--color(var(--alert-success-color), var(--alert-success-bg)); .Alert--color(var(--alert-success-color), var(--alert-success-bg));
a, a, a:hover {
a:hover {
text-decoration: underline; text-decoration: underline;
} }
} }
@@ -42,8 +41,7 @@
display: inline-block; display: inline-block;
margin: 0 5px; margin: 0 5px;
> a, > a, > .Button {
> .Button {
text-transform: uppercase; text-transform: uppercase;
font-size: 12px; font-size: 12px;
font-weight: bold; font-weight: bold;

View File

@@ -2,8 +2,8 @@
position: relative !important; position: relative !important;
padding-top: var(--header-height); padding-top: var(--header-height);
padding-bottom: 50px; padding-bottom: 50px;
overflow-x: hidden;
min-height: 100vh; min-height: 100vh;
width: 100%;
@media @phone { @media @phone {
padding-top: var(--header-height-phone); padding-top: var(--header-height-phone);
@@ -31,7 +31,7 @@
.App-titleControl, .App-titleControl,
.App-backControl { .App-backControl {
position: absolute !important; position: absolute !important;
z-index: calc(~'var(--zindex-header) + 1'); z-index: calc(~"var(--zindex-header) + 1");
top: 0 !important; top: 0 !important;
margin: 0; margin: 0;
@@ -144,7 +144,7 @@
top: 0; top: 0;
bottom: 0; bottom: 0;
box-shadow: 0 2px 6px var(--shadow-color); box-shadow: 0 2px 6px var(--shadow-color);
transform: translateX(calc(~'-6px - var(--drawer-width)')); transform: translateX(calc(~"-6px - var(--drawer-width)"));
transition: transform 0.2s; transition: transform 0.2s;
z-index: var(--zindex-modal); z-index: var(--zindex-modal);
@@ -231,7 +231,7 @@
@media @phone { @media @phone {
.App-drawer { .App-drawer {
& when (@config-colored-header = true) { & when (@config-colored-header = true) {
.light-contents(@name: 'header-colored'); .light-contents(@name: "header-colored");
} }
} }
} }
@@ -255,7 +255,7 @@
} }
& when (@config-colored-header = true) { & when (@config-colored-header = true) {
.light-contents(@name: 'header-colored'); .light-contents(@name: "header-colored");
} }
} }

View File

@@ -11,7 +11,7 @@
width: var(--size); width: var(--size);
height: var(--size); height: var(--size);
border-radius: 100%; border-radius: 100%;
font-size: calc(~'var(--size) / 2'); font-size: calc(~"var(--size) / 2");
img { img {
display: inline-block; display: inline-block;

View File

@@ -2,7 +2,7 @@
.Badge--size(22px); .Badge--size(22px);
width: var(--size); width: var(--size);
height: var(--size); height: var(--size);
border-radius: calc(~'var(--size) / 2'); border-radius: calc(~"var(--size) / 2");
background: var(--badge-bg); background: var(--badge-bg);
color: var(--badge-color); color: var(--badge-color);
display: inline-flex; display: inline-flex;
@@ -15,9 +15,8 @@
display: none; display: none;
} }
&, &, .Badge-icon {
.Badge-icon { font-size: calc(~"0.56 * var(--size)");
font-size: calc(~'0.56 * var(--size)');
} }
} }
@@ -30,8 +29,7 @@
padding: 0; padding: 0;
list-style: none; list-style: none;
&, &, > li {
> li {
display: inline-block; display: inline-block;
} }
} }

View File

@@ -27,8 +27,7 @@
border-top-right-radius: 0; border-top-right-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
} }
&:last-child:not(:first-child), &:last-child:not(:first-child), &.Dropdown-toggle:not(:first-child) {
&.Dropdown-toggle:not(:first-child) {
border-top-left-radius: 0; border-top-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
} }
@@ -65,7 +64,7 @@
&:active, &:active,
&.active, &.active,
.open > &.Dropdown-toggle { .open > &.Dropdown-toggle {
.box-shadow(inset 0 3px 5px rgba(0, 0, 0, 0.125)); .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
} }
&.disabled, &.disabled,
@@ -193,8 +192,7 @@
text-align: center; text-align: center;
padding: 8px 0; padding: 8px 0;
.Button-label, .Button-label, .Button-caret {
.Button-caret {
display: none; display: none;
} }
.Button-icon { .Button-icon {

View File

@@ -4,7 +4,7 @@
margin: 0; margin: 0;
position: relative; position: relative;
input[type='checkbox'] { input[type="checkbox"] {
position: absolute; position: absolute;
z-index: 1; z-index: 1;
@@ -20,7 +20,7 @@
cursor: pointer; cursor: pointer;
.add-keyboard-focus-ring-nearby('+ .Checkbox-display'); .add-keyboard-focus-ring-nearby("+ .Checkbox-display");
} }
} }
.Checkbox--switch { .Checkbox--switch {
@@ -29,7 +29,7 @@
padding-left: var(--left-pad); padding-left: var(--left-pad);
margin: 5px 0; margin: 5px 0;
input[type='checkbox'] { input[type="checkbox"] {
top: -4px; top: -4px;
width: 50px; width: 50px;
height: 28px; height: 28px;
@@ -37,7 +37,7 @@
.Checkbox-display { .Checkbox-display {
float: left; float: left;
margin-left: calc(~'0px - var(--left-pad)'); margin-left: calc(~"0px - var(--left-pad)");
margin-top: -4px; margin-top: -4px;
} }
} }
@@ -88,7 +88,7 @@
} }
} }
&:before { &:before {
content: ' '; content: " ";
background: var(--body-bg); background: var(--body-bg);
border-radius: 11px; border-radius: 11px;
box-shadow: 0 2px 4px var(--shadow-color); box-shadow: 0 2px 4px var(--shadow-color);
@@ -101,7 +101,7 @@
color: var(--switch-on-color); color: var(--switch-on-color);
} }
.off & { .off & {
color: var(--switch-off-color); color:var(--switch-off-color);
} }
.disabled & { .disabled & {
color: var(--muted-more-color) !important; color: var(--muted-more-color) !important;

View File

@@ -1,8 +1,7 @@
.ColorInput { .ColorInput {
position: relative; position: relative;
&-preview, &-preview, &-icon {
&-icon {
position: absolute; position: absolute;
right: 8px; right: 8px;
bottom: 8px; bottom: 8px;

View File

@@ -24,9 +24,7 @@
} }
> li { > li {
> a, > a, > button, > span {
> button,
> span {
padding: 8px 15px; padding: 8px 15px;
display: block; display: block;
width: 100%; width: 100%;
@@ -61,15 +59,13 @@
background: none !important; background: none !important;
} }
} }
> a, > a, > button {
> button {
&:hover { &:hover {
background: var(--control-bg); background: var(--control-bg);
} }
} }
&.active { &.active {
> a, > a, > button {
> button {
background: var(--control-bg); background: var(--control-bg);
} }
} }
@@ -104,15 +100,17 @@
height: 1px; height: 1px;
} }
.dropdown-backdrop { .dropdown-backdrop {
position: fixed; position: fixed;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
top: 0; top: 0;
z-index: calc(~'var(--zindex-dropdown) - 10'); z-index: calc(~"var(--zindex-dropdown) - 10");
} }
.Dropdown--split { .Dropdown--split {
.Dropdown-toggle .Button-icon { .Dropdown-toggle .Button-icon {
display: none; display: none;
@@ -133,8 +131,7 @@
@media @tablet-up { @media @tablet-up {
.Dropdown-menu li:first-child { .Dropdown-menu li:first-child {
&, &, + li.Dropdown-separator {
+ li.Dropdown-separator {
display: none; display: none;
} }
} }
@@ -159,6 +156,7 @@
} }
} }
@media @phone { @media @phone {
.Dropdown.open { .Dropdown.open {
z-index: var(--zindex-modal); z-index: var(--zindex-modal);
@@ -184,8 +182,7 @@
transition: transform 0.3s, visibility 0s 0.3s; transition: transform 0.3s, visibility 0s 0.3s;
> li { > li {
> a, > a, > button {
> button {
background: var(--body-bg); background: var(--body-bg);
font-size: 16px; font-size: 16px;
padding: 15px 20px; padding: 15px 20px;
@@ -203,10 +200,8 @@
} }
} }
> .active { > .active {
> a, > a, > button {
> button { &, &:hover {
&,
&:hover {
background: var(--primary-color) !important; background: var(--primary-color) !important;
color: #fff !important; color: #fff !important;
} }
@@ -214,7 +209,7 @@
} }
.open& { .open& {
-webkit-transform: none; -webkit-transform: none;
transform: none; transform: none;
visibility: visible; visibility: visible;
transition-delay: 0s; transition-delay: 0s;
} }

View File

@@ -9,9 +9,9 @@
.Form--centered { .Form--centered {
text-align: center; text-align: center;
.FormControl[type='text'], .FormControl[type=text],
.FormControl[type='email'], .FormControl[type=email],
.FormControl[type='password'], .FormControl[type=password],
.Button { .Button {
margin: 0 auto; margin: 0 auto;
text-align: center; text-align: center;

View File

@@ -1,5 +1,5 @@
.FormControl { .FormControl {
--transition: border-color 0.15s, background 0.15s; --transition: border-color .15s, background .15s;
display: block; display: block;
width: 100%; width: 100%;
height: 36px; height: 36px;

View File

@@ -144,10 +144,10 @@
&.in { &.in {
-webkit-transform: none !important; -webkit-transform: none !important;
transform: none !important; transform: none !important;
} }
&:before { &:before {
content: ' '; content: " ";
.header-background(); .header-background();
position: absolute; position: absolute;
} }
@@ -156,7 +156,7 @@
max-width: 100%; max-width: 100%;
margin: 0; margin: 0;
-webkit-transform: none !important; -webkit-transform: none !important;
transform: none !important; transform: none !important;
} }
.Modal-content { .Modal-content {
border-radius: 0; border-radius: 0;
@@ -183,6 +183,7 @@
z-index: 1; z-index: 1;
} }
.Modal-content { .Modal-content {
border: 0; border: 0;
border-radius: var(--border-radius); border-radius: var(--border-radius);
box-shadow: 0 7px 15px var(--shadow-color); box-shadow: 0 7px 15px var(--shadow-color);

View File

@@ -28,8 +28,7 @@
.Navigation-pin { .Navigation-pin {
display: block; display: block;
} }
.hasPane.panePinned, .hasPane.panePinned, .hasPane.paneShowing {
.hasPane.paneShowing {
.Navigation-back { .Navigation-back {
border-radius: var(--border-radius) 0 0 var(--border-radius) !important; border-radius: var(--border-radius) 0 0 var(--border-radius) !important;
} }

View File

@@ -14,8 +14,8 @@
} }
// ...so we display the ring around the icon inside the button, with an offset // ...so we display the ring around the icon inside the button, with an offset
.add-keyboard-focus-ring-nearby('> *'); .add-keyboard-focus-ring-nearby("> *");
.add-keyboard-focus-ring-nearby-offset('> *', 4px); .add-keyboard-focus-ring-nearby-offset("> *", 4px);
} }
} }
@media @tablet-up { @media @tablet-up {

View File

@@ -8,21 +8,16 @@
text-align: start; text-align: start;
} }
td, td, th {
th {
border-bottom: 1px solid var(--body-bg); border-bottom: 1px solid var(--body-bg);
color: var(--control-color); color: var(--control-color);
} }
td, td, th, .Checkbox, &-controls-item {
th,
.Checkbox,
&-controls-item {
padding: 10px 15px; padding: 10px 15px;
} }
& &-checkbox, & &-checkbox, & &-controls {
& &-controls {
padding: 0; padding: 0;
} }
@@ -60,8 +55,7 @@
cursor: pointer; cursor: pointer;
} }
&.highlighted .Checkbox, &.highlighted .Checkbox, .Checkbox:hover {
.Checkbox:hover {
&:not(.disabled) { &:not(.disabled) {
background: var(--control-bg-shaded); background: var(--control-bg-shaded);
} }

View File

@@ -7,9 +7,7 @@
font-size: 14px; font-size: 14px;
line-height: 1.7; line-height: 1.7;
&, &, &:focus, &[disabled] {
&:focus,
&[disabled] {
background: none; background: none;
border: 0; border: 0;
} }

View File

@@ -14,25 +14,11 @@
opacity: 0; opacity: 0;
transition: opacity 0.15s linear; transition: opacity 0.15s linear;
&.in { &.in { opacity: 1; }
opacity: 1; &.top { margin-top: -3px; padding: var(--tooltip-arrow-width) 0; }
} &.right { margin-left: 3px; padding: 0 var(--tooltip-arrow-width); }
&.top { &.bottom { margin-top: 3px; padding: var(--tooltip-arrow-width) 0; }
margin-top: -3px; &.left { margin-left: -3px; padding: 0 var(--tooltip-arrow-width); }
padding: var(--tooltip-arrow-width) 0;
}
&.right {
margin-left: 3px;
padding: 0 var(--tooltip-arrow-width);
}
&.bottom {
margin-top: 3px;
padding: var(--tooltip-arrow-width) 0;
}
&.left {
margin-left: -3px;
padding: 0 var(--tooltip-arrow-width);
}
} }
// Wrapper for the tooltip content // Wrapper for the tooltip content
@@ -60,28 +46,28 @@
&.top .tooltip-arrow { &.top .tooltip-arrow {
bottom: 0; bottom: 0;
left: 50%; left: 50%;
margin-left: calc(~'0px - var(--tooltip-arrow-width)'); margin-left: calc(~"0px - var(--tooltip-arrow-width)");
border-width: var(--tooltip-arrow-width) var(--tooltip-arrow-width) 0; border-width: var(--tooltip-arrow-width) var(--tooltip-arrow-width) 0;
border-top-color: var(--tooltip-bg); border-top-color: var(--tooltip-bg);
} }
&.right .tooltip-arrow { &.right .tooltip-arrow {
top: 50%; top: 50%;
left: 0; left: 0;
margin-top: calc(~'0px - var(--tooltip-arrow-width)'); margin-top: calc(~"0px - var(--tooltip-arrow-width)");
border-width: var(--tooltip-arrow-width) var(--tooltip-arrow-width) var(--tooltip-arrow-width) 0; border-width: var(--tooltip-arrow-width) var(--tooltip-arrow-width) var(--tooltip-arrow-width) 0;
border-right-color: var(--tooltip-bg); border-right-color: var(--tooltip-bg);
} }
&.left .tooltip-arrow { &.left .tooltip-arrow {
top: 50%; top: 50%;
right: 0; right: 0;
margin-top: calc(~'0px - var(--tooltip-arrow-width)'); margin-top: calc(~"0px - var(--tooltip-arrow-width)");
border-width: var(--tooltip-arrow-width) 0 var(--tooltip-arrow-width) var(--tooltip-arrow-width); border-width: var(--tooltip-arrow-width) 0 var(--tooltip-arrow-width) var(--tooltip-arrow-width);
border-left-color: var(--tooltip-bg); border-left-color: var(--tooltip-bg);
} }
&.bottom .tooltip-arrow { &.bottom .tooltip-arrow {
top: 0; top: 0;
left: 50%; left: 50%;
margin-left: calc(~'0px - var(--tooltip-arrow-width)'); margin-left: calc(~"0px - var(--tooltip-arrow-width)");
border-width: 0 var(--tooltip-arrow-width) var(--tooltip-arrow-width); border-width: 0 var(--tooltip-arrow-width) var(--tooltip-arrow-width);
border-bottom-color: var(--tooltip-bg); border-bottom-color: var(--tooltip-bg);
} }

View File

@@ -1,34 +1,34 @@
@import 'fontawesome'; @import "fontawesome";
@import 'brands'; @import "brands";
@import 'regular'; @import "regular";
@import 'solid'; @import "solid";
@fa-font-path: './fonts'; @fa-font-path: "./fonts";
@import 'normalize'; @import "normalize";
@import 'print'; @import "print";
@import 'root'; @import "root";
@import 'scaffolding'; @import "scaffolding";
@import 'sideNav'; @import "sideNav";
@import 'App'; @import "App";
@import 'Alert'; @import "Alert";
@import 'AlertManager'; @import "AlertManager";
@import 'Avatar'; @import "Avatar";
@import 'Badge'; @import "Badge";
@import 'Button'; @import "Button";
@import 'Checkbox'; @import "Checkbox";
@import 'ColorInput'; @import "ColorInput";
@import 'Dropdown'; @import "Dropdown";
@import 'EditUserModal'; @import "EditUserModal";
@import 'Form'; @import "Form";
@import 'FormControl'; @import "FormControl";
@import 'LoadingIndicator'; @import "LoadingIndicator";
@import 'Modal'; @import "Modal";
@import 'Navigation'; @import "Navigation";
@import 'Placeholder'; @import "Placeholder";
@import 'Search'; @import "Search";
@import 'Select'; @import "Select";
@import 'Table'; @import "Table";
@import 'TextEditor'; @import "TextEditor";
@import 'Tooltip'; @import "Tooltip";
@import 'ValidationError'; @import "ValidationError";

View File

@@ -1,7 +1,7 @@
@import 'mixins/accessibility.less'; @import "mixins/accessibility.less";
@import 'mixins/border-radius.less'; @import "mixins/border-radius.less";
@import 'mixins/button-color.less'; @import "mixins/button-color.less";
@import 'mixins/clearfix.less'; @import "mixins/clearfix.less";
@import 'mixins/light-contents.less'; @import "mixins/light-contents.less";
@import 'mixins/header-background.less'; @import "mixins/header-background.less";
@import 'mixins/vendor-prefixes.less'; @import "mixins/vendor-prefixes.less";

View File

@@ -50,7 +50,7 @@
*? button :focus-within { <styles> } *? button :focus-within { <styles> }
*/ */
.add-keyboard-focus-ring(@customFocusSelector) { .add-keyboard-focus-ring(@customFocusSelector) {
@realFocusSelector: ~'@{customFocusSelector}'; @realFocusSelector: ~"@{customFocusSelector}";
&@{realFocusSelector} { &@{realFocusSelector} {
#private.__focus-ring-styles(); #private.__focus-ring-styles();
@@ -69,7 +69,7 @@
*? button:focus-within + .myOtherElement { <styles> } *? button:focus-within + .myOtherElement { <styles> }
*/ */
.add-keyboard-focus-ring-nearby(@nearbySelector) { .add-keyboard-focus-ring-nearby(@nearbySelector) {
@realNearbySelector: ~'@{nearbySelector}'; @realNearbySelector: ~"@{nearbySelector}";
// We need to declare these separately, otherwise // We need to declare these separately, otherwise
// browsers will ignore `:focus-visible` as they // browsers will ignore `:focus-visible` as they
@@ -124,7 +124,7 @@
outline-offset: @offset; outline-offset: @offset;
} }
@realFocusSelector: ~'@{customFocusSelector}'; @realFocusSelector: ~"@{customFocusSelector}";
&@{realFocusSelector} { &@{realFocusSelector} {
.offset(); .offset();
@@ -143,7 +143,7 @@
*? button:focus-within + .myOtherElement { <styles> } *? button:focus-within + .myOtherElement { <styles> }
*/ */
.add-keyboard-focus-ring-nearby-offset(@nearbySelector, @offset) { .add-keyboard-focus-ring-nearby-offset(@nearbySelector, @offset) {
@realNearbySelector: ~'@{nearbySelector}'; @realNearbySelector: ~"@{nearbySelector}";
.offset() { .offset() {
outline-offset: @offset; outline-offset: @offset;

View File

@@ -2,17 +2,17 @@
.border-top-radius(@radius) { .border-top-radius(@radius) {
border-top-right-radius: @radius; border-top-right-radius: @radius;
border-top-left-radius: @radius; border-top-left-radius: @radius;
} }
.border-right-radius(@radius) { .border-right-radius(@radius) {
border-bottom-right-radius: @radius; border-bottom-right-radius: @radius;
border-top-right-radius: @radius; border-top-right-radius: @radius;
} }
.border-bottom-radius(@radius) { .border-bottom-radius(@radius) {
border-bottom-right-radius: @radius; border-bottom-right-radius: @radius;
border-bottom-left-radius: @radius; border-bottom-left-radius: @radius;
} }
.border-left-radius(@radius) { .border-left-radius(@radius) {
border-bottom-left-radius: @radius; border-bottom-left-radius: @radius;
border-top-left-radius: @radius; border-top-left-radius: @radius;
} }

View File

@@ -14,7 +14,7 @@
* } * }
*/ */
.Button--color-vars(@color; @background; @name: 'button') { .Button--color-vars(@color; @background; @name: 'button') {
@componentName: ~'@{name}'; @componentName: ~"@{name}";
--@{componentName}-color: @color; --@{componentName}-color: @color;
--@{componentName}-bg: @background; --@{componentName}-bg: @background;
@@ -24,11 +24,11 @@
} }
.Button--color-auto(@name: 'button') { .Button--color-auto(@name: 'button') {
--button-color: var(~'--@{name}-color'); --button-color: var(~"--@{name}-color");
--button-bg: var(~'--@{name}-bg'); --button-bg: var(~"--@{name}-bg");
--button-bg-hover: var(~'--@{name}-bg-hover'); --button-bg-hover: var(~"--@{name}-bg-hover");
--button-bg-active: var(~'--@{name}-bg-active'); --button-bg-active: var(~"--@{name}-bg-active");
--button-bg-disabled: var(~'--@{name}-bg-disabled'); --button-bg-disabled: var(~"--@{name}-bg-disabled");
} }
/** /**

View File

@@ -13,7 +13,7 @@
.clearfix() { .clearfix() {
&:before, &:before,
&:after { &:after {
content: ' '; // 1 content: " "; // 1
display: table; // 2 display: table; // 2
} }
&:after { &:after {

View File

@@ -1,29 +1,26 @@
// This is a mixin which styles components (buttons, inputs, etc.) for use on // This is a mixin which styles components (buttons, inputs, etc.) for use on
// dark backgrounds. // dark backgrounds.
.light-contents(@color: #fff; @control-bg: fade(#000, 10%); @control-color: #fff; @name: 'light-content') { .light-contents(@color: #fff; @control-bg: fade(#000, 10%); @control-color: #fff; @name: 'light-content') {
&, &, a {
a { color: var(~"--@{name}-color", @color);
color: var(~'--@{name}-color', @color);
} }
.Button--link, .Button--link, .Search-input {
.Search-input { color: var(~"--@{name}-control-color", @control-color);
color: var(~'--@{name}-control-color', @control-color);
} }
.FormControl { .FormControl {
background: var(~'--@{name}-control-bg', @control-bg); background: var(~"--@{name}-control-bg", @control-bg);
border: 0; border: 0;
color: var(~'--@{name}-control-color', @control-color); color: var(~"--@{name}-control-color", @control-color);
.placeholder(var(~'--@{name}-control-color', @control-color)); .placeholder(var(~"--@{name}-control-color", @control-color));
&:focus { &:focus {
color: @color; color: @color;
background: var(~'--@{name}-control-bg-shaded', fadein(darken(@control-bg, 5%), 10%)); background: var(~"--@{name}-control-bg-shaded", fadein(darken(@control-bg, 5%), 10%));
} }
} }
.Button, .Button, .Button:hover {
.Button:hover { color: var(~"--@{name}-control-color", @control-color);
color: var(~'--@{name}-control-color', @control-color); background: var(~"--@{name}-control-bg", @control-bg);
background: var(~'--@{name}-control-bg', @control-bg);
} }
.Button--flat { .Button--flat {
background: transparent; background: transparent;
@@ -33,13 +30,13 @@
.Button:focus, .Button:focus,
.Button.focus, .Button.focus,
.open > .Dropdown-toggle.Button { .open > .Dropdown-toggle.Button {
background: var(~'--@{name}-control-bg-fadedin', fadein(@control-bg, 5%)); background: var(~"--@{name}-control-bg-fadedin", fadein(@control-bg, 5%));
color: var(~'--@{name}-control-color', @control-color); color: var(~"--@{name}-control-color", @control-color);
} }
} }
.light-contents-vars(@color: #fff; @control-bg: fade(#000, 10%); @control-color: #fff; @name: 'light-content') { .light-contents-vars(@color: #fff; @control-bg: fade(#000, 10%); @control-color: #fff; @name: 'light-content') {
@componentName: ~'@{name}'; @componentName: ~"@{name}";
--@{componentName}-color: @color; --@{componentName}-color: @color;
--@{componentName}-control-color: @control-color; --@{componentName}-control-color: @control-color;

View File

@@ -169,9 +169,9 @@ select {
*/ */
button, button,
[type='button'], [type="button"],
[type='reset'], [type="reset"],
[type='submit'] { [type="submit"] {
-webkit-appearance: button; -webkit-appearance: button;
} }
@@ -180,9 +180,9 @@ button,
*/ */
button::-moz-focus-inner, button::-moz-focus-inner,
[type='button']::-moz-focus-inner, [type="button"]::-moz-focus-inner,
[type='reset']::-moz-focus-inner, [type="reset"]::-moz-focus-inner,
[type='submit']::-moz-focus-inner { [type="submit"]::-moz-focus-inner {
border-style: none; border-style: none;
padding: 0; padding: 0;
} }
@@ -192,9 +192,9 @@ button::-moz-focus-inner,
*/ */
button:-moz-focusring, button:-moz-focusring,
[type='button']:-moz-focusring, [type="button"]:-moz-focusring,
[type='reset']:-moz-focusring, [type="reset"]:-moz-focusring,
[type='submit']:-moz-focusring { [type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText; outline: 1px dotted ButtonText;
} }
@@ -232,8 +232,8 @@ progress {
* Correct the cursor style of increment and decrement buttons in Chrome. * Correct the cursor style of increment and decrement buttons in Chrome.
*/ */
[type='number']::-webkit-inner-spin-button, [type="number"]::-webkit-inner-spin-button,
[type='number']::-webkit-outer-spin-button { [type="number"]::-webkit-outer-spin-button {
height: auto; height: auto;
} }
@@ -242,7 +242,7 @@ progress {
* 2. Correct the outline style in Safari. * 2. Correct the outline style in Safari.
*/ */
[type='search'] { [type="search"] {
-webkit-appearance: textfield; /* 1 */ -webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */ outline-offset: -2px; /* 2 */
} }
@@ -251,7 +251,7 @@ progress {
* Remove the inner padding in Chrome and Safari on macOS. * Remove the inner padding in Chrome and Safari on macOS.
*/ */
[type='search']::-webkit-search-decoration { [type="search"]::-webkit-search-decoration {
-webkit-appearance: none; -webkit-appearance: none;
} }

View File

@@ -6,63 +6,63 @@
// ========================================================================== // ==========================================================================
@media print { @media print {
*, *,
*:before, *:before,
*:after { *:after {
background: transparent !important; background: transparent !important;
color: #000 !important; // Black prints faster: h5bp.com/s color: #000 !important; // Black prints faster: h5bp.com/s
box-shadow: none !important; box-shadow: none !important;
text-shadow: none !important; text-shadow: none !important;
} }
a, a,
a:visited { a:visited {
text-decoration: underline; text-decoration: underline;
} }
a[href]:after { a[href]:after {
content: ' (' attr(href) ')'; content: " (" attr(href) ")";
} }
abbr[title]:after { abbr[title]:after {
content: ' (' attr(title) ')'; content: " (" attr(title) ")";
} }
// Don't show links that are fragment identifiers, // Don't show links that are fragment identifiers,
// or use the `javascript:` pseudo protocol // or use the `javascript:` pseudo protocol
a[href^='#']:after, a[href^="#"]:after,
a[href^='javascript:']:after { a[href^="javascript:"]:after {
content: ''; content: "";
} }
pre, pre,
blockquote { blockquote {
border: 1px solid #999; border: 1px solid #999;
page-break-inside: avoid; page-break-inside: avoid;
} }
thead { thead {
display: table-header-group; // h5bp.com/t display: table-header-group; // h5bp.com/t
} }
tr, tr,
img { img {
page-break-inside: avoid; page-break-inside: avoid;
} }
img { img {
max-width: 100% !important; max-width: 100% !important;
} }
p, p,
h2, h2,
h3 { h3 {
orphans: 3; orphans: 3;
widows: 3; widows: 3;
} }
h2, h2,
h3 { h3 {
page-break-after: avoid; page-break-after: avoid;
} }
} }

View File

@@ -1,75 +1,76 @@
:root { :root {
// --------------------------------- // ---------------------------------
// COLORS // COLORS
--primary-color: @primary-color; --primary-color: @primary-color;
--secondary-color: @secondary-color; --secondary-color: @secondary-color;
--body-bg: @body-bg; --body-bg: @body-bg;
--body-bg-shaded: darken(@body-bg, 3%); --body-bg-shaded: darken(@body-bg, 3%);
--body-bg-light: lighten(@body-bg, 5%); --body-bg-light: lighten(@body-bg, 5%);
--body-bg-faded: fade(@body-bg, 93%); --body-bg-faded: fade(@body-bg, 93%);
--text-color: @text-color; --text-color: @text-color;
--link-color: @link-color; --link-color: @link-color;
--heading-color: @heading-color; --heading-color: @heading-color;
--muted-color: @muted-color; --muted-color: @muted-color;
--muted-color-light: lighten(@muted-color, 10%); --muted-color-light: lighten(@muted-color, 10%);
--muted-color-dark: darken(@muted-color, 50%); --muted-color-dark: darken(@muted-color, 50%);
--muted-more-color: @muted-more-color; --muted-more-color: @muted-more-color;
--shadow-color: @shadow-color; --shadow-color: @shadow-color;
--control-bg: @control-bg; --control-bg: @control-bg;
--control-bg-light: lighten(@control-bg, 3%); --control-bg-light: lighten(@control-bg, 3%);
--control-bg-shaded: darken(@control-bg, 4%); --control-bg-shaded: darken(@control-bg, 4%);
--control-color: @control-color; --control-color: @control-color;
--control-danger-bg: @control-danger-bg; --control-danger-bg: @control-danger-bg;
--control-danger-color: @control-danger-color; --control-danger-color: @control-danger-color;
--error-color: @error-color; --error-color: @error-color;
// --------------------------------- // ---------------------------------
// COMPONENTS // COMPONENTS
--header-bg: @header-bg; --header-bg: @header-bg;
--header-color: @header-color; --header-color: @header-color;
--header-control-bg: @header-control-bg; --header-control-bg: @header-control-bg;
--header-control-color: @header-control-color; --header-control-color: @header-control-color;
--overlay-bg: @overlay-bg; --overlay-bg: @overlay-bg;
--code-bg: @code-bg; --code-bg: @code-bg;
--code-color: @code-color; --code-color: @code-color;
--alert-bg: @alert-bg; --alert-bg: @alert-bg;
--alert-color: @alert-color; --alert-color: @alert-color;
--alert-error-bg: @alert-error-bg; --alert-error-bg: @alert-error-bg;
--alert-error-color: @alert-error-color; --alert-error-color: @alert-error-color;
--alert-success-bg: @alert-success-bg; --alert-success-bg: @alert-success-bg;
--alert-success-color: @alert-success-color; --alert-success-color: @alert-success-color;
--switch-on-color: #58a400; --switch-on-color: #58a400;
--switch-off-color: #d0021b; --switch-off-color: #d0021b;
--enabled-color: #2ecc40; --enabled-color: #2ECC40;
--disabled-color: #ff4136; --disabled-color: #FF4136;
--validation-error-color: @validation-error-color; --validation-error-color: @validation-error-color;
--avatar-bg: var(--control-bg); --avatar-bg: var(--control-bg);
--badge-bg: var(--muted-color); --badge-bg: var(--muted-color);
--badge-color: #fff; --badge-color: #fff;
--badge-hidden-bg: #888; --badge-hidden-bg: #888;
--usercard-bg: var(--control-bg); --usercard-bg: var(--control-bg);
--hero-bg: @hero-bg; --hero-bg: @hero-bg;
--hero-color: @hero-color; --hero-color: @hero-color;
--tooltip-bg: @tooltip-bg; --tooltip-bg: @tooltip-bg;
--tooltip-color: @tooltip-color; --tooltip-color: @tooltip-color;
--online-user-circle-color: @online-user-circle-color; --online-user-circle-color: @online-user-circle-color;
--discussion-title-color: mix(@heading-color, @body-bg, 55%); --discussion-title-color: mix(@heading-color, @body-bg, 55%);
--discussion-list-item-bg-hover: mix(@control-bg, @body-bg, 50%); --discussion-list-item-bg-hover: mix(@control-bg, @body-bg, 50%);
.Button--color-vars(@control-color, @control-bg, 'button'); .Button--color-vars(@control-color, @control-bg, 'button');
@@ -84,43 +85,35 @@
// --------------------------------- // ---------------------------------
// LAYOUT // LAYOUT
--border-radius: @border-radius; --border-radius: @border-radius;
--drawer-width: @drawer-width; --drawer-width: @drawer-width;
--pane-width: @pane-width; --pane-width: @pane-width;
--header-height: @header-height; --header-height: @header-height;
--header-height-phone: @header-height-phone; --header-height-phone: @header-height-phone;
--zindex-header: @zindex-header; --zindex-header: @zindex-header;
--zindex-pane: @zindex-pane; --zindex-pane: @zindex-pane;
--zindex-composer: @zindex-composer; --zindex-composer: @zindex-composer;
--zindex-dropdown: @zindex-dropdown; --zindex-dropdown: @zindex-dropdown;
--zindex-modal-background: @zindex-modal-background; --zindex-modal-background: @zindex-modal-background;
--zindex-modal: @zindex-modal; --zindex-modal: @zindex-modal;
--zindex-alerts: @zindex-alerts; --zindex-alerts: @zindex-alerts;
--zindex-tooltip: @zindex-tooltip; --zindex-tooltip: @zindex-tooltip;
// Store the current responsive screen mode in a CSS variable, to make it // Store the current responsive screen mode in a CSS variable, to make it
// available to the JS code. // available to the JS code.
--flarum-screen: none; --flarum-screen: none;
--screen-phone-max: @screen-phone-max; --screen-phone-max: @screen-phone-max;
--screen-tablet: @screen-tablet; --screen-tablet: @screen-tablet;
--screen-tablet-max: @screen-tablet-max; --screen-tablet-max: @screen-tablet-max;
--screen-desktop: @screen-desktop; --screen-desktop: @screen-desktop;
--screen-desktop-max: @screen-desktop-max; --screen-desktop-max: @screen-desktop-max;
--screen-desktop-hd: @screen-desktop-hd; --screen-desktop-hd: @screen-desktop-hd;
@media @phone { @media @phone { --flarum-screen: phone; }
--flarum-screen: phone; @media @tablet { --flarum-screen: tablet; }
} @media @desktop { --flarum-screen: desktop; }
@media @tablet { @media @desktop-hd { --flarum-screen: desktop-hd; }
--flarum-screen: tablet;
}
@media @desktop {
--flarum-screen: desktop;
}
@media @desktop-hd {
--flarum-screen: desktop-hd;
}
} }

View File

@@ -9,18 +9,14 @@
body { body {
background: var(--body-bg); background: var(--body-bg);
color: var(--text-color); color: var(--text-color);
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Ubuntu, Cantarell, Oxygen, Roboto, Helvetica, Arial, sans-serif; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Ubuntu, Cantarell, Oxygen, Roboto, Helvetica, Arial, sans-serif;
font-size: 13px; font-size: 13px;
line-height: 1.5; line-height: 1.5;
overflow-y: scroll; overflow-y: scroll;
width: 100%;
} }
h1, h1, h2, h3, h4, h5, h6 {
h2,
h3,
h4,
h5,
h6 {
line-height: 1.3; line-height: 1.3;
} }
@@ -70,6 +66,8 @@ p {
@media @desktop-hd { @media @desktop-hd {
width: @screen-desktop-hd; width: @screen-desktop-hd;
} }
max-width: 100%;
} }
.containerNarrow { .containerNarrow {
@@ -78,7 +76,7 @@ p {
} }
mark { mark {
background: #ffe300; background: #FFE300;
padding: 1px; padding: 1px;
border-radius: var(--border-radius); border-radius: var(--border-radius);
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
@@ -99,7 +97,7 @@ legend {
margin-bottom: 10px; margin-bottom: 10px;
color: var(--text-color); color: var(--text-color);
} }
input[type='search'] { input[type="search"] {
-webkit-appearance: none; -webkit-appearance: none;
} }
@@ -109,8 +107,8 @@ input[type='search'] {
margin-bottom: 5px; margin-bottom: 5px;
cursor: pointer; cursor: pointer;
input[type='checkbox'], input[type=checkbox],
input[type='radio'] { input[type=radio] {
margin-left: -20px; margin-left: -20px;
margin-top: 2px; margin-top: 2px;
float: left; float: left;
@@ -119,7 +117,7 @@ input[type='search'] {
.fade { .fade {
opacity: 0; opacity: 0;
transition: opacity 0.15s linear; transition: opacity .15s linear;
&.in { &.in {
opacity: 1; opacity: 1;
} }

View File

@@ -60,8 +60,7 @@
flex-shrink: 0; flex-shrink: 0;
margin-right: 50px; margin-right: 50px;
&, &, > ul {
> ul {
width: 190px; width: 190px;
} }
> ul { > ul {
@@ -84,7 +83,7 @@
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
&:after { &:after {
content: ' '; content: " ";
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
@@ -92,8 +91,7 @@
border-bottom: 1px solid var(--control-bg); border-bottom: 1px solid var(--control-bg);
} }
> ul > li, > ul > li, .Dropdown-menu > li {
.Dropdown-menu > li {
display: inline-block; display: inline-block;
margin: 0 20px 0 0; margin: 0 20px 0 0;
vertical-align: top; vertical-align: top;

View File

@@ -1,120 +1,120 @@
// --------------------------------- // ---------------------------------
// CONFIG // CONFIG
@config-primary-color: #536f90; @config-primary-color: #536F90;
@config-secondary-color: #536f90; @config-secondary-color: #536F90;
@config-dark-mode: false; @config-dark-mode: false;
@config-colored-header: false; @config-colored-header: false;
// --------------------------------- // ---------------------------------
// COLORS // COLORS
@primary-hue: hue(@primary-color); @primary-hue: hue(@primary-color);
@primary-sat: saturation(@primary-color); @primary-sat: saturation(@primary-color);
@secondary-hue: hue(@secondary-color); @secondary-hue: hue(@secondary-color);
@secondary-sat: saturation(@secondary-color); @secondary-sat: saturation(@secondary-color);
// Derive the primary/secondary colors from the config variables. In dark mode, // Derive the primary/secondary colors from the config variables. In dark mode,
// we make the user-set colors a bit darker, otherwise they will stand out too // we make the user-set colors a bit darker, otherwise they will stand out too
// much. // much.
.define-colors(@config-dark-mode); .define-colors(@config-dark-mode);
.define-colors(false) { .define-colors(false) {
@primary-color: @config-primary-color; @primary-color: @config-primary-color;
@secondary-color: @config-secondary-color; @secondary-color: @config-secondary-color;
@body-bg: #fff; @body-bg: #fff;
@text-color: #111; @text-color: #111;
@link-color: saturate(@primary-color, 10%); @link-color: saturate(@primary-color, 10%);
@heading-color: @text-color; @heading-color: @text-color;
@muted-color: hsl(@secondary-hue, min(20%, @secondary-sat), 50%); @muted-color: hsl(@secondary-hue, min(20%, @secondary-sat), 50%);
@muted-more-color: #aaa; @muted-more-color: #aaa;
@shadow-color: rgba(0, 0, 0, 0.35); @shadow-color: rgba(0, 0, 0, 0.35);
@control-bg: hsl(@secondary-hue, min(50%, @secondary-sat), 93%); @control-bg: hsl(@secondary-hue, min(50%, @secondary-sat), 93%);
@control-color: @muted-color; @control-color: @muted-color;
@control-danger-bg: #fdd; @control-danger-bg: #fdd;
@control-danger-color: #d66; @control-danger-color: #d66;
@overlay-bg: fade(@secondary-color, 90%); @overlay-bg: fade(@secondary-color, 90%);
@code-bg: darken(@body-bg, 3%); @code-bg: darken(@body-bg, 3%);
@code-color: lighten(@text-color, 30%); @code-color: lighten(@text-color, 30%);
} }
.define-colors(true) { .define-colors(true) {
@primary-color: @config-primary-color; @primary-color: @config-primary-color;
@secondary-color: @config-secondary-color; @secondary-color: @config-secondary-color;
@body-bg: hsl(@secondary-hue, min(20%, @secondary-sat), 10%); @body-bg: hsl(@secondary-hue, min(20%, @secondary-sat), 10%);
@text-color: #ddd; @text-color: #ddd;
@link-color: saturate(@primary-color, 10%); @link-color: saturate(@primary-color, 10%);
@heading-color: @text-color; @heading-color: @text-color;
@muted-color: hsl(@secondary-hue, min(15%, @secondary-sat), 50%); @muted-color: hsl(@secondary-hue, min(15%, @secondary-sat), 50%);
@muted-more-color: hsl(@secondary-hue, min(10%, @secondary-sat), 40%); @muted-more-color: hsl(@secondary-hue, min(10%, @secondary-sat), 40%);
@shadow-color: rgba(0, 0, 0, 0.5); @shadow-color: rgba(0, 0, 0, 0.5);
@control-bg: hsl(@secondary-hue, min(20%, @secondary-sat), 13%); @control-bg: hsl(@secondary-hue, min(20%, @secondary-sat), 13%);
@control-color: @muted-color; @control-color: @muted-color;
@control-danger-bg: #411; @control-danger-bg: #411;
@control-danger-color: #a88; @control-danger-color: #a88;
@overlay-bg: fade(darken(@body-bg, 5%), 90%); @overlay-bg: fade(darken(@body-bg, 5%), 90%);
@code-bg: darken(@body-bg, 3%); @code-bg: darken(@body-bg, 3%);
@code-color: #fff; @code-color: #fff;
} }
@hero-bg: @control-bg; @hero-bg: @control-bg;
@hero-color: @control-color; @hero-color: @control-color;
@hero-muted-color: @control-color; @hero-muted-color: @control-color;
@error-color: #d83e3e; @error-color: #d83e3e;
@alert-bg: #fff2ae; @alert-bg: #fff2ae;
@alert-color: #ad6c00; @alert-color: #ad6c00;
@alert-error-bg: @error-color; @alert-error-bg: @error-color;
@alert-error-color: #fff; @alert-error-color: #fff;
@alert-success-bg: #b4f1af; @alert-success-bg: #B4F1AF;
@alert-success-color: #33722d; @alert-success-color: #33722D;
@validation-error-color: @error-color; @validation-error-color: @error-color;
.define-header(@config-colored-header); .define-header(@config-colored-header);
.define-header(false) { .define-header(false) {
@header-bg: @body-bg; @header-bg: @body-bg;
@header-color: @primary-color; @header-color: @primary-color;
@header-control-bg: @control-bg; @header-control-bg: @control-bg;
@header-control-color: @control-color; @header-control-color: @control-color;
} }
.define-header(true) { .define-header(true) {
@header-bg: @primary-color; @header-bg: @primary-color;
@header-color: @body-bg; @header-color: @body-bg;
@header-control-bg: mix(#000, @header-bg, 10%); @header-control-bg: mix(#000, @header-bg, 10%);
@header-control-color: mix(@body-bg, @header-bg, 60%); @header-control-color: mix(@body-bg, @header-bg, 60%);
} }
// --------------------------------- // ---------------------------------
// LAYOUT // LAYOUT
@drawer-width: 270px; @drawer-width: 270px;
@pane-width: 400px; @pane-width: 400px;
@header-height: 52px; @header-height: 52px;
@header-height-phone: 46px; @header-height-phone: 46px;
@border-radius: 4px; @border-radius: 4px;
@zindex-header: 1000; @zindex-header: 1000;
@zindex-pane: 1010; @zindex-pane: 1010;
@zindex-composer: 1020; @zindex-composer: 1020;
@zindex-dropdown: 1030; @zindex-dropdown: 1030;
@zindex-modal-background: 1040; @zindex-modal-background: 1040;
@zindex-modal: 1050; @zindex-modal: 1050;
@zindex-alerts: 1060; @zindex-alerts: 1060;
@zindex-tooltip: 1070; @zindex-tooltip: 1070;
@expand-side-nav: @tablet-up; @expand-side-nav: @tablet-up;
// --------------------------------- // ---------------------------------
// BREAKPOINTS // BREAKPOINTS
@@ -123,28 +123,28 @@
// with specific viewport sizes. This can result in the browser actually being 'between' media queries, which // with specific viewport sizes. This can result in the browser actually being 'between' media queries, which
// breaks our UI. See: https://github.com/flarum/core/issues/2915 // breaks our UI. See: https://github.com/flarum/core/issues/2915
@screen-phone-max: (@screen-tablet - 0.02); @screen-phone-max: (@screen-tablet - 0.02);
@screen-tablet: 768px; @screen-tablet: 768px;
@screen-tablet-max: (@screen-desktop - 0.02); @screen-tablet-max: (@screen-desktop - 0.02);
@screen-desktop: 992px; @screen-desktop: 992px;
@screen-desktop-max: (@screen-desktop-hd - 0.02); @screen-desktop-max: (@screen-desktop-hd - 0.02);
@screen-desktop-hd: 1100px; @screen-desktop-hd: 1100px;
@phone: ~'(max-width: @{screen-phone-max})'; @phone: ~"(max-width: @{screen-phone-max})";
@tablet: ~'(min-width: @{screen-tablet}) and (max-width: @{screen-tablet-max})'; @tablet: ~"(min-width: @{screen-tablet}) and (max-width: @{screen-tablet-max})";
@desktop: ~'(min-width: @{screen-desktop}) and (max-width: @{screen-desktop-max})'; @desktop: ~"(min-width: @{screen-desktop}) and (max-width: @{screen-desktop-max})";
@desktop-hd: ~'(min-width: @{screen-desktop-hd})'; @desktop-hd: ~"(min-width: @{screen-desktop-hd})";
@tablet-up: ~'(min-width: @{screen-tablet})'; @tablet-up: ~"(min-width: @{screen-tablet})";
@desktop-up: ~'(min-width: @{screen-desktop})'; @desktop-up: ~"(min-width: @{screen-desktop})";
// --------------------------------- // ---------------------------------
// COMPONENTS // COMPONENTS
@tooltip-bg: rgba(0, 0, 0, 0.9); @tooltip-bg: rgba(0, 0, 0, 0.9);
@tooltip-color: #fff; @tooltip-color: #fff;
@online-user-circle-color: #7fba00; @online-user-circle-color: #7FBA00;

View File

@@ -1,24 +1,24 @@
@import 'common/common'; @import "common/common";
@import 'forum/ActivityPage'; @import "forum/ActivityPage";
@import 'forum/AvatarEditor'; @import "forum/AvatarEditor";
@import 'forum/Composer'; @import "forum/Composer";
@import 'forum/DiscussionHero'; @import "forum/DiscussionHero";
@import 'forum/DiscussionList'; @import "forum/DiscussionList";
@import 'forum/DiscussionListItem'; @import "forum/DiscussionListItem";
@import 'forum/DiscussionPage'; @import "forum/DiscussionPage";
@import 'forum/Hero'; @import "forum/Hero";
@import 'forum/IndexPage'; @import "forum/IndexPage";
@import 'forum/LogInButton'; @import "forum/LogInButton";
@import 'forum/LogInModal'; @import "forum/LogInModal";
@import 'forum/NotificationGrid'; @import "forum/NotificationGrid";
@import 'forum/NotificationList'; @import "forum/NotificationList";
@import 'forum/NotificationsDropdown'; @import "forum/NotificationsDropdown";
@import 'forum/Post'; @import "forum/Post";
@import 'forum/PostStream'; @import "forum/PostStream";
@import 'forum/Scrubber'; @import "forum/Scrubber";
@import 'forum/SettingsPage'; @import "forum/SettingsPage";
@import 'forum/SignUpModal'; @import "forum/SignUpModal";
@import 'forum/Slidable'; @import "forum/Slidable";
@import 'forum/UserCard'; @import "forum/UserCard";
@import 'forum/UserPage'; @import "forum/UserPage";

View File

@@ -26,8 +26,7 @@
position: relative; position: relative;
z-index: 1; z-index: 1;
&, &, a {
a {
color: var(--muted-color); color: var(--muted-color);
} }
a { a {

View File

@@ -41,23 +41,18 @@
line-height: 1.5em; line-height: 1.5em;
color: var(--secondary-color); color: var(--secondary-color);
&, &, input, a {
input,
a {
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
} }
input, input, a {
a {
color: inherit; color: inherit;
} }
input { input {
font-size: 16px; font-size: 16px;
width: 500px; width: 500px;
&, &, &[disabled], &:focus {
&[disabled],
&:focus {
background: none; background: none;
border: 0; border: 0;
padding: 0 20px 0 0; padding: 0 20px 0 0;
@@ -132,7 +127,7 @@
} }
&:before { &:before {
content: ' '; content: " ";
.header-background(); .header-background();
position: absolute; position: absolute;
opacity: 0; opacity: 0;
@@ -144,7 +139,7 @@
& .Composer-controls { & .Composer-controls {
position: static; position: static;
z-index: calc(~'var(--zindex-header) + 1'); z-index: calc(~"var(--zindex-header) + 1");
li:not(.App-backControl) { li:not(.App-backControl) {
display: none; display: none;
@@ -164,7 +159,7 @@
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: calc(~'var(--zindex-composer) - 1'); z-index: calc(~"var(--zindex-composer) - 1");
background-color: var(--overlay-bg); background-color: var(--overlay-bg);
opacity: 0.9; opacity: 0.9;
} }
@@ -190,10 +185,10 @@
} }
.normal &:first-child { .normal &:first-child {
margin: calc(~'0px - var(--header-height-phone)') 50px 0; margin: calc(~"0px - var(--header-height-phone)") 50px 0;
text-align: center; text-align: center;
position: relative; position: relative;
z-index: calc(~'var(--zindex-header) + 1'); z-index: calc(~"var(--zindex-header) + 1");
border: 0; border: 0;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
@@ -235,8 +230,7 @@
height: 300px; height: 300px;
transition: background 0.2s, box-shadow 0.2s; transition: background 0.2s, box-shadow 0.2s;
&.active, &.active, &.fullScreen {
&.fullScreen {
background: var(--body-bg); background: var(--body-bg);
} }
&.active:not(.fullScreen) { &.active:not(.fullScreen) {
@@ -285,8 +279,7 @@
margin-bottom: -17px; margin-bottom: -17px;
position: relative; position: relative;
.minimized &, .minimized &, .fullScreen & {
.fullScreen & {
display: none; display: none;
} }
} }
@@ -294,16 +287,14 @@
float: left; float: left;
.Avatar--size(64px); .Avatar--size(64px);
.minimized &, .minimized &, .fullScreen & {
.fullScreen & {
display: none; display: none;
} }
} }
.ComposerBody-content { .ComposerBody-content {
margin-left: 85px; margin-left: 85px;
.minimized &, .minimized &, .fullScreen & {
.fullScreen & {
margin-left: 0; margin-left: 0;
} }
} }

View File

@@ -176,6 +176,8 @@
} }
} }
@media @tablet-up { @media @tablet-up {
.DiscussionListItem { .DiscussionListItem {
position: relative; position: relative;

View File

@@ -24,17 +24,20 @@
} }
} }
@media @tablet-up { @media @tablet-up {
.DiscussionPage-nav { .DiscussionPage-discussion > .container {
float: right; display: flex;
flex-direction: row-reverse;
}
.DiscussionPage-nav {
min-width: 150px;
&,
> ul { > ul {
width: 150px; margin-top: 24px;
} position: sticky;
> ul { top: ~"calc(24px + var(--header-height))";
position: fixed;
margin-top: 30px;
z-index: 1; z-index: 1;
width: 100%;
> li { > li {
margin-bottom: 10px; margin-bottom: 10px;
@@ -57,7 +60,7 @@
@media @tablet-up { @media @tablet-up {
.DiscussionPage-stream { .DiscussionPage-stream {
margin-right: 225px; margin-right: 75px;
} }
} }
@@ -72,12 +75,12 @@
@media @tablet-up { @media @tablet-up {
.DiscussionPage-list { .DiscussionPage-list {
left: calc(~'-6px - var(--pane-width)'); left: calc(~"-6px - var(--pane-width)");
position: absolute; position: absolute;
z-index: var(--zindex-pane); z-index: var(--zindex-pane);
overflow: auto; overflow: auto;
top: var(--header-height); top: var(--header-height);
height: ~'calc(100vh - var(--header-height))'; height: ~"calc(100vh - var(--header-height))";
width: var(--pane-width); width: var(--pane-width);
background: var(--body-bg); background: var(--body-bg);
padding-bottom: 40px; padding-bottom: 40px;

View File

@@ -17,8 +17,7 @@
.IndexPage-toolbar { .IndexPage-toolbar {
margin-bottom: 15px; margin-bottom: 15px;
} }
.IndexPage-toolbar-view, .IndexPage-toolbar-view, .IndexPage-toolbar-action {
.IndexPage-toolbar-action {
display: inline-block; display: inline-block;
margin: 0; margin: 0;
list-style: none; list-style: none;

View File

@@ -85,7 +85,7 @@
padding-right: var(--overlap); padding-right: var(--overlap);
.Badge { .Badge {
margin-right: calc(~'0px - var(--overlap)'); margin-right: calc(~"0px - var(--overlap)");
position: relative; position: relative;
.Badge--size(21px); .Badge--size(21px);
} }
@@ -107,8 +107,8 @@
grid-template-columns: auto auto 1fr auto; grid-template-columns: auto auto 1fr auto;
grid-template-areas: grid-template-areas:
'avatar icon title button' "avatar icon title button"
'x x excerpt excerpt'; "x x excerpt excerpt";
align-items: baseline; align-items: baseline;
row-gap: 1px; row-gap: 1px;

View File

@@ -20,8 +20,7 @@
margin-bottom: 15px; margin-bottom: 15px;
color: var(--muted-color); color: var(--muted-color);
&, &, a {
a {
color: var(--muted-color); color: var(--muted-color);
} }
> ul { > ul {
@@ -44,8 +43,7 @@
h3 { h3 {
display: inline; display: inline;
} }
h3, h3, h3 a {
h3 a {
color: var(--heading-color); color: var(--heading-color);
font-weight: bold; font-weight: bold;
font-size: 14px; font-size: 14px;
@@ -97,19 +95,14 @@
overflow: auto; overflow: auto;
overflow-wrap: break-word; overflow-wrap: break-word;
p, p, ul, ol, blockquote {
ul,
ol,
blockquote {
margin-bottom: 1em; margin-bottom: 1em;
} }
a { a {
border-bottom: 1px solid var(--control-bg); border-bottom: 1px solid var(--control-bg);
font-weight: 600; font-weight: 600;
&:hover, &:hover, &:focus, &:active {
&:focus,
&:active {
text-decoration: none; text-decoration: none;
border-color: var(--link-color); border-color: var(--link-color);
} }
@@ -127,13 +120,13 @@
} }
// Inline code // Inline code
code { code {
font-family: source-code-pro, Monaco, Consolas, 'Courier New', monospace; font-family: source-code-pro, Monaco, Consolas, "Courier New", monospace;
padding: 5px; padding: 5px;
background: var(--code-bg); background: var(--code-bg);
color: var(--code-color); color: var(--code-color);
line-height: 1.3; line-height: 1.3;
font-size: 90%; font-size: 90%;
border-radius: 4px; border-radius: 4px
} }
// Code blocks // Code blocks
pre { pre {
@@ -156,15 +149,10 @@
overflow-x: auto; overflow-x: auto;
// Backwards compatibility for browsers that don't support `max()` // Backwards compatibility for browsers that don't support `max()`
max-height: 50vh; max-height: 50vh;
max-height: ~'max(50vh, 250px)'; max-height: ~"max(50vh, 250px)";
} }
} }
h1, h1, h2, h3, h4, h5, h6 {
h2,
h3,
h4,
h5,
h6 {
margin-top: 1em; margin-top: 1em;
margin-bottom: 16px; margin-bottom: 16px;
font-weight: bold; font-weight: bold;
@@ -181,20 +169,17 @@
h4 { h4 {
font-size: 125%; font-size: 125%;
} }
h5, h5, h6 {
h6 {
font-size: 100%; font-size: 100%;
} }
h6 { h6 {
color: var(--muted-more-color); color: var(--muted-more-color);
} }
img, img, iframe {
iframe {
max-width: 100%; max-width: 100%;
} }
} }
.Post-body, .Post-body, .Post-preview {
.Post-preview {
> *:first-child { > *:first-child {
margin-top: 0 !important; margin-top: 0 !important;
} }
@@ -205,27 +190,18 @@
} }
.Post--hidden { .Post--hidden {
.Post-header, .Post-header, .Post-header a, .PostUser h3, .PostUser h3 a {
.Post-header a,
.PostUser h3,
.PostUser h3 a {
color: var(--muted-more-color); color: var(--muted-more-color);
} }
&:not(.revealContent) { &:not(.revealContent) {
.Post-header { .Post-header {
margin-bottom: 0; margin-bottom: 0;
} }
.Post-body, .Post-body, .Post-footer, h3 .Avatar, .PostUser-badges {
.Post-footer,
h3 .Avatar,
.PostUser-badges {
display: none; display: none;
} }
} }
.Post-body, .Post-body, .Post-footer, h3 .Avatar, .PostUser-badges {
.Post-footer,
h3 .Avatar,
.PostUser-badges {
opacity: 0.5; opacity: 0.5;
} }
.Post-header .Button--more { .Post-header .Button--more {
@@ -251,8 +227,7 @@
color: var(--text-color); color: var(--text-color);
font-weight: bold; font-weight: bold;
} }
.PostMeta-time, .PostMeta-time, .PostMeta-ip {
.PostMeta-ip {
margin-left: 5px; margin-left: 5px;
} }
.PostMeta-permalink { .PostMeta-permalink {
@@ -273,8 +248,7 @@
float: left; float: left;
} }
.EventPost { .EventPost {
&, &, a {
a {
color: var(--muted-color); color: var(--muted-color);
} }
a { a {
@@ -285,15 +259,13 @@
font-size: 14px; font-size: 14px;
} }
.Post-footer, .Post-footer, .Post-actions {
.Post-actions {
> ul { > ul {
list-style-type: none; list-style-type: none;
padding: 0; padding: 0;
margin: 0; margin: 0;
} }
&, &, a {
a {
color: var(--muted-color); color: var(--muted-color);
} }
a { a {
@@ -331,8 +303,7 @@
transition: opacity 0.2s; transition: opacity 0.2s;
.EventPost &, .EventPost &, .Post--hidden:not(.revealContent) & {
.Post--hidden:not(.revealContent) & {
margin-top: -27px; margin-top: -27px;
margin-bottom: -15px; margin-bottom: -15px;
} }
@@ -351,9 +322,7 @@
vertical-align: top; vertical-align: top;
} }
} }
.Post:hover &, .Post:hover &, .Post:focus-within &, &.open {
.Post:focus-within &,
&.open {
opacity: 1; opacity: 1;
} }
} }
@@ -420,8 +389,7 @@
.Post { .Post {
padding-left: 20px + @avatar-column-width; padding-left: 20px + @avatar-column-width;
} }
.CommentPost:not(.Post--hidden), .CommentPost:not(.Post--hidden), .ReplyPlaceholder {
.ReplyPlaceholder {
min-height: 64px + 40px; // avatar height + padding min-height: 64px + 40px; // avatar height + padding
} }
.PostUser-avatar { .PostUser-avatar {

View File

@@ -18,15 +18,9 @@
} }
@keyframes blink { @keyframes blink {
0% { 0% {opacity: 0.5}
opacity: 0.5; 50% {opacity: 1}
} 100% {opacity: 0.5}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
} }
.LoadingPost { .LoadingPost {
animation: blink 1s linear infinite; animation: blink 1s linear infinite;
@@ -64,15 +58,9 @@
} }
@keyframes pulsate { @keyframes pulsate {
0% { 0% {transform: scale(1)}
transform: scale(1); 50% {transform: scale(1.02)}
} 100% {transform: scale(1)}
50% {
transform: scale(1.02);
}
100% {
transform: scale(1);
}
} }
.pulsate { .pulsate {
animation: pulsate 1s ease-in-out infinite; animation: pulsate 1s ease-in-out infinite;
@@ -82,12 +70,8 @@
} }
@keyframes fadeIn { @keyframes fadeIn {
0% { 0% {opacity: 0}
opacity: 0; 100% {opacity: 1}
}
100% {
opacity: 1;
}
} }
.fadeIn { .fadeIn {
animation: fadeIn 0.4s ease-in-out; animation: fadeIn 0.4s ease-in-out;

View File

@@ -7,8 +7,7 @@
font-size: 14px; font-size: 14px;
margin-right: 2px; margin-right: 2px;
} }
&:hover, &:hover, &:focus {
&:focus {
text-decoration: none; text-decoration: none;
color: var(--link-color); color: var(--link-color);
} }
@@ -22,8 +21,7 @@
cursor: pointer; cursor: pointer;
.user-select(none); .user-select(none);
} }
.Scrubber-before, .Scrubber-before, .Scrubber-after {
.Scrubber-after {
border-left: 1px solid var(--control-bg); border-left: 1px solid var(--control-bg);
} }
.Scrubber-unread { .Scrubber-unread {

View File

@@ -26,3 +26,4 @@
margin-right: 5px; margin-right: 5px;
} }
} }

View File

@@ -15,8 +15,7 @@
width: 500px; width: 500px;
box-shadow: 0 2px 6px var(--shadow-color); box-shadow: 0 2px 6px var(--shadow-color);
&, &, .darkenBackground {
.darkenBackground {
border-radius: var(--border-radius); border-radius: var(--border-radius);
} }
.container { .container {
@@ -77,10 +76,9 @@
margin: 0 0 0 15px; margin: 0 0 0 15px;
padding: 0; padding: 0;
&, &, > li {
> li {
display: inline-block; display: inline-block;
margin-right: 5px; margin-right: 5px
} }
} }
.UserCard-info { .UserCard-info {

View File

@@ -1,17 +0,0 @@
{
"name": "flarum",
"prettier": "@flarum/prettier-config",
"repository": "git@github.com:flarum/core.git",
"author": "Flarum Team",
"license": "MIT",
"private": true,
"packageManager": "yarn@3.1.1",
"devDependencies": {
"@flarum/prettier-config": "^1.0.0",
"prettier": "^2.5.1"
},
"scripts": {
"format": "prettier --write less",
"format-check": "prettier --check less"
}
}

View File

@@ -1,31 +0,0 @@
# This file is generated by running "yarn install" inside your project.
# Manual changes might be lost - proceed with caution!
__metadata:
version: 5
cacheKey: 8
"@flarum/prettier-config@npm:^1.0.0":
version: 1.0.0
resolution: "@flarum/prettier-config@npm:1.0.0"
checksum: 2035b97dcd02f2ebcb9f0f88111adbf176fbb31132c4e0a2a5387cec14619ef0f8ac3418c14a0730de1d14765b2bc7c53aa3eea6b28949da93ceb3c1c229195a
languageName: node
linkType: hard
"flarum@workspace:.":
version: 0.0.0-use.local
resolution: "flarum@workspace:."
dependencies:
"@flarum/prettier-config": ^1.0.0
prettier: ^2.5.1
languageName: unknown
linkType: soft
"prettier@npm:^2.5.1":
version: 2.5.1
resolution: "prettier@npm:2.5.1"
bin:
prettier: bin-prettier.js
checksum: 21b9408476ea1c544b0e45d51ceb94a84789ff92095abb710942d780c862d0daebdb29972d47f6b4d0f7ebbfb0ffbf56cc2cfa3e3e9d1cca54864af185b15b66
languageName: node
linkType: hard