Files
ELY-Browser/crates/ely_app/src/shell/chrome/plugin_labels.rs
T
ZacharyZhang-NY b0b4ac3791 Redesign plugin detail page in design's 320 + 1fr grid
Plugin detail now opens with the design's marketplace card: a
4/3 brand-gradient cover plus install/secondary buttons plus a
permissions list with risk badges on the left, and a category
overline plus serif Newsreader title plus description plus a
4-up real-data stat grid (permissions, high-risk, contributes,
signature) plus a "What it adds to ELY" contributions list on
the right. Every value comes from PluginManifest — no fabricated
ratings, install counts, or feature copy.

Internal: chrome::plugin_detail_view holds the layout, and
chrome::plugin_labels owns the permission scope labels and
contribution copy so plugin_detail_view stays under 500 lines.
The internal_pages/plugin_details.rs shim only handles route
parsing and the missing-plugin fallback.
2026-05-09 19:01:39 -04:00

58 lines
3.4 KiB
Rust

use ely_domain::{PluginContributionPoint, PluginPermission};
pub(crate) fn permission_scope_label(permission: &PluginPermission) -> &'static str {
match permission {
PluginPermission::TabsRead => "Reads tab metadata.",
PluginPermission::TabsWrite => "Creates, moves, or closes tabs.",
PluginPermission::SpacesRead => "Reads Space metadata.",
PluginPermission::SpacesWrite => "Creates or changes Spaces.",
PluginPermission::BookmarksRead => "Reads bookmarks.",
PluginPermission::BookmarksWrite => "Writes bookmarks.",
PluginPermission::HistoryRead => "Reads browsing history.",
PluginPermission::DownloadsRead => "Reads download entries.",
PluginPermission::DownloadsWrite => "Controls downloads.",
PluginPermission::PageMetadata => "Reads active page metadata.",
PluginPermission::PageScreenshot => "Captures page screenshots.",
PluginPermission::PageScript => "Runs scoped page scripts.",
PluginPermission::ClipboardRead => "Reads clipboard content.",
PluginPermission::ClipboardWrite => "Writes clipboard content.",
PluginPermission::FilesystemRead => "Reads user-selected files.",
PluginPermission::FilesystemWrite => "Writes user-selected files.",
PluginPermission::NetworkFetch => "Performs plugin network requests.",
PluginPermission::SettingsRead => "Reads plugin settings.",
PluginPermission::SettingsWrite => "Writes plugin settings.",
PluginPermission::SyncPlugin => "Syncs plugin configuration.",
PluginPermission::UiPanel => "Registers sidebar panels.",
PluginPermission::UiCommand => "Registers command bar actions.",
PluginPermission::UiContextMenu => "Registers context menu actions.",
}
}
pub(crate) fn contribution_title(contribution: &PluginContributionPoint) -> &'static str {
match contribution {
PluginContributionPoint::CommandBarCommand => "Command bar action",
PluginContributionPoint::TabContextMenu => "Tab context menu",
PluginContributionPoint::PageContextMenu => "Page context menu",
PluginContributionPoint::SidebarPanel => "Sidebar panel",
PluginContributionPoint::SettingsPage => "Settings page",
PluginContributionPoint::StatusBarIndicator => "Status bar indicator",
PluginContributionPoint::DownloadAction => "Download action",
PluginContributionPoint::BookmarkAction => "Bookmark action",
PluginContributionPoint::ReadingModeExporter => "Reading mode exporter",
}
}
pub(crate) fn contribution_detail(contribution: &PluginContributionPoint) -> &'static str {
match contribution {
PluginContributionPoint::CommandBarCommand => "Adds entries to the ⌘K command switcher.",
PluginContributionPoint::TabContextMenu => "Adds tab right-click actions.",
PluginContributionPoint::PageContextMenu => "Adds page right-click actions.",
PluginContributionPoint::SidebarPanel => "Registers a custom sidebar panel.",
PluginContributionPoint::SettingsPage => "Registers a settings page route.",
PluginContributionPoint::StatusBarIndicator => "Renders an indicator in the status bar.",
PluginContributionPoint::DownloadAction => "Adds actions to download entries.",
PluginContributionPoint::BookmarkAction => "Adds actions to bookmarks.",
PluginContributionPoint::ReadingModeExporter => "Exports reading mode content elsewhere.",
}
}