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
|
+
{
|
|
2
|
+
"name": "Rate",
|
|
3
|
+
"kind": "component",
|
|
4
|
+
"category": "form",
|
|
5
|
+
"slug": "form/rate",
|
|
6
|
+
"docsUrl": "https://bestax.io/docs/api/form/rate",
|
|
7
|
+
"examples": [
|
|
8
|
+
{
|
|
9
|
+
"title": "Basic Rating",
|
|
10
|
+
"code": "function example() {\n const [rating, setRating] = useState(3);\n return (\n <Block>\n <Rate value={rating} onChange={setRating} />\n <Paragraph mt=\"2\">Rating: {rating} stars</Paragraph>\n </Block>\n );\n}"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"title": "With Score Display",
|
|
14
|
+
"code": "function example() {\n const [rating, setRating] = useState(4);\n return <Rate value={rating} onChange={setRating} showScore />;\n}"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"title": "With Text Labels",
|
|
18
|
+
"code": "function example() {\n const [rating, setRating] = useState(3);\n return (\n <Rate\n value={rating}\n onChange={setRating}\n showText\n texts={['Poor', 'Fair', 'Average', 'Good', 'Excellent']}\n />\n );\n}"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"title": "With Score and Text",
|
|
22
|
+
"code": "function example() {\n const [rating, setRating] = useState(4);\n return (\n <Rate\n value={rating}\n onChange={setRating}\n showScore\n showText\n texts={['Terrible', 'Bad', 'OK', 'Good', 'Great']}\n />\n );\n}"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"title": "Size Variants",
|
|
26
|
+
"code": "<Block display=\"flex\" flexDirection=\"column\" gap=\"4\">\n <Rate defaultValue={3} size=\"small\" />\n <Rate defaultValue={3} />\n <Rate defaultValue={3} size=\"medium\" />\n <Rate defaultValue={3} size=\"large\" />\n</Block>"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"title": "Custom Max Value",
|
|
30
|
+
"code": "function example() {\n const [rating, setRating] = useState(7);\n return (\n <Block>\n <Rate value={rating} onChange={setRating} max={10} showScore />\n <Paragraph mt=\"2\">Rating: {rating} out of 10</Paragraph>\n </Block>\n );\n}"
|
|
31
|
+
},
|
|
32
|
+
{ "title": "Spaced Icons", "code": "<Rate defaultValue={3} spaced />" },
|
|
33
|
+
{
|
|
34
|
+
"title": "Disabled Rating",
|
|
35
|
+
"code": "<Rate value={4} disabled showScore />"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"title": "Custom Icons",
|
|
39
|
+
"code": "function example() {\n const [rating, setRating] = useState(3);\n\n const HeartIcon = ({ isActive }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill={isActive ? 'currentColor' : 'none'}\n stroke=\"currentColor\"\n strokeWidth={isActive ? 0 : 2}\n style={{ color: '#f14668' }}\n >\n <path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\" />\n </svg>\n );\n\n return (\n <Rate\n value={rating}\n onChange={setRating}\n customIcon={({ isActive }) => <HeartIcon isActive={isActive} />}\n showScore\n />\n );\n}"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"title": "Context-Aware Rendering",
|
|
43
|
+
"code": "<Rate label=\"Rating\" defaultValue={3} />"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"title": "Context-Aware Rendering",
|
|
47
|
+
"code": "function example() {\n return (\n <Field horizontal label=\"Rating\">\n <Field.Body>\n <Field>\n <Rate defaultValue={3} />\n </Field>\n </Field.Body>\n </Field>\n );\n}"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"title": "Context-Aware Rendering",
|
|
51
|
+
"code": "function example() {\n return (\n <Field horizontal label=\"Rating\">\n <Field.Body>\n <Field>\n <Control iconLeftName=\"star\">\n <Rate defaultValue={3} />\n </Control>\n </Field>\n </Field.Body>\n </Field>\n );\n}"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"accessibility": "- Uses `role=\"radiogroup\"` for the container\n- The `label` prop names the group via `aria-labelledby` (the rendered `<label>` gets an id — yours via `labelProps.id`, or a generated one); without a label the container falls back to `aria-label=\"Rating\"`\n- Each star has `role=\"radio\"` with `aria-checked`\n- Has `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`\n- Full keyboard navigation with arrow keys\n- Home/End keys jump to 0/max values",
|
|
55
|
+
"related": ["Input", "Slider"],
|
|
56
|
+
"storybook": "https://bestax.io/storybook/?path=/story/form-rate",
|
|
57
|
+
"summary": "The `Rate` component provides a star/icon-based rating system.",
|
|
58
|
+
"import": "import { Rate } from '@allxsmith/bestax-bulma';",
|
|
59
|
+
"sourceFile": "bulma-ui/src/form/Rate.tsx",
|
|
60
|
+
"rootClass": "rate",
|
|
61
|
+
"parts": [
|
|
62
|
+
{
|
|
63
|
+
"path": "Rate",
|
|
64
|
+
"summary": "The `Rate` component provides a star/icon-based rating system.",
|
|
65
|
+
"component": null,
|
|
66
|
+
"props": [
|
|
67
|
+
{
|
|
68
|
+
"name": "label",
|
|
69
|
+
"type": "React.ReactNode",
|
|
70
|
+
"default": null,
|
|
71
|
+
"description": "Field label naming the rating group. Automatically associated via `aria-labelledby` on the `role=\"radiogroup\"` container — uses your `labelProps.id` when provided, otherwise a generated one; it also replaces the default `aria-label=\"Rating\"`. Dropped inside an outer `Field` (label that `Field` yourself).",
|
|
72
|
+
"required": false,
|
|
73
|
+
"inherited": false,
|
|
74
|
+
"deprecated": false
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "labelProps",
|
|
78
|
+
"type": "React.LabelHTMLAttributes<HTMLLabelElement> & { [key: string]: unknown; }",
|
|
79
|
+
"default": null,
|
|
80
|
+
"description": "Props for the label element. An explicit `id` here is used as the `aria-labelledby` target instead of a generated one; any `htmlFor` is ignored (a group label names the group, never a single control).",
|
|
81
|
+
"required": false,
|
|
82
|
+
"inherited": false,
|
|
83
|
+
"deprecated": false
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "name",
|
|
87
|
+
"type": "string",
|
|
88
|
+
"default": null,
|
|
89
|
+
"description": "Form field name. When set, a hidden input is rendered.",
|
|
90
|
+
"required": false,
|
|
91
|
+
"inherited": false,
|
|
92
|
+
"deprecated": false
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "form",
|
|
96
|
+
"type": "string",
|
|
97
|
+
"default": null,
|
|
98
|
+
"description": "Optional id of the form this hidden input belongs to (use when the input lives outside the form element).",
|
|
99
|
+
"required": false,
|
|
100
|
+
"inherited": false,
|
|
101
|
+
"deprecated": false
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "value",
|
|
105
|
+
"type": "number",
|
|
106
|
+
"default": null,
|
|
107
|
+
"description": "Controlled value (0 to max).",
|
|
108
|
+
"required": false,
|
|
109
|
+
"inherited": false,
|
|
110
|
+
"deprecated": false
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "defaultValue",
|
|
114
|
+
"type": "number",
|
|
115
|
+
"default": "0",
|
|
116
|
+
"description": "Default value for uncontrolled usage.",
|
|
117
|
+
"required": false,
|
|
118
|
+
"inherited": false,
|
|
119
|
+
"deprecated": false
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "max",
|
|
123
|
+
"type": "number",
|
|
124
|
+
"default": "5",
|
|
125
|
+
"description": "Maximum rating value.",
|
|
126
|
+
"required": false,
|
|
127
|
+
"inherited": false,
|
|
128
|
+
"deprecated": false
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "size",
|
|
132
|
+
"type": "'small' | 'medium' | 'large'",
|
|
133
|
+
"default": null,
|
|
134
|
+
"description": "Size variant.",
|
|
135
|
+
"required": false,
|
|
136
|
+
"inherited": false,
|
|
137
|
+
"deprecated": false
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "disabled",
|
|
141
|
+
"type": "boolean",
|
|
142
|
+
"default": "false",
|
|
143
|
+
"description": "Whether the rating is disabled.",
|
|
144
|
+
"required": false,
|
|
145
|
+
"inherited": false,
|
|
146
|
+
"deprecated": false
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "showScore",
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"default": "false",
|
|
152
|
+
"description": "Show the numeric score next to stars.",
|
|
153
|
+
"required": false,
|
|
154
|
+
"inherited": false,
|
|
155
|
+
"deprecated": false
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "showText",
|
|
159
|
+
"type": "boolean",
|
|
160
|
+
"default": "false",
|
|
161
|
+
"description": "Show custom text based on value.",
|
|
162
|
+
"required": false,
|
|
163
|
+
"inherited": false,
|
|
164
|
+
"deprecated": false
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "texts",
|
|
168
|
+
"type": "string[]",
|
|
169
|
+
"default": null,
|
|
170
|
+
"description": "Array of text labels for each rating value.",
|
|
171
|
+
"required": false,
|
|
172
|
+
"inherited": false,
|
|
173
|
+
"deprecated": false
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "onChange",
|
|
177
|
+
"type": "(value: number) => void",
|
|
178
|
+
"default": null,
|
|
179
|
+
"description": "Callback when rating changes.",
|
|
180
|
+
"required": false,
|
|
181
|
+
"inherited": false,
|
|
182
|
+
"deprecated": false
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "customIcon",
|
|
186
|
+
"type": "(props: RateIconProps) => React.ReactNode",
|
|
187
|
+
"default": null,
|
|
188
|
+
"description": "Custom icon renderer.",
|
|
189
|
+
"required": false,
|
|
190
|
+
"inherited": false,
|
|
191
|
+
"deprecated": false
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "spaced",
|
|
195
|
+
"type": "boolean",
|
|
196
|
+
"default": "false",
|
|
197
|
+
"description": "Add spacing between icons.",
|
|
198
|
+
"required": false,
|
|
199
|
+
"inherited": false,
|
|
200
|
+
"deprecated": false
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"name": "rtl",
|
|
204
|
+
"type": "boolean",
|
|
205
|
+
"default": "false",
|
|
206
|
+
"description": "Right-to-left direction.",
|
|
207
|
+
"required": false,
|
|
208
|
+
"inherited": false,
|
|
209
|
+
"deprecated": false
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "iconName",
|
|
213
|
+
"type": "string",
|
|
214
|
+
"default": null,
|
|
215
|
+
"description": "Custom icon name for the rating stars.",
|
|
216
|
+
"required": false,
|
|
217
|
+
"inherited": false,
|
|
218
|
+
"deprecated": false
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "iconLibrary",
|
|
222
|
+
"type": "'fa' | 'mdi' | 'ion' | 'material-icons' | 'material-symbols'",
|
|
223
|
+
"default": null,
|
|
224
|
+
"description": "Icon library to use (defaults to ConfigProvider value or 'fa').",
|
|
225
|
+
"required": false,
|
|
226
|
+
"inherited": false,
|
|
227
|
+
"deprecated": false
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "iconVariant",
|
|
231
|
+
"type": "string",
|
|
232
|
+
"default": null,
|
|
233
|
+
"description": "Icon style variant (e.g., 'solid', 'outlined').",
|
|
234
|
+
"required": false,
|
|
235
|
+
"inherited": false,
|
|
236
|
+
"deprecated": false
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"name": "iconFeatures",
|
|
240
|
+
"type": "string | string[]",
|
|
241
|
+
"default": null,
|
|
242
|
+
"description": "Additional icon modifiers.",
|
|
243
|
+
"required": false,
|
|
244
|
+
"inherited": false,
|
|
245
|
+
"deprecated": false
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"name": "color",
|
|
249
|
+
"type": "'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'",
|
|
250
|
+
"default": null,
|
|
251
|
+
"description": "Color of the active rating icons.",
|
|
252
|
+
"required": false,
|
|
253
|
+
"inherited": false,
|
|
254
|
+
"deprecated": false
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"name": "precision",
|
|
258
|
+
"type": "number",
|
|
259
|
+
"default": "1",
|
|
260
|
+
"description": "Rating precision (e.g., `0.5` for half stars).",
|
|
261
|
+
"required": false,
|
|
262
|
+
"inherited": false,
|
|
263
|
+
"deprecated": false
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "customText",
|
|
267
|
+
"type": "string",
|
|
268
|
+
"default": null,
|
|
269
|
+
"description": "Custom text displayed next to the rating.",
|
|
270
|
+
"required": false,
|
|
271
|
+
"inherited": false,
|
|
272
|
+
"deprecated": false
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "labelSize",
|
|
276
|
+
"type": "'small' | 'normal' | 'medium' | 'large'",
|
|
277
|
+
"default": null,
|
|
278
|
+
"description": "Size for the label (used in horizontal layouts).",
|
|
279
|
+
"required": false,
|
|
280
|
+
"inherited": true,
|
|
281
|
+
"deprecated": false
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"name": "horizontal",
|
|
285
|
+
"type": "boolean",
|
|
286
|
+
"default": "false",
|
|
287
|
+
"description": "Horizontal field layout.",
|
|
288
|
+
"required": false,
|
|
289
|
+
"inherited": true,
|
|
290
|
+
"deprecated": false
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"name": "message",
|
|
294
|
+
"type": "React.ReactNode",
|
|
295
|
+
"default": null,
|
|
296
|
+
"description": "Help/validation message below the input.",
|
|
297
|
+
"required": false,
|
|
298
|
+
"inherited": true,
|
|
299
|
+
"deprecated": false
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "messageColor",
|
|
303
|
+
"type": "'primary' | 'link' | 'info' | 'success' | 'warning' | 'danger'",
|
|
304
|
+
"default": null,
|
|
305
|
+
"description": "Bulma color for the message.",
|
|
306
|
+
"required": false,
|
|
307
|
+
"inherited": true,
|
|
308
|
+
"deprecated": false
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "fieldClassName",
|
|
312
|
+
"type": "string",
|
|
313
|
+
"default": null,
|
|
314
|
+
"description": "Additional CSS classes for the Field wrapper.",
|
|
315
|
+
"required": false,
|
|
316
|
+
"inherited": true,
|
|
317
|
+
"deprecated": false
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
"extraProps": [
|
|
321
|
+
{
|
|
322
|
+
"name": "className",
|
|
323
|
+
"type": "string",
|
|
324
|
+
"default": null,
|
|
325
|
+
"description": "Additional CSS classes.",
|
|
326
|
+
"required": false,
|
|
327
|
+
"inherited": false,
|
|
328
|
+
"deprecated": false
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"name": "ref",
|
|
332
|
+
"type": "React.Ref<HTMLElement>",
|
|
333
|
+
"default": null,
|
|
334
|
+
"description": "Ref forwarded to the container element.",
|
|
335
|
+
"required": false,
|
|
336
|
+
"inherited": false,
|
|
337
|
+
"deprecated": false
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"catchAll": "All standard <div> attributes and Bulma helper props",
|
|
341
|
+
"types": []
|
|
342
|
+
}
|
|
343
|
+
],
|
|
344
|
+
"cssVars": [
|
|
345
|
+
{
|
|
346
|
+
"css": "--bulma-rate-color-inactive",
|
|
347
|
+
"sass": "$rate-color-inactive",
|
|
348
|
+
"default": "var(--bulma-grey-light)",
|
|
349
|
+
"scope": "component"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"css": "--bulma-rate-color-active",
|
|
353
|
+
"sass": "$rate-color-active",
|
|
354
|
+
"default": "hsl(48, 100%, 50%)",
|
|
355
|
+
"scope": "component"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"css": "--bulma-rate-color-hover",
|
|
359
|
+
"sass": "$rate-color-hover",
|
|
360
|
+
"default": "hsl(48, 100%, 67%)",
|
|
361
|
+
"scope": "component"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"css": "--bulma-rate-icon-size",
|
|
365
|
+
"sass": "$rate-icon-size",
|
|
366
|
+
"default": "1.5em",
|
|
367
|
+
"scope": "component"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"css": "--bulma-rate-icon-size-small",
|
|
371
|
+
"sass": "$rate-icon-size-small",
|
|
372
|
+
"default": "1em",
|
|
373
|
+
"scope": "component"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"css": "--bulma-rate-icon-size-medium",
|
|
377
|
+
"sass": "$rate-icon-size-medium",
|
|
378
|
+
"default": "2em",
|
|
379
|
+
"scope": "component"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"css": "--bulma-rate-icon-size-large",
|
|
383
|
+
"sass": "$rate-icon-size-large",
|
|
384
|
+
"default": "2.5em",
|
|
385
|
+
"scope": "component"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"css": "--bulma-rate-font-icon-size",
|
|
389
|
+
"sass": "$rate-font-icon-size",
|
|
390
|
+
"default": "1.35em",
|
|
391
|
+
"scope": "component"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"css": "--bulma-rate-font-icon-size-small",
|
|
395
|
+
"sass": "$rate-font-icon-size-small",
|
|
396
|
+
"default": "0.9em",
|
|
397
|
+
"scope": "component"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"css": "--bulma-rate-font-icon-size-medium",
|
|
401
|
+
"sass": "$rate-font-icon-size-medium",
|
|
402
|
+
"default": "1.8em",
|
|
403
|
+
"scope": "component"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"css": "--bulma-rate-font-icon-size-large",
|
|
407
|
+
"sass": "$rate-font-icon-size-large",
|
|
408
|
+
"default": "2.25em",
|
|
409
|
+
"scope": "component"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"css": "--bulma-rate-gap",
|
|
413
|
+
"sass": "$rate-gap",
|
|
414
|
+
"default": "0.5rem",
|
|
415
|
+
"scope": "component"
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"css": "--bulma-rate-spaced-gap",
|
|
419
|
+
"sass": "$rate-spaced-gap",
|
|
420
|
+
"default": "0.25rem",
|
|
421
|
+
"scope": "component"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"css": "--bulma-rate-score-weight",
|
|
425
|
+
"sass": "$rate-score-weight",
|
|
426
|
+
"default": "600",
|
|
427
|
+
"scope": "component"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"css": "--bulma-rate-score-color",
|
|
431
|
+
"sass": "$rate-score-color",
|
|
432
|
+
"default": "var(--bulma-text-strong)",
|
|
433
|
+
"scope": "component"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"css": "--bulma-rate-text-color",
|
|
437
|
+
"sass": "$rate-text-color",
|
|
438
|
+
"default": "var(--bulma-text)",
|
|
439
|
+
"scope": "component"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"css": "--bulma-rate-text-size",
|
|
443
|
+
"sass": "$rate-text-size",
|
|
444
|
+
"default": "0.875em",
|
|
445
|
+
"scope": "component"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"css": "--bulma-rate-transition-duration",
|
|
449
|
+
"sass": "$rate-transition-duration",
|
|
450
|
+
"default": "var(--bulma-duration)",
|
|
451
|
+
"scope": "component"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"css": "--bulma-rate-disabled-opacity",
|
|
455
|
+
"sass": "$rate-disabled-opacity",
|
|
456
|
+
"default": "0.5",
|
|
457
|
+
"scope": "component"
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"css": "--bulma-rate-pop-scale",
|
|
461
|
+
"sass": "$rate-pop-scale",
|
|
462
|
+
"default": "1.2",
|
|
463
|
+
"scope": "component"
|
|
464
|
+
}
|
|
465
|
+
]
|
|
466
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Reveal",
|
|
3
|
+
"kind": "component",
|
|
4
|
+
"category": "components",
|
|
5
|
+
"slug": "components/reveal",
|
|
6
|
+
"docsUrl": "https://bestax.io/docs/api/components/reveal",
|
|
7
|
+
"examples": [
|
|
8
|
+
{
|
|
9
|
+
"title": "Basic Reveal",
|
|
10
|
+
"code": "function example() {\n return (\n <Reveal animation=\"fade-up\">\n <Box>\n <Title size=\"4\">Why bestax</Title>\n <Content>This box fades up into view once it's on screen.</Content>\n </Box>\n </Reveal>\n );\n}"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"title": "Rendering as a different element",
|
|
14
|
+
"code": "function example() {\n return (\n <Reveal animation=\"fade-up\" as={Section}>\n <Title size=\"3\">Why Grass Doctor</Title>\n <Content>Rendered as a `Section` instead of the default `div`.</Content>\n </Reveal>\n );\n}"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"title": "Animation styles",
|
|
18
|
+
"code": "function example() {\n return (\n <Columns isMultiline>\n <Column size=\"one-third\">\n <Reveal animation=\"zoom\">\n <Box>\n <Title size=\"5\">zoom</Title>\n </Box>\n </Reveal>\n </Column>\n <Column size=\"one-third\">\n <Reveal animation=\"flip\">\n <Box>\n <Title size=\"5\">flip</Title>\n </Box>\n </Reveal>\n </Column>\n <Column size=\"one-third\">\n <Reveal animation=\"slide-left\">\n <Box>\n <Title size=\"5\">slide-left</Title>\n </Box>\n </Reveal>\n </Column>\n </Columns>\n );\n}"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"title": "Staggered (cascade) children",
|
|
22
|
+
"code": "function example() {\n return (\n <Reveal\n animation=\"fade-up\"\n cascade\n cascadeInterval={100}\n display=\"flex\"\n flexWrap=\"wrap\"\n >\n {['Fast', 'Accessible', 'Themeable'].map(feature => (\n <Card key={feature} flexGrow=\"1\" flexShrink=\"1\" m=\"2\">\n <Card.Content>\n <Title size=\"5\">{feature}</Title>\n </Card.Content>\n </Card>\n ))}\n </Reveal>\n );\n}"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"title": "Re-animating on every entry",
|
|
26
|
+
"code": "function example() {\n return (\n <Reveal animation=\"fade\" once={false}>\n <Notification color=\"info\">\n Scroll me out of view and back in to see this animate again.\n </Notification>\n </Reveal>\n );\n}"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"accessibility": "- `Reveal` never removes content from the accessibility tree — it only animates `opacity` and\n `transform`, so screen reader users always have access to the content regardless of scroll\n position.\n- When the user's OS is set to reduce motion (`prefers-reduced-motion: reduce`), `Reveal` skips\n the animation entirely and renders the final, visible state immediately.\n- During server-side rendering and the first client render (before hydration effects run),\n `Reveal` renders the final, visible state — content is never hidden if JavaScript fails to\n load, ensuring crawlers and no-JS visitors always see the full page.",
|
|
30
|
+
"related": [],
|
|
31
|
+
"storybook": null,
|
|
32
|
+
"summary": "The `Reveal` component animates its content into view as it scrolls into the viewport, backed by `IntersectionObserver`.",
|
|
33
|
+
"import": "import { Reveal } from '@allxsmith/bestax-bulma';",
|
|
34
|
+
"sourceFile": "bulma-ui/src/components/Reveal.tsx",
|
|
35
|
+
"rootClass": "reveal",
|
|
36
|
+
"parts": [
|
|
37
|
+
{
|
|
38
|
+
"path": "Reveal",
|
|
39
|
+
"summary": "The `Reveal` component animates its content into view as it scrolls into the viewport, backed by `IntersectionObserver`.",
|
|
40
|
+
"component": null,
|
|
41
|
+
"props": [
|
|
42
|
+
{
|
|
43
|
+
"name": "animation",
|
|
44
|
+
"type": "'fade' | 'fade-up' | 'fade-down' | 'slide-left' | 'slide-right' | 'zoom' | 'flip'",
|
|
45
|
+
"default": "'fade-up'",
|
|
46
|
+
"description": "Animation style applied when the element enters the viewport.",
|
|
47
|
+
"required": false,
|
|
48
|
+
"inherited": false,
|
|
49
|
+
"deprecated": false
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "delay",
|
|
53
|
+
"type": "number",
|
|
54
|
+
"default": "0",
|
|
55
|
+
"description": "Delay in milliseconds before the animation starts. Default: 0.",
|
|
56
|
+
"required": false,
|
|
57
|
+
"inherited": false,
|
|
58
|
+
"deprecated": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "duration",
|
|
62
|
+
"type": "number",
|
|
63
|
+
"default": "600",
|
|
64
|
+
"description": "Animation duration in milliseconds. Default: 600.",
|
|
65
|
+
"required": false,
|
|
66
|
+
"inherited": false,
|
|
67
|
+
"deprecated": false
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "threshold",
|
|
71
|
+
"type": "number",
|
|
72
|
+
"default": "0.15",
|
|
73
|
+
"description": "Fraction (0-1) of the element that must be visible to trigger the reveal. Clamped to the 0-1 range; non-finite values fall back to `0.15`.",
|
|
74
|
+
"required": false,
|
|
75
|
+
"inherited": false,
|
|
76
|
+
"deprecated": false
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "once",
|
|
80
|
+
"type": "boolean",
|
|
81
|
+
"default": "true",
|
|
82
|
+
"description": "Animate only the first time the element enters the viewport. If `false`, it re-animates on every entry/exit.",
|
|
83
|
+
"required": false,
|
|
84
|
+
"inherited": false,
|
|
85
|
+
"deprecated": false
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "as",
|
|
89
|
+
"type": "React.ElementType",
|
|
90
|
+
"default": "'div'",
|
|
91
|
+
"description": "Element or component to render as. Default: 'div'. When `as` is a plain intrinsic tag (e.g. `'section'`), your `className`, `style`, and Bulma helper classes plus everything in `...rest` all land on that single element. When `as` is a component (e.g. `Section`, `Card`), scroll detection needs a real DOM node with a ref, so `Reveal` wraps it in an observed `div`: `className`/`style`/helper classes go on that wrapper `div`, while `...rest` (`id`, `aria-*`, `data-*`, event handlers) is forwarded to the inner component.",
|
|
92
|
+
"required": false,
|
|
93
|
+
"inherited": false,
|
|
94
|
+
"deprecated": false
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "cascade",
|
|
98
|
+
"type": "boolean",
|
|
99
|
+
"default": "false",
|
|
100
|
+
"description": "Stagger direct children with an incrementing delay instead of animating this element as a single block.",
|
|
101
|
+
"required": false,
|
|
102
|
+
"inherited": false,
|
|
103
|
+
"deprecated": false
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "cascadeInterval",
|
|
107
|
+
"type": "number",
|
|
108
|
+
"default": "80",
|
|
109
|
+
"description": "Milliseconds added to each successive child's delay when `cascade` is set. Default: 80.",
|
|
110
|
+
"required": false,
|
|
111
|
+
"inherited": false,
|
|
112
|
+
"deprecated": false
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "children",
|
|
116
|
+
"type": "React.ReactNode",
|
|
117
|
+
"default": null,
|
|
118
|
+
"description": "Content to reveal.",
|
|
119
|
+
"required": false,
|
|
120
|
+
"inherited": false,
|
|
121
|
+
"deprecated": false
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"extraProps": [
|
|
125
|
+
{
|
|
126
|
+
"name": "className",
|
|
127
|
+
"type": "string",
|
|
128
|
+
"default": null,
|
|
129
|
+
"description": "Additional CSS classes.",
|
|
130
|
+
"required": false,
|
|
131
|
+
"inherited": false,
|
|
132
|
+
"deprecated": false
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"catchAll": "All standard HTML attributes and Bulma helper props",
|
|
136
|
+
"types": []
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"cssVars": [
|
|
140
|
+
{
|
|
141
|
+
"css": "--bulma-reveal-offset",
|
|
142
|
+
"sass": "$reveal-offset",
|
|
143
|
+
"default": "24px",
|
|
144
|
+
"scope": "component"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"css": "--bulma-reveal-offset-large",
|
|
148
|
+
"sass": "$reveal-offset-large",
|
|
149
|
+
"default": "64px",
|
|
150
|
+
"scope": "component"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"css": "--bulma-reveal-scale",
|
|
154
|
+
"sass": "$reveal-scale",
|
|
155
|
+
"default": "0.92",
|
|
156
|
+
"scope": "component"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"css": "--bulma-reveal-flip-angle",
|
|
160
|
+
"sass": "$reveal-flip-angle",
|
|
161
|
+
"default": "-15deg",
|
|
162
|
+
"scope": "component"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"css": "--bulma-reveal-duration",
|
|
166
|
+
"sass": "$reveal-duration",
|
|
167
|
+
"default": "var(--bulma-duration)",
|
|
168
|
+
"scope": "component"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"css": "--bulma-reveal-easing",
|
|
172
|
+
"sass": "$reveal-easing",
|
|
173
|
+
"default": "var(--bulma-easing)",
|
|
174
|
+
"scope": "component"
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
}
|