diff --git a/runtimepy/data/css/bootstrap_extra.css b/runtimepy/data/css/bootstrap_extra.css index 4bf1218..b9daf3e 100644 --- a/runtimepy/data/css/bootstrap_extra.css +++ b/runtimepy/data/css/bootstrap_extra.css @@ -98,12 +98,8 @@ button:hover { width: 6em; } -/* - * Should probably build the bootstrap stuff from source and set custom Sass: - * https://getbootstrap.com/docs/5.3/customize/sass/ - */ - +/* Prefer 'CascadiaCode' and 'CascadiaMono' at the highest priority. */ :root { - --bs-font-sans-serif: CascadiaCode; - --bs-font-monospace: CascadiaMono; + --bs-font-sans-serif: CascadiaCode, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: CascadiaMono, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } diff --git a/runtimepy/data/css/font.css b/runtimepy/data/css/font.css index 5e40ec1..c501832 100644 --- a/runtimepy/data/css/font.css +++ b/runtimepy/data/css/font.css @@ -1,47 +1,47 @@ @font-face { font-family: CascadiaCode; - src: url("static/woff2/CascadiaCode-Regular.woff2"); + src: url("/static/woff2/CascadiaCode-Regular.woff2"); } @font-face { font-family: CascadiaCode; - src: url("static/woff2/CascadiaCode-Bold.woff2"); + src: url("/static/woff2/CascadiaCode-Bold.woff2"); font-weight: bold; } @font-face { font-family: CascadiaCode; - src: url("static/woff2/CascadiaCode-BoldItalic.woff2"); + src: url("/static/woff2/CascadiaCode-BoldItalic.woff2"); font-weight: bold; font-style: italic; } @font-face { font-family: CascadiaCode; - src: url("static/woff2/CascadiaCode-Italic.woff2"); + src: url("/static/woff2/CascadiaCode-Italic.woff2"); font-style: italic; } @font-face { font-family: CascadiaMono; - src: url("static/woff2/CascadiaMono-Regular.woff2"); + src: url("/static/woff2/CascadiaMono-Regular.woff2"); } @font-face { font-family: CascadiaMono; - src: url("static/woff2/CascadiaMono-Bold.woff2"); + src: url("/static/woff2/CascadiaMono-Bold.woff2"); font-weight: bold; } @font-face { font-family: CascadiaMono; - src: url("static/woff2/CascadiaMono-BoldItalic.woff2"); + src: url("/static/woff2/CascadiaMono-BoldItalic.woff2"); font-weight: bold; font-style: italic; } @font-face { font-family: CascadiaMono; - src: url("static/woff2/CascadiaMono-Italic.woff2"); + src: url("/static/woff2/CascadiaMono-Italic.woff2"); font-style: italic; } diff --git a/runtimepy/data/favicon.ico b/runtimepy/data/favicon.ico index 53f55e2..d78b310 100644 Binary files a/runtimepy/data/favicon.ico and b/runtimepy/data/favicon.ico differ diff --git a/runtimepy/data/static/svg/chip-circle-bootstrap.svg b/runtimepy/data/static/svg/chip-circle-bootstrap.svg new file mode 100644 index 0000000..d4daffa --- /dev/null +++ b/runtimepy/data/static/svg/chip-circle-bootstrap.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/runtimepy/net/server/app/env/tab/html.py b/runtimepy/net/server/app/env/tab/html.py index db2c973..48b528a 100644 --- a/runtimepy/net/server/app/env/tab/html.py +++ b/runtimepy/net/server/app/env/tab/html.py @@ -50,6 +50,9 @@ def create_name_td(parent: Element) -> Element: return div(tag="td", parent=parent, class_str="p-0 text-nowrap") +COMMANDABLE = "text-info-emphasis" + + class ChannelEnvironmentTabHtml(ChannelEnvironmentTabControls): """A channel-environment tab interface.""" @@ -67,7 +70,7 @@ def add_channel( name_elem = div(tag="span", text=name, parent=name_td) if chan.commandable: - name_elem.add_class("text-success") + name_elem.add_class(COMMANDABLE) if description: set_tooltip(name_elem, description, placement="left") @@ -105,7 +108,7 @@ def add_field( name_elem = div(tag="span", text=name, parent=name_td) if field.commandable: - name_elem.add_class("text-success") + name_elem.add_class(COMMANDABLE) if field.description: description = field.description diff --git a/tasks/dev.yaml b/tasks/dev.yaml index 9e3b36b..adb63ed 100644 --- a/tasks/dev.yaml +++ b/tasks/dev.yaml @@ -34,24 +34,13 @@ port_overrides: # websocket_hostname: nuc2 config: - top_markdown: &sample | + top_markdown: | # Libre Embedded - # `Libre Embedded` + ![logo](/static/svg/chip-circle-bootstrap.svg) - # *Libre Embedded* - - # *`Libre Embedded`* - - # **Libre Embedded** - - # **`Libre Embedded`** - - # ***Libre Embedded*** - - # ***`Libre Embedded`*** - - bottom_markdown: *sample + bottom_markdown: | + `libre-embedded.com` app: - runtimepy.net.apps.wait_for_stop