2025-08-10 14:32:15 -07:00
|
|
|
@use 'globals';
|
|
|
|
|
@use 'sass:color';
|
2025-08-24 23:24:01 -07:00
|
|
|
@use 'condition-editor';
|
2025-09-08 15:56:57 -07:00
|
|
|
@use 'field-adder';
|
2025-07-25 15:01:31 -07:00
|
|
|
|
2025-08-10 14:32:15 -07:00
|
|
|
$table-border-color: #ccc;
|
|
|
|
|
|
|
|
|
|
.lens-grid {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template:
|
|
|
|
|
'table' 1fr
|
|
|
|
|
'editor' max-content;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.lens-table {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-area: table;
|
|
|
|
|
grid-template:
|
|
|
|
|
'headers' max-content
|
|
|
|
|
'main' 1fr
|
|
|
|
|
'inserter' max-content;
|
|
|
|
|
height: 100%;
|
|
|
|
|
outline: none;
|
|
|
|
|
overflow: auto;
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
|
|
&__headers {
|
|
|
|
|
display: flex;
|
|
|
|
|
grid-area: headers;
|
|
|
|
|
align-items: stretch;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__main {
|
|
|
|
|
grid-area: main;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__row {
|
|
|
|
|
align-items: stretch;
|
|
|
|
|
display: flex;
|
2025-09-08 15:56:57 -07:00
|
|
|
height: 2.25rem;
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
2025-11-02 20:26:33 +00:00
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
|
2025-11-02 20:26:33 +00:00
|
|
|
.lens-cell {
|
|
|
|
|
align-items: stretch;
|
|
|
|
|
border: solid 1px $table-border-color;
|
|
|
|
|
border-left: none;
|
|
|
|
|
border-top: none;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex: none;
|
|
|
|
|
padding: 0;
|
|
|
|
|
|
|
|
|
|
&:focus {
|
|
|
|
|
outline: none;
|
2025-08-13 18:52:37 -07:00
|
|
|
}
|
|
|
|
|
|
2025-11-02 20:26:33 +00:00
|
|
|
&--insertable {
|
|
|
|
|
border-style: dashed;
|
2025-08-13 18:52:37 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__container {
|
|
|
|
|
align-items: center;
|
|
|
|
|
display: flex;
|
2025-09-08 15:56:57 -07:00
|
|
|
flex: none;
|
2025-10-16 06:40:11 +00:00
|
|
|
user-select: none;
|
2025-09-08 15:56:57 -07:00
|
|
|
width: 100%;
|
2025-08-10 14:32:15 -07:00
|
|
|
|
|
|
|
|
&--selected {
|
2025-11-06 00:41:31 +00:00
|
|
|
background: #07f3;
|
2025-11-02 20:26:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--cursor {
|
2025-11-06 00:41:31 +00:00
|
|
|
background: transparent;
|
2025-08-13 18:52:37 -07:00
|
|
|
outline: 3px solid #37f;
|
|
|
|
|
outline-offset: -2px;
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-13 18:52:37 -07:00
|
|
|
&__content {
|
|
|
|
|
flex: 1;
|
2025-08-10 14:32:15 -07:00
|
|
|
font-family: globals.$font-family-data;
|
|
|
|
|
|
2025-10-21 18:58:09 +00:00
|
|
|
&--dropdown {
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
padding: 0 8px;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-10 14:32:15 -07:00
|
|
|
&--text {
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
white-space: nowrap;
|
2025-10-21 18:58:09 +00:00
|
|
|
padding: 0 8px;
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--uuid {
|
|
|
|
|
font-family: globals.$font-family-mono;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
white-space: nowrap;
|
2025-09-08 15:56:57 -07:00
|
|
|
padding: 0 0.5rem;
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
2025-08-13 18:52:37 -07:00
|
|
|
|
|
|
|
|
&--null {
|
2025-09-08 15:56:57 -07:00
|
|
|
align-items: center;
|
|
|
|
|
color: color.scale(#000, $lightness: 65%, $space: hsl);
|
|
|
|
|
display: flex;
|
2025-08-13 18:52:37 -07:00
|
|
|
font-family: globals.$font-family-data;
|
|
|
|
|
font-style: oblique;
|
2025-09-08 15:56:57 -07:00
|
|
|
justify-content: center;
|
|
|
|
|
padding: 0 0.25rem;
|
|
|
|
|
|
|
|
|
|
svg path {
|
|
|
|
|
fill: currentColor;
|
|
|
|
|
}
|
2025-08-13 18:52:37 -07:00
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
|
|
|
|
|
2025-08-13 18:52:37 -07:00
|
|
|
&__notice {
|
|
|
|
|
align-items: center;
|
|
|
|
|
color: color.scale(#000, $lightness: 50%, $space: hsl);
|
|
|
|
|
display: flex;
|
|
|
|
|
padding: 0 0.25rem;
|
|
|
|
|
|
|
|
|
|
svg path {
|
2025-09-08 15:56:57 -07:00
|
|
|
fill: currentColor;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.field-header {
|
|
|
|
|
&__container {
|
|
|
|
|
align-items: center;
|
|
|
|
|
background: #0001;
|
|
|
|
|
border: solid 1px #ccc;
|
|
|
|
|
border-top: none;
|
|
|
|
|
border-left: none;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex: none;
|
|
|
|
|
font-family: globals.$font-family-data;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
padding: 0.25rem;
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__label {
|
|
|
|
|
padding: 0.25rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__type-indicator {
|
|
|
|
|
@include globals.button-clear;
|
|
|
|
|
align-items: center;
|
|
|
|
|
display: flex;
|
|
|
|
|
height: 2rem;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
padding: 0;
|
|
|
|
|
width: 2rem;
|
|
|
|
|
|
|
|
|
|
svg path {
|
|
|
|
|
fill: currentColor;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__popover {
|
|
|
|
|
&:popover-open {
|
|
|
|
|
@include globals.popover;
|
2025-10-07 06:23:50 +00:00
|
|
|
left: anchor(left);
|
|
|
|
|
top: anchor(bottom);
|
2025-09-08 15:56:57 -07:00
|
|
|
padding: 1rem;
|
2025-10-07 06:23:50 +00:00
|
|
|
position: absolute;
|
2025-08-13 18:52:37 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
|
2025-08-13 18:52:37 -07:00
|
|
|
.lens-inserter {
|
2025-11-02 20:26:33 +00:00
|
|
|
grid-area: inserter;
|
|
|
|
|
margin-bottom: 2rem;
|
|
|
|
|
|
|
|
|
|
&__help {
|
|
|
|
|
font-size: 1rem;
|
|
|
|
|
font-weight: lighter;
|
|
|
|
|
margin: 8px;
|
|
|
|
|
opacity: 0.5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__main {
|
|
|
|
|
align-items: stretch;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-items: flex-start;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-13 18:52:37 -07:00
|
|
|
&__rows {
|
2025-11-02 20:26:33 +00:00
|
|
|
.lens-cell {
|
2025-08-10 14:32:15 -07:00
|
|
|
border: dashed 1px $table-border-color;
|
2025-08-04 13:59:42 -07:00
|
|
|
border-left: none;
|
2025-08-13 18:52:37 -07:00
|
|
|
|
|
|
|
|
&:last-child {
|
|
|
|
|
border-right: none;
|
|
|
|
|
}
|
2025-08-04 13:59:42 -07:00
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
|
|
|
|
|
.lens-table__row:first-child .lens-table__cell {
|
|
|
|
|
border-top: dashed 1px $table-border-color;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-13 18:52:37 -07:00
|
|
|
|
|
|
|
|
&__submit {
|
|
|
|
|
@include globals.reset-button;
|
|
|
|
|
align-items: center;
|
|
|
|
|
border: dashed 1px globals.$button-primary-background;
|
|
|
|
|
border-bottom-right-radius: globals.$border-radius-rounded-sm;
|
|
|
|
|
border-top-right-radius: globals.$border-radius-rounded-sm;
|
|
|
|
|
color: globals.$button-primary-background;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
padding: 0 1rem;
|
|
|
|
|
|
|
|
|
|
svg path {
|
2025-09-08 15:56:57 -07:00
|
|
|
fill: currentColor;
|
2025-08-13 18:52:37 -07:00
|
|
|
}
|
|
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
}
|
|
|
|
|
|
2025-10-16 06:40:11 +00:00
|
|
|
.table-viewer__datum-editor {
|
2025-08-10 14:32:15 -07:00
|
|
|
border-top: globals.$default-border;
|
|
|
|
|
display: flex;
|
|
|
|
|
grid-area: editor;
|
2025-10-16 06:40:11 +00:00
|
|
|
height: 6rem;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-21 18:58:09 +00:00
|
|
|
.dropdown-option-badge {
|
|
|
|
|
background: #ccc;
|
|
|
|
|
border-radius: 999px;
|
|
|
|
|
display: block;
|
|
|
|
|
width: max-content;
|
|
|
|
|
|
|
|
|
|
&:not(:has(button)) {
|
2025-10-22 00:43:53 -07:00
|
|
|
padding: 6px 12px;
|
2025-10-21 18:58:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--red {
|
|
|
|
|
background: #f99;
|
|
|
|
|
color: color.scale(#f99, $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--orange {
|
|
|
|
|
background: color.adjust(#f99, $hue: 50deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 50deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--yellow {
|
|
|
|
|
background: color.adjust(#f99, $hue: 100deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 100deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--green {
|
|
|
|
|
background: color.adjust(#f99, $hue: 150deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 150deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--blue {
|
|
|
|
|
background: color.adjust(#f99, $hue: 200deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 200deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--indigo {
|
|
|
|
|
background: color.adjust(#f99, $hue: 250deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 250deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--violet {
|
|
|
|
|
background: color.adjust(#f99, $hue: 300deg, $space: oklch);
|
|
|
|
|
color: color.scale(color.adjust(#f99, $hue: 300deg, $space: oklch), $lightness: -66%, $space: oklch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
button {
|
|
|
|
|
@include globals.button-clear;
|
|
|
|
|
|
|
|
|
|
color: inherit;
|
2025-10-22 00:43:53 -07:00
|
|
|
padding: 6px 12px;
|
2025-10-21 18:58:09 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-16 06:40:11 +00:00
|
|
|
.datum-editor {
|
|
|
|
|
&__container {
|
|
|
|
|
border-left: solid 4px transparent;
|
|
|
|
|
display: grid;
|
|
|
|
|
flex: 1;
|
|
|
|
|
grid-template: 'type-selector type-selector' max-content
|
|
|
|
|
'null-control value-control' max-content
|
|
|
|
|
'helpers helpers' auto / max-content auto;
|
|
|
|
|
|
|
|
|
|
&:has(:focus) {
|
|
|
|
|
border-left-color: #07f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&--incomplete {
|
|
|
|
|
border-left-color: #f33;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-08-10 14:32:15 -07:00
|
|
|
|
2025-10-16 06:40:11 +00:00
|
|
|
&__type-selector {
|
|
|
|
|
grid-area: type-selector;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__null-control {
|
|
|
|
|
@include globals.reset_button;
|
|
|
|
|
align-self: start;
|
|
|
|
|
grid-area: null-control;
|
|
|
|
|
padding: 0.75rem;
|
|
|
|
|
|
|
|
|
|
&--disabled {
|
|
|
|
|
opacity: 0.75;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__text-input {
|
2025-08-10 14:32:15 -07:00
|
|
|
@include globals.reset_input;
|
2025-10-16 06:40:11 +00:00
|
|
|
grid-area: value-control;
|
2025-08-10 14:32:15 -07:00
|
|
|
font-family: globals.$font-family-data;
|
2025-10-16 06:40:11 +00:00
|
|
|
padding: 0.75rem 0.5rem;
|
2025-07-25 15:01:31 -07:00
|
|
|
}
|
2025-10-21 18:58:09 +00:00
|
|
|
|
|
|
|
|
&__helpers {
|
|
|
|
|
grid-area: helpers;
|
|
|
|
|
overflow: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&__dropdown-options {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
gap: 8px;
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0 8px;
|
|
|
|
|
}
|
2025-07-25 15:01:31 -07:00
|
|
|
}
|
2025-08-24 23:24:01 -07:00
|
|
|
|
|
|
|
|
.toolbar-popover {
|
|
|
|
|
&:popover-open {
|
|
|
|
|
@include globals.rounded;
|
|
|
|
|
inset: unset;
|
|
|
|
|
border: globals.$popover-border;
|
|
|
|
|
margin: 0;
|
|
|
|
|
margin-top: 0.25rem;
|
|
|
|
|
position: fixed;
|
|
|
|
|
display: block;
|
|
|
|
|
width: 24rem;
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
background: #fff;
|
|
|
|
|
box-shadow: globals.$popover-shadow;
|
|
|
|
|
}
|
|
|
|
|
}
|