diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-08-12 01:24:28 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-08-12 01:24:28 +0200 |
| commit | 5f6f272b433ffb1ec0bda2a5e6d64709c4ac6f33 (patch) | |
| tree | eade981fb2d0b90797a0ae233eb4282305b6ef81 | |
| parent | dd2264fb24b457910a76fac486e40c0c7a46581c (diff) | |
Give the admin lists a shared table and row vocabulary
row_primary and row_secondary replace four names for a row's title and five
for its supporting line, across the tables and the sitemap. Actions cells no
longer sit flush against the row edge
Header rows move into thead, which retires the .header class from the CSS,
the tr.header:hover suppression, and .no_hover
Replace variety of nodes_table, assets_table, events_table, revisions_table,
user_table and sitemap with a shared class admin_table
| -rw-r--r-- | app/views/assets/index.html.erb | 114 | ||||
| -rw-r--r-- | app/views/events/index.html.erb | 132 | ||||
| -rw-r--r-- | app/views/nodes/_node_list.html.erb | 76 | ||||
| -rw-r--r-- | app/views/nodes/sitemap.html.erb | 4 | ||||
| -rw-r--r-- | app/views/revisions/index.html.erb | 8 | ||||
| -rw-r--r-- | app/views/users/index.html.erb | 20 | ||||
| -rw-r--r-- | public/stylesheets/admin.css | 205 |
7 files changed, 238 insertions, 321 deletions
diff --git a/app/views/assets/index.html.erb b/app/views/assets/index.html.erb index 84f096c2..c71607cf 100644 --- a/app/views/assets/index.html.erb +++ b/app/views/assets/index.html.erb | |||
| @@ -8,59 +8,63 @@ | |||
| 8 | 8 | ||
| 9 | <%= will_paginate @assets %> | 9 | <%= will_paginate @assets %> |
| 10 | 10 | ||
| 11 | <table class="assets_table"> | 11 | <table class="admin_table assets_table"> |
| 12 | <tr class="header"> | 12 | <thead> |
| 13 | <th><%= t("admin.columns.preview") %></th> | 13 | <tr class="header"> |
| 14 | <th><%= t("admin.columns.name") %></th> | 14 | <th><%= t("admin.columns.preview") %></th> |
| 15 | <th></th> | 15 | <th><%= t("admin.columns.name") %></th> |
| 16 | </tr> | 16 | <th></th> |
| 17 | <% @assets.each do |asset| %> | 17 | </tr> |
| 18 | <tr> | 18 | </thead> |
| 19 | <td class="asset_thumb"> | 19 | <tbody> |
| 20 | <% if asset.has_variant?(:thumb) %> | 20 | <% @assets.each do |asset| %> |
| 21 | <%= link_to image_tag(asset.upload.url(:thumb), :alt => ""), asset, | 21 | <tr> |
| 22 | :class => "asset_thumb_link" %> | 22 | <td class="asset_thumb"> |
| 23 | <% end %> | 23 | <% if asset.has_variant?(:thumb) %> |
| 24 | </td> | 24 | <%= link_to image_tag(asset.upload.url(:thumb), :alt => ""), asset, |
| 25 | <td> | 25 | :class => "asset_thumb_link" %> |
| 26 | <div class="asset_name"> | 26 | <% end %> |
| 27 | <%= link_to asset.name.presence || asset.upload_file_name, asset %> | 27 | </td> |
| 28 | </div> | 28 | <td> |
| 29 | <div class="asset_meta asset_file"> | 29 | <div class="row_primary asset_name"> |
| 30 | <%= icon("external-link", library: "tabler", "aria-hidden": true) %> | 30 | <%= link_to asset.name.presence || asset.upload_file_name, asset %> |
| 31 | <%= link_to asset.upload_file_name, asset.upload.url, | 31 | </div> |
| 32 | :target => "_blank", :rel => "noopener" %> | 32 | <div class="row_secondary asset_meta asset_file"> |
| 33 | </div> | 33 | <%= icon("external-link", library: "tabler", "aria-hidden": true) %> |
| 34 | <div class="asset_meta asset_type"> | 34 | <%= link_to asset.upload_file_name, asset.upload.url, |
| 35 | <%= asset.upload.content_type %> · | 35 | :target => "_blank", :rel => "noopener" %> |
| 36 | <%= number_to_human_size(asset.upload.size) %> | 36 | </div> |
| 37 | </div> | 37 | <div class="row_secondary asset_meta asset_type"> |
| 38 | </td> | 38 | <%= asset.upload.content_type %> · |
| 39 | <td class="actions"> | 39 | <%= number_to_human_size(asset.upload.size) %> |
| 40 | <div class="action_grid"> | 40 | </div> |
| 41 | <span class="action_item"> | 41 | </td> |
| 42 | <%= link_to asset, "aria-label" => t("admin.common.show"), | 42 | <td class="actions"> |
| 43 | title: t("admin.common.show") do %> | 43 | <div class="action_grid"> |
| 44 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> | 44 | <span class="action_item"> |
| 45 | <% end %> | 45 | <%= link_to asset, "aria-label" => t("admin.common.show"), |
| 46 | </span> | 46 | title: t("admin.common.show") do %> |
| 47 | <span class="action_item"> | 47 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> |
| 48 | <%= link_to edit_asset_path(asset), "aria-label" => t("admin.common.edit"), | 48 | <% end %> |
| 49 | title: t("admin.common.edit") do %> | 49 | </span> |
| 50 | <%= icon("edit", library: "tabler", "aria-hidden": true) %> | 50 | <span class="action_item"> |
| 51 | <% end %> | 51 | <%= link_to edit_asset_path(asset), "aria-label" => t("admin.common.edit"), |
| 52 | </span> | 52 | title: t("admin.common.edit") do %> |
| 53 | <span class="action_item"> | 53 | <%= icon("edit", library: "tabler", "aria-hidden": true) %> |
| 54 | <%= button_to asset, method: :delete, | 54 | <% end %> |
| 55 | form: { data: { confirm: t("admin.common.confirm_sure") }, | 55 | </span> |
| 56 | class: 'button_to destructive' }, | 56 | <span class="action_item"> |
| 57 | "aria-label" => t("admin.common.destroy"), | 57 | <%= button_to asset, method: :delete, |
| 58 | title: t("admin.common.destroy") do %> | 58 | form: { data: { confirm: t("admin.common.confirm_sure") }, |
| 59 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> | 59 | class: 'button_to destructive' }, |
| 60 | <% end %> | 60 | "aria-label" => t("admin.common.destroy"), |
| 61 | </span> | 61 | title: t("admin.common.destroy") do %> |
| 62 | </div> | 62 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> |
| 63 | </td> | 63 | <% end %> |
| 64 | </tr> | 64 | </span> |
| 65 | <% end %> | 65 | </div> |
| 66 | </td> | ||
| 67 | </tr> | ||
| 68 | <% end %> | ||
| 69 | </tbody> | ||
| 66 | </table> | 70 | </table> |
diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index 2497a577..3116dfc1 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb | |||
| @@ -8,72 +8,76 @@ | |||
| 8 | 8 | ||
| 9 | <%= will_paginate @events %> | 9 | <%= will_paginate @events %> |
| 10 | 10 | ||
| 11 | <table class="events_table"> | 11 | <table class="admin_table events_table"> |
| 12 | <tr class="header"> | 12 | <thead> |
| 13 | <th><%= t("admin.columns.title") %></th> | 13 | <tr class="header"> |
| 14 | <th><%= t(".when") %></th> | 14 | <th><%= t("admin.columns.title") %></th> |
| 15 | <th></th> | 15 | <th><%= t(".when") %></th> |
| 16 | </tr> | 16 | <th></th> |
| 17 | </tr> | ||
| 18 | </thead> | ||
| 17 | 19 | ||
| 18 | <% @events.each do |event| %> | 20 | <tbody> |
| 19 | <tr> | 21 | <% @events.each do |event| %> |
| 20 | <td class="title"> | 22 | <tr> |
| 21 | <div class="title_with_flags"> | 23 | <td class="title"> |
| 22 | <span class="flag_stack"> | 24 | <div class="title_with_flags"> |
| 23 | <%= flag("hours-24", Event.human_attribute_name(:allday)) if event.allday %> | 25 | <span class="flag_stack"> |
| 24 | <%= flag("sticker", t(".flag_own_title")) if event.title.present? %> | 26 | <%= flag("hours-24", Event.human_attribute_name(:allday)) if event.allday %> |
| 25 | </span> | 27 | <%= flag("sticker", t(".flag_own_title")) if event.title.present? %> |
| 26 | <div class="title_body"> | 28 | </span> |
| 27 | <div class="event_title"><%= link_to event.display_title, event %></div> | 29 | <div class="title_body"> |
| 28 | <% if event.node %> | 30 | <div class="row_primary event_title"><%= link_to event.display_title, event %></div> |
| 29 | <div class="event_meta"> | 31 | <% if event.node %> |
| 30 | <%= icon("file", library: "tabler", "aria-hidden": true) %> | 32 | <div class="row_secondary event_meta"> |
| 31 | <%= link_to event.node.unique_name, node_path(event.node) %> | 33 | <%= icon("file", library: "tabler", "aria-hidden": true) %> |
| 32 | </div> | 34 | <%= link_to event.node.unique_name, node_path(event.node) %> |
| 33 | <% end %> | 35 | </div> |
| 34 | <% if event.url.present? %> | 36 | <% end %> |
| 35 | <div class="event_meta"> | 37 | <% if event.url.present? %> |
| 36 | <%= icon("external-link", library: "tabler", "aria-hidden": true) %> | 38 | <div class="row_secondary event_meta"> |
| 37 | <%= external_url_link(event.url) %> | 39 | <%= icon("external-link", library: "tabler", "aria-hidden": true) %> |
| 38 | </div> | 40 | <%= external_url_link(event.url) %> |
| 39 | <% end %> | 41 | </div> |
| 42 | <% end %> | ||
| 43 | </div> | ||
| 40 | </div> | 44 | </div> |
| 41 | </div> | 45 | </td> |
| 42 | </td> | 46 | <td class="event_when"> |
| 43 | <td class="event_when"> | 47 | <div class="when_body"> |
| 44 | <div class="when_body"> | 48 | <% if event.rrule.present? %> |
| 45 | <% if event.rrule.present? %> | 49 | <% if event.humanize_rrule %> |
| 46 | <% if event.humanize_rrule %> | 50 | <span title="<%= event.rrule %>"><%= event_schedule_text(event) %></span> |
| 47 | <span title="<%= event.rrule %>"><%= event_schedule_text(event) %></span> | 51 | <% else %> |
| 48 | <% else %> | 52 | <span class="rrule_raw" title="<%= event.rrule %>"> |
| 49 | <span class="rrule_raw" title="<%= event.rrule %>"> | 53 | <%= t("events.schedule.unreadable") %> |
| 50 | <%= t("events.schedule.unreadable") %> | 54 | </span> |
| 51 | </span> | 55 | <% if event.start_time %> |
| 52 | <% if event.start_time %> | 56 | <div class="row_secondary event_meta"><%= admin_date(event.start_time) %></div> |
| 53 | <div class="event_meta"><%= admin_date(event.start_time) %></div> | 57 | <% end %> |
| 54 | <% end %> | 58 | <% end %> |
| 59 | <% else %> | ||
| 60 | <%= event_date_range(event) %> | ||
| 55 | <% end %> | 61 | <% end %> |
| 56 | <% else %> | 62 | </div> |
| 57 | <%= event_date_range(event) %> | 63 | </td> |
| 58 | <% end %> | 64 | <td class="actions"> |
| 59 | </div> | 65 | <div class="action_grid"> |
| 60 | </td> | 66 | <span class="action_item"> |
| 61 | <td class="actions"> | 67 | <%= link_to event_path(event), "aria-label" => t("admin.common.show"), |
| 62 | <div class="action_grid"> | 68 | title: t("admin.common.show") do %> |
| 63 | <span class="action_item"> | 69 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> |
| 64 | <%= link_to event_path(event), "aria-label" => t("admin.common.show"), | 70 | <% end %> |
| 65 | title: t("admin.common.show") do %> | 71 | </span> |
| 66 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> | 72 | <span class="action_item"> |
| 67 | <% end %> | 73 | <%= link_to edit_event_path(event), "aria-label" => t("admin.common.edit"), |
| 68 | </span> | 74 | title: t("admin.common.edit") do %> |
| 69 | <span class="action_item"> | 75 | <%= icon("edit", library: "tabler", "aria-hidden": true) %> |
| 70 | <%= link_to edit_event_path(event), "aria-label" => t("admin.common.edit"), | 76 | <% end %> |
| 71 | title: t("admin.common.edit") do %> | 77 | </span> |
| 72 | <%= icon("edit", library: "tabler", "aria-hidden": true) %> | 78 | </div> |
| 73 | <% end %> | 79 | </td> |
| 74 | </span> | 80 | </tr> |
| 75 | </div> | 81 | <% end %> |
| 76 | </td> | 82 | </tbody> |
| 77 | </tr> | ||
| 78 | <% end %> | ||
| 79 | </table> | 83 | </table> |
diff --git a/app/views/nodes/_node_list.html.erb b/app/views/nodes/_node_list.html.erb index 55f396b7..1a0c4797 100644 --- a/app/views/nodes/_node_list.html.erb +++ b/app/views/nodes/_node_list.html.erb | |||
| @@ -4,43 +4,45 @@ | |||
| 4 | (params[:tags].present? ? [["tags", params[:tags]]] : []) %> | 4 | (params[:tags].present? ? [["tags", params[:tags]]] : []) %> |
| 5 | 5 | ||
| 6 | <%= will_paginate @nodes %> | 6 | <%= will_paginate @nodes %> |
| 7 | <table class="node_table"> | 7 | <table class="admin_table node_table"> |
| 8 | <% @nodes.each do |node| %> | 8 | <tbody> |
| 9 | <tr class="<%= cycle("even", "odd") %>"> | 9 | <% @nodes.each do |node| %> |
| 10 | <td class="title"> | 10 | <tr class="<%= cycle("even", "odd") %>"> |
| 11 | <div class="title_with_flags"> | 11 | <td class="title"> |
| 12 | <span class="flag_stack"> | 12 | <div class="title_with_flags"> |
| 13 | <%= flag("lock", t(".flag_locked", :login => node.lock_owner.login), | 13 | <span class="flag_stack"> |
| 14 | :tier => :attention) if node.lock_owner %> | 14 | <%= flag("lock", t(".flag_locked", :login => node.lock_owner.login), |
| 15 | <%= flag("calendar-clock", | 15 | :tier => :attention) if node.lock_owner %> |
| 16 | t(".flag_embargo", :date => admin_datetime(node.head.published_at)), | 16 | <%= flag("calendar-clock", |
| 17 | :tier => :attention) if node.embargoed? %> | 17 | t(".flag_embargo", :date => admin_datetime(node.head.published_at)), |
| 18 | <%= flag("file-pencil", t(".flag_draft")) if node.draft %> | 18 | :tier => :attention) if node.embargoed? %> |
| 19 | <%= flag("world-off", t(".flag_no_head")) unless node.head %> | 19 | <%= flag("file-pencil", t(".flag_draft")) if node.draft %> |
| 20 | </span> | 20 | <%= flag("world-off", t(".flag_no_head")) unless node.head %> |
| 21 | <div class="title_body"> | 21 | </span> |
| 22 | <div class="node_title"><%= link_to title_for_node(node), node_path(node) %></div> | 22 | <div class="title_body"> |
| 23 | <div class="node_path"><%= link_to_path(node.unique_name, node.unique_name) %></div> | 23 | <div class="row_primary node_title"><%= link_to title_for_node(node), node_path(node) %></div> |
| 24 | <div class="row_secondary node_path"><%= link_to_path(node.unique_name, node.unique_name) %></div> | ||
| 25 | </div> | ||
| 24 | </div> | 26 | </div> |
| 25 | </div> | 27 | </td> |
| 26 | </td> | 28 | <td class="actions"> |
| 27 | <td class="actions"> | 29 | <div class="action_grid"> |
| 28 | <div class="action_grid"> | 30 | <span class="action_item"> |
| 29 | <span class="action_item"> | 31 | <%= link_to node_path(node), "aria-label" => t("admin.common.show"), |
| 30 | <%= link_to node_path(node), "aria-label" => t("admin.common.show"), | 32 | title: t("admin.common.show") do %> |
| 31 | title: t("admin.common.show") do %> | 33 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> |
| 32 | <%= icon("eye", library: "tabler", "aria-hidden": true) %> | 34 | <% end %> |
| 33 | <% end %> | 35 | </span> |
| 34 | </span> | 36 | <span class="action_item"> |
| 35 | <span class="action_item"> | 37 | <%= link_to node_revisions_path(node), "aria-label" => t("admin.common.revisions"), |
| 36 | <%= link_to node_revisions_path(node), "aria-label" => t("admin.common.revisions"), | 38 | title: t("admin.common.revisions") do %> |
| 37 | title: t("admin.common.revisions") do %> | 39 | <%= icon("history", library: "tabler", "aria-hidden": true) %> |
| 38 | <%= icon("history", library: "tabler", "aria-hidden": true) %> | 40 | <% end %> |
| 39 | <% end %> | 41 | </span> |
| 40 | </span> | 42 | </div> |
| 41 | </div> | 43 | </td> |
| 42 | </td> | 44 | </tr> |
| 43 | </tr> | 45 | <% end %> |
| 44 | <% end %> | 46 | </tbody> |
| 45 | </table> | 47 | </table> |
| 46 | <%= will_paginate @nodes %> | 48 | <%= will_paginate @nodes %> |
diff --git a/app/views/nodes/sitemap.html.erb b/app/views/nodes/sitemap.html.erb index 3b9328da..95ed544f 100644 --- a/app/views/nodes/sitemap.html.erb +++ b/app/views/nodes/sitemap.html.erb | |||
| @@ -26,8 +26,8 @@ | |||
| 26 | <%= flag("file-text-shield", t(".flag_restricted"), :tier => :attention) if node.restricted? %> | 26 | <%= flag("file-text-shield", t(".flag_restricted"), :tier => :attention) if node.restricted? %> |
| 27 | </span> | 27 | </span> |
| 28 | <div class="title_body"> | 28 | <div class="title_body"> |
| 29 | <div class="node_title"><%= link_to title_for_node(node), node_path(node) %></div> | 29 | <div class="row_primary node_title"><%= link_to title_for_node(node), node_path(node) %></div> |
| 30 | <div class="node_path"> | 30 | <div class="row_secondary node_path"> |
| 31 | <%= world_icon %> | 31 | <%= world_icon %> |
| 32 | <%= link_to_path(node.unique_name, node.unique_name) %> | 32 | <%= link_to_path(node.unique_name, node.unique_name) %> |
| 33 | </div> | 33 | </div> |
diff --git a/app/views/revisions/index.html.erb b/app/views/revisions/index.html.erb index 3fb33b90..09eac565 100644 --- a/app/views/revisions/index.html.erb +++ b/app/views/revisions/index.html.erb | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | </p> | 18 | </p> |
| 19 | <% end %> | 19 | <% end %> |
| 20 | 20 | ||
| 21 | <table id="revisions" class="revisions_table"> | 21 | <table id="revisions" class="admin_table revisions_table"> |
| 22 | <thead> | 22 | <thead> |
| 23 | <tr class="header"> | 23 | <tr class="header"> |
| 24 | <th><%= t(".first") %></th> | 24 | <th><%= t(".first") %></th> |
| @@ -30,7 +30,7 @@ | |||
| 30 | <th></th> | 30 | <th></th> |
| 31 | <th></th> | 31 | <th></th> |
| 32 | </tr> | 32 | </tr> |
| 33 | <tr class="no_hover diff_sticky_bar"> | 33 | <tr class="diff_sticky_bar"> |
| 34 | <td colspan="8"> | 34 | <td colspan="8"> |
| 35 | <%= button_to t(".diff_revisions"), diff_node_revisions_path(@node), | 35 | <%= button_to t(".diff_revisions"), diff_node_revisions_path(@node), |
| 36 | method: :post, | 36 | method: :post, |
| @@ -64,7 +64,7 @@ | |||
| 64 | </tbody> | 64 | </tbody> |
| 65 | </table> | 65 | </table> |
| 66 | 66 | ||
| 67 | <script> | 67 | <%= javascript_tag nonce: true do %> |
| 68 | function update_diff_button_state() { | 68 | function update_diff_button_state() { |
| 69 | var start = document.querySelector('input[name="start_revision"]:checked'); | 69 | var start = document.querySelector('input[name="start_revision"]:checked'); |
| 70 | var end = document.querySelector('input[name="end_revision"]:checked'); | 70 | var end = document.querySelector('input[name="end_revision"]:checked'); |
| @@ -106,4 +106,4 @@ | |||
| 106 | this.appendChild(v); | 106 | this.appendChild(v); |
| 107 | } | 107 | } |
| 108 | }); | 108 | }); |
| 109 | </script> | 109 | <% end %> |
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 71102c2c..e6c1fbda 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb | |||
| @@ -13,15 +13,17 @@ | |||
| 13 | <span class="dashboard_widget_meta"><%= members.size %></span> | 13 | <span class="dashboard_widget_meta"><%= members.size %></span> |
| 14 | </h2> | 14 | </h2> |
| 15 | <% if members.any? %> | 15 | <% if members.any? %> |
| 16 | <table class="user_table <%= "user_table_alumni" if group == :alumni %>"> | 16 | <table class="admin_table user_table <%= "user_table_alumni" if group == :alumni %>"> |
| 17 | <tr class="header"> | 17 | <thead> |
| 18 | <th><%= t("users.labels.login") %></th> | 18 | <tr class="header"> |
| 19 | <th><%= t("users.labels.roles") %></th> | 19 | <th><%= t("users.labels.login") %></th> |
| 20 | <th></th> | 20 | <th><%= t("users.labels.roles") %></th> |
| 21 | <th></th> | 21 | <th></th> |
| 22 | <th></th> | 22 | </tr> |
| 23 | </tr> | 23 | </thead> |
| 24 | <%= render :partial => "user", :locals => { :users => members } %> | 24 | <tbody> |
| 25 | <%= render :partial => "user", :locals => { :users => members } %> | ||
| 26 | </tbody> | ||
| 25 | </table> | 27 | </table> |
| 26 | <% else %> | 28 | <% else %> |
| 27 | <p class="field_hint"><%= t(".group_empty") %></p> | 29 | <p class="field_hint"><%= t(".group_empty") %></p> |
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index 99067f5d..85e89e13 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css | |||
| @@ -626,120 +626,99 @@ form.button_to svg { | |||
| 626 | Tables | 626 | Tables |
| 627 | ============================================================ */ | 627 | ============================================================ */ |
| 628 | 628 | ||
| 629 | table tr.header { | 629 | .admin_table { |
| 630 | height: 20px; | ||
| 631 | text-align: left; | ||
| 632 | } | ||
| 633 | |||
| 634 | table.node_table, | ||
| 635 | table.assets_table, | ||
| 636 | table.user_table, | ||
| 637 | table.events_table { | ||
| 638 | border-collapse: collapse; | 630 | border-collapse: collapse; |
| 639 | } | 631 | } |
| 640 | 632 | ||
| 641 | table.node_table tr, | 633 | .admin_table thead { |
| 642 | table.assets_table tr, | 634 | text-align: left; |
| 643 | table.user_table tr, | ||
| 644 | table.events_table tr { | ||
| 645 | border-bottom: 1px solid var(--hairline); | ||
| 646 | } | 635 | } |
| 647 | 636 | ||
| 648 | table.node_table th.revision { | 637 | .admin_table thead tr { |
| 649 | min-width: 4rem; | 638 | height: 2rem; |
| 650 | } | 639 | } |
| 651 | 640 | ||
| 652 | table.node_table th.editor, | 641 | .admin_table th, |
| 653 | table.node_table th.title { | 642 | .admin_table td { |
| 654 | min-width: 12rem; | 643 | padding: 0.75rem; |
| 644 | min-width: 2rem; | ||
| 655 | } | 645 | } |
| 656 | 646 | ||
| 657 | table.node_table tr.header, | 647 | .admin_table th:first-child, |
| 658 | table.assets_table tr.header, | 648 | .admin_table td:first-child { |
| 659 | table.user_table tr.header, | 649 | padding-left: 0; |
| 660 | table.events_table tr.header { | ||
| 661 | height: 2rem; | ||
| 662 | text-align: left; | ||
| 663 | } | 650 | } |
| 664 | 651 | ||
| 665 | table.node_table td, | 652 | .admin_table tbody tr { |
| 666 | table.assets_table td, | 653 | border-bottom: 1px solid var(--hairline); |
| 667 | table.user_table td, | ||
| 668 | table.events_table td { | ||
| 669 | padding-top: 12px; | ||
| 670 | padding-bottom: 12px; | ||
| 671 | padding-right: 25px; | ||
| 672 | padding-left: 0px; | ||
| 673 | min-width: 2rem; | ||
| 674 | } | 654 | } |
| 675 | 655 | ||
| 676 | table.node_table tr.header:hover, | 656 | .admin_table tbody tr:hover { |
| 677 | table.assets_table tr.header:hover, | 657 | background-color: var(--surface-tint); |
| 678 | table.user_table tr.header:hover, | ||
| 679 | table.events_table tr.header:hover { | ||
| 680 | background-color: var(--surface); | ||
| 681 | } | 658 | } |
| 682 | 659 | ||
| 683 | table.node_table tr:hover, | 660 | .node_table th.revision { |
| 684 | table.assets_table tr:hover, | 661 | min-width: 4rem; |
| 685 | table.user_table tr:hover, | ||
| 686 | table.events_table tr:hover { | ||
| 687 | background-color: var(--surface-tint); | ||
| 688 | } | 662 | } |
| 689 | 663 | ||
| 690 | table.revisions_table { | 664 | .node_table th.editor, |
| 691 | border-collapse: collapse; | 665 | .node_table th.title { |
| 666 | min-width: 12rem; | ||
| 692 | } | 667 | } |
| 693 | 668 | ||
| 694 | table.revisions_table thead { | 669 | .revisions_table thead { |
| 695 | position: sticky; | 670 | position: sticky; |
| 696 | top: 0; | 671 | top: 0; |
| 697 | z-index: 1; | 672 | z-index: 1; |
| 673 | background-color: var(--surface); | ||
| 698 | } | 674 | } |
| 699 | 675 | ||
| 700 | table.revisions_table th, | 676 | .revisions_table th, |
| 701 | table.revisions_table td { | 677 | .revisions_table td { |
| 702 | padding: 0.4rem 0.75rem; | 678 | padding: 0.4rem 0.75rem; |
| 703 | text-align: left; | ||
| 704 | } | 679 | } |
| 705 | 680 | ||
| 706 | table.revisions_table thead tr.header, | 681 | .revisions_table .diff_sticky_bar td { |
| 707 | table.revisions_table thead tr.diff_sticky_bar { | 682 | border-bottom: 1px solid var(--hairline); |
| 708 | background-color: var(--surface); | ||
| 709 | } | 683 | } |
| 710 | 684 | ||
| 711 | table.revisions_table .diff_sticky_bar td { | 685 | .row_primary { |
| 712 | padding-top: 0.5rem; | 686 | font-weight: bold; |
| 713 | padding-bottom: 0.5rem; | ||
| 714 | border-bottom: 1px solid var(--hairline); | ||
| 715 | } | 687 | } |
| 716 | 688 | ||
| 717 | #diff_selection_label { | 689 | .row_secondary { |
| 718 | margin-left: 0.75rem; | 690 | display: flex; |
| 691 | align-items: center; | ||
| 692 | gap: 0.3rem; | ||
| 693 | margin-top: 0.25rem; | ||
| 694 | font-size: 0.875rem; | ||
| 719 | color: var(--text-muted); | 695 | color: var(--text-muted); |
| 720 | } | 696 | } |
| 721 | table.revisions_table td.title { | ||
| 722 | width: 450px; | ||
| 723 | } | ||
| 724 | 697 | ||
| 725 | table.revisions_table td.date { | 698 | .row_secondary a { |
| 726 | width: 175px; | 699 | color: inherit; |
| 700 | overflow-wrap: anywhere; | ||
| 727 | } | 701 | } |
| 728 | 702 | ||
| 729 | table.revisions_table tr:not(.header):not(.no_hover) { | 703 | .row_secondary svg { |
| 730 | border-bottom: 1px solid var(--hairline); | 704 | width: 0.875rem; |
| 705 | height: 0.875rem; | ||
| 706 | flex-shrink: 0; | ||
| 731 | } | 707 | } |
| 732 | 708 | ||
| 733 | table.revisions_table tr.header:hover { | 709 | #diff_selection_label { |
| 734 | background-color: var(--surface); | 710 | margin-left: 0.75rem; |
| 711 | color: var(--text-muted); | ||
| 735 | } | 712 | } |
| 736 | 713 | ||
| 737 | table.revisions_table tr.no_hover:hover { | 714 | @media (min-width: 1016px) { |
| 738 | background-color: var(--surface); | 715 | .revisions_table td.title { |
| 739 | } | 716 | min-width: 28rem; |
| 717 | } | ||
| 740 | 718 | ||
| 741 | table.revisions_table tr:hover { | 719 | .revisions_table td.date { |
| 742 | background-color: var(--surface-tint); | 720 | min-width: 11rem; |
| 721 | } | ||
| 743 | } | 722 | } |
| 744 | 723 | ||
| 745 | #diffview del { | 724 | #diffview del { |
| @@ -795,12 +774,9 @@ table.revisions_table tr:hover { | |||
| 795 | margin-bottom: 1.5rem; | 774 | margin-bottom: 1.5rem; |
| 796 | } | 775 | } |
| 797 | 776 | ||
| 798 | .user_table td.actions, | 777 | .admin-table td.actions { |
| 799 | .node_table td.actions, | ||
| 800 | .assets_table td.actions { | ||
| 801 | width: 1px; | 778 | width: 1px; |
| 802 | white-space: nowrap; | 779 | white-space: nowrap; |
| 803 | padding-right: 0; | ||
| 804 | } | 780 | } |
| 805 | 781 | ||
| 806 | .events_table td.title, | 782 | .events_table td.title, |
| @@ -808,33 +784,6 @@ table.revisions_table tr:hover { | |||
| 808 | padding-right: 0.75rem; | 784 | padding-right: 0.75rem; |
| 809 | } | 785 | } |
| 810 | 786 | ||
| 811 | .assets_table .asset_name, | ||
| 812 | .events_table .event_title { | ||
| 813 | font-weight: bold; | ||
| 814 | } | ||
| 815 | |||
| 816 | .assets_table .asset_meta, | ||
| 817 | .events_table .event_meta { | ||
| 818 | display: flex; | ||
| 819 | align-items: center; | ||
| 820 | gap: 0.3rem; | ||
| 821 | margin-top: 0.35rem; | ||
| 822 | font-size: 0.875rem; | ||
| 823 | } | ||
| 824 | |||
| 825 | .assets_table .asset_meta svg, | ||
| 826 | .events_table .event_meta svg { | ||
| 827 | width: 0.875rem; | ||
| 828 | height: 0.875rem; | ||
| 829 | flex-shrink: 0; | ||
| 830 | } | ||
| 831 | |||
| 832 | .assets_table .asset_meta a, | ||
| 833 | .events_table .event_meta a { | ||
| 834 | overflow-wrap: anywhere; | ||
| 835 | color: var(--text-muted); | ||
| 836 | } | ||
| 837 | |||
| 838 | .events_table .event_when { | 787 | .events_table .event_when { |
| 839 | overflow-wrap: normal; | 788 | overflow-wrap: normal; |
| 840 | min-width: 7rem; | 789 | min-width: 7rem; |
| @@ -845,12 +794,6 @@ table.revisions_table tr:hover { | |||
| 845 | overflow-wrap: anywhere; | 794 | overflow-wrap: anywhere; |
| 846 | } | 795 | } |
| 847 | 796 | ||
| 848 | .events_table td.actions { | ||
| 849 | width: 1px; | ||
| 850 | white-space: nowrap; | ||
| 851 | padding-right: 0; | ||
| 852 | } | ||
| 853 | |||
| 854 | .assets_table .asset_thumb img { | 797 | .assets_table .asset_thumb img { |
| 855 | display: block; | 798 | display: block; |
| 856 | max-width: 120px; | 799 | max-width: 120px; |
| @@ -869,8 +812,8 @@ table.revisions_table tr:hover { | |||
| 869 | display: block; | 812 | display: block; |
| 870 | } | 813 | } |
| 871 | 814 | ||
| 872 | .events_table tr.header, | 815 | .events_table thead, |
| 873 | .assets_table tr.header { | 816 | .assets_table thead { |
| 874 | display: none; | 817 | display: none; |
| 875 | } | 818 | } |
| 876 | 819 | ||
| @@ -1011,20 +954,6 @@ table.revisions_table tr:hover { | |||
| 1011 | min-width: 0; | 954 | min-width: 0; |
| 1012 | } | 955 | } |
| 1013 | 956 | ||
| 1014 | .node_table .node_title { | ||
| 1015 | font-weight: bold; | ||
| 1016 | } | ||
| 1017 | |||
| 1018 | .node_table .node_path { | ||
| 1019 | margin-top: 0.25rem; | ||
| 1020 | font-size: 0.875rem; | ||
| 1021 | } | ||
| 1022 | |||
| 1023 | .node_table .node_path a { | ||
| 1024 | color: var(--text-muted); | ||
| 1025 | } | ||
| 1026 | |||
| 1027 | |||
| 1028 | .user_group_heading { | 957 | .user_group_heading { |
| 1029 | margin-top: 1.5rem; | 958 | margin-top: 1.5rem; |
| 1030 | } | 959 | } |
| @@ -1430,10 +1359,6 @@ div.layout_row_content { | |||
| 1430 | max-width: 60rem; | 1359 | max-width: 60rem; |
| 1431 | } | 1360 | } |
| 1432 | 1361 | ||
| 1433 | #sitemap .node_title a { | ||
| 1434 | font-weight: bold; | ||
| 1435 | } | ||
| 1436 | |||
| 1437 | #sitemap .title_with_flags { | 1362 | #sitemap .title_with_flags { |
| 1438 | align-items: start; | 1363 | align-items: start; |
| 1439 | } | 1364 | } |
| @@ -1442,26 +1367,6 @@ div.layout_row_content { | |||
| 1442 | flex: 1; | 1367 | flex: 1; |
| 1443 | } | 1368 | } |
| 1444 | 1369 | ||
| 1445 | #sitemap .node_path { | ||
| 1446 | display: flex; | ||
| 1447 | align-items: center; | ||
| 1448 | gap: 0.3rem; | ||
| 1449 | margin-top: 0.25rem; | ||
| 1450 | font-size: 0.875rem; | ||
| 1451 | color: var(--text-muted); | ||
| 1452 | } | ||
| 1453 | |||
| 1454 | #sitemap .node_path svg { | ||
| 1455 | width: 0.875rem; | ||
| 1456 | height: 0.875rem; | ||
| 1457 | flex-shrink: 0; | ||
| 1458 | } | ||
| 1459 | |||
| 1460 | #sitemap .node_path a { | ||
| 1461 | color: var(--text-muted); | ||
| 1462 | overflow-wrap: anywhere; | ||
| 1463 | } | ||
| 1464 | |||
| 1465 | #sitemap .action_grid { | 1370 | #sitemap .action_grid { |
| 1466 | grid-template-columns: repeat(2, auto); | 1371 | grid-template-columns: repeat(2, auto); |
| 1467 | } | 1372 | } |
