Refactor modal CSS definitions to use centralized style constants for improved maintainability and consistency across the TUI application.
This commit is contained in:
parent
c84c1aac2a
commit
54a2e00e29
8 changed files with 306 additions and 264 deletions
|
@ -11,6 +11,7 @@ from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
from ..core.models import HostEntry
|
from ..core.models import HostEntry
|
||||||
|
from .styles import ADD_ENTRY_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class AddEntryModal(ModalScreen):
|
class AddEntryModal(ModalScreen):
|
||||||
|
@ -20,51 +21,7 @@ class AddEntryModal(ModalScreen):
|
||||||
Provides a floating window with input fields for creating new entries.
|
Provides a floating window with input fields for creating new entries.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = ADD_ENTRY_MODAL_CSS
|
||||||
AddEntryModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-entry-container {
|
|
||||||
width: 80;
|
|
||||||
height: 25;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $primary;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-entry-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-entry-section {
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-entry-input {
|
|
||||||
margin: 0 2;
|
|
||||||
width: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
margin-top: 2;
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-entry-button {
|
|
||||||
margin: 0 1;
|
|
||||||
min-width: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.validation-error {
|
|
||||||
color: $error;
|
|
||||||
margin: 0 2;
|
|
||||||
text-style: italic;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "cancel", "Cancel"),
|
Binding("escape", "cancel", "Cancel"),
|
||||||
|
|
|
@ -460,7 +460,6 @@ class HostsManagerApp(App):
|
||||||
|
|
||||||
self.push_screen(DeleteConfirmationModal(entry), handle_delete_confirmation)
|
self.push_screen(DeleteConfirmationModal(entry), handle_delete_confirmation)
|
||||||
|
|
||||||
|
|
||||||
def action_quit(self) -> None:
|
def action_quit(self) -> None:
|
||||||
"""Quit the application."""
|
"""Quit the application."""
|
||||||
self.navigation_handler.quit_application()
|
self.navigation_handler.quit_application()
|
||||||
|
|
|
@ -11,6 +11,7 @@ from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
from ..core.config import Config
|
from ..core.config import Config
|
||||||
|
from .styles import CONFIG_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class ConfigModal(ModalScreen):
|
class ConfigModal(ModalScreen):
|
||||||
|
@ -20,44 +21,7 @@ class ConfigModal(ModalScreen):
|
||||||
Provides a floating window with configuration options.
|
Provides a floating window with configuration options.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = CONFIG_MODAL_CSS
|
||||||
ConfigModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.config-container {
|
|
||||||
width: 80;
|
|
||||||
height: 20;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $primary;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.config-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.config-section {
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.config-option {
|
|
||||||
margin: 0 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
margin-top: 2;
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.config-button {
|
|
||||||
margin: 0 1;
|
|
||||||
min-width: 10;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "cancel", "Cancel"),
|
Binding("escape", "cancel", "Cancel"),
|
||||||
|
|
|
@ -11,6 +11,7 @@ from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
from ..core.models import HostEntry
|
from ..core.models import HostEntry
|
||||||
|
from .styles import DELETE_CONFIRMATION_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class DeleteConfirmationModal(ModalScreen):
|
class DeleteConfirmationModal(ModalScreen):
|
||||||
|
@ -20,48 +21,7 @@ class DeleteConfirmationModal(ModalScreen):
|
||||||
Provides a confirmation dialog before deleting host entries.
|
Provides a confirmation dialog before deleting host entries.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = DELETE_CONFIRMATION_MODAL_CSS
|
||||||
DeleteConfirmationModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-container {
|
|
||||||
width: 60;
|
|
||||||
height: 15;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $error;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $error;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-message {
|
|
||||||
text-align: center;
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entry-info {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
margin-top: 2;
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-button {
|
|
||||||
margin: 0 1;
|
|
||||||
min-width: 10;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "cancel", "Cancel"),
|
Binding("escape", "cancel", "Cancel"),
|
||||||
|
|
|
@ -10,6 +10,8 @@ from textual.widgets import Static, Button
|
||||||
from textual.screen import ModalScreen
|
from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
|
from .styles import HELP_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class HelpModal(ModalScreen):
|
class HelpModal(ModalScreen):
|
||||||
"""
|
"""
|
||||||
|
@ -18,59 +20,7 @@ class HelpModal(ModalScreen):
|
||||||
Provides comprehensive help information for using the application.
|
Provides comprehensive help information for using the application.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = HELP_MODAL_CSS
|
||||||
HelpModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-container {
|
|
||||||
width: 90;
|
|
||||||
height: 40;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $primary;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-content {
|
|
||||||
height: 35;
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-section {
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-section-title {
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-item {
|
|
||||||
margin: 0 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.keyboard-shortcut {
|
|
||||||
text-style: bold;
|
|
||||||
color: $accent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
margin-top: 1;
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-button {
|
|
||||||
min-width: 10;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "close", "Close"),
|
Binding("escape", "close", "Close"),
|
||||||
|
|
|
@ -10,6 +10,8 @@ from textual.widgets import Static, Button, Input
|
||||||
from textual.screen import ModalScreen
|
from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
|
from .styles import PASSWORD_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class PasswordModal(ModalScreen):
|
class PasswordModal(ModalScreen):
|
||||||
"""
|
"""
|
||||||
|
@ -18,52 +20,7 @@ class PasswordModal(ModalScreen):
|
||||||
Provides a floating window for entering sudo password with proper masking.
|
Provides a floating window for entering sudo password with proper masking.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = PASSWORD_MODAL_CSS
|
||||||
PasswordModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-container {
|
|
||||||
width: 60;
|
|
||||||
height: 12;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $primary;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-message {
|
|
||||||
text-align: center;
|
|
||||||
color: $text;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-input {
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
margin-top: 1;
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-button {
|
|
||||||
margin: 0 1;
|
|
||||||
min-width: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-message {
|
|
||||||
color: $error;
|
|
||||||
text-align: center;
|
|
||||||
margin: 1 0;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "cancel", "Cancel"),
|
Binding("escape", "cancel", "Cancel"),
|
||||||
|
|
|
@ -10,6 +10,8 @@ from textual.widgets import Static, Button, Label
|
||||||
from textual.screen import ModalScreen
|
from textual.screen import ModalScreen
|
||||||
from textual.binding import Binding
|
from textual.binding import Binding
|
||||||
|
|
||||||
|
from .styles import SAVE_CONFIRMATION_MODAL_CSS
|
||||||
|
|
||||||
|
|
||||||
class SaveConfirmationModal(ModalScreen):
|
class SaveConfirmationModal(ModalScreen):
|
||||||
"""
|
"""
|
||||||
|
@ -18,45 +20,7 @@ class SaveConfirmationModal(ModalScreen):
|
||||||
Provides a confirmation dialog asking whether to save or discard changes.
|
Provides a confirmation dialog asking whether to save or discard changes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CSS = """
|
CSS = SAVE_CONFIRMATION_MODAL_CSS
|
||||||
SaveConfirmationModal {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.save-confirmation-container {
|
|
||||||
width: 60;
|
|
||||||
height: 15;
|
|
||||||
background: $surface;
|
|
||||||
border: thick $primary;
|
|
||||||
padding: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.save-confirmation-title {
|
|
||||||
text-align: center;
|
|
||||||
text-style: bold;
|
|
||||||
color: $primary;
|
|
||||||
margin-bottom: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.save-confirmation-message {
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 2;
|
|
||||||
color: $text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-row {
|
|
||||||
align: center middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.save-confirmation-button {
|
|
||||||
margin: 0 1;
|
|
||||||
min-width: 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
.save-confirmation-button:focus {
|
|
||||||
border: thick $accent;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
BINDINGS = [
|
BINDINGS = [
|
||||||
Binding("escape", "cancel", "Cancel"),
|
Binding("escape", "cancel", "Cancel"),
|
||||||
|
|
|
@ -128,3 +128,294 @@ Header.-tall {
|
||||||
height: 1; /* Fix tall header also to height 1 */
|
height: 1; /* Fix tall header also to height 1 */
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Common CSS classes shared across components
|
||||||
|
COMMON_CSS = """
|
||||||
|
.button-row {
|
||||||
|
margin-top: 1;
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Help Modal CSS
|
||||||
|
HELP_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
HelpModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-container {
|
||||||
|
width: 90;
|
||||||
|
height: 40;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $primary;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-content {
|
||||||
|
height: 35;
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section {
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section-title {
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-item {
|
||||||
|
margin: 0 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.keyboard-shortcut {
|
||||||
|
text-style: bold;
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-button {
|
||||||
|
min-width: 10;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add Entry Modal CSS
|
||||||
|
ADD_ENTRY_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
AddEntryModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-entry-container {
|
||||||
|
width: 80;
|
||||||
|
height: 25;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $primary;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-entry-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-entry-section {
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-entry-input {
|
||||||
|
margin: 0 2;
|
||||||
|
width: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-row {
|
||||||
|
margin-top: 2;
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-entry-button {
|
||||||
|
margin: 0 1;
|
||||||
|
min-width: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.validation-error {
|
||||||
|
color: $error;
|
||||||
|
margin: 0 2;
|
||||||
|
text-style: italic;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# Delete Confirmation Modal CSS
|
||||||
|
DELETE_CONFIRMATION_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
DeleteConfirmationModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-container {
|
||||||
|
width: 60;
|
||||||
|
height: 15;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $error;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $error;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-message {
|
||||||
|
text-align: center;
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-info {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-row {
|
||||||
|
margin-top: 2;
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-button {
|
||||||
|
margin: 0 1;
|
||||||
|
min-width: 10;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# Password Modal CSS
|
||||||
|
PASSWORD_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
PasswordModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-container {
|
||||||
|
width: 60;
|
||||||
|
height: 12;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $primary;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-message {
|
||||||
|
text-align: center;
|
||||||
|
color: $text;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input {
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-button {
|
||||||
|
margin: 0 1;
|
||||||
|
min-width: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-message {
|
||||||
|
color: $error;
|
||||||
|
text-align: center;
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# Config Modal CSS
|
||||||
|
CONFIG_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
ConfigModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.config-container {
|
||||||
|
width: 80;
|
||||||
|
height: 20;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $primary;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.config-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.config-section {
|
||||||
|
margin: 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.config-option {
|
||||||
|
margin: 0 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-row {
|
||||||
|
margin-top: 2;
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.config-button {
|
||||||
|
margin: 0 1;
|
||||||
|
min-width: 10;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
# Save Confirmation Modal CSS
|
||||||
|
SAVE_CONFIRMATION_MODAL_CSS = (
|
||||||
|
COMMON_CSS
|
||||||
|
+ """
|
||||||
|
SaveConfirmationModal {
|
||||||
|
align: center middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-confirmation-container {
|
||||||
|
width: 60;
|
||||||
|
height: 15;
|
||||||
|
background: $surface;
|
||||||
|
border: thick $primary;
|
||||||
|
padding: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-confirmation-title {
|
||||||
|
text-align: center;
|
||||||
|
text-style: bold;
|
||||||
|
color: $primary;
|
||||||
|
margin-bottom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-confirmation-message {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 2;
|
||||||
|
color: $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-confirmation-button {
|
||||||
|
margin: 0 1;
|
||||||
|
min-width: 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-confirmation-button:focus {
|
||||||
|
border: thick $accent;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue