framework/extensions/statistics/less/admin.less
Sami Mazouz 5ab5257ff5
feat: theming and extensibility improvements (#3876)
* 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
2023-10-10 21:36:08 +01:00

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;
}
}
}