feat(studio): rich theme picker (presets + custom colour) + editor 0.11.0
Some checks failed
Security / Security check (push) Failing after 1s
Some checks failed
Security / Security check (push) Failing after 1s
Settings dialog's Theme Plugin section is now a grid of swatched tiles: - Built-in (none) — falls back to FaiTheme.light/.dark - One tile per installed studio.theme.* plugin, each showing the plugin's primary/secondary/tertiary as live colour dots. Tile loads its preview lazily so a dozen installed themes don't block the picker. - Custom — opens a colour-picker dialog with 12 curated Material presets + a hex input + live preview. Selecting applies ColorScheme.fromSeed for both brightnesses. main.dart's _pluginThemes parses a 'custom:#RRGGBB' sigil in the same notifier slot as plugin capability ids, so the existing persistence + restoration paths cover the custom case with no new state. Bumps editor to 0.11.0 (type-checked port connections + dynamic card width fix + card-height border allowance) and Studio to 0.58.0. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
69864da934
commit
c1c60d5434
30 changed files with 1280 additions and 846 deletions
|
|
@ -108,6 +108,12 @@
|
|||
"themePluginNone": "Standard (kein Plugin)",
|
||||
"themePluginHint": "Installiertes studio.theme.*-Plugin auswählen, um das ganze Studio umzustylen. Erst eines aus dem Store installieren.",
|
||||
"themePluginEmpty": "Kein Theme-Plugin installiert. Im Store eines aus der Kategorie studio-plugin auswählen.",
|
||||
"themePluginCustom": "Eigene Farbe",
|
||||
"themePluginCustomDialogTitle": "Eigenes Theme — Seedfarbe wählen",
|
||||
"themePluginCustomHexLabel": "Hex-Farbe",
|
||||
"themePluginCustomPreview": "Live-Vorschau",
|
||||
"themePluginCustomCancel": "Abbrechen",
|
||||
"themePluginCustomApply": "Anwenden",
|
||||
"settingsTitle": "Hub-Endpunkt",
|
||||
"settingsHost": "Host",
|
||||
"settingsPort": "Port",
|
||||
|
|
|
|||
|
|
@ -111,6 +111,12 @@
|
|||
"themePluginNone": "Built-in (no plugin)",
|
||||
"themePluginHint": "Pick an installed studio.theme.* plugin to re-skin the whole app. Install one from the Store first.",
|
||||
"themePluginEmpty": "No theme plugins installed. Open the Store and pick one in the studio-plugin category.",
|
||||
"themePluginCustom": "Custom colour",
|
||||
"themePluginCustomDialogTitle": "Custom theme — pick a seed colour",
|
||||
"themePluginCustomHexLabel": "Hex colour",
|
||||
"themePluginCustomPreview": "Live preview",
|
||||
"themePluginCustomCancel": "Cancel",
|
||||
"themePluginCustomApply": "Apply",
|
||||
"settingsTitle": "Hub endpoint",
|
||||
"settingsHost": "Host",
|
||||
"settingsPort": "Port",
|
||||
|
|
|
|||
|
|
@ -662,6 +662,42 @@ abstract class AppLocalizations {
|
|||
/// **'No theme plugins installed. Open the Store and pick one in the studio-plugin category.'**
|
||||
String get themePluginEmpty;
|
||||
|
||||
/// No description provided for @themePluginCustom.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Custom colour'**
|
||||
String get themePluginCustom;
|
||||
|
||||
/// No description provided for @themePluginCustomDialogTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Custom theme — pick a seed colour'**
|
||||
String get themePluginCustomDialogTitle;
|
||||
|
||||
/// No description provided for @themePluginCustomHexLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hex colour'**
|
||||
String get themePluginCustomHexLabel;
|
||||
|
||||
/// No description provided for @themePluginCustomPreview.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Live preview'**
|
||||
String get themePluginCustomPreview;
|
||||
|
||||
/// No description provided for @themePluginCustomCancel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cancel'**
|
||||
String get themePluginCustomCancel;
|
||||
|
||||
/// No description provided for @themePluginCustomApply.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Apply'**
|
||||
String get themePluginCustomApply;
|
||||
|
||||
/// No description provided for @settingsTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -326,6 +326,24 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
String get themePluginEmpty =>
|
||||
'Kein Theme-Plugin installiert. Im Store eines aus der Kategorie studio-plugin auswählen.';
|
||||
|
||||
@override
|
||||
String get themePluginCustom => 'Eigene Farbe';
|
||||
|
||||
@override
|
||||
String get themePluginCustomDialogTitle => 'Eigenes Theme — Seedfarbe wählen';
|
||||
|
||||
@override
|
||||
String get themePluginCustomHexLabel => 'Hex-Farbe';
|
||||
|
||||
@override
|
||||
String get themePluginCustomPreview => 'Live-Vorschau';
|
||||
|
||||
@override
|
||||
String get themePluginCustomCancel => 'Abbrechen';
|
||||
|
||||
@override
|
||||
String get themePluginCustomApply => 'Anwenden';
|
||||
|
||||
@override
|
||||
String get settingsTitle => 'Hub-Endpunkt';
|
||||
|
||||
|
|
|
|||
|
|
@ -326,6 +326,25 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String get themePluginEmpty =>
|
||||
'No theme plugins installed. Open the Store and pick one in the studio-plugin category.';
|
||||
|
||||
@override
|
||||
String get themePluginCustom => 'Custom colour';
|
||||
|
||||
@override
|
||||
String get themePluginCustomDialogTitle =>
|
||||
'Custom theme — pick a seed colour';
|
||||
|
||||
@override
|
||||
String get themePluginCustomHexLabel => 'Hex colour';
|
||||
|
||||
@override
|
||||
String get themePluginCustomPreview => 'Live preview';
|
||||
|
||||
@override
|
||||
String get themePluginCustomCancel => 'Cancel';
|
||||
|
||||
@override
|
||||
String get themePluginCustomApply => 'Apply';
|
||||
|
||||
@override
|
||||
String get settingsTitle => 'Hub endpoint';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue