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.
Files changed (144) hide show
  1. package/README.md +90 -0
  2. package/data/catalog.json +1869 -0
  3. package/data/components/Autocomplete.json +604 -0
  4. package/data/components/Avatar.json +220 -0
  5. package/data/components/Avatars.json +294 -0
  6. package/data/components/Badge.json +261 -0
  7. package/data/components/Block.json +105 -0
  8. package/data/components/Box.json +157 -0
  9. package/data/components/Breadcrumb.json +155 -0
  10. package/data/components/Button.json +599 -0
  11. package/data/components/Buttons.json +533 -0
  12. package/data/components/Card.json +506 -0
  13. package/data/components/Carousel.json +512 -0
  14. package/data/components/Cell.json +154 -0
  15. package/data/components/Checkbox.json +176 -0
  16. package/data/components/Checkboxes.json +240 -0
  17. package/data/components/Code.json +128 -0
  18. package/data/components/Collapse.json +218 -0
  19. package/data/components/Column.json +284 -0
  20. package/data/components/Columns.json +542 -0
  21. package/data/components/ConfigProvider.json +16 -0
  22. package/data/components/Container.json +149 -0
  23. package/data/components/Content.json +228 -0
  24. package/data/components/Control.json +484 -0
  25. package/data/components/DateInput.json +872 -0
  26. package/data/components/DateTimeInput.json +952 -0
  27. package/data/components/Delete.json +153 -0
  28. package/data/components/Dialog.json +285 -0
  29. package/data/components/Divider.json +68 -0
  30. package/data/components/Dropdown.json +353 -0
  31. package/data/components/Emphasis.json +99 -0
  32. package/data/components/Field.json +539 -0
  33. package/data/components/Figure.json +143 -0
  34. package/data/components/File.json +403 -0
  35. package/data/components/Footer.json +109 -0
  36. package/data/components/Grid.json +357 -0
  37. package/data/components/Hero.json +340 -0
  38. package/data/components/Icon.json +232 -0
  39. package/data/components/IconText.json +307 -0
  40. package/data/components/Image.json +166 -0
  41. package/data/components/Input.json +583 -0
  42. package/data/components/Level.json +332 -0
  43. package/data/components/Link.json +154 -0
  44. package/data/components/LinkButton.json +247 -0
  45. package/data/components/ListItem.json +101 -0
  46. package/data/components/Loading.json +323 -0
  47. package/data/components/Media.json +345 -0
  48. package/data/components/Menu.json +317 -0
  49. package/data/components/Message.json +303 -0
  50. package/data/components/Modal.json +444 -0
  51. package/data/components/Navbar.json +996 -0
  52. package/data/components/Notification.json +165 -0
  53. package/data/components/Numberinput.json +364 -0
  54. package/data/components/OrderedList.json +189 -0
  55. package/data/components/Pagination.json +619 -0
  56. package/data/components/Panel.json +582 -0
  57. package/data/components/Paragraph.json +107 -0
  58. package/data/components/Pre.json +114 -0
  59. package/data/components/Progress.json +137 -0
  60. package/data/components/Radio.json +164 -0
  61. package/data/components/Radios.json +240 -0
  62. package/data/components/Rate.json +466 -0
  63. package/data/components/Reveal.json +177 -0
  64. package/data/components/Section.json +123 -0
  65. package/data/components/Select.json +526 -0
  66. package/data/components/Sidebar.json +488 -0
  67. package/data/components/Skeleton.json +162 -0
  68. package/data/components/Slider.json +534 -0
  69. package/data/components/Span.json +100 -0
  70. package/data/components/Steps.json +452 -0
  71. package/data/components/Strong.json +105 -0
  72. package/data/components/SubTitle.json +233 -0
  73. package/data/components/Switch.json +291 -0
  74. package/data/components/Table.json +490 -0
  75. package/data/components/Tabs.json +592 -0
  76. package/data/components/Tag.json +197 -0
  77. package/data/components/Taginput.json +587 -0
  78. package/data/components/Tags.json +181 -0
  79. package/data/components/TextArea.json +483 -0
  80. package/data/components/Theme.json +65 -0
  81. package/data/components/TimeInput.json +906 -0
  82. package/data/components/Title.json +240 -0
  83. package/data/components/Toast.json +308 -0
  84. package/data/components/Tooltip.json +212 -0
  85. package/data/components/UnorderedList.json +149 -0
  86. package/data/components/Valid value constants.json +16 -0
  87. package/data/components/classNames.json +65 -0
  88. package/data/components/useBulmaClasses.json +169 -0
  89. package/data/components/usePrefixedClassNames.json +25 -0
  90. package/data/skills/bestax-custom-component/SKILL.md +196 -0
  91. package/data/skills/bestax-custom-component/examples/stat-card.tsx +105 -0
  92. package/data/skills/bestax-custom-component/references/api.md +90 -0
  93. package/data/skills/bestax-custom-component/references/component-catalog.md +149 -0
  94. package/data/skills/bestax-custom-component/references/library-contributor.md +395 -0
  95. package/data/skills/bestax-custom-component/references/patterns.md +136 -0
  96. package/data/skills/bestax-form/SKILL.md +254 -0
  97. package/data/skills/bestax-form/references/api.md +103 -0
  98. package/data/skills/bestax-form/references/patterns.md +210 -0
  99. package/data/skills/bestax-icons/SKILL.md +80 -0
  100. package/data/skills/bestax-icons/examples/icon-usage.tsx +80 -0
  101. package/data/skills/bestax-icons/references/icon-libraries.md +131 -0
  102. package/data/skills/bestax-layout-scaffold/SKILL.md +196 -0
  103. package/data/skills/bestax-layout-scaffold/examples/app-shell.tsx +86 -0
  104. package/data/skills/bestax-layout-scaffold/examples/card-grid.tsx +106 -0
  105. package/data/skills/bestax-layout-scaffold/examples/centered.tsx +56 -0
  106. package/data/skills/bestax-layout-scaffold/examples/content-page.tsx +90 -0
  107. package/data/skills/bestax-layout-scaffold/examples/landing.tsx +122 -0
  108. package/data/skills/bestax-layout-scaffold/references/archetypes.md +246 -0
  109. package/data/skills/bestax-layout-scaffold/references/layout-components.md +269 -0
  110. package/data/skills/bestax-migrate/SKILL.md +78 -0
  111. package/data/skills/bestax-migrate/references/component-map.md +91 -0
  112. package/data/skills/bestax-migrate/references/css-migration.md +100 -0
  113. package/data/skills/bestax-migrate/references/prop-map.md +48 -0
  114. package/data/skills/bestax-migrate/references/unmappables.md +124 -0
  115. package/data/skills/bestax-optimize/SKILL.md +131 -0
  116. package/data/skills/bestax-optimize/references/modular-build.md +173 -0
  117. package/data/skills/bestax-theming/SKILL.md +117 -0
  118. package/data/skills/bestax-theming/examples/dark-mode.tsx +38 -0
  119. package/data/skills/bestax-theming/examples/theme-config.tsx +60 -0
  120. package/data/skills/bestax-theming/references/css-variables.md +466 -0
  121. package/data/skills/bestax-theming/references/themeable-components.md +119 -0
  122. package/data/skills.json +148 -0
  123. package/dist/data.d.ts +131 -0
  124. package/dist/data.d.ts.map +1 -0
  125. package/dist/data.js +111 -0
  126. package/dist/format.d.ts +37 -0
  127. package/dist/format.d.ts.map +1 -0
  128. package/dist/format.js +178 -0
  129. package/dist/helper-props.d.ts +57 -0
  130. package/dist/helper-props.d.ts.map +1 -0
  131. package/dist/helper-props.js +249 -0
  132. package/dist/index.d.ts +3 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +18 -0
  135. package/dist/search.d.ts +32 -0
  136. package/dist/search.d.ts.map +1 -0
  137. package/dist/search.js +194 -0
  138. package/dist/server.d.ts +28 -0
  139. package/dist/server.d.ts.map +1 -0
  140. package/dist/server.js +616 -0
  141. package/dist/version.d.ts +29 -0
  142. package/dist/version.d.ts.map +1 -0
  143. package/dist/version.js +147 -0
  144. 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
+ }