mirror of
https://github.com/flarum/framework.git
synced 2025-02-19 16:12:45 +08:00

* feat: make page structure customizable across different pages (#3867) * feat: create `PageStructure` component * feat: apply to `DiscussionPage` * feat: apply to `UserPage` * feat: apply to `TagsPage` * fix: adapt subscriptions ext * chore: cleanup * chore: use grid & flexbox for the discussion list item (#3868) * chore: rename `DiscussionPage-list` to `DiscussionListPane` * chore: itemlistify `DiscussionListItem` * chore: use flex and grid for `DiscussionListItem` * chore: use flexbox for `App-header` (#3869) * chore: use flex and grid for `App-header` * chore: drop search floats * fix: adapt admin styles * chore: use flexbox in dropdowns and SplitDropdown for subscriptions (#3874) * chore: flexbox dropdown menu items * chore: normalize subscriptions menu (use slit dropdown) * chore: cleanup * chore: misc flexbox/grid changes (#3875) * chore: `TagsPage` to tsx * chore: `TagsPage` flexbox/grid * chore: `IndexPage-toolbar` flexbox * chore: `UserCard` flexbox & itemlists * fix: `Post` improve spacing logic * chore: `Post` grid and proper spacing * fix: avatar editor hover layer layout * chore: `Button` flex * chore: normalize form semantics (#3877) * chore: normalize fieldsets * fix: `LinkButton` spacing * chore: consistent form semantics * fix: styling regressions (#3878) * fix: post spacing goes off in other pages * fix: regression * feat: extract reusable components from `NotificationsDropdown` (#3879) * feat: extensible global notices (#3880) * fix: js error on null item list * feat: extensible global notices * chore: housekeeping (#3881) * chore: use CSS variables where still not using * chore: cleanup suspension modal * chore: cleanup post flag * fix: badge vertical align * chore: use CSS variables for custom coloring * chore: `icon` helper to `Icon` component * chore: `avatar` helper to `Avatar` component * fix: chunk loading fails on admin frontend * chore: format * feat: reusable `UploadImageButton` component (#3882) * chore: convert `UploadImageButton` to tsx * feat: reusable `UploadImageButton` component * feat: add `image-upload` setting type * feat: extensible default footer component (#3883) * chore: yarn format
245 lines
3.9 KiB
Plaintext
245 lines
3.9 KiB
Plaintext
.StatisticsPage {
|
|
margin-top: 38px;
|
|
}
|
|
|
|
.StatisticsWidget {
|
|
padding: 0;
|
|
|
|
&--mini {
|
|
padding-top: 20px;
|
|
}
|
|
|
|
&-title {
|
|
margin: 0 20px;
|
|
color: var(--muted-color);
|
|
}
|
|
|
|
&-entities {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
margin: 0 20px;
|
|
|
|
& > :not(:last-child) {
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
|
|
&-labels {
|
|
padding-bottom: 15px;
|
|
min-width: 130px;
|
|
font-size: 12px;
|
|
font-weight: bold;
|
|
color: var(--muted-color);
|
|
}
|
|
|
|
&-label {
|
|
padding-top: 8px;
|
|
}
|
|
|
|
&-entity {
|
|
min-width: 130px;
|
|
padding: 15px 20px;
|
|
color: var(--text-color);
|
|
font-size: 20px;
|
|
|
|
.StatisticsWidget:not(.StatisticsWidget--mini) & {
|
|
cursor: pointer;
|
|
|
|
&:hover,
|
|
&:focus-visible {
|
|
background: var(--control-body-bg-mix);
|
|
text-decoration: none;
|
|
}
|
|
|
|
&.active {
|
|
border-top: 4px solid var(--primary-color);
|
|
padding-top: 11px;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-change {
|
|
font-size: 11px;
|
|
&--up {
|
|
color: #00a502;
|
|
}
|
|
&--down {
|
|
color: #d0011b;
|
|
}
|
|
}
|
|
|
|
&-heading {
|
|
height: 30px;
|
|
padding-top: 5px;
|
|
margin: 0;
|
|
font-weight: bold;
|
|
text-transform: uppercase;
|
|
font-size: 12px;
|
|
color: var(--muted-color);
|
|
|
|
.active & {
|
|
color: var(--primary-color);
|
|
}
|
|
}
|
|
|
|
&-total,
|
|
&-period,
|
|
&-label {
|
|
height: 35px;
|
|
}
|
|
|
|
&-total {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.chart-container {
|
|
.dataset-1 {
|
|
opacity: 0.2;
|
|
}
|
|
.chart-legend {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
&-viewFull {
|
|
padding: 12px 16px;
|
|
text-align: center;
|
|
}
|
|
|
|
.Placeholder {
|
|
padding-bottom: 32px;
|
|
}
|
|
|
|
&-chartExport {
|
|
position: relative;
|
|
z-index: 1;
|
|
margin: 16px;
|
|
margin-top: -32px;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Frappe Charts 1.0.0 by @frappe - https://frappe.io/charts
|
|
* License - MIT https://github.com/frappe/charts/blob/master/LICENSE
|
|
*/
|
|
.chart-container {
|
|
position: relative; /* for absolutely positioned tooltip */
|
|
|
|
/* https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/ */
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
|
|
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
|
sans-serif;
|
|
|
|
.axis,
|
|
.chart-label {
|
|
fill: #555b51;
|
|
|
|
line {
|
|
stroke: #dadada;
|
|
}
|
|
}
|
|
.dataset-units {
|
|
circle {
|
|
stroke: #fff;
|
|
stroke-width: 2;
|
|
}
|
|
|
|
path {
|
|
fill: none;
|
|
stroke-opacity: 1;
|
|
stroke-width: 2px;
|
|
}
|
|
}
|
|
.dataset-path {
|
|
stroke-width: 2px;
|
|
}
|
|
.path-group {
|
|
path {
|
|
fill: none;
|
|
stroke-opacity: 1;
|
|
stroke-width: 2px;
|
|
}
|
|
}
|
|
line.dashed {
|
|
stroke-dasharray: 5, 3;
|
|
}
|
|
.axis-line {
|
|
.specific-value {
|
|
text-anchor: start;
|
|
}
|
|
.y-line {
|
|
text-anchor: end;
|
|
}
|
|
.x-line {
|
|
text-anchor: middle;
|
|
}
|
|
}
|
|
.legend-dataset-text {
|
|
fill: #6c7680;
|
|
font-weight: 600;
|
|
}
|
|
}
|
|
.graph-svg-tip {
|
|
position: absolute;
|
|
z-index: 99999;
|
|
padding: 10px;
|
|
font-size: 12px;
|
|
color: #959da5;
|
|
text-align: center;
|
|
background: rgba(0, 0, 0, 0.8);
|
|
border-radius: 3px;
|
|
ul {
|
|
padding-left: 0;
|
|
display: flex;
|
|
}
|
|
ol {
|
|
padding-left: 0;
|
|
display: flex;
|
|
}
|
|
ul.data-point-list {
|
|
li {
|
|
min-width: 90px;
|
|
flex: 1;
|
|
font-weight: 600;
|
|
|
|
&:nth-child(2) {
|
|
border-top-color: #5a5a5a !important;
|
|
}
|
|
}
|
|
}
|
|
strong {
|
|
color: #dfe2e5;
|
|
font-weight: 600;
|
|
}
|
|
.svg-pointer {
|
|
position: absolute;
|
|
height: 5px;
|
|
margin: 0 0 0 -5px;
|
|
content: " ";
|
|
border: 5px solid transparent;
|
|
border-top-color: rgba(0, 0, 0, 0.8);
|
|
}
|
|
&.comparison {
|
|
padding: 0;
|
|
text-align: left;
|
|
pointer-events: none;
|
|
.title {
|
|
display: block;
|
|
padding: 10px;
|
|
margin: 0;
|
|
font-weight: 600;
|
|
line-height: 1;
|
|
pointer-events: none;
|
|
}
|
|
ul {
|
|
margin: 0;
|
|
white-space: nowrap;
|
|
list-style: none;
|
|
}
|
|
li {
|
|
display: inline-block;
|
|
padding: 5px 10px;
|
|
}
|
|
}
|
|
}
|