Themes

NAME

App::Moneymoor::Themes - the registry: every built-in palette, and the by-name loader the config file and the Settings dialog go through.

SYNOPSIS


use App::Moneymoor::Themes;

App::Moneymoor::Themes::all-names();     # the eleven, alphabetical
my $theme = App::Moneymoor::Themes::load('rose-pine');

# Spelling is forgiving, and an unknown name is not an error:
load('RosePine').name;      # 'rose-pine'
load('rose_pine').name;     # 'rose-pine'
load('chartreuse').name;    # 'gruvbox' — the default

DESCRIPTION

Eleven palettes, one loader. Separate from App::Moneymoor::Theme (the data class) because the palette modules construct Theme instances, and a registry living in the same file would close the use cycle.

load never throws and never returns a type object. The name it is given comes from a hand-editable config.json, and a palette is not worth refusing to start the app over: an unrecognised name — or one with the wrong separator, or the wrong case — resolves to Gruvbox. Aliases exist for the spellings the schemes themselves use (tokyonight, onedark, rosepine, solarized-dark, catppuccin-mocha).

Why need, not use

Every palette module exports its own theme sub, so importing two of them into one scope is a symbol collision — and this module wants all eleven. need loads a module without importing anything from it, which is what lets load call each one by its fully-qualified name.

EXPORTS

  • all-names(-- List)> — the eleven canonical names, sorted, in the order the Settings picker shows them.

  • load(Str:D $name -- App::Moneymoor::Theme)> — a palette, or Gruvbox.

SEE ALSO

App::Moneymoor v0.4.2

YNAB-style envelope budgeting: a derivation engine

Authors

  • Matt Doughty

License

Artistic-2.0

Dependencies

DBIish:ver<0.6.7>:auth<zef:raku-community-modules>Notcurses::Native:ver<0.6.5+>:auth<zef:apogee>Selkie:ver<0.16.0+>:auth<zef:apogee>JSON::Fast:ver<0.19>:auth<cpan:TIMOTIMO>MacOS::NativeLib:ver<0.0.6>:auth<zef:lizmat>

Test Dependencies

Provides

  • App::Moneymoor
  • App::Moneymoor::Config
  • App::Moneymoor::DB
  • App::Moneymoor::Gateway::Account
  • App::Moneymoor::Gateway::Assignment
  • App::Moneymoor::Gateway::Category
  • App::Moneymoor::Gateway::Payee
  • App::Moneymoor::Gateway::Transaction
  • App::Moneymoor::Handlers::Boot
  • App::Moneymoor::Model::Account
  • App::Moneymoor::Model::Assignment
  • App::Moneymoor::Model::Category
  • App::Moneymoor::Model::CategoryGroup
  • App::Moneymoor::Model::Payee
  • App::Moneymoor::Model::Split
  • App::Moneymoor::Model::Transaction
  • App::Moneymoor::Screen::Accounts
  • App::Moneymoor::Screen::Budget
  • App::Moneymoor::Screen::Login
  • App::Moneymoor::Screen::Main
  • App::Moneymoor::Screen::Main::Keybinds
  • App::Moneymoor::Screen::Main::Modals
  • App::Moneymoor::Screen::Main::Subscriptions
  • App::Moneymoor::Screen::Reports
  • App::Moneymoor::Service::Budget
  • App::Moneymoor::Service::Icons
  • App::Moneymoor::Service::Target
  • App::Moneymoor::Service::Workspace
  • App::Moneymoor::StoreHandlers
  • App::Moneymoor::Theme
  • App::Moneymoor::Theme::Catppuccin
  • App::Moneymoor::Theme::Dracula
  • App::Moneymoor::Theme::Everforest
  • App::Moneymoor::Theme::Gruvbox
  • App::Moneymoor::Theme::Kanagawa
  • App::Moneymoor::Theme::Monokai
  • App::Moneymoor::Theme::Nord
  • App::Moneymoor::Theme::OneDark
  • App::Moneymoor::Theme::RosePine
  • App::Moneymoor::Theme::Solarized
  • App::Moneymoor::Theme::TokyoNight
  • App::Moneymoor::Themes
  • App::Moneymoor::UI
  • App::Moneymoor::Util::Money
  • App::Moneymoor::Util::Period
  • App::Moneymoor::View::BudgetRow
  • App::Moneymoor::View::EmptyState
  • App::Moneymoor::View::HintBar
  • App::Moneymoor::View::InspectorPane
  • App::Moneymoor::View::ModalChrome
  • App::Moneymoor::View::RegisterRow
  • App::Moneymoor::View::ReportRow
  • App::Moneymoor::Widget::BannerBar
  • App::Moneymoor::Widget::BootProgressModal

The Camelia image is copyright 2009 by Larry Wall. "Raku" is a trademark of the Yet Another Society. All rights reserved.

Built with Podlite — the markup and publishing tools behind this site.