Files
logseq/src/main/frontend/ui.css
Charlie 8040168d1e Feat: New UI components (#10694)
* enhance(plugin): call apis with the sdk ns

* enhance(plugin): types

* enhance(api): get value from the computed style

* enhance(api): types

* enhance(plugin): types

* enhance(plugin): types

* fix: lint

* fix(apis): incorrect shortcut command registion for block editing mode #10392

* fix(api): types

* enhance(apis): support register shortcuts with multi binding vals

* fix(plugins): normalize command key to make the internal keyword legal

* chore(plugin): build libs core

* chore(plugin): bump version

* enhance(apis): normalize apis cljs data

* chore(plugin): update libs user sdk

* chore(plugin): CHANGELOG.md

* fix: typo

* feat(ui): add package

* Update .gitignore

* feat(ui): set up shui infrastructure

* feat(ui): add storybook macro

* enhance(ui): storybook themes

* feat(ui): adapt ui button to classic

* enhance(ui): shui story

* feat(ui): shui toaster

* enhance(ui): shui toaster

* feat(ui): imperative API for shui toaster

* enhance(shui): update API for shui toaster

* enhance(shui): update hooks for shui toaster

* enhance(shui): remove debug

* feat(ui): story for the shui toaster

* feat(ui): story

* feat(ui): story docs

* feat(ui): more variants for the shui toaster

* feat(ui): story

* fix(ux): support querying plugins with right space chars

* feat(ui): add shui `Alert` component

* enhance(ui): shui demo

* feat(ui): add logseq UI readme

* enhance(ui): default shui theme

* feat(ui): add shui `Badge` component & demo

* fix(ui): outline theme for shui button

* feat(ui): custom icon for the toaster item

* feat(ui): add shui dropdown & demo

* feat(ui): WIP shui form related components

* feat(ui): WIP shui form-related components

* feat(ui): WIP shui form

* feat(ui): WIP shui form state for validation

* fix(ui): missing rounded for ui button

* feat(ui): add yup for shui form as default validation resolver

* enhance(ui): simplify validation schema input for the shui form

* fix(ui): accent ring color for input

* feat(ui): add shui switch

* feat(ui): add shui checkbox & switch

* feat(ui): add shui radio group

* fix(ui): missing file

* feat(ui): add Textarea component

* feat(ui): add shui card & skeleton

* feat(ui): add shui context menu component & demo

* fix(ui): accent color for the context menu item

* feat(ui): add shui select component & demo

* enhance(ui): ui css priority

* feat(ui): add shui calendar & ui details

* feat(ui): add shui popover

* feat(ui): add date picker & demo

* feat(ui): add shui dialog

* feat(ui): WIP add shui dialog

* feat(ui): WIP shui dialog as modal

* feat(ui): WIP imperative APIs for the shui modal

* feat(ui): imperative APIs for the shui modal/alert

* feat(ui): support imperative API alert!/confirm! return promise

* feat(ui): simplify shui components resources

* feat(ui): response layout for the demo ui page

* feat(ui): simplify colors

* feat(ui): simplify colors

* feat(ui): simplify colors

* refactor(ui): WIP Adapt to the new button component

* refactor(ui): polish new button & colors

* fix(ui): the new theme color for the plugin settings nav item link

* fix(ui): blockquote colors

* enhance(ui): more custom colors for shui button

* feat(ui): WIP make logseq green as a theme color

* enhance(ui): polish logseq classical theme color

* fix(ui): theme details of all pages

* enhance(ui): polish logseq theme color for dark mode

* fix(ui): missing table style

* refactor(ui): simplify the all shui buttons & shortcuts for the cmdk component

* fix(ui): missing file

* refactor(ui): clear up stuff

* fix(ui): theme color related issues

* enhance(ui): polish button style

* enhance(ui): polish the keymap setting pane

* fix(ui): hint button from the cmdk pane footer

* fix(ui): logseq colors for the storybook

* enhance(ui): stories for the shui components

* fix(ui): active color for the old toggle component

* enhance(ui): keep the constant size of the settings pane

* fix(ui): polish search input for the plugins pane

* enhance(ui): polish number list bullet colors

* feat(ui): add shui tooltip component

* chore: build ui

* chore(ui): clean up resources

* fix: lint

* fix: lint

* fix: lint

* fix(ui): alignment of the keymap title from the settings pane

* fix: tests

* fix(ui): close button for the classic notification tip

* fix(ui): polish toaster viewport

* enhance(ui): polish the ghost button colors

* enhance(ui): demos for tips

* fix(ui): accent colors for the rc-datepicker

* fix(ui): accent color for the menu item

* refactor(ui): remove unless code for the accent colors

* enhance(ui): polish pdf viewer background color for the accent color mode

* fix: lint

* fix: lint

* fix: lint

* enhance(ui): support button with the custom href link

* enhance(ui): polish aside setting items

* enhance(ui): polish accent color for buttons

* enhance(ui): polish all pages

---------

Co-authored-by: Gabriel Horner <97210743+logseq-cldwalker@users.noreply.github.com>
2023-12-26 16:31:37 +08:00

377 lines
7.3 KiB
CSS

#ui__ac {
&-inner {
overflow-x: hidden;
overflow-y: auto;
position: relative;
-webkit-overflow-scrolling: touch;
.menu-link {
word-break: break-all;
.has-help {
display: flex;
align-items: center;
justify-content: space-between;
small {
visibility: visible;
cursor: help;
svg {
opacity: .3;
}
&:hover svg {
opacity: .9;
}
}
}
&:hover, &.chosen {
.has-help small {
visibility: visible;
}
}
&:not(.chosen):hover {
background-color: unset !important;
color: or(--ls-autocomplete-color-hover, --lx-gray-12, --ls-primary-text-color);
}
}
}
}
.menu-link {
&.no-padding {
padding: 0 !important;
}
}
.ui__ac-group-name {
@apply p-2 text-xs;
color: or(--ls-dropdown-title-color, --lx-gray-11-alpha, --ls-block-ref-link-text-color);
background-color: or(--ls-dropdown-title-background, --lx-gray-03);
}
.search-all #ui__ac-inner {
max-height: none;
}
.ui__notifications {
position: fixed;
z-index: var(--ls-z-index-level-4);
width: 100%;
top: 3.2em;
pointer-events: none;
&-content {
@apply inset-0 flex items-end justify-center px-4 py-3
pointer-events-none sm:px-6 sm:py-3 sm:items-start
sm:justify-end;
}
.notification-area {
background-color: or(--logseq-of-notification-background, --lx-gray-04, --ls-tertiary-background-color, #fff);
color: or(--ls-notification-text-color, --lx-gray-11, --ls-primary-text-color);
}
}
.ui__toggle {
.wrapper {
@apply relative flex-shrink-0
h-6 w-11 border-2 border-transparent flex
rounded-full cursor-pointer focus:outline-none;
}
.switcher {
@apply inline-block h-5 w-5 rounded-full bg-white shadow;
}
&.is-small {
.wrapper {
@apply h-4 w-8;
}
.switcher {
@apply h-3 w-3;
}
}
}
.ui__modal {
@apply fixed px-4 pb-4 inset-0 flex items-baseline justify-center
top-12 sm:top-[calc(3vh+50px)];
&-overlay {
@apply fixed inset-0 transition-opacity;
}
&-overlay div {
--from: or(--ls-modal-overlay-gradient-start, --lx-gray-03, --ls-primary-background-color);
--to: or(--ls-modal-overlay-gradient-end, --lx-gray-06, --ls-quaternary-background-color);
background-image: linear-gradient(to bottom, var(--from), var(--to));
}
&-panel {
@apply relative rounded-md shadow-xl border-none;
overflow: hidden;
background: or(--ls-modal-panel-color, --lx-gray-04, --ls-secondary-background-color);
.panel-content {
overflow-y: auto;
overflow-x: hidden;
width: calc(96vw - 2rem);
max-height: 89vh;
padding: 2rem 1.5rem;
@screen sm {
overflow-y: overlay;
max-height: 85vh;
padding: 2rem;
width: auto;
min-width: 600px;
.ls-card,
.ls-search {
width: 740px;
}
.ls-card {
min-height: 60vh;
}
.ls-search {
width: var(--ls-main-content-max-width);
}
}
@screen md {
min-width: 720px;
}
}
}
&-close {
@apply text-gray-400 hover:text-gray-500
focus:outline-none focus:text-gray-500
transition ease-in-out duration-150 opacity-60
hover:opacity-100;
&-wrap {
@apply z-10 absolute top-0 right-0 pt-2 pr-2;
}
}
&[label="ls-modal-align-center"] {
top: 0;
.ui__modal-panel {
top: 50vh;
transform: translateY(-52%);
}
}
&[label="diff__cp"] {
.panel-content {
padding: 2rem 1rem;
@screen sm {
padding: 2rem;
}
}
}
&[label="flashcards__cp"] {
.panel-content {
padding: 2rem 0;
@screen sm {
padding: 2rem 2rem;
}
}
}
&[label="instruction__cp"] {
.ui__modal-panel {
height: 90%;
}
.panel-content {
height: 100%;
}
}
}
.instruction {
height: 40%;
@screen sm {
height: 70%;
}
}
html.is-native-android,
html.is-native-iphone,
html.is-native-iphone-without-notch {
.references {
.blocks-container {
transform: translateX(-8px);
width: 104%;
}
}
.ls-card {
min-height: 65vh;
}
.ui__modal {
&[label="flashcards__cp"] {
.panel-content {
padding: 2rem 1rem 1rem;
width: 90vw;
.cards-review {
padding-left: 0px;
padding-right: 0px;
}
.blocks-container {
transform: translateX(-7px);
width: 103%;
}
}
}
}
}
html.is-mobile {
.ui__modal {
@apply bottom-0 inset-x-0 top-20;
&[label="ls-modal-search"] {
.panel-content {
padding-bottom: 0;
}
.ls-search {
padding-bottom: 0;
}
}
}
}
.ui__confirm-modal {
.sublabel {
display: flex;
padding: 2px 0;
align-items: center;
font-size: 14px;
input[type='checkbox'] {
margin-right: 8px;
}
}
}
.dropdown-wrapper {
background-color: or(--ls-dropdown-background, --lx-gray-03, --ls-primary-background-color, #fff);
border: 1px solid or(--ls-dropdown-border-color, --lx-gray-05, --ls-tertiary-background-color);
min-width: 12rem;
border-radius: 6px;
}
.dropdown-caret {
display: inline-block;
width: 0;
height: 0;
vertical-align: middle;
content: '';
border-top-style: solid;
border-top-width: 4px;
border-right: 4px solid transparent;
border-bottom: 0 solid transparent;
border-left: 4px solid transparent;
}
.form-select {
@apply block w-full pl-3 pr-10 py-2 text-base leading-6 rounded
border-gray-300 focus:outline-none sm:text-sm sm:leading-5;
background-color: or(--ls-form-select-background-color, --lx-gray-03, --ls-primary-background-color, transparent);
background-repeat: no-repeat;
border-width: 1px;
border-color: or(--ls-form-select-border-color, --lx-gray-07, --ls-border-color);
&.is-small {
@apply pl-2 py-1.5 sm:leading-4 sm:text-xs;
}
}
.form-input {
@apply block w-full pl-2
sm:text-sm sm:leading-5 rounded;
border-width: 1px;
border-color: or(--ls-form-input-border-color, --lx-gray-07, --ls-border-color);
&:focus {
box-shadow: 0 0 0 2px rgba(164, 202, 254, 0.45);
}
&.is-small {
@apply py-1.5 sm:leading-4 sm:text-xs;
}
}
.rotating-arrow.not-collapsed svg {
transform: rotate(90deg);
}
.rotating-arrow svg {
transition: all 100ms ease-in 0ms;
}
.bg-quaternary {
background-color: or(--ls-bg-quaternary, --lx-gray-06, --ls-quaternary-background-color);
}
.ui__icon {
display: inline-block;
}
.type-icon {
@apply text-base text-center flex items-center justify-center rounded border mr-2 relative;
width: 24px;
height: 24px;
flex-shrink: 0;
border-color: or(--ls-type-icon-border-color, --lx-gray-03, --ls-primary-background-color);
overflow: hidden;
color: or(--ls-type-icon-text-color, --lx-gray-12, --ls-primary-text-color);
.ti,
.tie {
z-index: 1;
}
&:before {
@apply block absolute inset-0 ;
background: or(--ls-type-icon-before-color, --lx-gray-03, --ls-primary-background-color);
content: " ";
}
}
.ui__radio-list {
@apply grid grid-flow-col gap-2;
}
.ui__toggle-background-on {
@apply bg-primary;
}
.ui__toggle-background-off {
background: or(--ls-toggle-off-background, --lx-gray-08, rgb(212, 212, 212));
}