Module: Plushie::Type::StyleMap
- Defined in:
- lib/plushie/type/style_map.rb
Overview
Per-instance widget style overrides.
A StyleMap lets you start from a named preset (e.g. +:primary+, +:secondary+) and selectively override visual properties like background colour, text colour, border, and shadow. It also supports per-interaction-state overrides so you can customise how a widget looks when hovered, pressed, disabled, or focused.
On the wire it serialises to a plain map. Symbols become preset name strings; Spec structs emit only non-nil fields.
== Spec fields
- +base+ [Symbol, nil] -- named preset to inherit from.
- +background+ [String, nil] -- CSS-style colour string.
- +text_color+ [String, nil] -- text foreground colour.
- +border+ [Border, Hash, nil] -- border specification.
- +shadow+ [Shadow, Hash, nil] -- shadow specification.
- +hovered+ [Hash, nil] -- overrides applied on hover.
- +pressed+ [Hash, nil] -- overrides applied while pressed.
- +disabled+ [Hash, nil] -- overrides applied when disabled.
- +focused+ [Hash, nil] -- overrides applied when focused.
Defined Under Namespace
Classes: Spec
Constant Summary collapse
- FIELD_KEYS =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Recognized field keys for style map specs.
%i[base background text_color border shadow hovered pressed disabled focused].freeze
Class Method Summary collapse
-
.encode(value) ⇒ String, ...
Encode a style value for the wire protocol.
-
.from_opts(opts) ⇒ Spec
Construct from keyword options.
Class Method Details
.encode(value) ⇒ String, ...
Encode a style value for the wire protocol. Accepts a symbol (preset name), a Hash, or a Spec.
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/plushie/type/style_map.rb', line 104 def encode(value) case value when Symbol then value.to_s when String then value when Spec then value.to_wire when Hash then value when nil then nil else raise ArgumentError, "invalid style: #{value.inspect}" end end |
.from_opts(opts) ⇒ Spec
Construct from keyword options.
95 96 97 |
# File 'lib/plushie/type/style_map.rb', line 95 def from_opts(opts) Spec.new(**opts.slice(*FIELD_KEYS)) end |