From 4795253a6066c8c2e2aaa9eca115eb09ef37ccf3 Mon Sep 17 00:00:00 2001 From: Adam Martin Date: Sat, 25 Jul 2026 23:27:36 -0500 Subject: [PATCH] feature: Disable user selection on most app UI elements --- apps/web/src/styles.css | 15 +++++++++++++++ packages/note-boards/src/styles.css | 2 ++ packages/note-calendar/src/styles.css | 2 ++ packages/note-canvas/src/styles.css | 1 + packages/note-grid/src/styles.css | 1 + packages/note-mermaid/src/styles.css | 2 ++ packages/note-tables/src/styles.css | 8 ++++++++ packages/ui/src/island.css | 1 + packages/ui/src/menu.css | 1 + packages/ui/src/panel.css | 1 + 10 files changed, 34 insertions(+) diff --git a/apps/web/src/styles.css b/apps/web/src/styles.css index 0bd0545..80256c6 100644 --- a/apps/web/src/styles.css +++ b/apps/web/src/styles.css @@ -346,6 +346,7 @@ button { .ribbon-search-input::placeholder { color: var(--fg-muted); + user-select: none; } .ribbon-actions { @@ -394,6 +395,7 @@ button { align-items: center; gap: 12px; padding: 24px 12px; + user-select: none; } .sidebar-no-tome-message { @@ -423,6 +425,7 @@ button { flex-direction: column; gap: 8px; padding: 4px; + user-select: none; } .search-input, @@ -449,6 +452,7 @@ button { background: var(--bg); color: var(--fg); font-size: 12px; + user-select: none; } /* Search/results and find/replace UI */ @@ -464,6 +468,10 @@ button { padding: 0; } +.tag-list { + user-select: none; +} + .search-results { display: flex; flex-direction: column; @@ -912,6 +920,7 @@ button { align-items: center; gap: 8px; margin-right: 8px; + user-select: none; } .status-action-btn { @@ -945,6 +954,7 @@ button { height: 100%; overflow: auto; padding: 0 8px 24px; + user-select: none; } .settings-view-header { @@ -1016,6 +1026,7 @@ button { color: var(--fg); padding: 6px 8px; font-size: 13px; + user-select: none; } .settings-import-btn { @@ -1623,6 +1634,7 @@ button { background: var(--bg); border: 1px solid var(--border); border-radius: 8px; + user-select: none; } .image-note-preview { @@ -1686,6 +1698,7 @@ button { opacity: 0.55; transition: opacity 0.15s ease; pointer-events: none; + user-select: none; } .mode-float:hover, @@ -1752,6 +1765,7 @@ button { color: var(--fg); font-size: 12px; padding: 3px 6px; + user-select: none; } .editor-find-btn { @@ -2000,6 +2014,7 @@ button { padding: 6px 10px; min-height: 40px; border-bottom: 1px solid var(--border); + user-select: none; } .editor-toolbar-main, diff --git a/packages/note-boards/src/styles.css b/packages/note-boards/src/styles.css index 5296634..c7e5c7e 100644 --- a/packages/note-boards/src/styles.css +++ b/packages/note-boards/src/styles.css @@ -361,6 +361,7 @@ color: var(--fg-muted); border-radius: 8px; padding: 6px 8px; + user-select: none; } .board-add-card:hover { @@ -376,6 +377,7 @@ border-radius: 10px; color: var(--fg-muted); padding: 8px 14px; + user-select: none; } .board-add-column:hover { diff --git a/packages/note-calendar/src/styles.css b/packages/note-calendar/src/styles.css index e9ff1f9..4ba9fcb 100644 --- a/packages/note-calendar/src/styles.css +++ b/packages/note-calendar/src/styles.css @@ -46,6 +46,7 @@ color: var(--fg-muted); border-bottom: 1px solid var(--border); text-align: center; + user-select: none; } .calendar-cell { @@ -60,6 +61,7 @@ color: var(--fg); text-align: left; overflow: hidden; + user-select: none; } .calendar-cell--muted { diff --git a/packages/note-canvas/src/styles.css b/packages/note-canvas/src/styles.css index 521c803..732477c 100644 --- a/packages/note-canvas/src/styles.css +++ b/packages/note-canvas/src/styles.css @@ -5,6 +5,7 @@ flex-direction: column; height: 100%; min-height: 0; + user-select: none; } .canvas-meta { diff --git a/packages/note-grid/src/styles.css b/packages/note-grid/src/styles.css index 38fd6a3..1bdbff9 100644 --- a/packages/note-grid/src/styles.css +++ b/packages/note-grid/src/styles.css @@ -130,6 +130,7 @@ border-left: 1px solid var(--border); padding: 8px; overflow: auto; + user-select: none; } .grid-layers-head { diff --git a/packages/note-mermaid/src/styles.css b/packages/note-mermaid/src/styles.css index 1639939..85c3e76 100644 --- a/packages/note-mermaid/src/styles.css +++ b/packages/note-mermaid/src/styles.css @@ -12,6 +12,7 @@ gap: 2px; padding: 6px 10px; border-block: 1px solid var(--border); + user-select: none; } .mermaid-body { @@ -54,6 +55,7 @@ align-items: flex-start; justify-content: center; background: var(--bg); + user-select: none; } .mermaid-diagram { diff --git a/packages/note-tables/src/styles.css b/packages/note-tables/src/styles.css index 4e4abb1..5243062 100644 --- a/packages/note-tables/src/styles.css +++ b/packages/note-tables/src/styles.css @@ -26,6 +26,10 @@ font-size: 13px; } +.data-grid th { + user-select: none; +} + .data-grid th, .data-grid td { border: 1px solid var(--border); @@ -92,6 +96,7 @@ min-width: 34px; text-align: center; color: var(--fg-muted); + user-select: none; } .grid-gutter .grid-rownum { @@ -112,12 +117,14 @@ tr:hover .grid-rownum { tr:hover .grid-row-delete { display: inline; + margin-inline: -12px; /* Subtract padding so it doesn't change the cell's size */ } .table-grid-cell { min-width: 120px; height: 28px; cursor: cell; + user-select: none; } .grid-cell--selected { @@ -163,6 +170,7 @@ tr:hover .grid-row-delete { color: var(--fg); font: inherit; padding: 3px 6px; + user-select: none; } .grid-select:focus { diff --git a/packages/ui/src/island.css b/packages/ui/src/island.css index e7d7905..140aaec 100644 --- a/packages/ui/src/island.css +++ b/packages/ui/src/island.css @@ -30,6 +30,7 @@ gap: 2px; border-bottom: 1px solid var(--border-subtle); flex-shrink: 0; + user-select: none; } /* Island body — scrollable or flex content area */ diff --git a/packages/ui/src/menu.css b/packages/ui/src/menu.css index 5e9457a..77e4b59 100644 --- a/packages/ui/src/menu.css +++ b/packages/ui/src/menu.css @@ -16,6 +16,7 @@ min-width: 168px; display: flex; flex-direction: column; + user-select: none; } /* Popup menu — relative-anchored dropdown (e.g. overflow, status-bar theme picker) */ diff --git a/packages/ui/src/panel.css b/packages/ui/src/panel.css index 1238b76..4207bc1 100644 --- a/packages/ui/src/panel.css +++ b/packages/ui/src/panel.css @@ -6,6 +6,7 @@ display: flex; flex-direction: column; padding: 4px; + user-select: none; } /* Panel section — collapsible card inside a group */