diff --git a/app/assets/stylesheets/bar.css b/app/assets/stylesheets/bar.css new file mode 100644 index 000000000..de30037f8 --- /dev/null +++ b/app/assets/stylesheets/bar.css @@ -0,0 +1,19 @@ +@layer components { + .bar { + --row-gap: 0.2lh; + + background-color: var(--color-terminal-bg); + color: var(--color-terminal-text); + font-family: var(--font-mono); + font-size: 0.9em; + inset: auto 0 0 0; + max-block-size: 100%; + padding: var(--block-space) calc(var(--tray-size) + calc(var(--inline-space) * 3)) calc(var(--block-space) + env(safe-area-inset-bottom)); + position: fixed; + z-index: var(--z-terminal); + + @media (prefers-color-scheme: dark) { + border-block-start: 1px solid var(--color-ink-lighter); + } + } +} diff --git a/app/assets/stylesheets/terminals.css b/app/assets/stylesheets/terminals.css deleted file mode 100644 index 683642ba5..000000000 --- a/app/assets/stylesheets/terminals.css +++ /dev/null @@ -1,260 +0,0 @@ -@layer components { - .terminal { - --row-gap: 0.2lh; - - background-color: var(--color-terminal-bg); - color: var(--color-terminal-text); - font-family: var(--font-mono); - font-size: 0.9em; - inset: auto 0 0 0; - max-block-size: 100%; - padding: var(--block-space) calc(var(--tray-size) + calc(var(--inline-space) * 3)) calc(var(--block-space) + env(safe-area-inset-bottom)); - position: fixed; - z-index: var(--z-terminal); - - @media (prefers-color-scheme: dark) { - border-block-start: 1px solid var(--color-ink-lighter); - } - } - - .terminal__button { - --btn-background: var(--color-terminal-bg); - --btn-color: var(--color-terminal-text); - --btn-border-radius: 0; - --btn-border-color: var(--color-terminal-text); - --btn-padding: 0.1em 0.7em; - --btn-border-size: 1px; - - font-family: var(--font-mono); - font-size: var(--text-x-small); - white-space: nowrap; - - &:where(:not(:active)):focus-visible { - outline: 2px solid var(--color-terminal-text); - } - } - - .terminal__command { - --btn-background: transparent; - --btn-color: var(--color-terminal-text); - - font-weight: normal; - overflow: hidden; - transition: unset; - - span:first-letter { - text-transform: capitalize; - } - } - - .terminal__container { - max-block-size: calc(100vh - var(--btn-size) - var(--block-space)); - overflow: auto; - } - - .terminal__help { - background: var(--color-terminal-bg); - border-radius: 1em; - display: none; - - inline-size: auto; - inset: 50% auto auto 50%; - max-inline-size: 90vw; - - padding: calc(var(--block-space) * 1.5) var(--block-space-double); - position: fixed; - transform: translate(-50%, -50%); - - .terminal--showing-help &, - .terminal--open .terminal__menu:empty ~ & { - display: block; - } - - h2 { - border-block-end: 1px dashed; - font-size: var(--text-normal); - font-weight: normal; - margin-block: 0 0.5lh; - padding-block-end: 0.5lh; - } - - h3 { - font-size: var(--text-small); - margin-block: 0; - text-transform: uppercase; - } - - dl { - display: grid; - grid-template-columns: min-content 1fr; - gap: var(--inline-space); - font-size: var(--text-small); - margin: 0; - } - - dt { - grid-column: 1; - margin-inline-start: var(--inline-space-double); - white-space: nowrap; - } - - dd { - grid-column: 2; - white-space: nowrap; - } - } - - .terminal__input { - --input-border-color: transparent; - --input-border-radius: 0.3em; - --input-color: var(--color-terminal-text); - - accent-color: var(--color-terminal-text); - caret-color: var(--color-terminal-text); - font-family: inherit; - font-weight: 500; - text-align: start; - - &.lexical-editor--empty { - overflow: hidden; - text-align: center; - text-overflow: ellipsis; - white-space: nowrap; - - &:focus-within { - text-align: start; - - .lexical-editor__content::before { - inset-inline-start: 0; - translate: 0 -50%; - } - } - - .lexical-editor__content::before { - color: var(--color-ink); - inset: 50% auto auto 50%; - opacity: 0.5; - overflow: hidden; - text-overflow: ellipsis; - transition: 200ms var(--ease-out-expo); - transition-property: inset-inline-start, translate; - translate: -50% -50%; - white-space: nowrap; - - @starting-style { - inset: 0 0 0 50%; - transform: translateX(-50%); - } - } - } - - .terminal--busy:is(:not(.terminal--confirmation)) & { - animation: pulse 1.5s infinite; - } - - .terminal--confirmation & { - color: var(--color-terminal-text-light); - } - - .terminal--error & { - accent-color: var(--color-negative); - caret-color: var(--color-negative); - color: var(--color-negative); - } - - .lexical-editor__content { - min-block-size: initial; - margin: 0; - - b, strong, i, em { - font-weight: inherit; - font-style: inherit; - } - - ul, li { - list-style: none; - margin: 0; - padding: 0; - } - } - } - - .terminal__menu { - display: none; - list-style: none; - - .terminal--open & { - display: flex; - } - - .terminal--showing-help & { - display: none; - } - } - - .terminal__modal { - --panel-border-radius: 1.5em; - --panel-padding: var(--block-space-half); - - max-block-size: calc(100dvh - var(--block-space-double) - 2 * var(--footer-height)); - overflow: clip; - } - - .terminal__item { - &[aria-selected] { - --btn-color: var(--color-terminal-bg); - - background: var(--color-terminal-text); - color: var(--color-terminal-bg); - outline: 2px solid var(--color-terminal-text); - - .terminal__command { - color: var(--color-terminal-bg); - } - } - - @media (any-hover: hover) { - &:where(:not(:active):hover) { - background: color-mix(in srgb, var(--color-terminal-text) 20%, var(--color-terminal-bg)); - } - } - } - - .terminal__output { - display: none; - overflow-y: auto; - padding-inline: var(--inline-space); - - .terminal--confirmation & { - color: var(--color-terminal-text-light); - } - - .terminal--error & { - color: var(--color-negative); - } - - .terminal--showing-output & { - display: block; - } - - p { - + ul { - margin-block-start: 0; - } - - &:has(+ ul) { - margin-block-end: 0; - } - } - } - - /* Lexical prompt insertions - /* ------------------------------------------------------------------------ */ - - .terminal { - action-text-attachment:not(.node--selected) { - --attachment-bg-color: oklch(var(--lch-white) / 15%); - --attachment-text-color: var(--color-terminal-text); - } - } -} diff --git a/app/views/shared/_bar.html.erb b/app/views/shared/_bar.html.erb index aff139fd0..313fba9c8 100644 --- a/app/views/shared/_bar.html.erb +++ b/app/views/shared/_bar.html.erb @@ -1,5 +1,5 @@ <%= tag.div \ - class: "terminal full-width flex flex-column justify-end", + class: "bar full-width flex flex-column justify-end", data: { controller: "bar", bar_dialog_outlet: "#bar-modal",