bestax-mcp 1.15.0 → 1.15.2
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/data/catalog.json +24 -2
- package/data/components/Autocomplete.json +4 -4
- package/data/components/Code.json +1 -5
- package/data/components/Kbd.json +259 -0
- package/data/skills/bestax-custom-component/references/component-catalog.md +2 -1
- package/data/skills/bestax-icons/references/icon-libraries.md +2 -2
- package/data/skills/bestax-migrate/references/bloomer/prop-map.md +6 -6
- package/data/skills/bestax-migrate/references/rbx/prop-map.md +6 -6
- package/data/skills/bestax-migrate/references/react-bulma-components/unmappables.md +7 -7
- package/data/skills/bestax-optimize/references/modular-build.md +1 -1
- package/data/skills/bestax-theming/references/css-variables.md +10 -0
- package/data/skills/bestax-theming/references/themeable-components.md +1 -0
- package/data/skills.json +8 -8
- package/package.json +2 -2
package/data/catalog.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"generatedFrom": {
|
|
4
4
|
"package": "@allxsmith/bestax-bulma",
|
|
5
|
-
"version": "5.
|
|
5
|
+
"version": "5.33.1"
|
|
6
6
|
},
|
|
7
7
|
"docsBase": "https://bestax.io/docs",
|
|
8
8
|
"categories": [
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"Icon",
|
|
24
24
|
"IconText",
|
|
25
25
|
"Image",
|
|
26
|
+
"Kbd",
|
|
26
27
|
"Link",
|
|
27
28
|
"LinkButton",
|
|
28
29
|
"ListItem",
|
|
@@ -305,7 +306,7 @@
|
|
|
305
306
|
"import": "import { Code } from '@allxsmith/bestax-bulma';",
|
|
306
307
|
"compound": false,
|
|
307
308
|
"propCount": 4,
|
|
308
|
-
"exampleCount":
|
|
309
|
+
"exampleCount": 8
|
|
309
310
|
},
|
|
310
311
|
{
|
|
311
312
|
"name": "Collapse",
|
|
@@ -615,6 +616,17 @@
|
|
|
615
616
|
"propCount": 29,
|
|
616
617
|
"exampleCount": 30
|
|
617
618
|
},
|
|
619
|
+
{
|
|
620
|
+
"name": "Kbd",
|
|
621
|
+
"kind": "component",
|
|
622
|
+
"category": "elements",
|
|
623
|
+
"purpose": "The `Kbd` component renders a `<kbd>` drawn as a keycap, for a key the reader presses.",
|
|
624
|
+
"slug": "elements/kbd",
|
|
625
|
+
"import": "import { Kbd } from '@allxsmith/bestax-bulma';",
|
|
626
|
+
"compound": true,
|
|
627
|
+
"propCount": 9,
|
|
628
|
+
"exampleCount": 12
|
|
629
|
+
},
|
|
618
630
|
{
|
|
619
631
|
"name": "Level",
|
|
620
632
|
"kind": "component",
|
|
@@ -1911,6 +1923,16 @@
|
|
|
1911
1923
|
"TextArea",
|
|
1912
1924
|
"TimeInput"
|
|
1913
1925
|
],
|
|
1926
|
+
"--bulma-kbd-background": ["Kbd"],
|
|
1927
|
+
"--bulma-kbd-border-bottom-width": ["Kbd"],
|
|
1928
|
+
"--bulma-kbd-border-color": ["Kbd"],
|
|
1929
|
+
"--bulma-kbd-border-width": ["Kbd"],
|
|
1930
|
+
"--bulma-kbd-color": ["Kbd"],
|
|
1931
|
+
"--bulma-kbd-family": ["Kbd"],
|
|
1932
|
+
"--bulma-kbd-padding": ["Kbd"],
|
|
1933
|
+
"--bulma-kbd-radius": ["Kbd"],
|
|
1934
|
+
"--bulma-kbd-size": ["Kbd"],
|
|
1935
|
+
"--bulma-kbd-weight": ["Kbd"],
|
|
1914
1936
|
"--bulma-level-item-spacing": ["Level"],
|
|
1915
1937
|
"--bulma-link-button-ghost-color": ["LinkButton"],
|
|
1916
1938
|
"--bulma-link-button-ghost-hover-color": ["LinkButton"],
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"code": "function example() {\n return (\n <Field\n horizontal\n label=\"Fruit\"\n labelProps={{\n htmlFor: 'fruit-field-control',\n id: 'fruit-field-control-label',\n }}\n >\n <Field.Body>\n <Field>\n <Control iconLeftName=\"search\">\n <Autocomplete\n id=\"fruit-field-control\"\n data={['Apple', 'Banana', 'Cherry']}\n placeholder=\"Search fruit...\"\n />\n </Control>\n </Field>\n </Field.Body>\n </Field>\n );\n}"
|
|
55
55
|
}
|
|
56
56
|
],
|
|
57
|
-
"accessibility": "- The `label` prop is automatically associated with the inner text input (`htmlFor` plus a generated `id`, or your own `id` if you pass one), so clicking the label focuses the input and assistive technology announces it. Inside a labeled `Field`, that `Field`'s label names the input instead when it points at it: a `Field` that is not `grouped` or `hasAddons` points it there on its own when the Autocomplete has no `id` and no inner `Field` sits between them, and a label you wire by hand with `labelProps.htmlFor` points at the input with that `id`.\n- A user-supplied `id` is applied to the inner input (the labellable control), not the wrapper div.\n- Uses `role=\"combobox\"` with `aria-expanded`, which is true only while the list is on screen\n- Has `aria-haspopup=\"listbox\"` and `aria-autocomplete=\"list\"`, and, while the list is on screen, `aria-controls` pointing at it\n- Focus stays in the input, which points `aria-activedescendant` at the highlighted option as the arrow keys move it\n- The list is a `role=\"listbox\"` named through `aria-labelledby` by the label that names the input, when that label has an id: the `label` prop's label always has one, and so does a `Field`'s label that the `Field` wires itself. A `Field` label you wire by hand with `labelProps.htmlFor`, which is how a horizontal form names an Autocomplete in an inner `Field`, needs an `id` in its `labelProps` as well. Otherwise the list falls back to `aria-label=\"Suggestions\"`\n- Dropdown items use `role=\"option\"` with `aria-selected`\n- Disabled items have `aria-disabled`\n- The `clearable` clear button is a native button named \"Clear\": `Tab` from the input reaches it, and `Enter` or `Space` clears the input and puts focus back in it\n- Full keyboard navigation support",
|
|
57
|
+
"accessibility": "- The `label` prop is automatically associated with the inner text input (`htmlFor` plus a generated `id`, or your own `id` if you pass one), so clicking the label focuses the input and assistive technology announces it. Inside a labeled `Field`, that `Field`'s label names the input instead when it points at it: a `Field` that is not `grouped` or `hasAddons` points it there on its own when the Autocomplete has no `id` and no inner `Field` sits between them, and a label you wire by hand with `labelProps.htmlFor` points at the input with that `id`.\n- A user-supplied `id` is applied to the inner input (the labellable control), not the wrapper div.\n- Uses `role=\"combobox\"` with `aria-expanded`, which is true only while the list is on screen. When nothing matches, the dropdown shows the `empty` content but no list, so it stays false\n- Has `aria-haspopup=\"listbox\"` and `aria-autocomplete=\"list\"`, and, while the list is on screen, `aria-controls` pointing at it\n- Focus stays in the input, which points `aria-activedescendant` at the highlighted option as the arrow keys move it\n- The list is a `role=\"listbox\"` named through `aria-labelledby` by the label that names the input, when that label has an id: the `label` prop's label always has one, and so does a `Field`'s label that the `Field` wires itself. A `Field` label you wire by hand with `labelProps.htmlFor`, which is how a horizontal form names an Autocomplete in an inner `Field`, needs an `id` in its `labelProps` as well. Otherwise the list falls back to `aria-label=\"Suggestions\"`\n- The list holds only the options. The `header`, `footer` and `empty` content sit beside it in the dropdown, so a screen reader doesn't count them as options\n- When the user's typing leaves nothing that matches, the `empty` text is announced through a polite `role=\"status\"` region. That region is in the page from the start, so it's there before the message arrives. It's said once each time the matches run out, not again on every keystroke while they stay out, and the next search that comes up empty is announced too: after matches come back, after the field is emptied, or after the list closes and the user types again\n- While `loading` is on, or a `Control` with `isLoading` around the Autocomplete, the announcement waits, so the `empty` text that shows while results are on their way isn't read out. It's said once loading ends with nothing matching, for each search that comes back empty. Pass `loading` while you fetch results, as the async story in Storybook does\n- Focusing the field, opening the list with `openOnFocus` or `↓`, or emptying the field announces nothing. Without `empty`, nothing is announced at all, since there's no built-in message to say\n- `empty` is a message, so keep it to text. `Tab` closes the list, so a keyboard user can't reach a link or a button in it\n- Keep that message static, like \"No results found\". Its text is read when the matches first run out and isn't read again while they stay out, so a message that names the query, like \"No results for xyz\", is only heard for the query that ran them out\n- Dropdown items use `role=\"option\"` with `aria-selected`\n- Disabled items have `aria-disabled`\n- The `clearable` clear button is a native button named \"Clear\": `Tab` from the input reaches it, and `Enter` or `Space` clears the input and puts focus back in it\n- Full keyboard navigation support",
|
|
58
58
|
"related": ["Input", "Select", "Taginput"],
|
|
59
59
|
"storybook": "https://bestax.io/storybook/?path=/story/form-autocomplete",
|
|
60
60
|
"summary": "The `Autocomplete` component provides an input field with dropdown suggestions that filter based on user input.",
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
"name": "header",
|
|
333
333
|
"type": "React.ReactNode",
|
|
334
334
|
"default": null,
|
|
335
|
-
"description": "Custom header
|
|
335
|
+
"description": "Custom header at the top of the dropdown. It sits above the list of options rather than in it, so assistive technology doesn't count it as one.",
|
|
336
336
|
"required": false,
|
|
337
337
|
"inherited": false,
|
|
338
338
|
"deprecated": false
|
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
"name": "footer",
|
|
342
342
|
"type": "React.ReactNode",
|
|
343
343
|
"default": null,
|
|
344
|
-
"description": "Custom footer
|
|
344
|
+
"description": "Custom footer at the bottom of the dropdown. It sits below the list of options rather than in it, so assistive technology doesn't count it as one.",
|
|
345
345
|
"required": false,
|
|
346
346
|
"inherited": false,
|
|
347
347
|
"deprecated": false
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
"name": "empty",
|
|
351
351
|
"type": "React.ReactNode",
|
|
352
352
|
"default": null,
|
|
353
|
-
"description": "
|
|
353
|
+
"description": "A message the dropdown shows in place of the options when nothing matches. Keep it to text: `Tab` closes the list, so a keyboard user can't reach a link or button in it. It sits beside the list of options rather than in it, so the input's `aria-expanded` stays false while it shows. When the user's typing leaves nothing that matches, a polite status region announces its text: once each time the matches run out. The text is read when they first run out, and isn't read again as it changes while they stay out, so a message that names the query is heard for that first query only. Keep it static. Opening the list without typing, or emptying the field, announces nothing. While `loading`, or a `Control` with `isLoading` around the Autocomplete, is on, it waits, and it's announced once loading ends with nothing matching. Without `empty`, the dropdown closes when nothing matches and nothing is announced.",
|
|
354
354
|
"required": false,
|
|
355
355
|
"inherited": false,
|
|
356
356
|
"deprecated": false
|
|
@@ -36,14 +36,10 @@
|
|
|
36
36
|
{
|
|
37
37
|
"title": "File Path",
|
|
38
38
|
"code": "<Paragraph>\n Edit the configuration file at <Code>src/config/settings.ts</Code> to change\n the default values.\n</Paragraph>"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"title": "Keyboard Shortcuts",
|
|
42
|
-
"code": "<Paragraph>\n Press <Code>Ctrl + C</Code> to copy and <Code>Ctrl + V</Code> to paste.\n</Paragraph>"
|
|
43
39
|
}
|
|
44
40
|
],
|
|
45
41
|
"accessibility": "- **Code Semantics:** Screen readers may indicate code content differently, helping users understand it's technical content.\n- **Monospace Font:** The `<code>` element typically renders in a monospace font, aiding readability of technical content.\n- **Context:** Provide context around code snippets so users understand what the code represents.\n\n:::info\nUse `Code` for short inline snippets. For multi-line code blocks that need to preserve whitespace and formatting, use the `Pre` component.\n:::",
|
|
46
|
-
"related": ["Figure", "Paragraph", "Pre", "useBulmaClasses"],
|
|
42
|
+
"related": ["Figure", "Kbd", "Paragraph", "Pre", "useBulmaClasses"],
|
|
47
43
|
"storybook": "https://bestax.io/storybook/?path=/story/elements-code--default",
|
|
48
44
|
"summary": "The `Code` component renders a styled `<code>` element with Bulma helper class integration.",
|
|
49
45
|
"import": "import { Code } from '@allxsmith/bestax-bulma';",
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Kbd",
|
|
3
|
+
"kind": "component",
|
|
4
|
+
"category": "elements",
|
|
5
|
+
"slug": "elements/kbd",
|
|
6
|
+
"docsUrl": "https://bestax.io/docs/api/elements/kbd",
|
|
7
|
+
"examples": [
|
|
8
|
+
{
|
|
9
|
+
"title": "A Key",
|
|
10
|
+
"code": "<Paragraph>\n Press <Kbd>Esc</Kbd> to close the dialog.\n</Paragraph>"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"title": "Combinations",
|
|
14
|
+
"code": "<Paragraph>\n Open the command palette with{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>P</Kbd>\n </Kbd.Group>\n .\n</Paragraph>"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"title": "Sequences",
|
|
18
|
+
"code": "<Paragraph>\n Go to your inbox with{' '}\n <Kbd.Group separator=\"then\">\n <Kbd>G</Kbd>\n <Kbd>I</Kbd>\n </Kbd.Group>\n .\n</Paragraph>"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"title": "Symbol Keys",
|
|
22
|
+
"code": "<Paragraph>\n Search with{' '}\n <Kbd.Group>\n <Kbd label=\"Command\">⌘</Kbd>\n <Kbd>K</Kbd>\n </Kbd.Group>\n .\n</Paragraph>"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"title": "Keyboard Shortcuts",
|
|
26
|
+
"code": "<Paragraph>\n Press{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>C</Kbd>\n </Kbd.Group>{' '}\n to copy and{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>V</Kbd>\n </Kbd.Group>{' '}\n to paste.\n</Paragraph>"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"title": "A Shortcuts Table",
|
|
30
|
+
"code": "<Table>\n <Thead>\n <Tr>\n <Th>Action</Th>\n <Th>Shortcut</Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr>\n <Td>Command palette</Td>\n <Td>\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>P</Kbd>\n </Kbd.Group>\n </Td>\n </Tr>\n <Tr>\n <Td>Go to inbox</Td>\n <Td>\n <Kbd.Group separator=\"then\">\n <Kbd>G</Kbd>\n <Kbd>I</Kbd>\n </Kbd.Group>\n </Td>\n </Tr>\n <Tr>\n <Td>Close</Td>\n <Td>\n <Kbd>Esc</Kbd>\n </Td>\n </Tr>\n </Tbody>\n</Table>"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Sizes",
|
|
34
|
+
"code": "<>\n <Title size=\"4\">\n Press{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>K</Kbd>\n </Kbd.Group>{' '}\n to search\n </Title>\n <Block display=\"flex\" alignItems=\"baseline\">\n <Kbd textSize=\"7\" mr=\"4\">\n Esc\n </Kbd>\n <Kbd textSize=\"5\" mr=\"4\">\n Esc\n </Kbd>\n <Kbd textSize=\"3\" mr=\"4\">\n Esc\n </Kbd>\n <Kbd textSize=\"1\">Esc</Kbd>\n </Block>\n</>"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"title": "In a Button",
|
|
38
|
+
"code": "<Buttons>\n <Button color=\"primary\" aria-keyshortcuts=\"Control+S\">\n Save\n <Kbd.Group ml=\"2\">\n <Kbd>Ctrl</Kbd>\n <Kbd>S</Kbd>\n </Kbd.Group>\n </Button>\n <Button aria-keyshortcuts=\"Escape\">\n Cancel\n <Kbd ml=\"2\">Esc</Kbd>\n </Button>\n</Buttons>"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"title": "In a Tooltip",
|
|
42
|
+
"code": "<Tooltip\n active\n position=\"right\"\n content={\n <>\n Bold{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>B</Kbd>\n </Kbd.Group>\n </>\n }\n>\n <Button aria-keyshortcuts=\"Control+B\">Bold</Button>\n</Tooltip>"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"title": "Colors",
|
|
46
|
+
"code": "<>\n <Notification color=\"info\">\n Press <Kbd>Esc</Kbd> to close this panel.\n </Notification>\n <Notification color=\"warning\" isLight>\n You have unsaved changes. Press{' '}\n <Kbd.Group>\n <Kbd>Ctrl</Kbd>\n <Kbd>S</Kbd>\n </Kbd.Group>{' '}\n to save them.\n </Notification>\n <Paragraph>\n Select a row and press{' '}\n <Kbd textColor=\"danger\" colorShade=\"on-scheme\">\n Del\n </Kbd>{' '}\n to delete it.\n </Paragraph>\n</>"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"title": "Mac and Windows",
|
|
50
|
+
"code": "function example() {\n const hydrated = useIsHydrated();\n const isMac = hydrated && /Mac|iPhone|iPad/.test(navigator.userAgent);\n return (\n <Button aria-keyshortcuts={isMac ? 'Meta+K' : 'Control+K'}>\n Search\n <Kbd.Group ml=\"2\">\n {isMac ? <Kbd label=\"Command\">⌘</Kbd> : <Kbd>Ctrl</Kbd>}\n <Kbd>K</Kbd>\n </Kbd.Group>\n </Button>\n );\n}"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"title": "Compound (dot-notation) usage",
|
|
54
|
+
"code": "<Paragraph>\n Press{' '}\n <Kbd.Group>\n <Kbd label=\"Command\">⌘</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>P</Kbd>\n </Kbd.Group>{' '}\n on a Mac, then{' '}\n <Kbd.Group separator=\"then\">\n <Kbd>G</Kbd>\n <Kbd>I</Kbd>\n </Kbd.Group>\n .\n</Paragraph>"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"accessibility": "- **Markup:** a key is a `<kbd>`, and a combination is an outer `<kbd>` around one `<kbd>` per key,\n the form the [HTML standard](https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-kbd-element)\n gives for keys pressed together. Neither adds a role or any `aria-*`, and neither takes focus.\n- **What a screen reader hears:** nothing marks a `<kbd>` as a key, so a screen reader reads the\n text inside it like the rest of the sentence. The separator is text with a space either side,\n so `Ctrl`, `Shift` and `P` read as \"Ctrl plus Shift plus P\" and never run together into one word.\n- **Symbols:** a glyph like ⌘, ⌥, ⇧, ⌃ or ⏎ needs a `label`. It goes in visually hidden text,\n with the glyph hidden from assistive tech. Copying the key copies the label along with the glyph.\n- **Never `aria-label` on a key:** ARIA in HTML prohibits naming a `<kbd>`, so nothing obliges a\n screen reader to read one. That's why `label` renders text instead.\n- **The shortcut lives on the control:** put\n [`aria-keyshortcuts`](https://www.w3.org/TR/wai-aria-1.2/#aria-keyshortcuts) on the button or\n link the shortcut triggers, in UI Events key names: `Control+Shift+P`, with `Meta` for ⌘ and\n `Alt` for Option. `Kbd` is only the hint people see.\n- **Contrast:** the key's text is the color of the text around it and its fill is faint, so the\n text keeps the contrast its paragraph, button or tooltip already has. `bgColor` replaces that\n faint fill, so pair it with a `textColor` that holds contrast in both color schemes, such as\n `textColor=\"black\"` on `bgColor=\"warning\"`.\n- **Forced colors:** in Windows high contrast mode the key keeps its border and drops its fill, so\n it's an outlined key over whatever it sits on, a filled button or a tooltip included, rather\n than a plate of the system's background color. Its bottom edge is a border, not a shadow, so it\n survives too.\n- **Selectable:** the text can be selected and copied, so people can copy a shortcut out of a help\n page.",
|
|
58
|
+
"related": [
|
|
59
|
+
"Button",
|
|
60
|
+
"ClientOnly",
|
|
61
|
+
"Code",
|
|
62
|
+
"Tag",
|
|
63
|
+
"Tooltip",
|
|
64
|
+
"useBulmaClasses"
|
|
65
|
+
],
|
|
66
|
+
"storybook": "https://bestax.io/storybook/?path=/story/elements-kbd--default",
|
|
67
|
+
"summary": "The `Kbd` component renders a `<kbd>` drawn as a keycap, for a key the reader presses. It only shows the key: it doesn't listen for it. The key takes its colors from the text it sits in, and its size in `em`, so it fits a paragraph, a title or a filled button as it is, and `textSize` sizes it outright. For a combination or a sequence, put the keys in a `Kbd.Group`. What tells assistive tech a control has a shortcut is `aria-keyshortcuts` on that control, with `Kbd` as the hint people see next to it.",
|
|
68
|
+
"import": "import { Kbd } from '@allxsmith/bestax-bulma';",
|
|
69
|
+
"sourceFile": "bulma-ui/src/elements/Kbd.tsx",
|
|
70
|
+
"rootClass": "kbd",
|
|
71
|
+
"parts": [
|
|
72
|
+
{
|
|
73
|
+
"path": "Kbd",
|
|
74
|
+
"summary": "The `Kbd` component renders a `<kbd>` drawn as a keycap, for a key the reader presses. It only shows the key: it doesn't listen for it. The key takes its colors from the text it sits in, and its size in `em`, so it fits a paragraph, a title or a filled button as it is, and `textSize` sizes it outright. For a combination or a sequence, put the keys in a `Kbd.Group`. What tells assistive tech a control has a shortcut is `aria-keyshortcuts` on that control, with `Kbd` as the hint people see next to it.",
|
|
75
|
+
"component": null,
|
|
76
|
+
"props": [
|
|
77
|
+
{
|
|
78
|
+
"name": "className",
|
|
79
|
+
"type": "string",
|
|
80
|
+
"default": null,
|
|
81
|
+
"description": "Additional CSS classes to apply.",
|
|
82
|
+
"required": false,
|
|
83
|
+
"inherited": false,
|
|
84
|
+
"deprecated": false
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "children",
|
|
88
|
+
"type": "React.ReactNode",
|
|
89
|
+
"default": null,
|
|
90
|
+
"description": "The key as it's printed on the keyboard: a word (`Ctrl`, `Esc`), a letter, or a symbol (`⌘`).",
|
|
91
|
+
"required": false,
|
|
92
|
+
"inherited": false,
|
|
93
|
+
"deprecated": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "label",
|
|
97
|
+
"type": "string",
|
|
98
|
+
"default": null,
|
|
99
|
+
"description": "What a screen reader says in place of a symbol, in your app's language: `label=\"Command\"` on `⌘`. The symbol is hidden from assistive tech with `aria-hidden`, and the label is read in its place, from text that's visually hidden. Use it for a glyph that isn't a word, such as `⌘`, `⌥`, `⇧`, `⌃` or `⏎`, and leave it off a key written as a word. Copying the key copies the label along with the glyph. Don't reach for `aria-label` instead: ARIA in HTML prohibits naming a `<kbd>`, so nothing obliges a screen reader to read it.",
|
|
100
|
+
"required": false,
|
|
101
|
+
"inherited": false,
|
|
102
|
+
"deprecated": false
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "textColor",
|
|
106
|
+
"type": "Bulma color | 'inherit' | 'current'",
|
|
107
|
+
"default": null,
|
|
108
|
+
"description": "Text color helper. The key's edge and fill are mixed from its text color, so they follow it.",
|
|
109
|
+
"required": false,
|
|
110
|
+
"inherited": false,
|
|
111
|
+
"deprecated": false,
|
|
112
|
+
"valuesRef": "helpers/valid-values"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "bgColor",
|
|
116
|
+
"type": "Bulma color | 'inherit' | 'current'",
|
|
117
|
+
"default": null,
|
|
118
|
+
"description": "Background color helper. It replaces the key's faint fill, and the text still follows the text around it, which turns light in dark mode, so pair it with a `textColor` that reads on that color in both schemes, such as `textColor=\"black\"` on `bgColor=\"warning\"`.",
|
|
119
|
+
"required": false,
|
|
120
|
+
"inherited": false,
|
|
121
|
+
"deprecated": false,
|
|
122
|
+
"valuesRef": "helpers/valid-values"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"extraProps": [
|
|
126
|
+
{
|
|
127
|
+
"name": "ref",
|
|
128
|
+
"type": "React.Ref<HTMLElement>",
|
|
129
|
+
"default": null,
|
|
130
|
+
"description": "Ref forwarded to the `<kbd>`.",
|
|
131
|
+
"required": false,
|
|
132
|
+
"inherited": false,
|
|
133
|
+
"deprecated": false
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"catchAll": "All standard HTML attributes and Bulma helper props",
|
|
137
|
+
"types": []
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"path": "Kbd.Group",
|
|
141
|
+
"summary": "Keys pressed together or one after another, in the outer `<kbd>` HTML gives a combination, with the separator between each pair as text. It doesn't wrap in the middle and isn't drawn as a key itself. It sets no font size, so the keys in it are the size of a key on its own.",
|
|
142
|
+
"component": null,
|
|
143
|
+
"props": [
|
|
144
|
+
{
|
|
145
|
+
"name": "className",
|
|
146
|
+
"type": "string",
|
|
147
|
+
"default": null,
|
|
148
|
+
"description": "Additional CSS classes to apply.",
|
|
149
|
+
"required": false,
|
|
150
|
+
"inherited": false,
|
|
151
|
+
"deprecated": false
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "children",
|
|
155
|
+
"type": "React.ReactNode",
|
|
156
|
+
"default": null,
|
|
157
|
+
"description": "The keys, a `Kbd` each, in the order they're pressed. The group renders the outer `<kbd>` around them, so it doesn't go inside a `Kbd` of its own, and it puts the separator between them, so don't type one: a `+` of your own doubles up. A `null` or `false` child, or an empty Fragment, gets no separator, and the keys in a Fragment are separated like the rest. A component that renders nothing still gets one, since the group can't see what a child renders, so write a conditional key inline (`{isMac && <Kbd label=\"Command\">⌘</Kbd>}`), not in a component of its own.",
|
|
158
|
+
"required": false,
|
|
159
|
+
"inherited": false,
|
|
160
|
+
"deprecated": false
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "separator",
|
|
164
|
+
"type": "string",
|
|
165
|
+
"default": "'+'",
|
|
166
|
+
"description": "What goes between the keys, shown and read aloud, with a space either side. Use `'then'` for a sequence pressed one key after another. It's a string because a screen reader has to read it.",
|
|
167
|
+
"required": false,
|
|
168
|
+
"inherited": false,
|
|
169
|
+
"deprecated": false
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "textColor",
|
|
173
|
+
"type": "Bulma color | 'inherit' | 'current'",
|
|
174
|
+
"default": null,
|
|
175
|
+
"description": "Text color helper. The keys and separators inside follow it.",
|
|
176
|
+
"required": false,
|
|
177
|
+
"inherited": false,
|
|
178
|
+
"deprecated": false,
|
|
179
|
+
"valuesRef": "helpers/valid-values"
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"extraProps": [
|
|
183
|
+
{
|
|
184
|
+
"name": "ref",
|
|
185
|
+
"type": "React.Ref<HTMLElement>",
|
|
186
|
+
"default": null,
|
|
187
|
+
"description": "Ref forwarded to the outer `<kbd>`.",
|
|
188
|
+
"required": false,
|
|
189
|
+
"inherited": false,
|
|
190
|
+
"deprecated": false
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"catchAll": "All standard HTML attributes and Bulma helper props",
|
|
194
|
+
"types": []
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
"cssVars": [
|
|
198
|
+
{
|
|
199
|
+
"css": "--bulma-kbd-family",
|
|
200
|
+
"sass": "$kbd-family",
|
|
201
|
+
"default": "var(--bulma-family-code)",
|
|
202
|
+
"scope": "root"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"css": "--bulma-kbd-size",
|
|
206
|
+
"sass": "$kbd-size",
|
|
207
|
+
"default": "0.875em",
|
|
208
|
+
"scope": "root"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"css": "--bulma-kbd-weight",
|
|
212
|
+
"sass": "$kbd-weight",
|
|
213
|
+
"default": "var(--bulma-weight-normal)",
|
|
214
|
+
"scope": "root"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"css": "--bulma-kbd-padding",
|
|
218
|
+
"sass": "$kbd-padding",
|
|
219
|
+
"default": "0.125em 0.375em",
|
|
220
|
+
"scope": "root"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"css": "--bulma-kbd-radius",
|
|
224
|
+
"sass": "$kbd-radius",
|
|
225
|
+
"default": "var(--bulma-radius-small)",
|
|
226
|
+
"scope": "root"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"css": "--bulma-kbd-border-width",
|
|
230
|
+
"sass": "$kbd-border-width",
|
|
231
|
+
"default": "max(1px, 0.0625em)",
|
|
232
|
+
"scope": "root"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"css": "--bulma-kbd-border-bottom-width",
|
|
236
|
+
"sass": "$kbd-border-bottom-width",
|
|
237
|
+
"default": "max(2px, 0.125em)",
|
|
238
|
+
"scope": "root"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"css": "--bulma-kbd-border-color",
|
|
242
|
+
"sass": "$kbd-border-color",
|
|
243
|
+
"default": "color-mix(in srgb, currentColor 35%, transparent)",
|
|
244
|
+
"scope": "root"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"css": "--bulma-kbd-background",
|
|
248
|
+
"sass": "$kbd-background",
|
|
249
|
+
"default": "color-mix(in srgb, currentColor 8%, transparent)",
|
|
250
|
+
"scope": "root"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"css": "--bulma-kbd-color",
|
|
254
|
+
"sass": "$kbd-color",
|
|
255
|
+
"default": "currentColor",
|
|
256
|
+
"scope": "root"
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
}
|
|
@@ -37,7 +37,7 @@ instead of hand-writing markup.
|
|
|
37
37
|
- Raw `*Base` form exports (`InputBase`, `SelectBase`, `TextAreaBase`, …) are
|
|
38
38
|
escape-hatch variants of the convenience wrappers above them; see the Form docs.
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
99 documented components. Generated from the API docs — every exported
|
|
41
41
|
component is guaranteed to appear (the generator fails if one lacks an API page).
|
|
42
42
|
|
|
43
43
|
## Elements
|
|
@@ -55,6 +55,7 @@ component is guaranteed to appear (the generator fails if one lacks an API page)
|
|
|
55
55
|
- [Icon](https://bestax.io/docs/api/elements/icon) — The `Icon` component is a Bulma-styled wrapper for displaying icons from various libraries (Font Awesome, Material Design Icons, Ionicons…
|
|
56
56
|
- [IconText](https://bestax.io/docs/api/elements/icontext) — The `IconText` component provides a Bulma-styled horizontal arrangement of one or more `Icon` components and optional text.
|
|
57
57
|
- [Image](https://bestax.io/docs/api/elements/image) — The `Image` component wraps images, iframes, or custom content in a Bulma-styled container, supporting fixed sizes, aspect ratios, rounded corners…
|
|
58
|
+
- [Kbd](https://bestax.io/docs/api/elements/kbd) — The `Kbd` component renders a `<kbd>` drawn as a keycap, for a key the reader presses.
|
|
58
59
|
- [Link](https://bestax.io/docs/api/elements/link) — The `Link` component renders a styled anchor (`<a>`) element with Bulma helper class integration.
|
|
59
60
|
- [LinkButton](https://bestax.io/docs/api/elements/linkbutton) — The `LinkButton` component renders a `<button>` that visually looks like text or a link.
|
|
60
61
|
- [ListItem](https://bestax.io/docs/api/elements/listitem) — The `ListItem` component renders a styled list item (`<li>`) element with Bulma helper class integration.
|
|
@@ -44,7 +44,7 @@ Set it once on `ConfigProvider` and omit `library` everywhere else.
|
|
|
44
44
|
|
|
45
45
|
## Ionicons — `'ion'` ⚠️ value is `ion`, not `ionicons`
|
|
46
46
|
|
|
47
|
-
- **Setup:** a CDN script
|
|
47
|
+
- **Setup:** a CDN script in `index.html` (no npm package — it registers the
|
|
48
48
|
`<ion-icon>` web component):
|
|
49
49
|
|
|
50
50
|
```html
|
|
@@ -138,7 +138,7 @@ Docs: https://bestax.io/docs/guides/getting-started/alternative-icons#making-the
|
|
|
138
138
|
2. **Name format for that library** — kebab vs snake_case (see the table above); for
|
|
139
139
|
material-* a wrong name renders as literal text instead of a glyph.
|
|
140
140
|
3. **The library's CSS/script is actually loaded** — the import in `main.tsx` (or the
|
|
141
|
-
Ionicons
|
|
141
|
+
Ionicons script in `index.html`) must exist; bestax ships none of them.
|
|
142
142
|
4. **Variant availability** — Font Awesome free has no `light`/`duotone`/`thin`; brand
|
|
143
143
|
glyphs need `variant="brands"`.
|
|
144
144
|
|
|
@@ -162,12 +162,12 @@ value is flagged. The same conversion covers the modifiers bestax has no prop fo
|
|
|
162
162
|
## Refs
|
|
163
163
|
|
|
164
164
|
bloomer forwarded no refs. bestax forwards a ref from the form controls, plus `Avatar`,
|
|
165
|
-
`Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `
|
|
166
|
-
`Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`, `Navbar.Dropdown`,
|
|
167
|
-
`Navbar.Link`, `SegmentedControl`, `SegmentedControl.Segment`, `Sidebar`, `Toast`
|
|
168
|
-
`ToggleButton` — pass `ref` directly on those. "The form controls" means the inputs
|
|
169
|
-
the `Field`, `Field.Label`, `Field.Body`, `Checkboxes` and `Radios` wrappers around
|
|
170
|
-
nothing.
|
|
165
|
+
`Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `Kbd`, `Kbd.Group`, `Link`,
|
|
166
|
+
`LinkButton`, `Loader`, `Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`, `Navbar.Dropdown`,
|
|
167
|
+
`Navbar.Item`, `Navbar.Link`, `SegmentedControl`, `SegmentedControl.Segment`, `Sidebar`, `Toast`
|
|
168
|
+
and `ToggleButton` — pass `ref` directly on those. "The form controls" means the inputs
|
|
169
|
+
themselves: the `Field`, `Field.Label`, `Field.Body`, `Checkboxes` and `Radios` wrappers around
|
|
170
|
+
them forward nothing.
|
|
171
171
|
|
|
172
172
|
A `ref` on anything else is unsupported, and the two React majors fail differently: React 18
|
|
173
173
|
drops it and logs "Function components cannot be given refs", while React 19 hands it to the
|
|
@@ -158,12 +158,12 @@ TODO rather than write a second `ref`; keep whichever one you meant.
|
|
|
158
158
|
|
|
159
159
|
An existing `ref` is passed through untouched — which is safe only where the bestax target
|
|
160
160
|
forwards one. rbx forwards a ref on every component; bestax does so on the form controls, plus
|
|
161
|
-
`Avatar`, `Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `
|
|
162
|
-
`Loader`, `Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`,
|
|
163
|
-
`Navbar.
|
|
164
|
-
`ToggleButton`. "The form controls" there means the inputs themselves: the
|
|
165
|
-
`Field.Label`, `Field.Body`, `Checkboxes` and `Radios` wrappers around them forward
|
|
166
|
-
`Field` is a target this codemod emits.
|
|
161
|
+
`Avatar`, `Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `Kbd`, `Kbd.Group`,
|
|
162
|
+
`Link`, `LinkButton`, `Loader`, `Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`,
|
|
163
|
+
`Navbar.Dropdown`, `Navbar.Item`, `Navbar.Link`, `SegmentedControl`, `SegmentedControl.Segment`,
|
|
164
|
+
`Sidebar`, `Toast` and `ToggleButton`. "The form controls" there means the inputs themselves: the
|
|
165
|
+
`Field`, `Field.Label`, `Field.Body`, `Checkboxes` and `Radios` wrappers around them forward
|
|
166
|
+
nothing, and `Field` is a target this codemod emits.
|
|
167
167
|
|
|
168
168
|
Carry a `ref` onto anything else — `Card`, `Box`, `Section`, `Message`, `Tabs` and most of the
|
|
169
169
|
catalogue — and it is unsupported, but the two React majors fail differently. React 18 drops
|
|
@@ -145,13 +145,13 @@ that lists the sizes that component takes: use one of them, or drop the prop.
|
|
|
145
145
|
## `domRef`
|
|
146
146
|
|
|
147
147
|
bestax components don't take `domRef`, but many forward a plain `ref` — the form controls,
|
|
148
|
-
plus `Avatar`, `Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `
|
|
149
|
-
`LinkButton`, `Loader`, `Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`,
|
|
150
|
-
`Navbar.Item`, `Navbar.Link`, `SegmentedControl`, `SegmentedControl.Segment`,
|
|
151
|
-
and `ToggleButton`. On those, rename `domRef` to `ref` and it works; do not
|
|
152
|
-
markup. "The form controls" means the inputs themselves: the `Field`,
|
|
153
|
-
`Field.Body`, `Checkboxes` and `Radios` wrappers around them forward nothing, and
|
|
154
|
-
target this codemod emits.
|
|
148
|
+
plus `Avatar`, `Button`, `Carousel`, `CarouselItem`, `Dialog`, `Dropdown`, `Kbd`, `Kbd.Group`,
|
|
149
|
+
`Link`, `LinkButton`, `Loader`, `Menu.Item`, `Modal`, `Navbar`, `Navbar.Burger`,
|
|
150
|
+
`Navbar.Dropdown`, `Navbar.Item`, `Navbar.Link`, `SegmentedControl`, `SegmentedControl.Segment`,
|
|
151
|
+
`Sidebar`, `Toast` and `ToggleButton`. On those, rename `domRef` to `ref` and it works; do not
|
|
152
|
+
restructure the markup. "The form controls" means the inputs themselves: the `Field`,
|
|
153
|
+
`Field.Label`, `Field.Body`, `Checkboxes` and `Radios` wrappers around them forward nothing, and
|
|
154
|
+
`Field` is a target this codemod emits.
|
|
155
155
|
|
|
156
156
|
Everywhere else the rename is not enough, and the two React majors differ: React 18 drops the
|
|
157
157
|
ref and logs "Function components cannot be given refs", while React 19 passes it through as
|
|
@@ -80,7 +80,7 @@ is **more complete** than the docs page's Option C example, which omits several)
|
|
|
80
80
|
`checkbox`, `radio`, `switch`, `slider`, `numberinput`, `rate`, `autocomplete`, `taginput`,
|
|
81
81
|
`picker-popover`, `dateinput`, `timeinput`, `datetimeinput`, `daterangeinput`
|
|
82
82
|
|
|
83
|
-
**Elements** (`@allxsmith/bestax-bulma/scss/elements/<name>`): `linkbutton`, `loader`,
|
|
83
|
+
**Elements** (`@allxsmith/bestax-bulma/scss/elements/<name>`): `kbd`, `linkbutton`, `loader`,
|
|
84
84
|
`notification`, `progress`, `skeleton`
|
|
85
85
|
|
|
86
86
|
**Helpers** (`@allxsmith/bestax-bulma/scss/helpers/<name>`): `cursor`, `sizing`
|
|
@@ -321,6 +321,16 @@ them. See the constituent-element exception above.
|
|
|
321
321
|
`--bulma-hover-card-min-width`, `--bulma-hover-card-offset`, `--bulma-hover-card-padding`,
|
|
322
322
|
`--bulma-hover-card-radius`, `--bulma-hover-card-shadow`, `--bulma-hover-card-z-index`
|
|
323
323
|
|
|
324
|
+
### Kbd
|
|
325
|
+
|
|
326
|
+
Declared on each key, `.kbd`. The border color and the fill default to `color-mix()` of
|
|
327
|
+
`currentColor` with `transparent`, so a key follows its text in dark mode, in a filled button and
|
|
328
|
+
in a tooltip without an override of its own. The sizes are in `em`, so `textSize` scales them.
|
|
329
|
+
|
|
330
|
+
`--bulma-kbd-background`, `--bulma-kbd-border-bottom-width`, `--bulma-kbd-border-color`,
|
|
331
|
+
`--bulma-kbd-border-width`, `--bulma-kbd-color`, `--bulma-kbd-family`, `--bulma-kbd-padding`,
|
|
332
|
+
`--bulma-kbd-radius`, `--bulma-kbd-size`, `--bulma-kbd-weight`
|
|
333
|
+
|
|
324
334
|
### LinkButton
|
|
325
335
|
|
|
326
336
|
Declared on the compound `.button.link-button` — see the compound-selector exception above.
|
|
@@ -65,6 +65,7 @@ Shades (`colorShade` / `backgroundColorShade`): `00, 05, 10, … 95, invert, lig
|
|
|
65
65
|
| `DateTimeInput` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | also `isRounded` |
|
|
66
66
|
| `File` | `primary \| link \| info \| success \| warning \| danger \| black \| dark \| light \| white` | `small \| medium \| large` | also `isBoxed`, `isFullwidth` |
|
|
67
67
|
| `Hero` | every `validColors` member + `inherit`/`current` (the `-bis`/`-ter` shades, the greys, `inherit` and `current` deprecated: no CSS, dev-warn, removed next major — see ⚠️) | `small \| medium \| large \| fullheight \| fullheight-with-navbar` | section background |
|
|
68
|
+
| `Kbd` | — (no `color`: the edge and fill are mixed from the text color, so `textColor` tints them; `bgColor` replaces the fill, so pair it with a `textColor`) | — (sized in `em` from the text around it; size it with `textSize`) | one keycap look, no `variant`; `Kbd.Group` takes `textColor` too; retheme through `--bulma-kbd-*` |
|
|
68
69
|
| `LinkButton` | `primary \| link \| info \| success \| warning \| danger \| white \| light \| dark \| black` | — | button-styled link; emits `link-button-<color>` — **no `isLight`/`isOutlined`/`isInverted`** |
|
|
69
70
|
| `Loader` | — (no color props: the ring is drawn in `--bulma-border`) | — (the ring is `1em`; size it with `textSize`) | for a colored spinner over a region, use `Loading` |
|
|
70
71
|
| `Loading` | `primary \| link \| info \| success \| warning \| danger` | `small \| medium \| large` | spinner color; default light grey |
|
package/data/skills.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"id": "component-catalog",
|
|
12
12
|
"file": "references/component-catalog.md",
|
|
13
|
-
"bytes":
|
|
13
|
+
"bytes": 19769
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"id": "library-contributor",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
{
|
|
44
44
|
"id": "icon-libraries",
|
|
45
45
|
"file": "references/icon-libraries.md",
|
|
46
|
-
"bytes":
|
|
46
|
+
"bytes": 9166
|
|
47
47
|
}
|
|
48
48
|
],
|
|
49
49
|
"examples": [
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
{
|
|
94
94
|
"id": "bloomer-prop-map",
|
|
95
95
|
"file": "references/bloomer/prop-map.md",
|
|
96
|
-
"bytes":
|
|
96
|
+
"bytes": 24625
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"id": "bloomer-unmappables",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
{
|
|
129
129
|
"id": "rbx-prop-map",
|
|
130
130
|
"file": "references/rbx/prop-map.md",
|
|
131
|
-
"bytes":
|
|
131
|
+
"bytes": 12390
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
"id": "rbx-unmappables",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
{
|
|
149
149
|
"id": "react-bulma-components-unmappables",
|
|
150
150
|
"file": "references/react-bulma-components/unmappables.md",
|
|
151
|
-
"bytes":
|
|
151
|
+
"bytes": 12252
|
|
152
152
|
}
|
|
153
153
|
],
|
|
154
154
|
"examples": []
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
{
|
|
163
163
|
"id": "modular-build",
|
|
164
164
|
"file": "references/modular-build.md",
|
|
165
|
-
"bytes":
|
|
165
|
+
"bytes": 10298
|
|
166
166
|
}
|
|
167
167
|
],
|
|
168
168
|
"examples": []
|
|
@@ -176,12 +176,12 @@
|
|
|
176
176
|
{
|
|
177
177
|
"id": "css-variables",
|
|
178
178
|
"file": "references/css-variables.md",
|
|
179
|
-
"bytes":
|
|
179
|
+
"bytes": 33582
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"id": "themeable-components",
|
|
183
183
|
"file": "references/themeable-components.md",
|
|
184
|
-
"bytes":
|
|
184
|
+
"bytes": 22998
|
|
185
185
|
}
|
|
186
186
|
],
|
|
187
187
|
"examples": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bestax-mcp",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.2",
|
|
4
4
|
"mcpName": "io.github.allxsmith/bestax-mcp",
|
|
5
5
|
"description": "MCP server for @allxsmith/bestax-bulma — component props, examples, CSS variables and agent skills, served offline from a version-pinned index",
|
|
6
6
|
"type": "module",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@modelcontextprotocol/sdk": "^1.31.0",
|
|
44
44
|
"zod": "^4.4.3",
|
|
45
|
-
"@allxsmith/bestax-bulma": "^5.
|
|
45
|
+
"@allxsmith/bestax-bulma": "^5.33.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@jest/globals": "^30.0.0",
|