Add user option modus-themes-box-buttons

This controls the overall style of buttons in the Custom UI, EWW web
forms, and related.

Thanks to Daniel Mendler for the feedback in issue 282:
<https://gitlab.com/protesilaos/modus-themes/-/issues/282>.
This commit is contained in:
Protesilaos Stavrou 2022-02-14 12:38:09 +02:00
parent e49c509257
commit d12bbe4c7e
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
3 changed files with 445 additions and 143 deletions

View file

@ -97,6 +97,7 @@ Customization Options
* Syntax styles:: Choose the overall aesthetic of code syntax
* Mixed fonts:: Toggle mixing of font families
* Link styles:: Choose among several styles, with or without underline
* Box buttons:: Choose among several styles for buttons
* Command prompts:: Choose among plain, subtle, or intense prompts
* Mode line:: Choose among several styles, with or without borders
* Tab style:: Toggle accented background for tabs
@ -643,6 +644,7 @@ of this manual.
* Syntax styles:: Choose the overall aesthetic of code syntax
* Mixed fonts:: Toggle mixing of font families
* Link styles:: Choose among several styles, with or without underline
* Box buttons:: Choose among several styles for buttons
* Command prompts:: Choose among plain, subtle, or intense prompts
* Mode line:: Choose among several styles, with or without borders
* Tab style:: Toggle accented background for tabs
@ -867,7 +869,7 @@ perhaps because a purpose-specific package has extra functionality. Two
possible options are org-variable-pitch and mixed-pitch.

File: modus-themes.info, Node: Link styles, Next: Command prompts, Prev: Mixed fonts, Up: Customization Options
File: modus-themes.info, Node: Link styles, Next: Box buttons, Prev: Mixed fonts, Up: Customization Options
4.7 Option for links
====================
@ -936,9 +938,91 @@ controlled by x-use-underline-position-properties,
to their documentation strings.

File: modus-themes.info, Node: Command prompts, Next: Mode line, Prev: Link styles, Up: Customization Options
File: modus-themes.info, Node: Box buttons, Next: Command prompts, Prev: Link styles, Up: Customization Options
4.8 Option for command prompt styles
4.8 Option for box buttons
==========================
[ Part of 2.1.0-dev ]
Brief: Control the style of buttons in the Custom UI and related.
Symbol: modus-themes-box-buttons (choice type, list of
properties)
Possible values are expressed as a list of properties (default is
nil or an empty list). The list can include any of the following
symbols:
flat
accented
faint
variable-pitch
underline
• A font weight, which must be supported by the underlying typeface:
thin
ultralight
extralight
light
semilight
regular
medium
semibold
bold
heavy
extrabold
ultrabold
• A floating point as a height multiple of the default (e.g. 0.9)
The default (a nil value or an empty list) is a gray background
combined with a pseudo three-dimensional effect.
The flat property makes the button two dimensional.
The accented property changes the background from gray to an accent
color.
The faint property reduces the overall coloration.
The variable-pitch property applies a proportionately spaced
typeface to the button~s text.
*note Font configurations for Org and others::.
The underline property draws a line below the affected text and
removes whatever box effect. This is optimal when Emacs runs inside a
terminal emulator (*note More accurate colors in terminal emulators::).
If flat and underline are defined together, the latter takes
precedence.
The symbol of a weight attribute adjusts the font of the button
accordingly, such as light, semibold, etc. Valid symbols are
defined in the variable modus-themes-weights.
*note Configure bold and italic faces::.
A number, expressed as a floating point (e.g. 0.9), adjusts the
height of the buttons text to that many times the base font size. The
default height is the same as 1.0, though it need not be explicitly
stated.
Combinations of any of those properties are expressed as a list, like
in these examples:
(flat)
(variable-pitch flat)
(variable-pitch flat 0.9 semibold)
The order in which the properties are set is not significant.
In user configuration files the form may look like this:
(setq modus-themes-box-buttons '(variable-pitch flat 0.9))

File: modus-themes.info, Node: Command prompts, Next: Mode line, Prev: Box buttons, Up: Customization Options
4.9 Option for command prompt styles
====================================
Brief: Control the style of command prompts (e.g. minibuffer, shell,
@ -992,8 +1076,8 @@ in these examples:

File: modus-themes.info, Node: Mode line, Next: Tab style, Prev: Command prompts, Up: Customization Options
4.9 Option for mode line presentation
=====================================
4.10 Option for mode line presentation
======================================
Brief: Control the style of the mode lines.
@ -1088,7 +1172,7 @@ option.

File: modus-themes.info, Node: Tab style, Next: Completion UIs, Prev: Mode line, Up: Customization Options
4.10 Option for accented background in tab interfaces
4.11 Option for accented background in tab interfaces
=====================================================
Brief: Toggle accent colors for tabbed interfaces.
@ -1110,7 +1194,7 @@ as the Centaur tabs package.

File: modus-themes.info, Node: Completion UIs, Next: Mail citations, Prev: Tab style, Up: Customization Options
4.11 Option for completion framework aesthetics
4.12 Option for completion framework aesthetics
===============================================
Brief: Set the overall style of completion framework interfaces.
@ -1159,7 +1243,7 @@ spend some time with every one of those presets.

File: modus-themes.info, Node: Mail citations, Next: Fringes, Prev: Completion UIs, Up: Customization Options
4.12 Option for mail citations
4.13 Option for mail citations
==============================
Brief: Set the overall style of citations/quotes when composing emails.
@ -1193,7 +1277,7 @@ not touch.

File: modus-themes.info, Node: Fringes, Next: Language checkers, Prev: Mail citations, Up: Customization Options
4.13 Option for fringe visibility
4.14 Option for fringe visibility
=================================
Brief: Control the overall coloration of the fringes.
@ -1217,7 +1301,7 @@ their names imply.

File: modus-themes.info, Node: Language checkers, Next: Line highlighting, Prev: Fringes, Up: Customization Options
4.14 Option for language checkers
4.15 Option for language checkers
=================================
Brief: Control the style of in-buffer warnings and errors produced by
@ -1283,7 +1367,7 @@ variables flymake-fringe-indicator-position and

File: modus-themes.info, Node: Line highlighting, Next: Line numbers, Prev: Language checkers, Up: Customization Options
4.15 Option for line highlighting
4.16 Option for line highlighting
=================================
Brief: Control the style of the current line of hl-line-mode.
@ -1332,7 +1416,7 @@ as elfeed, notmuch, and mu4e.

File: modus-themes.info, Node: Line numbers, Next: Markup, Prev: Line highlighting, Up: Customization Options
4.16 Option for line numbers
4.17 Option for line numbers
============================
Brief: Toggle subtle line numbers.
@ -1361,7 +1445,7 @@ are updated to accommodate this aesthetic.

File: modus-themes.info, Node: Markup, Next: Matching parentheses, Prev: Line numbers, Up: Customization Options
4.17 Option for markup style in Org and others
4.18 Option for markup style in Org and others
==============================================
[ Introduced as part of 2.1.0-dev. Supersedes the
@ -1414,7 +1498,7 @@ in these examples:

File: modus-themes.info, Node: Matching parentheses, Next: Active region, Prev: Markup, Up: Customization Options
4.18 Option for parenthesis matching
4.19 Option for parenthesis matching
====================================
Brief: Control the style of matching delimiters produced by
@ -1462,7 +1546,7 @@ and the smartparens package.

File: modus-themes.info, Node: Active region, Next: Diffs, Prev: Matching parentheses, Up: Customization Options
4.19 Option for active region
4.20 Option for active region
=============================
Brief: Control the style of the region.
@ -1506,7 +1590,7 @@ in these examples:

File: modus-themes.info, Node: Diffs, Next: Org mode blocks, Prev: Active region, Up: Customization Options
4.20 Option for diff buffer looks
4.21 Option for diff buffer looks
=================================
Brief: Set the overall style of diffs.
@ -1552,7 +1636,7 @@ contrast threshold.

File: modus-themes.info, Node: Org mode blocks, Next: Org agenda, Prev: Diffs, Up: Customization Options
4.21 Option for org-mode block styles
4.22 Option for org-mode block styles
=====================================
Brief: Set the overall style of Org code blocks, quotes, and the like.
@ -1603,7 +1687,7 @@ aliases for gray-background and tinted-background, respectively.

File: modus-themes.info, Node: Org agenda, Next: Heading styles, Prev: Org mode blocks, Up: Customization Options
4.22 Option for Org agenda constructs
4.23 Option for Org agenda constructs
=====================================
Brief: Control the style of the Org agenda. Multiple parameters are
@ -1638,9 +1722,9 @@ those properties:
height (a value of 1.15).
• The symbol of a weight attribute adjusts the font of the heading
accordingly, such as light, semibold, etc. Valid symbols are
defined in the internal variable modus-themes--heading-weights.
The absence of a weight means that bold will be used by virtue of
inheriting the bold face.
defined in the variable modus-themes-weights. The absence of a
weight means that bold will be used by virtue of inheriting the
bold face.
*note Configure bold and italic faces::.
@ -1788,7 +1872,7 @@ Deuteranopia style.

File: modus-themes.info, Node: Heading styles, Next: UI typeface, Prev: Org agenda, Up: Customization Options
4.23 Option for the headings overall style
4.24 Option for the headings overall style
===========================================
Brief: Control the style of headings. This can be particularised for
@ -1828,7 +1912,7 @@ followed by a presentation of all available properties:
extrabold
ultrabold
no-bold (deprecated alias of a regular weight)
• A floating point as a height multiple of the default
• A floating point as a height multiple of the default (e.g. 1.1)
By default (a nil value for this variable), all headings have a
bold typographic weight and use a desaturated text color.
@ -1851,11 +1935,10 @@ typeface).
The symbol of a weight attribute adjusts the font of the heading
accordingly, such as light, semibold, etc. Valid symbols are
defined in the internal variable modus-themes--heading-weights. The
absence of a weight means that bold will be used by virtue of inheriting
the bold face. For backward compatibility, the no-bold value is
accepted, though users are encouraged to specify a regular weight
instead.
defined in the variable modus-themes-weights. The absence of a weight
means that bold will be used by virtue of inheriting the bold face.
For backward compatibility, the no-bold value is accepted, though
users are encouraged to specify a regular weight instead.
*note Configure bold and italic faces::.
@ -1902,7 +1985,7 @@ others, such as org-fontify-done-headline.

File: modus-themes.info, Node: UI typeface, Prev: Heading styles, Up: Customization Options
4.24 Option for variable-pitch font in UI elements
4.25 Option for variable-pitch font in UI elements
==================================================
Brief: Toggle the use of proportionately spaced (variable-pitch) fonts
@ -5772,6 +5855,7 @@ B.2 Variable index
* modus-themes-after-load-theme-hook: Enable and load. (line 6)
* modus-themes-bold-constructs: Bold constructs. (line 6)
* modus-themes-box-buttons: Box buttons. (line 6)
* modus-themes-completions: Completion UIs. (line 6)
* modus-themes-deuteranopia: Deuteranopia style. (line 6)
* modus-themes-diffs: Diffs. (line 6)
@ -5879,111 +5963,112 @@ B.3 Concept index

Tag Table:
Node: Top860
Node: Overview7075
Node: How do the themes look like9199
Node: Learn about the latest changes9713
Node: Installation10101
Node: Install manually from source10582
Node: Install from the archives11407
Node: Install on GNU/Linux12184
Node: Debian 11 Bullseye12632
Node: GNU Guix12942
Node: Enable and load13225
Node: Sample configuration with and without use-package16172
Node: Differences between loading and enabling18124
Node: Customization Options20079
Node: Custom reload theme26565
Node: Deuteranopia style27355
Node: Bold constructs28786
Node: Italic constructs29620
Node: Syntax styles30387
Node: Mixed fonts32519
Node: Link styles33783
Node: Command prompts36261
Node: Mode line38082
Node: Tab style42573
Node: Completion UIs43236
Node: Mail citations45329
Node: Fringes46513
Node: Language checkers47253
Node: Line highlighting49695
Node: Line numbers51292
Node: Markup52360
Node: Matching parentheses54053
Node: Active region55430
Node: Diffs56843
Node: Org mode blocks58494
Node: Org agenda60884
Node: Heading styles69344
Node: UI typeface73769
Node: Advanced customization74668
Node: More accurate colors in terminal emulators76215
Node: Visualize the active Modus theme's palette77460
Node: Per-theme customization settings78460
Node: Case-by-case face specs using the themes' palette79816
Node: Face specs at scale using the themes' palette84364
Node: Remap face with local value89165
Node: Cycle through arbitrary colors91590
Node: Override colors98018
Node: Override color saturation102883
Node: Override colors through blending108562
Node: Font configurations for Org and others111419
Ref: Font configurations for Org and others-Footnote-1114235
Node: Configure bold and italic faces114422
Node: Custom Org todo keyword and priority faces118570
Node: Custom Org emphasis faces122243
Node: Update Org block delimiter fontification127044
Node: Measure color contrast128961
Node: Load theme depending on time of day131684
Node: Backdrop for pdf-tools132677
Node: Decrease mode line height135529
Node: A theme-agnostic hook for theme loading139654
Node: Diffs with only the foreground142045
Node: Ediff without diff color-coding145159
Node: Face coverage147254
Node: Supported packages147706
Node: Indirectly covered packages154354
Node: Notes on individual packages155374
Node: Note on avy hints156438
Node: Note on calendarel weekday and weekend colors157606
Node: Note on underlines in compilation buffers158789
Node: Note on inline Latex in Org buffers159636
Node: Note on dimmerel160246
Node: Note on display-fill-column-indicator-mode161731
Node: Note on highlight-parenthesesel163294
Node: Note on mmm-modeel background colors169283
Node: Note for prism171598
Node: Note for god-mode174752
Node: Note on company-mode overlay pop-up176356
Ref: Note on company-mode overlay pop-up-Footnote-1177046
Ref: Note on company-mode overlay pop-up-Footnote-2177113
Node: Note on ERC escaped color sequences177168
Ref: Note on ERC escaped color sequences-Footnote-1178596
Node: Note on powerline or spaceline178706
Node: Note on SHR colors179120
Node: Note on SHR fonts179532
Node: Note on Ement colors and fonts180165
Node: Note on Helm grep181690
Node: Note on vc-annotate-background-mode183167
Node: Note on pdf-tools link hints184052
Node: Frequently Asked Questions186484
Node: Is the contrast ratio about adjacent colors?187115
Node: What does it mean to avoid exaggerations?188622
Node: Why are colors mostly variants of blue magenta cyan?190451
Node: What is the best setup for legibility?194764
Node: Are these color schemes?197409
Node: Port the Modus themes to other platforms?201129
Node: Contributing203913
Node: Sources of the themes204310
Node: Issues you can help with204946
Node: Patches require copyright assignment to the FSF206146
Node: Acknowledgements208441
Node: Meta211428
Node: GNU Free Documentation License213907
Node: Indices239259
Node: Function index239438
Node: Variable index240961
Node: Concept index243102
Node: Overview7148
Node: How do the themes look like9272
Node: Learn about the latest changes9786
Node: Installation10174
Node: Install manually from source10655
Node: Install from the archives11480
Node: Install on GNU/Linux12257
Node: Debian 11 Bullseye12705
Node: GNU Guix13015
Node: Enable and load13298
Node: Sample configuration with and without use-package16245
Node: Differences between loading and enabling18197
Node: Customization Options20152
Node: Custom reload theme26711
Node: Deuteranopia style27501
Node: Bold constructs28932
Node: Italic constructs29766
Node: Syntax styles30533
Node: Mixed fonts32665
Node: Link styles33929
Node: Box buttons36403
Node: Command prompts39097
Node: Mode line40918
Node: Tab style45411
Node: Completion UIs46074
Node: Mail citations48167
Node: Fringes49351
Node: Language checkers50091
Node: Line highlighting52533
Node: Line numbers54130
Node: Markup55198
Node: Matching parentheses56891
Node: Active region58268
Node: Diffs59681
Node: Org mode blocks61332
Node: Org agenda63722
Node: Heading styles72165
Node: UI typeface76589
Node: Advanced customization77488
Node: More accurate colors in terminal emulators79035
Node: Visualize the active Modus theme's palette80280
Node: Per-theme customization settings81280
Node: Case-by-case face specs using the themes' palette82636
Node: Face specs at scale using the themes' palette87184
Node: Remap face with local value91985
Node: Cycle through arbitrary colors94410
Node: Override colors100838
Node: Override color saturation105703
Node: Override colors through blending111382
Node: Font configurations for Org and others114239
Ref: Font configurations for Org and others-Footnote-1117055
Node: Configure bold and italic faces117242
Node: Custom Org todo keyword and priority faces121390
Node: Custom Org emphasis faces125063
Node: Update Org block delimiter fontification129864
Node: Measure color contrast131781
Node: Load theme depending on time of day134504
Node: Backdrop for pdf-tools135497
Node: Decrease mode line height138349
Node: A theme-agnostic hook for theme loading142474
Node: Diffs with only the foreground144865
Node: Ediff without diff color-coding147979
Node: Face coverage150074
Node: Supported packages150526
Node: Indirectly covered packages157174
Node: Notes on individual packages158194
Node: Note on avy hints159258
Node: Note on calendarel weekday and weekend colors160426
Node: Note on underlines in compilation buffers161609
Node: Note on inline Latex in Org buffers162456
Node: Note on dimmerel163066
Node: Note on display-fill-column-indicator-mode164551
Node: Note on highlight-parenthesesel166114
Node: Note on mmm-modeel background colors172103
Node: Note for prism174418
Node: Note for god-mode177572
Node: Note on company-mode overlay pop-up179176
Ref: Note on company-mode overlay pop-up-Footnote-1179866
Ref: Note on company-mode overlay pop-up-Footnote-2179933
Node: Note on ERC escaped color sequences179988
Ref: Note on ERC escaped color sequences-Footnote-1181416
Node: Note on powerline or spaceline181526
Node: Note on SHR colors181940
Node: Note on SHR fonts182352
Node: Note on Ement colors and fonts182985
Node: Note on Helm grep184510
Node: Note on vc-annotate-background-mode185987
Node: Note on pdf-tools link hints186872
Node: Frequently Asked Questions189304
Node: Is the contrast ratio about adjacent colors?189935
Node: What does it mean to avoid exaggerations?191442
Node: Why are colors mostly variants of blue magenta cyan?193271
Node: What is the best setup for legibility?197584
Node: Are these color schemes?200229
Node: Port the Modus themes to other platforms?203949
Node: Contributing206733
Node: Sources of the themes207130
Node: Issues you can help with207766
Node: Patches require copyright assignment to the FSF208966
Node: Acknowledgements211261
Node: Meta214248
Node: GNU Free Documentation License216727
Node: Indices242079
Node: Function index242258
Node: Variable index243781
Node: Concept index245995

End Tag Table

View file

@ -784,6 +784,91 @@ controlled by ~x-use-underline-position-properties~,
~x-underline-at-descent-line~, ~underline-minimum-offset~. Please refer to
their documentation strings.
** Option for box buttons
:properties:
:alt_title: Box buttons
:description: Choose among several styles for buttons
:custom_id: h:8b85f711-ff40-45b0-b7fc-4727503cd2ec
:end:
#+vindex: modus-themes-box-buttons
[ Part of {{{development-version}}} ]
Brief: Control the style of buttons in the Custom UI and related.
Symbol: ~modus-themes-box-buttons~ (=choice= type, list of properties)
Possible values are expressed as a list of properties (default is ~nil~ or
an empty list). The list can include any of the following symbols:
+ ~flat~
+ ~accented~
+ ~faint~
+ ~variable-pitch~
+ ~underline~
+ A font weight, which must be supported by the underlying typeface:
- ~thin~
- ~ultralight~
- ~extralight~
- ~light~
- ~semilight~
- ~regular~
- ~medium~
- ~semibold~
- ~bold~
- ~heavy~
- ~extrabold~
- ~ultrabold~
+ A floating point as a height multiple of the default (e.g. =0.9=)
The default (a nil value or an empty list) is a gray background combined
with a pseudo three-dimensional effect.
The ~flat~ property makes the button two dimensional.
The ~accented~ property changes the background from gray to an accent
color.
The ~faint~ property reduces the overall coloration.
The ~variable-pitch~ property applies a proportionately spaced typeface
to the button~s text.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
The ~underline~ property draws a line below the affected text and
removes whatever box effect. This is optimal when Emacs runs inside a
terminal emulator ([[#h:fbb5e254-afd6-4313-bb05-93b3b4f67358][More accurate colors in terminal emulators]]). If
~flat~ and ~underline~ are defined together, the latter takes
precedence.
The symbol of a weight attribute adjusts the font of the button
accordingly, such as ~light~, ~semibold~, etc. Valid symbols are
defined in the variable ~modus-themes-weights~.
[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
A number, expressed as a floating point (e.g. =0.9=), adjusts the height
of the button's text to that many times the base font size. The default
height is the same as =1.0=, though it need not be explicitly stated.
Combinations of any of those properties are expressed as a list,
like in these examples:
#+begin_src emacs-lisp
(flat)
(variable-pitch flat)
(variable-pitch flat 0.9 semibold)
#+end_src
The order in which the properties are set is not significant.
In user configuration files the form may look like this:
#+begin_src emacs-lisp
(setq modus-themes-box-buttons '(variable-pitch flat 0.9))
#+end_src
** Option for command prompt styles
:properties:
:alt_title: Command prompts

View file

@ -5,7 +5,7 @@
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; URL: https://gitlab.com/protesilaos/modus-themes
;; Version: 2.0.0
;; Last-Modified: <2022-02-13 09:26:33 +0200>
;; Last-Modified: <2022-02-14 12:07:07 +0200>
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@ -44,6 +44,7 @@
;; modus-themes-mixed-fonts (boolean)
;; modus-themes-subtle-line-numbers (boolean)
;; modus-themes-variable-pitch-ui (boolean)
;; modus-themes-box-buttons (choice)
;; modus-themes-completions (choice)
;; modus-themes-diffs (choice)
;; modus-themes-fringes (choice)
@ -1630,6 +1631,16 @@ The actual styling of the face is done by `modus-themes-faces'."
The actual styling of the face is done by `modus-themes-faces'."
:group 'modus-themes-faces)
(defface modus-themes-box-button nil
"Face for widget buttons (e.g. in the Custom UI).
The actual styling of the face is done by `modus-themes-faces'."
:group 'modus-themes-faces)
(defface modus-themes-box-button-pressed nil
"Face for pressed widget buttons (e.g. in the Custom UI).
The actual styling of the face is done by `modus-themes-faces'."
:group 'modus-themes-faces)
;;; Customization variables
@ -2930,6 +2941,74 @@ as the Centaur tabs package."
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Tab style"))
(defcustom modus-themes-box-buttons nil
"Control the style of buttons in the Custom UI and related.
The value is a list of properties, each designated by a symbol.
The default (a nil value or an empty list) is a gray background
combined with a pseudo three-dimensional effect.
The `flat' property makes the button two dimensional.
The `accented' property changes the background from gray to an
accent color.
The `faint' property reduces the overall coloration.
The `variable-pitch' property applies a proportionately spaced
typeface to the button's text.
The `underline' property draws a line below the affected text and
removes whatever box effect. This is optimal when Emacs runs
inside a terminal emulator. If `flat' and `underline' are
defined together, the latter takes precedence.
The symbol of a weight attribute adjusts the font of the button
accordingly, such as `light', `semibold', etc. Valid symbols are
defined in the variable `modus-themes-weights'.
A number, expressed as a floating point (e.g. 0.9), adjusts the
height of the button's text to that many times the base font
size. The default height is the same as 1.0, though it need not
be explicitly stated.
Combinations of any of those properties are expressed as a list,
like in these examples:
(flat)
(variable-pitch flat)
(variable-pitch flat 0.9 semibold)
The order in which the properties are set is not significant.
In user configuration files the form may look like this:
(setq modus-themes-box-buttons (quote (variable-pitch flat 0.9)))"
:group 'modus-themes
:package-version '(modus-themes . "2.1.0")
:version "29.1"
:type '(set :tag "Properties" :greedy t
(const :tag "Two-dimensional button" flat)
(const :tag "Accented background instead of gray" accented)
(const :tag "Proportionately spaced font (variable-pitch)" variable-pitch)
(const :tag "Underline instead of a box effect" underline)
(choice :tag "Font weight (must be supported by the typeface)"
(const :tag "Thin" thin)
(const :tag "Ultra-light" ultralight)
(const :tag "Extra-light" extralight)
(const :tag "Light" light)
(const :tag "Semi-light" semilight)
(const :tag "Regulat (default)" nil)
(const :tag "Medium" medium)
(const :tag "Bold" bold)
(const :tag "Semi-bold" semibold)
(const :tag "Extra-bold" extrabold)
(const :tag "Ultra-bold" ultrabold))
(float :tag "Number (float) to adjust height by" :value 0.9))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Box buttons"))
;;; Internal functions
@ -3806,6 +3885,56 @@ application of a variable-pitch font."
:foreground (or foreground 'unspecified)
:box (if box-p (list :line-width 2 :color background) 'unspecified))))
(defun modus-themes--button (bg bgfaint bgaccent bgaccentfaint border &optional pressed-button-p)
"Apply `modus-themes-box-buttons' styles.
Work in progress. BG BGFAINT BGACCENT BGACCENTFAINT BORDER PRESSED-BUTTON-P."
(let* ((properties modus-themes-box-buttons)
(weight (modus-themes--weight properties)))
(list :inherit
(cond
((and (memq 'variable-pitch properties)
(eq weight 'bold))
(list 'bold 'variable-pitch))
((memq 'variable-pitch properties)
'variable-pitch)
((eq weight 'bold)
'bold)
('unspecified))
:background
(cond
((and (memq 'accented properties)
(memq 'faint properties)
bgaccentfaint))
((memq 'faint properties)
bgfaint)
((memq 'accented properties)
bgaccent)
(bg))
:box
(cond
((memq 'underline properties)
'unspecified)
((memq 'flat properties)
(list :line-width -1 :color border))
((list :line-width -1
:style (if pressed-button-p
'pressed-button
'released-button)
:color border)))
:weight
(cond
((eq weight 'bold)
'unspecified) ; we :inherit the `bold' face above
(weight weight)
('unspecified))
:height
(seq-find #'floatp properties 'unspecified)
:underline
(if (memq 'underline properties)
t
'unspecified))))
;;;; Utilities for DIY users
@ -4250,6 +4379,13 @@ by virtue of calling either of `modus-themes-load-operandi' and
((,class ,@(if (null modus-themes-completions)
(list :foreground magenta-alt-other)
(list :inherit 'modus-themes-key-binding)))))
;;;;; buttons
`(modus-themes-box-button
((,class ,@(modus-themes--button bg-active bg-main bg-active-accent
bg-special-cold bg-region))))
`(modus-themes-box-button-pressed
((,class ,@(modus-themes--button bg-active bg-main bg-active-accent
bg-special-cold bg-region t))))
;;;;; typography
`(modus-themes-bold ((,class ,@(modus-themes--bold-weight))))
`(modus-themes-fixed-pitch ((,class ,@(modus-themes--fixed-pitch))))
@ -4734,12 +4870,9 @@ by virtue of calling either of `modus-themes-load-operandi' and
;;;;; cursor-flash
`(cursor-flash-face ((,class :inherit modus-themes-intense-blue)))
;;;;; custom (M-x customize)
`(custom-button ((,class :box (:line-width 2 :color nil :style released-button)
:background ,bg-active :foreground ,fg-main)))
`(custom-button-mouse ((,class :box (:line-width 2 :color nil :style released-button)
:background ,bg-active :foreground ,fg-active)))
`(custom-button-pressed ((,class :box (:line-width 2 :color nil :style pressed-button)
:background ,bg-active :foreground ,fg-main)))
`(custom-button ((,class :inherit modus-themes-box-button)))
`(custom-button-mouse ((,class :inherit (highlight custom-button))))
`(custom-button-pressed ((,class :inherit modus-themes-box-button-pressed)))
`(custom-changed ((,class :inherit modus-themes-subtle-cyan)))
`(custom-comment ((,class :inherit shadow)))
`(custom-comment-tag ((,class :background ,bg-alt :foreground ,yellow-alt-other)))
@ -5251,8 +5384,7 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(eww-form-checkbox ((,class :inherit eww-form-text)))
`(eww-form-file ((,class :inherit eww-form-submit)))
`(eww-form-select ((,class :inherit eww-form-submit)))
`(eww-form-submit ((,class :box (:line-width 2 :style released-button)
:background ,bg-active)))
`(eww-form-submit ((,class :inherit modus-themes-box-button)))
`(eww-form-text ((,class :box ,bg-active :background ,bg-alt)))
`(eww-form-textarea ((,class :background ,bg-alt)))
;;;;; eyebrowse