bestax-mcp 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -0
- package/data/catalog.json +1869 -0
- package/data/components/Autocomplete.json +604 -0
- package/data/components/Avatar.json +220 -0
- package/data/components/Avatars.json +294 -0
- package/data/components/Badge.json +261 -0
- package/data/components/Block.json +105 -0
- package/data/components/Box.json +157 -0
- package/data/components/Breadcrumb.json +155 -0
- package/data/components/Button.json +599 -0
- package/data/components/Buttons.json +533 -0
- package/data/components/Card.json +506 -0
- package/data/components/Carousel.json +512 -0
- package/data/components/Cell.json +154 -0
- package/data/components/Checkbox.json +176 -0
- package/data/components/Checkboxes.json +240 -0
- package/data/components/Code.json +128 -0
- package/data/components/Collapse.json +218 -0
- package/data/components/Column.json +284 -0
- package/data/components/Columns.json +542 -0
- package/data/components/ConfigProvider.json +16 -0
- package/data/components/Container.json +149 -0
- package/data/components/Content.json +228 -0
- package/data/components/Control.json +484 -0
- package/data/components/DateInput.json +872 -0
- package/data/components/DateTimeInput.json +952 -0
- package/data/components/Delete.json +153 -0
- package/data/components/Dialog.json +285 -0
- package/data/components/Divider.json +68 -0
- package/data/components/Dropdown.json +353 -0
- package/data/components/Emphasis.json +99 -0
- package/data/components/Field.json +539 -0
- package/data/components/Figure.json +143 -0
- package/data/components/File.json +403 -0
- package/data/components/Footer.json +109 -0
- package/data/components/Grid.json +357 -0
- package/data/components/Hero.json +340 -0
- package/data/components/Icon.json +232 -0
- package/data/components/IconText.json +307 -0
- package/data/components/Image.json +166 -0
- package/data/components/Input.json +583 -0
- package/data/components/Level.json +332 -0
- package/data/components/Link.json +154 -0
- package/data/components/LinkButton.json +247 -0
- package/data/components/ListItem.json +101 -0
- package/data/components/Loading.json +323 -0
- package/data/components/Media.json +345 -0
- package/data/components/Menu.json +317 -0
- package/data/components/Message.json +303 -0
- package/data/components/Modal.json +444 -0
- package/data/components/Navbar.json +996 -0
- package/data/components/Notification.json +165 -0
- package/data/components/Numberinput.json +364 -0
- package/data/components/OrderedList.json +189 -0
- package/data/components/Pagination.json +619 -0
- package/data/components/Panel.json +582 -0
- package/data/components/Paragraph.json +107 -0
- package/data/components/Pre.json +114 -0
- package/data/components/Progress.json +137 -0
- package/data/components/Radio.json +164 -0
- package/data/components/Radios.json +240 -0
- package/data/components/Rate.json +466 -0
- package/data/components/Reveal.json +177 -0
- package/data/components/Section.json +123 -0
- package/data/components/Select.json +526 -0
- package/data/components/Sidebar.json +488 -0
- package/data/components/Skeleton.json +162 -0
- package/data/components/Slider.json +534 -0
- package/data/components/Span.json +100 -0
- package/data/components/Steps.json +452 -0
- package/data/components/Strong.json +105 -0
- package/data/components/SubTitle.json +233 -0
- package/data/components/Switch.json +291 -0
- package/data/components/Table.json +490 -0
- package/data/components/Tabs.json +592 -0
- package/data/components/Tag.json +197 -0
- package/data/components/Taginput.json +587 -0
- package/data/components/Tags.json +181 -0
- package/data/components/TextArea.json +483 -0
- package/data/components/Theme.json +65 -0
- package/data/components/TimeInput.json +906 -0
- package/data/components/Title.json +240 -0
- package/data/components/Toast.json +308 -0
- package/data/components/Tooltip.json +212 -0
- package/data/components/UnorderedList.json +149 -0
- package/data/components/Valid value constants.json +16 -0
- package/data/components/classNames.json +65 -0
- package/data/components/useBulmaClasses.json +169 -0
- package/data/components/usePrefixedClassNames.json +25 -0
- package/data/skills/bestax-custom-component/SKILL.md +196 -0
- package/data/skills/bestax-custom-component/examples/stat-card.tsx +105 -0
- package/data/skills/bestax-custom-component/references/api.md +90 -0
- package/data/skills/bestax-custom-component/references/component-catalog.md +149 -0
- package/data/skills/bestax-custom-component/references/library-contributor.md +395 -0
- package/data/skills/bestax-custom-component/references/patterns.md +136 -0
- package/data/skills/bestax-form/SKILL.md +254 -0
- package/data/skills/bestax-form/references/api.md +103 -0
- package/data/skills/bestax-form/references/patterns.md +210 -0
- package/data/skills/bestax-icons/SKILL.md +80 -0
- package/data/skills/bestax-icons/examples/icon-usage.tsx +80 -0
- package/data/skills/bestax-icons/references/icon-libraries.md +131 -0
- package/data/skills/bestax-layout-scaffold/SKILL.md +196 -0
- package/data/skills/bestax-layout-scaffold/examples/app-shell.tsx +86 -0
- package/data/skills/bestax-layout-scaffold/examples/card-grid.tsx +106 -0
- package/data/skills/bestax-layout-scaffold/examples/centered.tsx +56 -0
- package/data/skills/bestax-layout-scaffold/examples/content-page.tsx +90 -0
- package/data/skills/bestax-layout-scaffold/examples/landing.tsx +122 -0
- package/data/skills/bestax-layout-scaffold/references/archetypes.md +246 -0
- package/data/skills/bestax-layout-scaffold/references/layout-components.md +269 -0
- package/data/skills/bestax-migrate/SKILL.md +78 -0
- package/data/skills/bestax-migrate/references/component-map.md +91 -0
- package/data/skills/bestax-migrate/references/css-migration.md +100 -0
- package/data/skills/bestax-migrate/references/prop-map.md +48 -0
- package/data/skills/bestax-migrate/references/unmappables.md +124 -0
- package/data/skills/bestax-optimize/SKILL.md +131 -0
- package/data/skills/bestax-optimize/references/modular-build.md +173 -0
- package/data/skills/bestax-theming/SKILL.md +117 -0
- package/data/skills/bestax-theming/examples/dark-mode.tsx +38 -0
- package/data/skills/bestax-theming/examples/theme-config.tsx +60 -0
- package/data/skills/bestax-theming/references/css-variables.md +466 -0
- package/data/skills/bestax-theming/references/themeable-components.md +119 -0
- package/data/skills.json +148 -0
- package/dist/data.d.ts +131 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +111 -0
- package/dist/format.d.ts +37 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +178 -0
- package/dist/helper-props.d.ts +57 -0
- package/dist/helper-props.d.ts.map +1 -0
- package/dist/helper-props.js +249 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/search.d.ts +32 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +194 -0
- package/dist/server.d.ts +28 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +616 -0
- package/dist/version.d.ts +29 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +147 -0
- package/package.json +70 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
# Bulma CSS variables & override mechanisms
|
|
2
|
+
|
|
3
|
+
`@allxsmith/bestax-bulma` wraps **Bulma 1.x**, which is themed entirely through `--bulma-*` CSS
|
|
4
|
+
custom properties. Every color, font, size, and radius resolves from one of these variables, so
|
|
5
|
+
theming means overriding the right `--bulma-*` values.
|
|
6
|
+
|
|
7
|
+
## How to override (three paths)
|
|
8
|
+
|
|
9
|
+
### 1. The `Theme` component (runtime, recommended)
|
|
10
|
+
|
|
11
|
+
`Theme` is exported from the package and writes `--bulma-*` variables for you.
|
|
12
|
+
|
|
13
|
+
- `isRoot` → injects the variables globally at `:root` (use once, at the app root).
|
|
14
|
+
- without `isRoot` → wraps children in a `<div>` and scopes the variables to that subtree.
|
|
15
|
+
- Named props set the color/scheme HSL channels and common values (see "Theme props" below).
|
|
16
|
+
- `bulmaVars` sets any other variable, keyed by its real `--bulma-*` name:
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
<Theme
|
|
20
|
+
isRoot
|
|
21
|
+
primaryH="265"
|
|
22
|
+
primaryS="65%"
|
|
23
|
+
primaryL="55%"
|
|
24
|
+
bulmaVars={{
|
|
25
|
+
'--bulma-radius': '0.75rem',
|
|
26
|
+
'--bulma-family-primary': "'Inter', sans-serif",
|
|
27
|
+
}}
|
|
28
|
+
>
|
|
29
|
+
<App />
|
|
30
|
+
</Theme>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
> Note: the type of the `bulmaVars` keys is not exported — pass it as an object literal (TypeScript
|
|
34
|
+
> still checks the keys against the allowed `--bulma-*` names).
|
|
35
|
+
|
|
36
|
+
> `--bulma-family-*` only selects the family — also load the font itself (a `<link>` in
|
|
37
|
+
> `index.html` or an `@fontsource/*` package import), or the browser silently falls back to
|
|
38
|
+
> the system font.
|
|
39
|
+
|
|
40
|
+
### 2. Plain CSS
|
|
41
|
+
|
|
42
|
+
Set the variables yourself on any selector. `:root` themes the whole document; a class scopes it.
|
|
43
|
+
|
|
44
|
+
```css
|
|
45
|
+
:root {
|
|
46
|
+
--bulma-primary-h: 265;
|
|
47
|
+
--bulma-primary-s: 65%;
|
|
48
|
+
--bulma-primary-l: 55%;
|
|
49
|
+
--bulma-radius: 0.75rem;
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Build-time Sass
|
|
54
|
+
|
|
55
|
+
If compiling Bulma's Sass yourself, set the SCSS variables before the CSS variables are generated:
|
|
56
|
+
|
|
57
|
+
```scss
|
|
58
|
+
@use 'bulma/sass' with (
|
|
59
|
+
$primary: #1e6b99,
|
|
60
|
+
$link: #485fc7
|
|
61
|
+
);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
(The library itself ships `$primary: #1e6b99` — HSL `202 / 67% / 36%` — this way.)
|
|
65
|
+
|
|
66
|
+
## Colors — override the H/S/L trio to recolor
|
|
67
|
+
|
|
68
|
+
Bulma derives a color's entire palette (shades, light/dark/invert variants) from three channels.
|
|
69
|
+
Override the trio; the rest follows automatically. For each color `<c>` ∈ `primary`, `link`,
|
|
70
|
+
`info`, `success`, `warning`, `danger`:
|
|
71
|
+
|
|
72
|
+
| Variable | Meaning | `Theme` prop |
|
|
73
|
+
| --------------- | -------------------------- | ------------------------ |
|
|
74
|
+
| `--bulma-<c>-h` | hue (unitless, e.g. `265`) | `<c>H` (e.g. `primaryH`) |
|
|
75
|
+
| `--bulma-<c>-s` | saturation (`%`) | `<c>S` |
|
|
76
|
+
| `--bulma-<c>-l` | lightness (`%`) | `<c>L` |
|
|
77
|
+
|
|
78
|
+
Read-only derived values (set automatically; reference if you need them): `--bulma-<c>` (the
|
|
79
|
+
resolved color), `--bulma-<c>-invert`, `--bulma-<c>-light`, `--bulma-<c>-dark`, `--bulma-<c>-rgb`,
|
|
80
|
+
and numeric shades `--bulma-<c>-00` … `--bulma-<c>-95`.
|
|
81
|
+
|
|
82
|
+
## Scheme, text, background, border (light/dark surfaces)
|
|
83
|
+
|
|
84
|
+
| Variable | Role |
|
|
85
|
+
| --------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
86
|
+
| `--bulma-scheme-h`, `--bulma-scheme-s` | scheme hue/saturation (`Theme`: `schemeH`, `schemeS`) |
|
|
87
|
+
| `--bulma-scheme-main`, `--bulma-scheme-main-bis`, `--bulma-scheme-main-ter` | page/surface backgrounds (main + subtle steps) |
|
|
88
|
+
| `--bulma-background` | secondary background |
|
|
89
|
+
| `--bulma-text`, `--bulma-text-strong`, `--bulma-text-weak` | body / emphasized / muted text |
|
|
90
|
+
| `--bulma-border`, `--bulma-border-weak` | borders |
|
|
91
|
+
|
|
92
|
+
## Radius, typography
|
|
93
|
+
|
|
94
|
+
| Variable | Default | `Theme` prop |
|
|
95
|
+
| ----------------------------------------------------------------------------- | --------------------------------- | --------------- |
|
|
96
|
+
| `--bulma-radius-small` / `--bulma-radius` / `--bulma-radius-large` | 0.25 / 0.375 / 0.75rem | via `bulmaVars` |
|
|
97
|
+
| `--bulma-radius-rounded` | 9999px | via `bulmaVars` |
|
|
98
|
+
| `--bulma-family-primary` / `--bulma-family-secondary` / `--bulma-family-code` | sans / sans / mono | via `bulmaVars` |
|
|
99
|
+
| `--bulma-size-1` … `--bulma-size-7` | 3rem … 0.75rem | via `bulmaVars` |
|
|
100
|
+
| `--bulma-size-small` / `-normal` / `-medium` / `-large` | 0.75 / 1 / 1.25 / 1.5rem | via `bulmaVars` |
|
|
101
|
+
| `--bulma-weight-light/normal/medium/semibold/bold/extrabold` | 300 / 400 / 500 / 600 / 700 / 800 | via `bulmaVars` |
|
|
102
|
+
|
|
103
|
+
## Shadow — the one token `bulmaVars` cannot set
|
|
104
|
+
|
|
105
|
+
`--bulma-shadow` is a real Bulma variable (`.box` and `.card` both derive
|
|
106
|
+
`--bulma-box-shadow`/`--bulma-card-shadow` from it), but it is **not a key of `bulmaVars`** —
|
|
107
|
+
that record is a closed union built from an explicit list, and shadow was left out. Writing
|
|
108
|
+
`<Theme bulmaVars={{ '--bulma-shadow': … }}>` is a compile error, and it is the single most
|
|
109
|
+
repeated invention in this library's cold-start evals: every run on every guidance channel
|
|
110
|
+
tried it.
|
|
111
|
+
|
|
112
|
+
Set it in CSS instead, then apply the class to the one element that needs it:
|
|
113
|
+
|
|
114
|
+
```css
|
|
115
|
+
.featured-ring {
|
|
116
|
+
--bulma-shadow: 0 0 0 2px var(--bulma-primary);
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Do **not** reach for `--bulma-box-shadow`/`--bulma-card-shadow` from an ancestor instead —
|
|
121
|
+
those are re-declared on `.box`/`.card` themselves, so an inherited value always loses (the
|
|
122
|
+
same rule as the extras section below).
|
|
123
|
+
|
|
124
|
+
## Extras component variables
|
|
125
|
+
|
|
126
|
+
Every "Beyond Bulma" extra registers its own `--bulma-<component>-*` variables. They are
|
|
127
|
+
registered on the component's **own selector** (`.avatar`, `.dialog`, `.tooltip`, … —
|
|
128
|
+
`.bestax-avatar` etc. with the prefixed CSS flavor), not on `:root`. A value set on a wrapping
|
|
129
|
+
ancestor — including `Theme`'s `bulmaVars` on a wrapping `Theme` — is only _inherited_ and
|
|
130
|
+
always loses to the component-level declaration, so it will NOT take effect. Working overrides
|
|
131
|
+
target the component's own element instead: redeclare on the component's own class in your CSS
|
|
132
|
+
(mind the class prefix), e.g. `.avatar { --bulma-avatar-size: 3.5rem; }`, or pass a
|
|
133
|
+
`className` and scope the override under it
|
|
134
|
+
(`.avatar.big-avatar { --bulma-avatar-size: 3.5rem; }`), or set it via the component's `style`
|
|
135
|
+
prop. Several default to core theme vars above, so they already flow through a custom theme.
|
|
136
|
+
|
|
137
|
+
### Avatar / Avatars / Badge
|
|
138
|
+
|
|
139
|
+
| Variable | Default |
|
|
140
|
+
| ----------------------------------------------------------------- | -------------------------------- |
|
|
141
|
+
| `--bulma-avatar-size` | `48px` |
|
|
142
|
+
| `--bulma-avatar-background` / `--bulma-avatar-color` | `background` / `text` |
|
|
143
|
+
| `--bulma-avatar-weight` | `weight-semibold` |
|
|
144
|
+
| `--bulma-avatar-rounded-radius` | `radius-large` |
|
|
145
|
+
| `--bulma-avatars-ring-color` / `--bulma-avatars-ring-width` | `scheme-main` / `2px` |
|
|
146
|
+
| `--bulma-avatars-spacing` | `0.75rem` (`sm` 0.5 / `lg` 1rem) |
|
|
147
|
+
| `--bulma-badge-height` / `--bulma-badge-min-width` | `1.25em` / `1.25em` |
|
|
148
|
+
| `--bulma-badge-padding` / `--bulma-badge-font-size` | `0 0.4em` / `0.7rem` |
|
|
149
|
+
| `--bulma-badge-radius` | `radius-rounded` |
|
|
150
|
+
| `--bulma-badge-ring-color` / `--bulma-badge-ring-width` | `scheme-main` / `2px` |
|
|
151
|
+
| `--bulma-badge-dot-size` | `0.65em` |
|
|
152
|
+
| `--bulma-badge-inset-circle` / `--bulma-badge-animation-duration` | `12%` / `1.4s` |
|
|
153
|
+
|
|
154
|
+
The remaining extras register the variables below — names only; each default lives in the
|
|
155
|
+
component's SCSS partial under `bulma-ui/src/scss/` as a `$<name> !default` variable. The same
|
|
156
|
+
own-selector override rule applies.
|
|
157
|
+
|
|
158
|
+
### Autocomplete
|
|
159
|
+
|
|
160
|
+
`--bulma-autocomplete-border-color`, `--bulma-autocomplete-border-hover-color`,
|
|
161
|
+
`--bulma-autocomplete-dropdown-background`, `--bulma-autocomplete-dropdown-offset`,
|
|
162
|
+
`--bulma-autocomplete-dropdown-padding-y`, `--bulma-autocomplete-dropdown-radius`,
|
|
163
|
+
`--bulma-autocomplete-dropdown-shadow`, `--bulma-autocomplete-dropdown-z-index`,
|
|
164
|
+
`--bulma-autocomplete-empty-color`, `--bulma-autocomplete-header-footer-color`,
|
|
165
|
+
`--bulma-autocomplete-header-footer-padding`, `--bulma-autocomplete-header-footer-size`,
|
|
166
|
+
`--bulma-autocomplete-icon-hover-color`, `--bulma-autocomplete-item-color`,
|
|
167
|
+
`--bulma-autocomplete-item-disabled-color`, `--bulma-autocomplete-item-disabled-opacity`,
|
|
168
|
+
`--bulma-autocomplete-item-hover-background`, `--bulma-autocomplete-item-hover-color`,
|
|
169
|
+
`--bulma-autocomplete-item-large-padding`, `--bulma-autocomplete-item-medium-padding`,
|
|
170
|
+
`--bulma-autocomplete-item-padding`, `--bulma-autocomplete-item-small-padding`,
|
|
171
|
+
`--bulma-autocomplete-loader-active-color`, `--bulma-autocomplete-loader-border-color`,
|
|
172
|
+
`--bulma-autocomplete-loader-duration`, `--bulma-autocomplete-scrollbar-thumb`,
|
|
173
|
+
`--bulma-autocomplete-scrollbar-thumb-hover`, `--bulma-autocomplete-scrollbar-track`,
|
|
174
|
+
`--bulma-autocomplete-scrollbar-width`
|
|
175
|
+
|
|
176
|
+
### Carousel
|
|
177
|
+
|
|
178
|
+
`--bulma-carousel-arrow-background`, `--bulma-carousel-arrow-background-hover`,
|
|
179
|
+
`--bulma-carousel-arrow-color`, `--bulma-carousel-arrow-disabled-opacity`,
|
|
180
|
+
`--bulma-carousel-arrow-icon-size`, `--bulma-carousel-arrow-icon-size-mobile`,
|
|
181
|
+
`--bulma-carousel-arrow-offset`, `--bulma-carousel-arrow-offset-mobile`,
|
|
182
|
+
`--bulma-carousel-arrow-radius`, `--bulma-carousel-arrow-size`,
|
|
183
|
+
`--bulma-carousel-arrow-size-mobile`, `--bulma-carousel-fade-duration`,
|
|
184
|
+
`--bulma-carousel-indicator-background`, `--bulma-carousel-indicator-background-active`,
|
|
185
|
+
`--bulma-carousel-indicator-background-hover`, `--bulma-carousel-indicator-bar-height`,
|
|
186
|
+
`--bulma-carousel-indicator-bar-height-mobile`, `--bulma-carousel-indicator-bar-width`,
|
|
187
|
+
`--bulma-carousel-indicator-bar-width-mobile`, `--bulma-carousel-indicator-circle-size`,
|
|
188
|
+
`--bulma-carousel-indicator-gap`, `--bulma-carousel-indicator-gap-mobile`,
|
|
189
|
+
`--bulma-carousel-indicator-line-height`, `--bulma-carousel-indicator-line-height-mobile`,
|
|
190
|
+
`--bulma-carousel-indicator-line-radius`, `--bulma-carousel-indicator-line-width`,
|
|
191
|
+
`--bulma-carousel-indicator-line-width-mobile`, `--bulma-carousel-indicator-size`,
|
|
192
|
+
`--bulma-carousel-indicator-size-mobile`, `--bulma-carousel-overlay-arrow-background`,
|
|
193
|
+
`--bulma-carousel-overlay-arrow-background-hover`, `--bulma-carousel-overlay-arrow-color`,
|
|
194
|
+
`--bulma-carousel-overlay-indicator-background`,
|
|
195
|
+
`--bulma-carousel-overlay-indicator-background-active`,
|
|
196
|
+
`--bulma-carousel-overlay-indicator-background-hover`, `--bulma-carousel-transition-duration`
|
|
197
|
+
|
|
198
|
+
### Checkbox
|
|
199
|
+
|
|
200
|
+
`--bulma-checkbox-active-color`, `--bulma-checkbox-background`, `--bulma-checkbox-border-color`,
|
|
201
|
+
`--bulma-checkbox-border-width`, `--bulma-checkbox-check-color`,
|
|
202
|
+
`--bulma-checkbox-focus-shadow-size`, `--bulma-checkbox-indeterminate-color`,
|
|
203
|
+
`--bulma-checkbox-label-gap`, `--bulma-checkbox-radius`, `--bulma-checkbox-size`,
|
|
204
|
+
`--bulma-checkbox-transition-duration`
|
|
205
|
+
|
|
206
|
+
### Collapse
|
|
207
|
+
|
|
208
|
+
`--bulma-collapse-border-color`, `--bulma-collapse-group-gap`, `--bulma-collapse-header-weight`,
|
|
209
|
+
`--bulma-collapse-margin-bottom`, `--bulma-collapse-radius`,
|
|
210
|
+
`--bulma-collapse-trigger-icon-margin`, `--bulma-collapse-trigger-icon-size`
|
|
211
|
+
|
|
212
|
+
### DateInput
|
|
213
|
+
|
|
214
|
+
`--bulma-dateinput-cell-color`, `--bulma-dateinput-cell-disabled-color`,
|
|
215
|
+
`--bulma-dateinput-cell-hover-bg`, `--bulma-dateinput-cell-other-month-color`,
|
|
216
|
+
`--bulma-dateinput-cell-radius`, `--bulma-dateinput-cell-selected-bg`,
|
|
217
|
+
`--bulma-dateinput-cell-selected-color`, `--bulma-dateinput-cell-size`,
|
|
218
|
+
`--bulma-dateinput-cell-today-color`, `--bulma-dateinput-day-name-color`,
|
|
219
|
+
`--bulma-dateinput-day-name-size`, `--bulma-dateinput-header-padding`,
|
|
220
|
+
`--bulma-dateinput-min-width`, `--bulma-dateinput-nav-button-size`
|
|
221
|
+
|
|
222
|
+
### DateTimeInput
|
|
223
|
+
|
|
224
|
+
`--bulma-datetimeinput-gap`, `--bulma-datetimeinput-time-card-background`,
|
|
225
|
+
`--bulma-datetimeinput-time-card-border-color`, `--bulma-datetimeinput-time-card-padding`,
|
|
226
|
+
`--bulma-datetimeinput-time-card-radius`, `--bulma-datetimeinput-time-card-shadow`,
|
|
227
|
+
`--bulma-datetimeinput-time-overlay-background`, `--bulma-datetimeinput-time-overlay-blur`
|
|
228
|
+
|
|
229
|
+
### Dialog
|
|
230
|
+
|
|
231
|
+
`--bulma-dialog-animation-duration`, `--bulma-dialog-background`, `--bulma-dialog-body-color`,
|
|
232
|
+
`--bulma-dialog-body-line-height`, `--bulma-dialog-body-padding`, `--bulma-dialog-border-color`,
|
|
233
|
+
`--bulma-dialog-footer-gap`, `--bulma-dialog-footer-padding`, `--bulma-dialog-header-padding`,
|
|
234
|
+
`--bulma-dialog-icon-margin`, `--bulma-dialog-icon-size`, `--bulma-dialog-max-width`,
|
|
235
|
+
`--bulma-dialog-radius`, `--bulma-dialog-shadow`, `--bulma-dialog-title-color`,
|
|
236
|
+
`--bulma-dialog-title-size`, `--bulma-dialog-title-weight`, `--bulma-dialog-width`
|
|
237
|
+
|
|
238
|
+
### LinkButton
|
|
239
|
+
|
|
240
|
+
`--bulma-link-button-ghost-color`, `--bulma-link-button-ghost-hover-color`,
|
|
241
|
+
`--bulma-link-button-transition-duration`, `--bulma-link-button-underline-offset`
|
|
242
|
+
|
|
243
|
+
### Loading
|
|
244
|
+
|
|
245
|
+
`--bulma-loading-animation-duration`, `--bulma-loading-cancel-background`,
|
|
246
|
+
`--bulma-loading-cancel-border-color`, `--bulma-loading-cancel-color`,
|
|
247
|
+
`--bulma-loading-cancel-hover-border-color`, `--bulma-loading-cancel-hover-color`,
|
|
248
|
+
`--bulma-loading-cancel-radius`, `--bulma-loading-cancel-size`, `--bulma-loading-content-gap`,
|
|
249
|
+
`--bulma-loading-icon-border-width`, `--bulma-loading-icon-border-width-large`,
|
|
250
|
+
`--bulma-loading-icon-border-width-medium`, `--bulma-loading-icon-border-width-small`,
|
|
251
|
+
`--bulma-loading-icon-size`, `--bulma-loading-icon-size-large`,
|
|
252
|
+
`--bulma-loading-icon-size-medium`, `--bulma-loading-icon-size-small`,
|
|
253
|
+
`--bulma-loading-icon-spin-color`, `--bulma-loading-overlay-background`,
|
|
254
|
+
`--bulma-loading-overlay-fullpage-opacity`, `--bulma-loading-overlay-opacity`,
|
|
255
|
+
`--bulma-loading-overlay-opacity-dark`, `--bulma-loading-overlay-opacity-light`,
|
|
256
|
+
`--bulma-loading-overlay-opacity-opaque`, `--bulma-loading-text-color`,
|
|
257
|
+
`--bulma-loading-text-size`
|
|
258
|
+
|
|
259
|
+
### Numberinput
|
|
260
|
+
|
|
261
|
+
`--bulma-numberinput-disabled-opacity`, `--bulma-numberinput-rounded-button-size`,
|
|
262
|
+
`--bulma-numberinput-stepper-border-color`, `--bulma-numberinput-stepper-button-color`,
|
|
263
|
+
`--bulma-numberinput-stepper-button-hover-bg`, `--bulma-numberinput-stepper-button-hover-color`,
|
|
264
|
+
`--bulma-numberinput-stepper-width`
|
|
265
|
+
|
|
266
|
+
### Picker popover (DateInput / TimeInput / DateTimeInput)
|
|
267
|
+
|
|
268
|
+
`--bulma-picker-popover-animation-duration`, `--bulma-picker-popover-background`,
|
|
269
|
+
`--bulma-picker-popover-border-color`, `--bulma-picker-popover-offset`,
|
|
270
|
+
`--bulma-picker-popover-padding`, `--bulma-picker-popover-radius`,
|
|
271
|
+
`--bulma-picker-popover-shadow`, `--bulma-picker-popover-z-index`,
|
|
272
|
+
`--bulma-picker-trigger-color`, `--bulma-picker-trigger-hover-color`,
|
|
273
|
+
`--bulma-picker-trigger-width`
|
|
274
|
+
|
|
275
|
+
### Radio
|
|
276
|
+
|
|
277
|
+
`--bulma-radio-active-color`, `--bulma-radio-background`, `--bulma-radio-border-color`,
|
|
278
|
+
`--bulma-radio-border-width`, `--bulma-radio-dot-color`, `--bulma-radio-focus-shadow-size`,
|
|
279
|
+
`--bulma-radio-label-gap`, `--bulma-radio-size`, `--bulma-radio-transition-duration`
|
|
280
|
+
|
|
281
|
+
### Rate
|
|
282
|
+
|
|
283
|
+
`--bulma-rate-color-active`, `--bulma-rate-color-hover`, `--bulma-rate-color-inactive`,
|
|
284
|
+
`--bulma-rate-disabled-opacity`, `--bulma-rate-font-icon-size`,
|
|
285
|
+
`--bulma-rate-font-icon-size-large`, `--bulma-rate-font-icon-size-medium`,
|
|
286
|
+
`--bulma-rate-font-icon-size-small`, `--bulma-rate-gap`, `--bulma-rate-icon-size`,
|
|
287
|
+
`--bulma-rate-icon-size-large`, `--bulma-rate-icon-size-medium`, `--bulma-rate-icon-size-small`,
|
|
288
|
+
`--bulma-rate-pop-scale`, `--bulma-rate-score-color`, `--bulma-rate-score-weight`,
|
|
289
|
+
`--bulma-rate-spaced-gap`, `--bulma-rate-text-color`, `--bulma-rate-text-size`,
|
|
290
|
+
`--bulma-rate-transition-duration`
|
|
291
|
+
|
|
292
|
+
### Reveal
|
|
293
|
+
|
|
294
|
+
`--bulma-reveal-duration`, `--bulma-reveal-easing`, `--bulma-reveal-flip-angle`,
|
|
295
|
+
`--bulma-reveal-offset`, `--bulma-reveal-offset-large`, `--bulma-reveal-scale`
|
|
296
|
+
|
|
297
|
+
### Sidebar
|
|
298
|
+
|
|
299
|
+
`--bulma-sidebar-background`, `--bulma-sidebar-close-color`,
|
|
300
|
+
`--bulma-sidebar-close-hover-background`, `--bulma-sidebar-close-line-width`,
|
|
301
|
+
`--bulma-sidebar-close-radius`, `--bulma-sidebar-close-size`, `--bulma-sidebar-content-padding`,
|
|
302
|
+
`--bulma-sidebar-footer-border-color`, `--bulma-sidebar-footer-margin-top`,
|
|
303
|
+
`--bulma-sidebar-footer-padding`, `--bulma-sidebar-header-border-color`,
|
|
304
|
+
`--bulma-sidebar-header-margin-bottom`, `--bulma-sidebar-header-padding`,
|
|
305
|
+
`--bulma-sidebar-menu-item-active-background`, `--bulma-sidebar-menu-item-active-color`,
|
|
306
|
+
`--bulma-sidebar-menu-item-hover-background`, `--bulma-sidebar-menu-item-padding`,
|
|
307
|
+
`--bulma-sidebar-menu-item-radius`, `--bulma-sidebar-overlay-background`,
|
|
308
|
+
`--bulma-sidebar-scrollbar-color`, `--bulma-sidebar-scrollbar-color-hover`,
|
|
309
|
+
`--bulma-sidebar-scrollbar-width`, `--bulma-sidebar-shadow`,
|
|
310
|
+
`--bulma-sidebar-static-border-color`, `--bulma-sidebar-title-color`,
|
|
311
|
+
`--bulma-sidebar-title-size`, `--bulma-sidebar-title-weight`,
|
|
312
|
+
`--bulma-sidebar-transition-duration`, `--bulma-sidebar-width`
|
|
313
|
+
|
|
314
|
+
### Slider
|
|
315
|
+
|
|
316
|
+
`--bulma-slider-disabled-opacity`, `--bulma-slider-fill-color`,
|
|
317
|
+
`--bulma-slider-output-background`, `--bulma-slider-output-color`,
|
|
318
|
+
`--bulma-slider-output-font-size`, `--bulma-slider-output-font-weight`, `--bulma-slider-radius`,
|
|
319
|
+
`--bulma-slider-thumb-border`, `--bulma-slider-thumb-color`, `--bulma-slider-thumb-shadow`,
|
|
320
|
+
`--bulma-slider-thumb-size`, `--bulma-slider-thumb-size-large`,
|
|
321
|
+
`--bulma-slider-thumb-size-medium`, `--bulma-slider-thumb-size-small`,
|
|
322
|
+
`--bulma-slider-tick-color`, `--bulma-slider-tick-height`, `--bulma-slider-tick-label-color`,
|
|
323
|
+
`--bulma-slider-tick-label-font-size`, `--bulma-slider-tick-opacity`,
|
|
324
|
+
`--bulma-slider-tick-width`, `--bulma-slider-track-color`, `--bulma-slider-track-height`,
|
|
325
|
+
`--bulma-slider-track-height-large`, `--bulma-slider-track-height-medium`,
|
|
326
|
+
`--bulma-slider-track-height-small`, `--bulma-slider-transition-duration`,
|
|
327
|
+
`--bulma-slider-vertical-height`
|
|
328
|
+
|
|
329
|
+
### Steps
|
|
330
|
+
|
|
331
|
+
`--bulma-steps-animation-duration`, `--bulma-steps-content-margin-top`,
|
|
332
|
+
`--bulma-steps-default-color`, `--bulma-steps-divider-height`, `--bulma-steps-marker-background`,
|
|
333
|
+
`--bulma-steps-marker-font-size`, `--bulma-steps-marker-font-weight`,
|
|
334
|
+
`--bulma-steps-marker-size`, `--bulma-steps-marker-size-large`,
|
|
335
|
+
`--bulma-steps-marker-size-medium`, `--bulma-steps-marker-size-small`,
|
|
336
|
+
`--bulma-steps-navigation-margin-top`, `--bulma-steps-title-active-color`,
|
|
337
|
+
`--bulma-steps-title-active-weight`, `--bulma-steps-title-color`, `--bulma-steps-title-size`,
|
|
338
|
+
`--bulma-steps-title-weight`, `--bulma-steps-vertical-content-margin-left`,
|
|
339
|
+
`--bulma-steps-vertical-padding`
|
|
340
|
+
|
|
341
|
+
### Switch
|
|
342
|
+
|
|
343
|
+
`--bulma-switch-active-color`, `--bulma-switch-background`, `--bulma-switch-border-width`,
|
|
344
|
+
`--bulma-switch-circle-color`, `--bulma-switch-circle-shadow`, `--bulma-switch-focus-shadow`,
|
|
345
|
+
`--bulma-switch-height`, `--bulma-switch-label-gap`, `--bulma-switch-padding`,
|
|
346
|
+
`--bulma-switch-radius`, `--bulma-switch-thin-circle-size`, `--bulma-switch-thin-height`,
|
|
347
|
+
`--bulma-switch-transition-duration`, `--bulma-switch-width`
|
|
348
|
+
|
|
349
|
+
### Tabs
|
|
350
|
+
|
|
351
|
+
`--bulma-tabs-content-padding`, `--bulma-tabs-vertical-border-color`,
|
|
352
|
+
`--bulma-tabs-vertical-border-width`, `--bulma-tabs-vertical-min-width`
|
|
353
|
+
|
|
354
|
+
### Taginput
|
|
355
|
+
|
|
356
|
+
`--bulma-taginput-background`, `--bulma-taginput-border-color`, `--bulma-taginput-border-radius`,
|
|
357
|
+
`--bulma-taginput-dropdown-max-height`, `--bulma-taginput-height`, `--bulma-taginput-min-height`,
|
|
358
|
+
`--bulma-taginput-padding`, `--bulma-taginput-tag-gap`, `--bulma-taginput-transition-duration`
|
|
359
|
+
|
|
360
|
+
### TimeInput
|
|
361
|
+
|
|
362
|
+
`--bulma-timeinput-footer-padding`, `--bulma-timeinput-separator-color`,
|
|
363
|
+
`--bulma-timeinput-separator-size`, `--bulma-timeinput-wheel-bg`,
|
|
364
|
+
`--bulma-timeinput-wheel-color`, `--bulma-timeinput-wheel-dim-color`,
|
|
365
|
+
`--bulma-timeinput-wheel-gap`, `--bulma-timeinput-wheel-hover-bg`,
|
|
366
|
+
`--bulma-timeinput-wheel-item-height`, `--bulma-timeinput-wheel-mask`,
|
|
367
|
+
`--bulma-timeinput-wheel-radius`, `--bulma-timeinput-wheel-selected-bg`,
|
|
368
|
+
`--bulma-timeinput-wheel-selected-color`, `--bulma-timeinput-wheel-width`
|
|
369
|
+
|
|
370
|
+
### Toast
|
|
371
|
+
|
|
372
|
+
`--bulma-toast-action-hover-opacity`, `--bulma-toast-action-radius`,
|
|
373
|
+
`--bulma-toast-action-weight`, `--bulma-toast-animation-duration`, `--bulma-toast-background`,
|
|
374
|
+
`--bulma-toast-color`, `--bulma-toast-gap`, `--bulma-toast-max-width`,
|
|
375
|
+
`--bulma-toast-message-size`, `--bulma-toast-min-width`, `--bulma-toast-padding`,
|
|
376
|
+
`--bulma-toast-radius`, `--bulma-toast-shadow`
|
|
377
|
+
|
|
378
|
+
### Tooltip
|
|
379
|
+
|
|
380
|
+
`--bulma-tooltip-arrow-margin`, `--bulma-tooltip-arrow-size`, `--bulma-tooltip-background`,
|
|
381
|
+
`--bulma-tooltip-color`, `--bulma-tooltip-dashed-color`, `--bulma-tooltip-font-size`,
|
|
382
|
+
`--bulma-tooltip-font-weight`, `--bulma-tooltip-line-height`, `--bulma-tooltip-max-width`,
|
|
383
|
+
`--bulma-tooltip-multiline-width`, `--bulma-tooltip-padding`, `--bulma-tooltip-radius`,
|
|
384
|
+
`--bulma-tooltip-z-index`
|
|
385
|
+
|
|
386
|
+
## Dark mode (`Theme colorMode`)
|
|
387
|
+
|
|
388
|
+
Drive the light/dark scheme with the `Theme` component's **`colorMode`** prop —
|
|
389
|
+
`'light' | 'dark' | 'system'`:
|
|
390
|
+
|
|
391
|
+
```tsx
|
|
392
|
+
<Theme isRoot colorMode={mode}>
|
|
393
|
+
<App />
|
|
394
|
+
</Theme>
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
`colorMode` writes Bulma's **`data-theme`** attribute on `<html>`, so it is always **global** (even
|
|
398
|
+
on a scoped `Theme`). `'system'` removes the attribute, so Bulma falls back to the OS
|
|
399
|
+
`@media (prefers-color-scheme: dark)`. Omitting `colorMode` leaves the current setting untouched.
|
|
400
|
+
|
|
401
|
+
Under the hood this is Bulma 1.x's own mechanism — `[data-theme="dark"]` / `.theme-dark` selectors
|
|
402
|
+
(plus the `prefers-color-scheme` media query). Setting the attribute by hand still works
|
|
403
|
+
(`document.documentElement.setAttribute('data-theme', 'dark')`); `colorMode` just does it for you.
|
|
404
|
+
|
|
405
|
+
Under dark mode Bulma flips the scheme/text/border/background lightness variables (e.g.
|
|
406
|
+
`--bulma-scheme-main-l` 100% → 9%, `--bulma-text-l` 29% → 71%). Your brand color overrides from
|
|
407
|
+
`Theme isRoot` or `:root` still apply on top, because they set the hue/saturation/lightness
|
|
408
|
+
channels directly.
|
|
409
|
+
|
|
410
|
+
### The single-mode contrast trap
|
|
411
|
+
|
|
412
|
+
Because the OS preference applies whenever no `data-theme` attribute is set — the default state
|
|
413
|
+
of every app that never configured `colorMode` — a light-only design silently breaks for any
|
|
414
|
+
dark-mode visitor: Bulma's text goes near-white while author-defined fixed tokens stay light —
|
|
415
|
+
white text on cream. The failure is invisible unless the author's own OS is in dark mode.
|
|
416
|
+
|
|
417
|
+
**If the design is single-mode, pin the scheme** so text can't flip out from under the palette:
|
|
418
|
+
|
|
419
|
+
```tsx
|
|
420
|
+
<Theme isRoot colorMode="light">
|
|
421
|
+
<App />
|
|
422
|
+
</Theme>
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
**If both modes are supported, never expose a fixed custom token to the flip** — derive it from
|
|
426
|
+
scheme variables, or flip it yourself:
|
|
427
|
+
|
|
428
|
+
```css
|
|
429
|
+
/* Preferred: track the scheme automatically. */
|
|
430
|
+
:root {
|
|
431
|
+
--my-canvas: var(--bulma-scheme-main);
|
|
432
|
+
--my-ink: var(--bulma-text);
|
|
433
|
+
}
|
|
434
|
+
/* Or, when custom values must be kept, provide the dark pair for BOTH
|
|
435
|
+
ways dark mode arrives — the explicit attribute (colorMode="dark")… */
|
|
436
|
+
[data-theme='dark'] {
|
|
437
|
+
--my-canvas: #14251b;
|
|
438
|
+
--my-ink: #eef3e7;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/* …and the OS preference, which applies when no data-theme is set
|
|
442
|
+
(colorMode="system" removes the attribute): */
|
|
443
|
+
@media (prefers-color-scheme: dark) {
|
|
444
|
+
:root:not([data-theme]) {
|
|
445
|
+
--my-canvas: #14251b;
|
|
446
|
+
--my-ink: #eef3e7;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
Deriving from scheme variables is preferred precisely because it covers both dark-mode paths
|
|
452
|
+
with no extra selector.
|
|
453
|
+
|
|
454
|
+
The same reasoning applies to **fixed-color surfaces** inside either kind of page (a dark hero,
|
|
455
|
+
a brand banner): content sitting on a surface that never flips must use pinned colors — filled
|
|
456
|
+
buttons and explicit text colors — not scheme-derived defaults (see the layout skill's hero CTA
|
|
457
|
+
rule).
|
|
458
|
+
|
|
459
|
+
## `Theme` props (named)
|
|
460
|
+
|
|
461
|
+
Color trios: `primaryH/primaryS/primaryL`, `linkH/linkS/linkL`, `infoH/S/L`, `successH/S/L`,
|
|
462
|
+
`warningH/S/L`, `dangerH/S/L`. Scheme: `schemeH`, `schemeS`, `lightL`, `darkL`, `lightInvertL`,
|
|
463
|
+
`darkInvertL`, `softL`, `boldL`, `softInvertL`, `boldInvertL`. Interaction deltas:
|
|
464
|
+
`hoverBackgroundLDelta`, `activeBackgroundLDelta`, `hoverBorderLDelta`, `activeBorderLDelta`,
|
|
465
|
+
`hoverColorLDelta`, `activeColorLDelta`, `hoverShadowADelta`, `activeShadowADelta`. Everything else:
|
|
466
|
+
`bulmaVars={{ '--bulma-…': '…' }}`. All values are strings.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Themeable component props
|
|
2
|
+
|
|
3
|
+
This is the self-contained inventory of the color/size/variant props that matter for theming in
|
|
4
|
+
`@allxsmith/bestax-bulma`. All values are source-verified. Components import from the package root:
|
|
5
|
+
`import { Button, Notification, Tag, Box, Message, Input, Title, SubTitle } from '@allxsmith/bestax-bulma'`.
|
|
6
|
+
|
|
7
|
+
## Two kinds of color props
|
|
8
|
+
|
|
9
|
+
1. **Component `color` modifier** → emits `is-<color>` (the filled Bulma variant). The accepted
|
|
10
|
+
values are component-specific (see the table). Example: `<Button color="primary">` → `is-primary`.
|
|
11
|
+
⚠️ Some unions are **typed wider than the CSS Bulma ships** — the class is emitted but no rule
|
|
12
|
+
matches. No component ships `is-grey*`/`is-*-bis`/`is-*-ter` rules at all: those `validColors`
|
|
13
|
+
members still typecheck on `Progress`/`Notification`/`Hero` but style nothing. They are
|
|
14
|
+
**deprecated**: passing one logs a console warning in development, and they will be removed
|
|
15
|
+
from those unions in the next major (the `has-text-*`/`has-background-*` **helpers** do cover
|
|
16
|
+
all 17). On the `Hero` root, `inherit` and `current` are equally CSS-less and deprecated
|
|
17
|
+
(its `Head`/`Body`/`Foot` sub-components keep them, as text helpers). `Pagination` and
|
|
18
|
+
`Tabs` ship no color CSS for **any** value — their entire `color`
|
|
19
|
+
prop is deprecated. Before relying on an unusual value, grep the shipped CSS:
|
|
20
|
+
`node_modules/@allxsmith/bestax-bulma/dist/bestax.css` for e.g. `.progress.is-grey`.
|
|
21
|
+
2. **Helper color props** (on most components, applied as utility classes):
|
|
22
|
+
- `color` / `textColor` → `has-text-<color>` (text color)
|
|
23
|
+
- `backgroundColor` / `bgColor` → `has-background-<color>` (background)
|
|
24
|
+
- `colorShade` / `backgroundColorShade` → adds a shade suffix, e.g. `has-text-primary-30`
|
|
25
|
+
|
|
26
|
+
Components with a real `is-<color>` modifier (`Button`, `Hero`) drop the `color` helper and
|
|
27
|
+
re-expose it as **`textColor`** / **`bgColor`**. `Box`/`Card`/`Section` ship no `is-<color>`
|
|
28
|
+
rule — their `color` _is_ the text helper (`has-text-<color>`; narrowed to the 6 on
|
|
29
|
+
`Box`/`Card`), so `color` and `textColor` are the same lever there (prefer `textColor`; it
|
|
30
|
+
takes precedence when both are set). `Tag` and `Td`/`Th` have
|
|
31
|
+
**no text-color prop** — wrap content in `<Span textColor="…">`. `Input` has none either and
|
|
32
|
+
the wrapper trick can't work (it renders a native `<input>`; a child can't color its value):
|
|
33
|
+
recolor via the upstream `--bulma-text-strong-l`, since Bulma re-declares `--bulma-input-*` on
|
|
34
|
+
`.input` itself and an ancestor `<Theme>` can't reach those. Raw `backgroundColor` still works
|
|
35
|
+
on `Tag` and `Input`.
|
|
36
|
+
|
|
37
|
+
`<color>` for the helper props is one of **`validColors`**:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
primary, link, info, success, warning, danger,
|
|
41
|
+
black, black-bis, black-ter, grey-darker, grey-dark, grey, grey-light, grey-lighter,
|
|
42
|
+
white, light, dark
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Shades (`colorShade` / `backgroundColorShade`): `00, 05, 10, … 95, invert, light, dark, soft, bold, on-scheme`.
|
|
46
|
+
|
|
47
|
+
## Component `color` / `size` props (verbatim unions)
|
|
48
|
+
|
|
49
|
+
| Component | `color` accepts | `size` accepts | Notes |
|
|
50
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| `Button` | `primary \| link \| info \| success \| warning \| danger \| white \| light \| dark \| black \| text \| ghost` | `small \| normal \| medium \| large` | adds `text`, `ghost`; also `isLight`, `isOutlined`, `isInverted`, `isRounded` |
|
|
52
|
+
| `Notification` | the 17 `validColors` (`black-bis`, `black-ter`, and greys deprecated: no CSS, dev-warn, removed next major — see ⚠️) | — | also `isLight` |
|
|
53
|
+
| `Tag` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `normal \| medium \| large` | also `isRounded`, `isDelete`, `isHoverable` — **no `isLight`** |
|
|
54
|
+
| `Box` | `primary \| link \| info \| success \| warning \| danger` | — | `color` renders `has-text-<color>`, same as `textColor` (which wins when both are set; no `.box.is-*` ships — tint via `bgColor`); also `hasShadow` |
|
|
55
|
+
| `Message` | `primary \| link \| info \| success \| warning \| danger` | — | the 6 only |
|
|
56
|
+
| `Input` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | also `isRounded`, `isStatic` |
|
|
57
|
+
| `Avatar` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `16x16 \| 24x24 \| 32x32 \| 48x48 \| 64x64 \| 96x96 \| 128x128 \| number` | initials/icon background (auto-derived from `name` when unset); also `shape` |
|
|
58
|
+
| `Badge` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | — | pill background; default `danger` |
|
|
59
|
+
| `Title` | — (no `color`; use `textColor`) | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | also `isSpaced` |
|
|
60
|
+
| `SubTitle` | — (no `color`; use `textColor`) | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | — |
|
|
61
|
+
| `Autocomplete` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | the 6 only |
|
|
62
|
+
| `Checkbox` | `primary \| link \| info \| success \| warning \| danger` | `small \| normal \| medium \| large` | the 6 only |
|
|
63
|
+
| `DateInput` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | also `isRounded` |
|
|
64
|
+
| `DateTimeInput` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | also `isRounded` |
|
|
65
|
+
| `File` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | also `isBoxed`, `isFullwidth` |
|
|
66
|
+
| `Hero` | the 17 `validColors` + `inherit`/`current` (`black-bis`, `black-ter`, greys, `inherit`, `current` deprecated: no CSS, dev-warn, removed next major — see ⚠️) | `small \| medium \| large \| fullheight \| fullheight-with-navbar` | section background |
|
|
67
|
+
| `LinkButton` | `primary \| link \| info \| success \| warning \| danger \| white \| light \| dark \| black` | — | button-styled link; emits `link-button-<color>` — **no `isLight`/`isOutlined`/`isInverted`** |
|
|
68
|
+
| `Loading` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | spinner color; default light grey |
|
|
69
|
+
| `Navbar` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | — | — |
|
|
70
|
+
| `Numberinput` | `primary \| link \| info \| success \| warning \| danger \| light \| dark` | `small \| medium \| large` | also `inputColor` (the 6) for the inner input |
|
|
71
|
+
| `Pagination` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | **entire `color` prop deprecated** (no CSS ships; dev-warn; removal next major) |
|
|
72
|
+
| `Panel` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | — | — |
|
|
73
|
+
| `Progress` | the 17 `validColors` (`black-bis`, `black-ter`, and greys deprecated: no CSS, dev-warn, removed next major — see ⚠️) | `small \| medium \| large` | — |
|
|
74
|
+
| `Radio` | `primary \| link \| info \| success \| warning \| danger` | `small \| normal \| medium \| large` | the 6 only |
|
|
75
|
+
| `Rate` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | the 6 only |
|
|
76
|
+
| `Select` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | also `isRounded` |
|
|
77
|
+
| `Slider` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | also `isRounded`, `isCircle` |
|
|
78
|
+
| `Steps` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | the 6 only |
|
|
79
|
+
| `Switch` | `primary \| link \| info \| success \| warning \| danger` | `small \| normal \| medium \| large` | also `isRounded`, `isThin`, `isOutlined` |
|
|
80
|
+
| `Tabs` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | **entire `color` prop deprecated** (no CSS ships; dev-warn; removal next major) |
|
|
81
|
+
| `Taginput` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | also `tagColor` (the 6 + `dark \| light`) for the tags |
|
|
82
|
+
| `TextArea` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | also `isRounded`, `isStatic` |
|
|
83
|
+
| `TimeInput` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | — |
|
|
84
|
+
| `Tooltip` | `primary \| link \| info \| success \| warning \| danger \| dark \| light` | `small \| medium \| large` | — |
|
|
85
|
+
| `Tr` / `Td` / `Th` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | — | cell background; cells take `textAlign`/`textWeight`/`textSize` directly |
|
|
86
|
+
|
|
87
|
+
The 6 brand colors (`primary, link, info, success, warning, danger`) are the ones a custom theme
|
|
88
|
+
recolors via the HSL trios (see `css-variables.md`). The greyscale and `white`/`light`/`dark`
|
|
89
|
+
entries follow the scheme variables.
|
|
90
|
+
|
|
91
|
+
## Typography & misc helper props (on most components)
|
|
92
|
+
|
|
93
|
+
| Prop | Accepts | Class |
|
|
94
|
+
| -------------------------------------------- | --------------------------------------------------------- | ---------------------- |
|
|
95
|
+
| `textSize` | `1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7` | `is-size-<n>` |
|
|
96
|
+
| `textWeight` | `light \| normal \| medium \| semibold \| bold` | `has-text-weight-<w>` |
|
|
97
|
+
| `fontFamily` | `sans-serif \| monospace \| primary \| secondary \| code` | `is-family-<f>` |
|
|
98
|
+
| `textAlign` | `centered \| justified \| left \| right` | `has-text-<a>` |
|
|
99
|
+
| `radius` | `radiusless` | `is-radiusless` |
|
|
100
|
+
| `shadow` | `shadowless` | `is-shadowless` |
|
|
101
|
+
| `m` / `p` (+ `mt/mr/mb/ml/mx/my`, `pt/…/py`) | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| auto` | `m-<n>` / `p-<n>` etc. |
|
|
102
|
+
|
|
103
|
+
These map to Bulma utility classes that read the same `--bulma-*` variables, so a custom theme
|
|
104
|
+
flows through them automatically.
|
|
105
|
+
|
|
106
|
+
## Pattern
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
// Brand-colored, themeable components — colors recolor with the theme's HSL trios:
|
|
110
|
+
<Button color="primary">Save</Button>
|
|
111
|
+
<Notification color="info">Heads up</Notification>
|
|
112
|
+
<Tag color="success">Active</Tag>
|
|
113
|
+
|
|
114
|
+
// Utility coloring on a component that already has its own `color`:
|
|
115
|
+
<Button color="primary" textColor="white">Save</Button>
|
|
116
|
+
|
|
117
|
+
// Shade + background:
|
|
118
|
+
<Box bgColor="primary" backgroundColorShade="05">Subtle brand surface</Box>
|
|
119
|
+
```
|