-moz-osx-font-smoothing: grayscale;
display: flex;
flex-direction: row;
- color: black;
- background-color: white;
+ color: var(--color-text);
+ background-color: var(--color-bg);
}
#action-container {
margin-right: 0.2%;
margin-left: 0.2%;
padding: 0.4%;
- border: solid 0.25px black;
+ border: solid 0.25px var(--color-border);
}
body {
--- /dev/null
+/* Tokyo Night Storm */
+
+:root {
+ /* Palette */
+ --tn-bg-dark: #1f2335;
+ --tn-bg-base: #24283b;
+ --tn-bg-raised: #1b1e2e;
+ --tn-bg-hover: #292e42;
+ --tn-bg-active: #2c324a;
+ --tn-fg-base: #a9b1d6;
+ --tn-fg-bright: #c0caf5;
+ --tn-fg-muted: #8089b3;
+ --tn-blue: #7aa2f7;
+ --tn-accent: #3d59a1;
+ --tn-white: #ffffff;
+
+ /* Semantic */
+ --color-bg: var(--tn-bg-base);
+ --color-bg-surface: var(--tn-bg-dark);
+ --color-bg-input: var(--tn-bg-raised);
+ --color-bg-hover: var(--tn-bg-hover);
+ --color-bg-active: var(--tn-bg-active);
+ --color-bg-header: var(--tn-bg-dark);
+ --color-bg-caption: var(--tn-bg-raised);
+ --color-bg-button: var(--tn-accent);
+ --color-bg-button-hover: color-mix(in srgb, var(--tn-accent) 67%, transparent);
+ --color-text: var(--tn-fg-base);
+ --color-text-strong: var(--tn-fg-bright);
+ --color-text-muted: var(--tn-fg-muted);
+ --color-text-on-button: var(--tn-white);
+ --color-primary: var(--tn-blue);
+ --color-border: var(--tn-bg-raised);
+ --color-border-row: var(--tn-bg-hover);
+ --color-accent: var(--tn-accent);
+ --color-shadow-inset: rgba(0, 0, 0, 0.4);
+}
+
+body {
+ color: var(--color-text);
+ background-color: var(--color-bg);
+}
+
+button,
+.button {
+ color: var(--color-text-on-button);
+ background-color: var(--color-bg-button);
+ border: 1px solid var(--color-border);
+ cursor: pointer;
+}
+
+button:hover,
+.button:hover {
+ background-color: var(--color-bg-button-hover);
+}
+
+input,
+select,
+textarea {
+ color: var(--color-text);
+ background-color: var(--color-bg-input);
+ border: 1px solid var(--color-border-row);
+}
+
+input::placeholder {
+ color: var(--color-text-muted);
+}
+
+input:focus,
+select:focus,
+textarea:focus {
+ outline: 1px solid var(--color-primary);
+}
+
+a {
+ color: var(--color-primary);
+}
+
+h1,
+h2,
+h3,
+p,
+li {
+ color: var(--color-text);
+}
</script>
<style>
-.on {
- background-color: lightgrey;
- border-style: inset;
+button.on {
+ background-color: var(--color-bg-active);
+ border: 1px solid var(--color-accent);
+ box-shadow: inset 0 2px 4px var(--color-shadow-inset);
}
</style>
#connectors-table {
display: flex;
flex-direction: column;
- background-color: white;
+ background-color: var(--color-bg-surface);
overflow: auto hidden;
border-collapse: collapse;
empty-cells: show;
flex-direction: row;
justify-content: center;
align-items: center;
- border: solid 0.25px black;
+ border: solid 0.25px var(--color-border-row);
}
.connectors-table__row:nth-of-type(even) {
- background-color: whitesmoke;
+ background-color: var(--color-bg-hover);
}
#connectors-table__head .connectors-table__row {
- background-color: lightgrey;
+ background-color: var(--color-bg-header);
}
.connectors-table__column {
#cs-table {
height: fit-content;
width: 100%;
- background-color: white;
+ background-color: var(--color-bg-surface);
display: flex;
flex-direction: column;
overflow: auto hidden;
- border: solid 0.25px black;
+ border: solid 0.25px var(--color-border);
border-collapse: collapse;
empty-cells: show;
}
}
#cs-table__caption {
- color: ivory;
- background-color: black;
+ color: var(--color-text-strong);
+ background-color: var(--color-bg-caption);
font-size: 1.5rem;
font-weight: bold;
padding: 0.5rem;
flex-direction: row;
justify-content: center;
align-items: center;
- border: solid 0.25px black;
+ border: solid 0.25px var(--color-border-row);
}
.cs-table__row:nth-of-type(even) {
- background-color: whitesmoke;
+ background-color: var(--color-bg-hover);
}
.cs-table__column {
}
#cs-table__head .cs-table__row {
- background-color: lightgrey;
+ background-color: var(--color-bg-header);
}
.cs-table__connectors-column {
import 'vue-toast-notification/dist/theme-bootstrap.css'
+import '@/assets/theme.css'
+
const app = createApp(App as Component)
const initializeApp = (app: AppType, config: ConfigurationData) => {
<ToggleButton
:id="'simulator'"
:key="state.renderSimulator"
- :class="simulatorButtonClass"
:off="() => stopSimulator()"
:on="() => startSimulator()"
:status="simulatorStarted"
const simulatorStarted = computed((): boolean | undefined => simulatorState.value?.started)
-const simulatorButtonClass = computed((): string =>
- simulatorState.value?.started === true ? 'simulator-stop-button' : 'simulator-start-button'
-)
const simulatorButtonMessage = computed(
(): string =>
`${simulatorState.value?.started === true ? 'Stop' : 'Start'} Simulator${
#ui-server-container {
display: flex;
justify-content: center;
- border-style: outset;
+ border: 1px solid var(--color-border-row);
}
#ui-server-selector {
width: 100%;
- background-color: rgb(239, 239, 239);
+ background-color: var(--color-bg-input);
+ color: var(--color-text);
font: small-caption;
text-align: center;
}
#ui-server-selector:hover {
- background-color: rgb(229, 229, 229);
+ background-color: var(--color-bg-hover);
}
#buttons-container {
top: 0;
}
-.simulator-start-button {
- color: ivory;
- background-color: green;
-}
-
-.simulator-start-button:hover {
- background-color: rgb(0, 98, 0);
-}
-
-.simulator-stop-button {
- color: ivory;
- background-color: red;
-}
-
-.simulator-stop-button:hover {
- background-color: rgb(225, 0, 0);
-}
-
#action-button {
flex: none;
}
#reload-button {
- color: ivory;
- background-color: blue;
font-size: 1.5rem;
}
-#reload-button:hover {
- background-color: rgb(0, 0, 225);
-}
-
#reload-button:active {
- background-color: darkblue;
+ background-color: var(--color-primary);
}
#action {
min-width: max-content;
- color: ivory;
- background-color: black;
+ color: var(--color-text-strong);
+ background-color: var(--color-bg-caption);
padding: 0.8%;
}
</style>