diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-13 01:57:43 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-13 01:57:43 +0200 |
| commit | 65c7c40f74c315c1a39fb15da8ce341fb8b9b05e (patch) | |
| tree | adeea832d7d808b58015f8f4e7964b86ad857939 /app | |
| parent | 6730af4b33b207a7a1880cef2706e67313a7e5cd (diff) | |
Wavy-underline: allowlist to default; destroy-button and search polish
Flips the plain-link underline from an opt-in list (growing every time
a new context needed it) to the default a rule, with opt-outs living
as more specific overrides where something shouldn't look like plain
content -- .action_button, the icon nav, the search dropdown's bold
results. The allowlist's own history made the case for this: three of
its entries were already hand-copied duplicates of the same five
properties, and two of those had already silently drifted.
form.button_to's icon+text buttons (Destroy, currently) get the same
inline-flex/gap treatment .action_button already had -- they were
never included in that fix, so they still baseline-aligned an SVG
against text instead of centering it, plus an explicit icon size
they'd never had either.
Dashboard search results: tags render as a wrapped row of pills
instead of one-per-line, for visual distinction from page results.
The public-preview link and its Revoke button get their own row
rather than loose inline flow, which wrapped unpredictably next to a
long token URL -- aligned by box-top rather than center or baseline,
since a <button> doesn't reliably expose a text baseline the way a
plain link does, with a small compensating offset for the button's
own internal padding.
Diffstat (limited to 'app')
| -rw-r--r-- | app/views/nodes/show.html.erb | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/app/views/nodes/show.html.erb b/app/views/nodes/show.html.erb index 6e20258..280e492 100644 --- a/app/views/nodes/show.html.erb +++ b/app/views/nodes/show.html.erb | |||
| @@ -122,8 +122,10 @@ | |||
| 122 | <div class="node_info_item"> | 122 | <div class="node_info_item"> |
| 123 | <span class="node_info_label">Public Preview</span> | 123 | <span class="node_info_label">Public Preview</span> |
| 124 | <% if @node.draft.preview_token.present? %> | 124 | <% if @node.draft.preview_token.present? %> |
| 125 | <%= link_to shared_preview_path(token: @node.draft.preview_token), shared_preview_url(token: @node.draft.preview_token), target: "_blank", rel: "noopener" %> | 125 | <div class="preview_link_row"> |
| 126 | <%= button_to 'Revoke', revoke_shared_preview_node_path(@node), method: :put, form: { data: { confirm: "Revoke this preview link? Anyone currently using it will immediately lose access." }, class: 'button_to state_changing' } %> | 126 | <%= link_to shared_preview_path(token: @node.draft.preview_token), shared_preview_url(token: @node.draft.preview_token), target: "_blank", rel: "noopener" %> |
| 127 | <%= button_to 'Revoke', revoke_shared_preview_node_path(@node), method: :put, form: { data: { confirm: "Revoke this preview link? Anyone currently using it will immediately lose access." }, class: 'button_to state_changing' } %> | ||
| 128 | </div> | ||
| 127 | <% else %> | 129 | <% else %> |
| 128 | <%= button_to 'Create public preview link', generate_shared_preview_node_path(@node), method: :put, form: { class: 'button_to state_changing' } %> | 130 | <%= button_to 'Create public preview link', generate_shared_preview_node_path(@node), method: :put, form: { class: 'button_to state_changing' } %> |
| 129 | <% end %> | 131 | <% end %> |
