mirror of
https://github.com/supabase/supabase.git
synced 2026-10-07 18:35:07 +03:00
## What kind of change does this PR introduce? UI bug fix ## What is the current behavior? After the colour system migration (#47288), `--warning-default` was removed in light mode in favour of the semantic `--warning` token. Several studio call sites still referenced `hsl(var(--warning-default))`, which resolves to an invalid colour in light mode. This caused warning segments in stacked bar charts (e.g. Realtime on project overview v2) to render black instead of amber, with missing tooltip swatches. The colour appeared to "fix itself" on hover because the dimmed state used `--warning-500`, which is still defined. ## What is the new behaviour? Studio consumers that referenced the removed token now point at tokens that still resolve in light mode. Chart warnings use new app-level `--chart-warning` / `--chart-warning-muted` variables (stepped scale, theme-aware) rather than the removed `--warning-default`. We only update **Studio app consumers** that were still calling the old token: - `LogsBarChart` → `--chart-warning` tokens - `apps/studio/styles/globals.css` → defines those chart tokens + fixes `--sidebar-primary-foreground` - A handful of chart/tooltip call sites in Studio (`EdgeFunctionOverview`, `UnifiedLogs`, etc.) - Table editor dirty cell text → `--warning-600` (still on the stepped scale) ## To test Use a hosted project that already has warnings on project home (e.g. Realtime with a non-zero warnings count). Switch Studio to **light mode**. 1. Open **Project home** (`newHomepageUsageDeltas` flag enabled). 2. Find a service card with warnings in **Project usage**. 3. Confirm warning bar segments are amber/orange (not black), tooltip swatches show amber, and hover does not flip them black. 4. Quick dark mode sanity check. Should look unchanged. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Style** * Standardized warning-series and highlight colors across charts, logs, countdown timers, and interface indicators using the shared theme tokens (`--chart-warning` / `--chart-warning-muted`). * Refreshed warning-related theme wiring for both light and dark modes, including sidebar foreground color. * **Bug Fixes** * Updated “dirty” table cell text color to align with the revised warning palette. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
351 lines
8.0 KiB
CSS
351 lines
8.0 KiB
CSS
@reference "./globals.css";
|
|
|
|
.sb-grid {
|
|
@apply flex h-full flex-col;
|
|
}
|
|
|
|
.sb-grid-fill-container:after {
|
|
content: '';
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
.rdg-cell {
|
|
@apply flex;
|
|
@apply text-grid;
|
|
@apply border-secondary border-r border-b;
|
|
@apply text-foreground;
|
|
padding-inline: 0.5rem;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
line-height: inherit;
|
|
}
|
|
|
|
/* Apply parent bg colour while editing */
|
|
.rdg-cell.rdg-editor-container > * {
|
|
background-color: inherit;
|
|
}
|
|
|
|
.rdg-cell > div[draggable='true'] {
|
|
@apply h-full;
|
|
}
|
|
|
|
.rdg-row .rdg-cell-frozen:nth-last-child(1 of .rdg-cell-frozen) {
|
|
@apply border-secondary border-r;
|
|
}
|
|
|
|
.rdg-cell[aria-selected='true'] {
|
|
box-shadow: inset 0 0 0 1px #24b47e;
|
|
}
|
|
|
|
.rdg:not(:focus-within):not(.rdg-context-menu-open) .rdg-cell[aria-selected='true'] {
|
|
box-shadow: none;
|
|
outline: none;
|
|
}
|
|
|
|
/* Cell with unsaved changes - warning (amber) background/text color */
|
|
.rdg-cell.rdg-cell--dirty {
|
|
background-color: hsl(var(--warning-300) / 0.75);
|
|
color: hsl(var(--warning-600));
|
|
}
|
|
|
|
/* Row pending addition - green background, green text */
|
|
.rdg-row.rdg-row--added {
|
|
background-color: hsl(var(--brand-200) / 0.3);
|
|
|
|
&:hover {
|
|
background-color: hsl(var(--brand-200) / 0.5);
|
|
}
|
|
|
|
.rdg-cell {
|
|
border-left-color: hsl(var(--brand-default));
|
|
color: hsl(var(--brand-link));
|
|
}
|
|
|
|
/* First cell gets a stronger left border to indicate new row */
|
|
.rdg-cell:first-child {
|
|
box-shadow: inset 2px 0 0 0 hsl(var(--brand-default));
|
|
}
|
|
}
|
|
|
|
/* Row pending deletion - red background with strikethrough effect, red text */
|
|
.rdg-row.rdg-row--deleted {
|
|
background-color: hsl(var(--destructive-300) / 0.3);
|
|
|
|
&:hover {
|
|
background-color: hsl(var(--destructive-300) / 0.5);
|
|
}
|
|
|
|
.rdg-cell {
|
|
text-decoration: line-through;
|
|
text-decoration-color: hsl(var(--destructive-default));
|
|
border-left-color: hsl(var(--destructive-default));
|
|
color: hsl(var(--destructive-default));
|
|
}
|
|
|
|
/* First cell gets a stronger left border to indicate deleted row */
|
|
.rdg-cell:first-child {
|
|
box-shadow: inset 2px 0 0 0 hsl(var(--destructive-default));
|
|
}
|
|
}
|
|
|
|
.rdg {
|
|
@apply box-border select-none overflow-x-auto overflow-y-scroll bg-dash-canvas;
|
|
@apply border-t border-r-0 border-l-0;
|
|
contain: strict;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.rdg *,
|
|
.rdg ::after,
|
|
.rdg ::before {
|
|
box-sizing: inherit;
|
|
}
|
|
|
|
@supports not (contain: strict) {
|
|
.rdg {
|
|
position: relative;
|
|
z-index: 0;
|
|
}
|
|
}
|
|
|
|
.rdg-focus-sink {
|
|
position: sticky;
|
|
top: 0;
|
|
left: 0;
|
|
height: 0;
|
|
width: 0;
|
|
outline: 0;
|
|
}
|
|
|
|
/*
|
|
Row header
|
|
*/
|
|
|
|
.rdg-header-row {
|
|
@apply select-none border-none;
|
|
}
|
|
|
|
.rdg-header-row {
|
|
height: var(--header-row-height);
|
|
line-height: var(--header-row-height);
|
|
top: 0;
|
|
}
|
|
|
|
.rdg-header-row .rdg-cell {
|
|
@apply bg-dash-canvas border-default border-b;
|
|
}
|
|
|
|
.rdg-header-row .rdg-cell-frozen:nth-last-child(1 of .rdg-cell-frozen) {
|
|
@apply border-default border-r border-b;
|
|
}
|
|
|
|
[data-theme='dark'] .rdg-row .rdg-cell-frozen:nth-last-child(1 of .rdg-cell-frozen),
|
|
[data-theme='dark'] .rdg-header-row .rdg-cell-frozen:nth-last-child(1 of .rdg-cell-frozen) {
|
|
@apply border-r-strong;
|
|
}
|
|
|
|
.rdg-header-row .rdg-cell p {
|
|
@apply text-typography-body-light [[data-theme*=dark]_&]:text-typography-body-dark;
|
|
}
|
|
.rdg-header-row .rdg-checkbox {
|
|
@apply bg-surface-200 border-default rounded-xs border;
|
|
}
|
|
.rdg-header-row .rdg-checkbox-input:checked + .rdg-checkbox {
|
|
@apply border-default border-4 bg-green-900;
|
|
}
|
|
.rdg-header-row .rdg-checkbox-input:focus + .rdg-checkbox {
|
|
box-shadow: none;
|
|
}
|
|
|
|
.rdg-cell .Select {
|
|
max-height: 30px;
|
|
font-size: 12px;
|
|
font-weight: 400;
|
|
}
|
|
|
|
/*
|
|
Row
|
|
*/
|
|
|
|
.rdg-row {
|
|
@apply bg-dash-sidebar transition-colors;
|
|
@apply hover:bg-surface-200;
|
|
}
|
|
|
|
/* edit button */
|
|
.rdg-row__select-column__edit-action {
|
|
@apply opacity-0;
|
|
}
|
|
.rdg-row:hover .rdg-row__select-column__edit-action {
|
|
@apply opacity-100;
|
|
}
|
|
|
|
.rdg-row__select-column__edit-action:hover {
|
|
opacity: 1 !important;
|
|
}
|
|
|
|
/* select row */
|
|
.rdg-row[aria-selected='true'] {
|
|
@apply bg-surface-200;
|
|
}
|
|
|
|
.tab-cursor {
|
|
cursor: pointer !important;
|
|
}
|
|
|
|
/*
|
|
Checkbox
|
|
*/
|
|
|
|
.sb-grid {
|
|
/* reset styles */
|
|
[type='checkbox'] {
|
|
webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
appearance: none;
|
|
padding: 0;
|
|
-webkit-print-color-adjust: exact;
|
|
print-color-adjust: exact;
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
background-origin: border-box;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
flex-shrink: 0;
|
|
height: 1rem;
|
|
width: 1rem;
|
|
color: #2563eb;
|
|
background-color: #fff;
|
|
border-color: #6b7280;
|
|
border-width: 1px;
|
|
}
|
|
|
|
[type='checkbox']:checked {
|
|
@apply bg-foreground;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='hsl(0, 0%, 100%)'%3E%3Cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3E%3C/svg%3E") !important;
|
|
}
|
|
|
|
[type='checkbox']:indeterminate {
|
|
@apply bg-foreground;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='hsl(0, 0%, 100%)'%3E%3Crect x='3' y='7' width='10' height='2'/%3E%3C/svg%3E") !important;
|
|
|
|
[data-theme='dark'] & {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='hsl(0, 0%, 0%)'%3E%3Crect x='3' y='7' width='10' height='2'/%3E%3C/svg%3E") !important;
|
|
}
|
|
}
|
|
|
|
[type='checkbox'] {
|
|
@apply cursor-pointer rounded-sm border border-solid;
|
|
|
|
@apply text-foreground border-strong transition-all;
|
|
@apply hover:border-foreground focus:ring-0 focus:outline-hidden;
|
|
|
|
@apply bg-control;
|
|
|
|
margin-top: 2px;
|
|
}
|
|
}
|
|
|
|
/* Dark mode */
|
|
[data-theme='dark'] .sb-grid [type='checkbox']:checked {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='hsl(0, 0%, 0%)'%3E%3Cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3E%3C/svg%3E") !important;
|
|
}
|
|
|
|
.rdg__segmented-control {
|
|
@apply border-default relative mx-2 h-8 rounded-md border;
|
|
}
|
|
|
|
.rdg__segmented-control__button {
|
|
@apply absolute top-0 inline-flex h-full items-center justify-center;
|
|
@apply text-xs font-medium;
|
|
@apply text-border-muted;
|
|
@apply active:bg-alternative hover:text-white focus:z-10 focus:outline-hidden;
|
|
@apply transition duration-150 ease-in-out;
|
|
@apply cursor-pointer;
|
|
z-index: 1;
|
|
}
|
|
|
|
.rdg__segmented-control__button--option {
|
|
@apply text-background;
|
|
}
|
|
|
|
.rdg__segmented-control__button--right {
|
|
@apply right-0;
|
|
}
|
|
|
|
.rdg__segmented-control__button--left {
|
|
@apply left-0;
|
|
}
|
|
|
|
.rdg__segmented-control__label {
|
|
@apply bg-overlay-hover border-control z-0 inline-block h-full transform rounded-sm border shadow-sm transition duration-200 ease-in-out;
|
|
}
|
|
|
|
.rdg__segmented-control__label--left {
|
|
@apply translate-x-0;
|
|
}
|
|
|
|
.rdg__segmented-control__label--right {
|
|
@apply translate-x-12;
|
|
}
|
|
|
|
.rdg__segmented-control__options-label {
|
|
@apply uppercase;
|
|
color: inherit;
|
|
}
|
|
|
|
/*
|
|
ColumnHeader
|
|
*/
|
|
|
|
.sb-grid-column-header {
|
|
@apply flex h-full w-full items-center justify-between;
|
|
}
|
|
|
|
.sb-grid-column-header--cursor {
|
|
@apply cursor-default;
|
|
}
|
|
|
|
.sb-grid-column-header__inner {
|
|
@apply flex items-center gap-2 overflow-hidden text-ellipsis;
|
|
}
|
|
|
|
.sb-grid-column-header__inner__name {
|
|
@apply text-foreground overflow-hidden text-ellipsis text-xs select-text;
|
|
}
|
|
|
|
.sb-grid-column-header__inner__format {
|
|
@apply text-xs;
|
|
@apply overflow-hidden text-ellipsis font-normal;
|
|
@apply text-foreground-light;
|
|
}
|
|
|
|
.sb-grid-column-header__inner__primary-key {
|
|
@apply flex rotate-45 transform items-center;
|
|
}
|
|
|
|
.sb-grid-column-header__inner svg {
|
|
@apply border-brand text-brand;
|
|
}
|
|
|
|
/*
|
|
SelectColumn
|
|
*/
|
|
|
|
.sb-grid-select-cell__formatter {
|
|
@apply flex h-full w-full items-center justify-between;
|
|
}
|
|
|
|
.sb-grid-select-cell__header {
|
|
@apply flex h-full w-full items-center justify-between;
|
|
}
|
|
|
|
.sb-grid-select-cell__header__input {
|
|
/* @apply focus:ring-brand-300; */
|
|
@apply border-background-surface-100;
|
|
}
|