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,488 @@
1
+ {
2
+ "name": "Sidebar",
3
+ "kind": "component",
4
+ "category": "components",
5
+ "slug": "components/sidebar",
6
+ "docsUrl": "https://bestax.io/docs/api/components/sidebar",
7
+ "examples": [
8
+ {
9
+ "title": "Basic Sidebar",
10
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"primary\" onClick={() => setIsOpen(true)}>\n Open Sidebar\n </Button>\n <Sidebar inline isOpen={isOpen} onClose={() => setIsOpen(false)}>\n <Sidebar.Header>\n <Sidebar.Title>Navigation</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Menu>\n <Menu.Label>General</Menu.Label>\n <Menu.List>\n <Menu.Item href=\"#\">Dashboard</Menu.Item>\n <Menu.Item active href=\"#\">\n Settings\n </Menu.Item>\n <Menu.Item href=\"#\">Profile</Menu.Item>\n </Menu.List>\n <Menu.Label>Administration</Menu.Label>\n <Menu.List>\n <Menu.Item href=\"#\">Users</Menu.Item>\n <Menu.Item href=\"#\">Permissions</Menu.Item>\n </Menu.List>\n </Menu>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
11
+ },
12
+ {
13
+ "title": "Right-side Sidebar",
14
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"info\" onClick={() => setIsOpen(true)}>\n Open Right Sidebar\n </Button>\n <Sidebar\n inline\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position=\"right\"\n >\n <Sidebar.Header>\n <Sidebar.Title>Settings</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Paragraph>Configure your preferences here.</Paragraph>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
15
+ },
16
+ {
17
+ "title": "Custom Width",
18
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"success\" onClick={() => setIsOpen(true)}>\n Open Wide Sidebar\n </Button>\n <Sidebar\n inline\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n width=\"400px\"\n >\n <Sidebar.Header>\n <Sidebar.Title>Wide Panel</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Paragraph>This sidebar has a custom width of 400px.</Paragraph>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
19
+ },
20
+ {
21
+ "title": "Full Width (Mobile Style)",
22
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"warning\" onClick={() => setIsOpen(true)}>\n Open Full Width\n </Button>\n <Sidebar\n inline\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n fullWidth\n >\n <Sidebar.Header>\n <Sidebar.Title>Full Width Panel</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Menu>\n <Menu.List>\n <Menu.Item href=\"#\">Home</Menu.Item>\n <Menu.Item href=\"#\">Products</Menu.Item>\n <Menu.Item href=\"#\">About</Menu.Item>\n <Menu.Item href=\"#\">Contact</Menu.Item>\n </Menu.List>\n </Menu>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
23
+ },
24
+ {
25
+ "title": "Without Overlay",
26
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"link\" onClick={() => setIsOpen(true)}>\n Open Without Overlay\n </Button>\n <Paragraph mt=\"4\">\n You can still interact with the page content when the sidebar is open.\n </Paragraph>\n <Sidebar\n inline\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n overlay={false}\n >\n <Sidebar.Header>\n <Sidebar.Title>No Overlay</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Menu>\n <Menu.List>\n <Menu.Item href=\"#\">Home</Menu.Item>\n <Menu.Item href=\"#\">About</Menu.Item>\n <Menu.Item href=\"#\">Contact</Menu.Item>\n </Menu.List>\n </Menu>\n <Button color=\"primary\" mt=\"4\" onClick={() => setIsOpen(false)}>\n Close Sidebar\n </Button>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
27
+ },
28
+ {
29
+ "title": "Non-cancelable Sidebar",
30
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"danger\" onClick={() => setIsOpen(true)}>\n Open Important Panel\n </Button>\n <Sidebar\n inline\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n overlayClose={false}\n escapeClose={false}\n canCancel={false}\n >\n <Sidebar.Header>\n <Sidebar.Title>Important Action</Sidebar.Title>\n </Sidebar.Header>\n <Sidebar.Body>\n <Paragraph>You must complete this action before closing.</Paragraph>\n <Button color=\"primary\" onClick={() => setIsOpen(false)} mt=\"4\">\n Complete & Close\n </Button>\n </Sidebar.Body>\n </Sidebar>\n </>\n );\n}"
31
+ },
32
+ {
33
+ "title": "Sidebar with Footer",
34
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"primary\" onClick={() => setIsOpen(true)}>\n Open With Footer\n </Button>\n <Sidebar inline isOpen={isOpen} onClose={() => setIsOpen(false)}>\n <Sidebar.Header>\n <Sidebar.Title>Navigation</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Menu>\n <Menu.Label>Pages</Menu.Label>\n <Menu.List>\n <Menu.Item active href=\"#\">\n Home\n </Menu.Item>\n <Menu.Item href=\"#\">Products</Menu.Item>\n <Menu.Item href=\"#\">Services</Menu.Item>\n <Menu.Item href=\"#\">Blog</Menu.Item>\n <Menu.Item href=\"#\">Contact</Menu.Item>\n </Menu.List>\n </Menu>\n </Sidebar.Body>\n <Sidebar.Footer>\n <Paragraph textSize=\"7\" textColor=\"grey\">\n © 2026 Company Name\n </Paragraph>\n </Sidebar.Footer>\n </Sidebar>\n </>\n );\n}"
35
+ },
36
+ {
37
+ "title": "Compound (dot-notation) usage",
38
+ "code": "function example() {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <Button color=\"primary\" onClick={() => setIsOpen(true)}>\n Open Sidebar\n </Button>\n <Sidebar inline isOpen={isOpen} onClose={() => setIsOpen(false)}>\n <Sidebar.Header>\n <Sidebar.Title>Dot Notation</Sidebar.Title>\n <Sidebar.Close onClick={() => setIsOpen(false)} />\n </Sidebar.Header>\n <Sidebar.Body>\n <Paragraph>\n Header, Title, Close, Body, and Footer are all available from the\n single Sidebar import.\n </Paragraph>\n </Sidebar.Body>\n <Sidebar.Footer>\n <Button color=\"primary\" onClick={() => setIsOpen(false)}>\n Done\n </Button>\n </Sidebar.Footer>\n </Sidebar>\n </>\n );\n}"
39
+ }
40
+ ],
41
+ "accessibility": "- Uses `role=\"dialog\"` for proper screen reader announcement\n- Has `aria-modal=\"true\"` when overlay is shown\n- Focus is trapped within the sidebar when open\n- Escape key closes the sidebar by default\n- Body scroll is prevented when sidebar is open",
42
+ "related": ["Menu", "Modal"],
43
+ "storybook": "https://bestax.io/storybook/?path=/story/components-sidebar",
44
+ "summary": "The `Sidebar` component provides a slide-out navigation panel that appears from the left or right side of the screen.",
45
+ "import": "import { Sidebar } from '@allxsmith/bestax-bulma';",
46
+ "sourceFile": "bulma-ui/src/components/Sidebar.tsx",
47
+ "rootClass": "sidebar",
48
+ "parts": [
49
+ {
50
+ "path": "Sidebar",
51
+ "summary": "The `Sidebar` component provides a slide-out navigation panel that appears from the left or right side of the screen.",
52
+ "component": null,
53
+ "props": [
54
+ {
55
+ "name": "isOpen",
56
+ "type": "boolean",
57
+ "default": null,
58
+ "description": "Whether the sidebar is open (required).",
59
+ "required": false,
60
+ "inherited": false,
61
+ "deprecated": false
62
+ },
63
+ {
64
+ "name": "onClose",
65
+ "type": "() => void",
66
+ "default": null,
67
+ "description": "Callback when sidebar should close.",
68
+ "required": false,
69
+ "inherited": false,
70
+ "deprecated": false
71
+ },
72
+ {
73
+ "name": "position",
74
+ "type": "'left' | 'right'",
75
+ "default": "'left'",
76
+ "description": "Which side the sidebar appears from. Default: 'left'.",
77
+ "required": false,
78
+ "inherited": false,
79
+ "deprecated": false
80
+ },
81
+ {
82
+ "name": "width",
83
+ "type": "string",
84
+ "default": "'260px'",
85
+ "description": "Custom width of the sidebar.",
86
+ "required": false,
87
+ "inherited": false,
88
+ "deprecated": false
89
+ },
90
+ {
91
+ "name": "fullWidth",
92
+ "type": "boolean",
93
+ "default": "false",
94
+ "description": "Sidebar takes full width (mobile-style).",
95
+ "required": false,
96
+ "inherited": false,
97
+ "deprecated": false
98
+ },
99
+ {
100
+ "name": "overlay",
101
+ "type": "boolean",
102
+ "default": "true",
103
+ "description": "Show overlay behind sidebar. Default: true.",
104
+ "required": false,
105
+ "inherited": false,
106
+ "deprecated": false
107
+ },
108
+ {
109
+ "name": "overlayClose",
110
+ "type": "boolean",
111
+ "default": "true",
112
+ "description": "Close sidebar when overlay is clicked. Default: true.",
113
+ "required": false,
114
+ "inherited": false,
115
+ "deprecated": false
116
+ },
117
+ {
118
+ "name": "escapeClose",
119
+ "type": "boolean",
120
+ "default": "true",
121
+ "description": "Close sidebar on Escape key. Default: true.",
122
+ "required": false,
123
+ "inherited": false,
124
+ "deprecated": false
125
+ },
126
+ {
127
+ "name": "canCancel",
128
+ "type": "boolean",
129
+ "default": "true",
130
+ "description": "Allow closing the sidebar. Default: true.",
131
+ "required": false,
132
+ "inherited": false,
133
+ "deprecated": false
134
+ },
135
+ {
136
+ "name": "children",
137
+ "type": "React.ReactNode",
138
+ "default": null,
139
+ "description": "Content to display in the sidebar.",
140
+ "required": false,
141
+ "inherited": false,
142
+ "deprecated": false
143
+ },
144
+ {
145
+ "name": "inline",
146
+ "type": "boolean",
147
+ "default": "false",
148
+ "description": "Renders inline instead of using a portal.",
149
+ "required": false,
150
+ "inherited": false,
151
+ "deprecated": false
152
+ }
153
+ ],
154
+ "extraProps": [
155
+ {
156
+ "name": "className",
157
+ "type": "string",
158
+ "default": null,
159
+ "description": "Additional CSS classes.",
160
+ "required": false,
161
+ "inherited": false,
162
+ "deprecated": false
163
+ },
164
+ {
165
+ "name": "ref",
166
+ "type": "React.Ref<HTMLElement>",
167
+ "default": null,
168
+ "description": "Ref forwarded to the sidebar element.",
169
+ "required": false,
170
+ "inherited": false,
171
+ "deprecated": false
172
+ }
173
+ ],
174
+ "catchAll": "All standard HTML attributes and Bulma helper props",
175
+ "types": []
176
+ },
177
+ {
178
+ "path": "Sidebar.Header",
179
+ "summary": "Container for the sidebar header.",
180
+ "component": null,
181
+ "props": [
182
+ {
183
+ "name": "children",
184
+ "type": "React.ReactNode",
185
+ "default": null,
186
+ "description": "Header content.",
187
+ "required": false,
188
+ "inherited": false,
189
+ "deprecated": false
190
+ },
191
+ {
192
+ "name": "className",
193
+ "type": "string",
194
+ "default": null,
195
+ "description": "Additional CSS classes.",
196
+ "required": false,
197
+ "inherited": false,
198
+ "deprecated": false
199
+ }
200
+ ],
201
+ "extraProps": [],
202
+ "catchAll": "All standard <div> attributes",
203
+ "types": []
204
+ },
205
+ {
206
+ "path": "Sidebar.Title",
207
+ "summary": "Title text inside the header.",
208
+ "component": null,
209
+ "props": [
210
+ {
211
+ "name": "children",
212
+ "type": "React.ReactNode",
213
+ "default": null,
214
+ "description": "Title content.",
215
+ "required": false,
216
+ "inherited": false,
217
+ "deprecated": false
218
+ },
219
+ {
220
+ "name": "className",
221
+ "type": "string",
222
+ "default": null,
223
+ "description": "Additional CSS classes.",
224
+ "required": false,
225
+ "inherited": false,
226
+ "deprecated": false
227
+ }
228
+ ],
229
+ "extraProps": [],
230
+ "catchAll": "All standard <p> attributes",
231
+ "types": []
232
+ },
233
+ {
234
+ "path": "Sidebar.Close",
235
+ "summary": "Close button for the sidebar.",
236
+ "component": null,
237
+ "props": [
238
+ {
239
+ "name": "className",
240
+ "type": "string",
241
+ "default": null,
242
+ "description": "Additional CSS classes.",
243
+ "required": false,
244
+ "inherited": false,
245
+ "deprecated": false
246
+ },
247
+ {
248
+ "name": "children",
249
+ "type": "React.ReactNode",
250
+ "default": null,
251
+ "description": "Content rendered inside the component.",
252
+ "required": false,
253
+ "inherited": false,
254
+ "deprecated": false
255
+ }
256
+ ],
257
+ "extraProps": [],
258
+ "catchAll": "All standard <button> attributes",
259
+ "types": []
260
+ },
261
+ {
262
+ "path": "Sidebar.Body",
263
+ "summary": "Main content area of the sidebar.",
264
+ "component": null,
265
+ "props": [
266
+ {
267
+ "name": "children",
268
+ "type": "React.ReactNode",
269
+ "default": null,
270
+ "description": "Body content.",
271
+ "required": false,
272
+ "inherited": false,
273
+ "deprecated": false
274
+ },
275
+ {
276
+ "name": "className",
277
+ "type": "string",
278
+ "default": null,
279
+ "description": "Additional CSS classes.",
280
+ "required": false,
281
+ "inherited": false,
282
+ "deprecated": false
283
+ }
284
+ ],
285
+ "extraProps": [],
286
+ "catchAll": "All standard <div> attributes",
287
+ "types": []
288
+ },
289
+ {
290
+ "path": "Sidebar.Footer",
291
+ "summary": "Footer area of the sidebar.",
292
+ "component": null,
293
+ "props": [
294
+ {
295
+ "name": "children",
296
+ "type": "React.ReactNode",
297
+ "default": null,
298
+ "description": "Footer content.",
299
+ "required": false,
300
+ "inherited": false,
301
+ "deprecated": false
302
+ },
303
+ {
304
+ "name": "className",
305
+ "type": "string",
306
+ "default": null,
307
+ "description": "Additional CSS classes.",
308
+ "required": false,
309
+ "inherited": false,
310
+ "deprecated": false
311
+ }
312
+ ],
313
+ "extraProps": [],
314
+ "catchAll": "All standard <div> attributes",
315
+ "types": []
316
+ }
317
+ ],
318
+ "cssVars": [
319
+ {
320
+ "css": "--bulma-sidebar-width",
321
+ "sass": "$sidebar-width",
322
+ "default": "260px",
323
+ "scope": "component"
324
+ },
325
+ {
326
+ "css": "--bulma-sidebar-background",
327
+ "sass": "$sidebar-background",
328
+ "default": "var(--bulma-scheme-main)",
329
+ "scope": "component"
330
+ },
331
+ {
332
+ "css": "--bulma-sidebar-shadow",
333
+ "sass": "$sidebar-shadow",
334
+ "default": "0 2px 8px hsla(0, 0%, 0%, 0.15)",
335
+ "scope": "component"
336
+ },
337
+ {
338
+ "css": "--bulma-sidebar-transition-duration",
339
+ "sass": "$sidebar-transition-duration",
340
+ "default": "0.3s",
341
+ "scope": "component"
342
+ },
343
+ {
344
+ "css": "--bulma-sidebar-content-padding",
345
+ "sass": "$sidebar-content-padding",
346
+ "default": "1rem",
347
+ "scope": "component"
348
+ },
349
+ {
350
+ "css": "--bulma-sidebar-scrollbar-width",
351
+ "sass": "$sidebar-scrollbar-width",
352
+ "default": "6px",
353
+ "scope": "component"
354
+ },
355
+ {
356
+ "css": "--bulma-sidebar-scrollbar-color",
357
+ "sass": "$sidebar-scrollbar-color",
358
+ "default": "var(--bulma-grey-light)",
359
+ "scope": "component"
360
+ },
361
+ {
362
+ "css": "--bulma-sidebar-scrollbar-color-hover",
363
+ "sass": "$sidebar-scrollbar-color-hover",
364
+ "default": "var(--bulma-grey)",
365
+ "scope": "component"
366
+ },
367
+ {
368
+ "css": "--bulma-sidebar-header-padding",
369
+ "sass": "$sidebar-header-padding",
370
+ "default": "0.75rem 1rem",
371
+ "scope": "component"
372
+ },
373
+ {
374
+ "css": "--bulma-sidebar-header-border-color",
375
+ "sass": "$sidebar-header-border-color",
376
+ "default": "var(--bulma-border)",
377
+ "scope": "component"
378
+ },
379
+ {
380
+ "css": "--bulma-sidebar-header-margin-bottom",
381
+ "sass": "$sidebar-header-margin-bottom",
382
+ "default": "1rem",
383
+ "scope": "component"
384
+ },
385
+ {
386
+ "css": "--bulma-sidebar-title-size",
387
+ "sass": "$sidebar-title-size",
388
+ "default": "1.25rem",
389
+ "scope": "component"
390
+ },
391
+ {
392
+ "css": "--bulma-sidebar-title-weight",
393
+ "sass": "$sidebar-title-weight",
394
+ "default": "var(--bulma-weight-semibold)",
395
+ "scope": "component"
396
+ },
397
+ {
398
+ "css": "--bulma-sidebar-title-color",
399
+ "sass": "$sidebar-title-color",
400
+ "default": "var(--bulma-text-strong)",
401
+ "scope": "component"
402
+ },
403
+ {
404
+ "css": "--bulma-sidebar-close-size",
405
+ "sass": "$sidebar-close-size",
406
+ "default": "1.75rem",
407
+ "scope": "component"
408
+ },
409
+ {
410
+ "css": "--bulma-sidebar-close-color",
411
+ "sass": "$sidebar-close-color",
412
+ "default": "var(--bulma-text)",
413
+ "scope": "component"
414
+ },
415
+ {
416
+ "css": "--bulma-sidebar-close-line-width",
417
+ "sass": "$sidebar-close-line-width",
418
+ "default": "2px",
419
+ "scope": "component"
420
+ },
421
+ {
422
+ "css": "--bulma-sidebar-close-hover-background",
423
+ "sass": "$sidebar-close-hover-background",
424
+ "default": "var(--bulma-scheme-main-ter)",
425
+ "scope": "component"
426
+ },
427
+ {
428
+ "css": "--bulma-sidebar-close-radius",
429
+ "sass": "$sidebar-close-radius",
430
+ "default": "var(--bulma-radius)",
431
+ "scope": "component"
432
+ },
433
+ {
434
+ "css": "--bulma-sidebar-footer-padding",
435
+ "sass": "$sidebar-footer-padding",
436
+ "default": "0.75rem 1rem",
437
+ "scope": "component"
438
+ },
439
+ {
440
+ "css": "--bulma-sidebar-footer-border-color",
441
+ "sass": "$sidebar-footer-border-color",
442
+ "default": "var(--bulma-border)",
443
+ "scope": "component"
444
+ },
445
+ {
446
+ "css": "--bulma-sidebar-footer-margin-top",
447
+ "sass": "$sidebar-footer-margin-top",
448
+ "default": "1rem",
449
+ "scope": "component"
450
+ },
451
+ {
452
+ "css": "--bulma-sidebar-menu-item-padding",
453
+ "sass": "$sidebar-menu-item-padding",
454
+ "default": "0.5rem 0.75rem",
455
+ "scope": "component"
456
+ },
457
+ {
458
+ "css": "--bulma-sidebar-menu-item-radius",
459
+ "sass": "$sidebar-menu-item-radius",
460
+ "default": "var(--bulma-radius)",
461
+ "scope": "component"
462
+ },
463
+ {
464
+ "css": "--bulma-sidebar-menu-item-hover-background",
465
+ "sass": "$sidebar-menu-item-hover-background",
466
+ "default": "var(--bulma-scheme-main-bis)",
467
+ "scope": "component"
468
+ },
469
+ {
470
+ "css": "--bulma-sidebar-menu-item-active-background",
471
+ "sass": "$sidebar-menu-item-active-background",
472
+ "default": "var(--bulma-link)",
473
+ "scope": "component"
474
+ },
475
+ {
476
+ "css": "--bulma-sidebar-menu-item-active-color",
477
+ "sass": "$sidebar-menu-item-active-color",
478
+ "default": "var(--bulma-link-invert)",
479
+ "scope": "component"
480
+ },
481
+ {
482
+ "css": "--bulma-sidebar-static-border-color",
483
+ "sass": "$sidebar-static-border-color",
484
+ "default": "var(--bulma-border)",
485
+ "scope": "component"
486
+ }
487
+ ]
488
+ }
@@ -0,0 +1,162 @@
1
+ {
2
+ "name": "Skeleton",
3
+ "kind": "component",
4
+ "category": "elements",
5
+ "slug": "elements/skeleton",
6
+ "docsUrl": "https://bestax.io/docs/api/elements/skeleton",
7
+ "examples": [
8
+ { "title": "Default Skeleton", "code": "<Skeleton />" },
9
+ {
10
+ "title": "Skeleton Text",
11
+ "code": "<Skeleton>\n \"Quando in rerum natura homines aequales creantur, ab ipso Creatore quibusdam\n iuribus inalienabilibus donantur, inter quae sunt Vita, Libertas et quaerenda\n felicitas. Quoties aliquod regimen haec iura destruere conatur, populus habet\n potestatem tale regimen abrogare et novum constituere, quod iuribus suis\n tutandis aptissimum videatur. Prudentia quidem dictat vetera regimina levibus\n de causis non mutanda esse; sed cum diuturnus abusus ad despotismum vergit,\n ius est, immo officium, talia regimina exuere et novas custodes securitatis\n futurae constituere.\"\n</Skeleton>"
12
+ },
13
+ {
14
+ "title": "Lines Skeleton",
15
+ "code": "<Skeleton variant=\"lines\" lines={5} />"
16
+ },
17
+ {
18
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
19
+ "code": "<Button skeleton color=\"dark\">\n Skeleton Button\n</Button>"
20
+ },
21
+ {
22
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
23
+ "code": "<Buttons>\n <Button skeleton color=\"dark\">\n Skeleton\n </Button>\n <Button skeleton color=\"dark\">\n Skeleton\n </Button>\n <Button skeleton color=\"dark\">\n Skeleton\n </Button>\n</Buttons>"
24
+ },
25
+ {
26
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
27
+ "code": "<Icon name=\"star\" skeleton ariaLabel=\"Star icon skeleton\" size=\"medium\" />"
28
+ },
29
+ {
30
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
31
+ "code": "<Image skeleton src=\"/img/react-logo.png\" alt=\"Skeleton image\" size=\"128x128\" />"
32
+ },
33
+ {
34
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
35
+ "code": "<Media skeleton>\n <Media.Left>\n <Image\n skeleton\n as=\"p\"\n size=\"64x64\"\n src=\"https://bulma.io/assets/images/placeholders/128x128.png\"\n alt=\"\"\n />\n </Media.Left>\n <Media.Content>\n <Content>\n <Paragraph>\n <Strong>Skeleton Name</Strong> <small>@skelly</small> <small>1m</small>\n <br />\n This is a skeleton media example.\n </Paragraph>\n </Content>\n </Media.Content>\n</Media>"
36
+ },
37
+ {
38
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
39
+ "code": "<Notification skeleton>Skeleton notification message.</Notification>"
40
+ },
41
+ {
42
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
43
+ "code": "<Tag skeleton size=\"medium\">\n Skeleton Tag\n</Tag>"
44
+ },
45
+ {
46
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
47
+ "code": "<Title skeleton size=\"2\">\n Skeleton Title\n</Title>"
48
+ },
49
+ {
50
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
51
+ "code": "<SubTitle skeleton size=\"4\">\n Skeleton SubTitle\n</SubTitle>"
52
+ },
53
+ {
54
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
55
+ "code": "<Input skeleton placeholder=\"Skeleton Input\" />"
56
+ },
57
+ {
58
+ "title": "Skeleton Examples from useBulmaClasses.stories.tsx",
59
+ "code": "<TextArea skeleton placeholder=\"Skeleton TextArea\" rows={3} />"
60
+ }
61
+ ],
62
+ "accessibility": "- **Role:** Consider using `aria-busy=\"true\"` on container elements to indicate loading state.\n- **Label:** Optionally use `aria-label=\"Loading...\"` or similar for better screen reader support.\n- **Focus:** Skeletons should not be focusable and should be replaced with real content as soon as data is available.\n\n:::tip\nSkeleton loaders provide a visual cue for loading but should not block navigation or accessibility.\n:::",
63
+ "related": [
64
+ "Button",
65
+ "Buttons",
66
+ "Icon",
67
+ "Image",
68
+ "Input",
69
+ "Media",
70
+ "Notification",
71
+ "SubTitle",
72
+ "Tag",
73
+ "TextArea",
74
+ "Title",
75
+ "useBulmaClasses"
76
+ ],
77
+ "storybook": "https://bestax.io/storybook/?path=/story/elements-skeleton--default",
78
+ "summary": "The `Skeleton` component provides a Bulma-styled skeleton loader for React applications, useful for indicating that content is loading.",
79
+ "import": "import { Skeleton } from '@allxsmith/bestax-bulma';",
80
+ "sourceFile": "bulma-ui/src/elements/Skeleton.tsx",
81
+ "rootClass": "skeleton-lines",
82
+ "parts": [
83
+ {
84
+ "path": "Skeleton",
85
+ "summary": "The `Skeleton` component provides a Bulma-styled skeleton loader for React applications, useful for indicating that content is loading.",
86
+ "component": null,
87
+ "props": [
88
+ {
89
+ "name": "className",
90
+ "type": "string",
91
+ "default": null,
92
+ "description": "Additional CSS classes to apply",
93
+ "required": false,
94
+ "inherited": false,
95
+ "deprecated": false
96
+ },
97
+ {
98
+ "name": "variant",
99
+ "type": "'block' | 'lines'",
100
+ "default": "'block'",
101
+ "description": "Skeleton variant: block (single block) or lines.",
102
+ "required": false,
103
+ "inherited": false,
104
+ "deprecated": false
105
+ },
106
+ {
107
+ "name": "lines",
108
+ "type": "number",
109
+ "default": "3",
110
+ "description": "Number of lines (only for `lines` variant).",
111
+ "required": false,
112
+ "inherited": false,
113
+ "deprecated": false
114
+ },
115
+ {
116
+ "name": "children",
117
+ "type": "React.ReactNode",
118
+ "default": null,
119
+ "description": "Content inside the block (only for block variant).",
120
+ "required": false,
121
+ "inherited": false,
122
+ "deprecated": false
123
+ }
124
+ ],
125
+ "extraProps": [],
126
+ "catchAll": "All standard <div> attributes",
127
+ "types": []
128
+ }
129
+ ],
130
+ "cssVars": [
131
+ {
132
+ "css": "--bulma-skeleton-background",
133
+ "sass": "$skeleton-background",
134
+ "default": "var(--bulma-border)",
135
+ "scope": "global"
136
+ },
137
+ {
138
+ "css": "--bulma-skeleton-radius",
139
+ "sass": "$skeleton-radius",
140
+ "default": "var(--bulma-radius-small)",
141
+ "scope": "global"
142
+ },
143
+ {
144
+ "css": "--bulma-skeleton-block-min-height",
145
+ "sass": "$skeleton-block-min-height",
146
+ "default": "4.5em",
147
+ "scope": "global"
148
+ },
149
+ {
150
+ "css": "--bulma-skeleton-lines-gap",
151
+ "sass": "$skeleton-lines-gap",
152
+ "default": "0.75em",
153
+ "scope": "global"
154
+ },
155
+ {
156
+ "css": "--bulma-skeleton-line-height",
157
+ "sass": "$skeleton-line-height",
158
+ "default": "0.75em",
159
+ "scope": "global"
160
+ }
161
+ ]
162
+ }