bestax-mcp 1.18.35 → 1.18.36

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 CHANGED
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 2,
3
3
  "generatedFrom": {
4
4
  "package": "@allxsmith/bestax-bulma",
5
- "version": "5.66.1"
5
+ "version": "5.66.2"
6
6
  },
7
7
  "docsBase": "https://bestax.io/docs",
8
8
  "categories": [
@@ -38,7 +38,7 @@
38
38
  "code": "<AppFrame>\n <AppFrameHeader>\n <Navbar aria-label=\"Site\">\n <Navbar.Brand>\n <Navbar.Item href=\"#\">\n <strong>Acme</strong>\n </Navbar.Item>\n <AppFrameBurger />\n </Navbar.Brand>\n </Navbar>\n </AppFrameHeader>\n <AppFrameNav>\n <Menu>\n <Menu.List>\n <Menu.Item href=\"#\" active>\n Dashboard\n </Menu.Item>\n </Menu.List>\n </Menu>\n </AppFrameNav>\n <AppFrame.Main>\n <Section>\n <Paragraph>\n AppFrameNav and AppFrame.Nav are the same component.\n </Paragraph>\n </Section>\n </AppFrame.Main>\n</AppFrame>"
39
39
  }
40
40
  ],
41
- "accessibility": "- **Landmarks:** the header, the nav, the page and the footer are the page's banner, navigation,\n main and contentinfo landmarks, and the aside a complementary one, as long as the frame sits at\n the top of the page. A development build warns when it sits inside a `main` or a sectioning\n element, where the header and footer stop being landmarks.\n- **Names:** the nav is named \"Sections\" (`labels.nav`), since the `Navbar` in the header names\n its own navigation. The name leaves out the word \"navigation\", which the role says. A `Menu`\n in the nav keeps its `<aside>`, which inside a `<nav>` is a plain element unless it's named.\n- **Skip link:** the first thing on the page, hidden until it has focus, moves focus to the page's\n `<main>` (WCAG 2.4.1).\n- **Sticky header:** `scroll-padding-top` on the document keeps an in-page link's target and a\n focused element below the header (WCAG 2.4.11, technique C43).\n- **The burger** is a button named \"menu\" (`labels.burger`), with `aria-expanded` saying whether\n the drawer is open, or from the breakpoint up whether the column is shown, and `aria-controls`\n naming the nav. The server can't know the width, so until the page hydrates the burger has no\n `aria-expanded` and shows its bars, and the first paint after hydration has both right.\n- **The drawer** is modal by default: focus moves to its close button, Tab and Shift+Tab stay\n inside, the page doesn't scroll, the rest of the frame is inert, and Escape closes it while it's\n the topmost overlay, so a `Modal` opened from it closes first. Escape, the close button and a\n click on the backdrop hand focus back to the burger, and so does a press outside the drawer\n without `overlay`, before the press moves it to what was pressed. The close button is there for\n a touch screen reader user, who has no Escape key. It stays a navigation landmark rather than a\n dialog: the inert frame is what keeps assistive technology inside it, so keep the page's content\n inside the frame's parts.\n- **A closed drawer and a collapsed column** are `visibility: hidden`, so their links are out of\n the Tab order and the accessibility tree before any script runs.\n- **Reflow:** at 320 pixels wide the nav is a drawer, so nothing scrolls sideways (WCAG 1.4.10).\n- **Motion:** the drawer's slide, the backdrop's fade and the column's collapse don't play under\n `prefers-reduced-motion: reduce`.\n- **Forced colors:** the column keeps its divider, and the drawer gets a border on its open edge in\n place of its shadow.\n- **Right to left:** the column sits on the right, and the drawer slides in from the right.",
41
+ "accessibility": "- **Landmarks:** the header, the nav, the page and the footer are the page's banner, navigation,\n main and contentinfo landmarks, and the aside a complementary one, as long as the frame sits at\n the top of the page. A development build warns when it sits inside a `main` or a sectioning\n element, where the header and footer stop being landmarks.\n- **Names:** the nav is named \"Sections\" (`labels.nav`), since the `Navbar` in the header names\n its own navigation. The name leaves out the word \"navigation\", which the role says. A `Menu`\n in the nav keeps its `<aside>`, which inside a `<nav>` is a plain element unless it's named.\n- **Skip link:** the first thing on the page, hidden until it has focus, moves focus to the page's\n `<main>` (WCAG 2.4.1).\n- **Sticky header:** `scroll-padding-top` on the document keeps an in-page link's target and a\n focused element below the header (WCAG 2.4.11, technique C43).\n- **The burger** is a button named \"menu\" (`labels.burger`), with `aria-expanded` saying whether\n the drawer is open, or from the breakpoint up whether the column is shown, and `aria-controls`\n naming the nav. The server can't know the width, so until the page hydrates the burger has no\n `aria-expanded` and shows its bars, and the first paint after hydration has both right.\n- **The drawer** is modal by default: focus moves to its close button, Tab and Shift+Tab stay\n inside, the page doesn't scroll, the rest of the frame is inert, and Escape closes it while it's\n the topmost overlay, so a `Modal` opened from it closes first. Escape, the close button and a\n click on the backdrop hand focus back to the burger, and so does a press outside the drawer\n without `overlay`, before the press moves it to what was pressed. The close button is there for\n a touch screen reader user, who has no Escape key. It stays a navigation landmark rather than a\n dialog: the inert frame is what keeps assistive technology inside it, so keep the page's content\n inside the frame's parts.\n- **A closed drawer and a collapsed column** are `visibility: hidden`, so their links are out of\n the Tab order and the accessibility tree before any script runs.\n- **Reflow:** at 320 pixels wide the nav is a drawer, so nothing scrolls sideways (WCAG 1.4.10).\n- **Motion:** the drawer's slide, the backdrop's fade and the column's collapse don't play under\n `prefers-reduced-motion: reduce`.\n- **Forced colors:** the column keeps its divider, the drawer gets a border on its open edge in\n place of its shadow, and the burger keeps its bars, as a [`Navbar`](https://bestax.io/docs/api/components/navbar)'s\n does.\n- **Right to left:** the column sits on the right, and the drawer slides in from the right.",
42
42
  "related": [
43
43
  "Footer",
44
44
  "Menu",
@@ -82,7 +82,7 @@
82
82
  "code": "<Navbar>\n <Navbar.Brand>\n <Navbar.Item href=\"#\">\n <img src=\"/img/logo.svg\" alt=\"Logo\" width=\"28\" height=\"28\" />\n </Navbar.Item>\n <Navbar.Burger aria-label=\"menu\" />\n </Navbar.Brand>\n <Navbar.Menu active>\n <Navbar.Start>\n <Navbar.Item href=\"#\">Home</Navbar.Item>\n <Navbar.Item href=\"#\">Docs</Navbar.Item>\n </Navbar.Start>\n <Navbar.End>\n <Navbar.Item href=\"#\">Log in</Navbar.Item>\n </Navbar.End>\n </Navbar.Menu>\n</Navbar>"
83
83
  }
84
84
  ],
85
- "accessibility": "- The root `Navbar` renders as `<nav role=\"navigation\" aria-label=\"main navigation\">`.\n The default accessible name is `main navigation`. A screen reader announces it with\n the role, and since the name holds the role word, \"navigation\" is heard twice.\n Pass a name without the role word (`aria-label=\"Site\"`), and a different name\n on each Navbar when a page has more than one. A passed `aria-label` replaces\n the default.\n- `Navbar.Item active` sets `aria-current=\"page\"` on the element `as` renders, the link by\n default, so the current item isn't only a color. An `aria-current` you pass wins: a navbar of\n sections on one page can say `\"location\"`, and `aria-current={false}` turns it off.\n- Use semantic links (`<a>`) and buttons, and provide clear `aria-label` and `aria-expanded` for the burger toggle.\n- `Navbar.Link` inside a `Navbar.Dropdown` automatically gets `aria-haspopup=\"true\"` and\n `aria-expanded` synced to the dropdown's open state — no manual wiring required.\n <kbd>Enter</kbd>/<kbd>Space</kbd> toggle the dropdown open/closed, and <kbd>Escape</kbd>\n closes it and keeps focus on the link. When the trigger isn't interactive on its own — no\n `href`, not `as=\"button\"`, and not a custom component — it also gets `role=\"button\"` and\n `tabIndex={0}` so it's reachable and operable by keyboard, and a mouse/touch click on it\n toggles the dropdown too (a caller-supplied `onClick` still runs, and can\n `preventDefault()` to opt out).\n- A custom component passed to `as` keeps its own semantics, because a router link takes `to`\n rather than `href` and so can't be recognised from the props it's given. If yours renders\n something non-interactive instead, pass `role=\"button\"` and it takes the fallback above —\n `tabIndex` and click included. The keyboard path is wired either way.\n- `hoverable` dropdowns keep working with a mouse (hover-to-open); the keyboard path above\n opens and closes them independently of hover.\n\n:::note\nThere's no arrow-key roving between navbar items and no outside-click handling for\n`Navbar.Dropdown` — Bulma navbar dropdowns are hover/click surfaces, so this is intentionally\nkept simple.\n:::",
85
+ "accessibility": "- The root `Navbar` renders as `<nav role=\"navigation\" aria-label=\"main navigation\">`.\n The default accessible name is `main navigation`. A screen reader announces it with\n the role, and since the name holds the role word, \"navigation\" is heard twice.\n Pass a name without the role word (`aria-label=\"Site\"`), and a different name\n on each Navbar when a page has more than one. A passed `aria-label` replaces\n the default.\n- `Navbar.Item active` sets `aria-current=\"page\"` on the element `as` renders, the link by\n default, so the current item isn't only a color. An `aria-current` you pass wins: a navbar of\n sections on one page can say `\"location\"`, and `aria-current={false}` turns it off.\n- Use semantic links (`<a>`) and buttons, and provide clear `aria-label` and `aria-expanded` for the burger toggle.\n- `Navbar.Link` inside a `Navbar.Dropdown` automatically gets `aria-haspopup=\"true\"` and\n `aria-expanded` synced to the dropdown's open state — no manual wiring required.\n <kbd>Enter</kbd>/<kbd>Space</kbd> toggle the dropdown open/closed, and <kbd>Escape</kbd>\n closes it and keeps focus on the link. When the trigger isn't interactive on its own — no\n `href`, not `as=\"button\"`, and not a custom component — it also gets `role=\"button\"` and\n `tabIndex={0}` so it's reachable and operable by keyboard, and a mouse/touch click on it\n toggles the dropdown too (a caller-supplied `onClick` still runs, and can\n `preventDefault()` to opt out).\n- A custom component passed to `as` keeps its own semantics, because a router link takes `to`\n rather than `href` and so can't be recognised from the props it's given. If yours renders\n something non-interactive instead, pass `role=\"button\"` and it takes the fallback above —\n `tabIndex` and click included. The keyboard path is wired either way.\n- `hoverable` dropdowns keep working with a mouse (hover-to-open); the keyboard path above\n opens and closes them independently of hover.\n- **Forced colors:** Bulma draws the burger's bars as a background color, which forced colors\n (Windows' contrast themes) replaces, so the burger would vanish there while it still works and\n takes focus. bestax's styles keep its bars visible in the system's button text color. That rule\n ships in `bestax.css` and `extras.css`, not in Bulma's own stylesheet, and an\n [`AppFrame`](https://bestax.io/docs/api/layout/appframe)'s burger gets it too.\n\n:::note\nThere's no arrow-key roving between navbar items and no outside-click handling for\n`Navbar.Dropdown` — Bulma navbar dropdowns are hover/click surfaces, so this is intentionally\nkept simple.\n:::",
86
86
  "related": ["Button", "Icon", "useBulmaClasses"],
87
87
  "storybook": "https://bestax.io/storybook/?path=/story/components-navbar--default",
88
88
  "summary": "The `Navbar` component implements Bulma's powerful, responsive navigation bar for your Bulma React UI.",
@@ -104,7 +104,7 @@ Create `src/styles.scss` — base + themes always come first:
104
104
 
105
105
  // One line per stock Bulma component the app imports…
106
106
  @use 'bulma/sass/elements/button';
107
- @use 'bulma/sass/components/navbar';
107
+ @use 'bulma/sass/components/card';
108
108
  // …and per bestax extras component:
109
109
  @use '@allxsmith/bestax-bulma/scss/components/dialog';
110
110
  // …and bestax's partial for a stock component that has one:
@@ -46,7 +46,7 @@ publishes its SCSS sources (`src/scss` ships in the npm package, exposed via the
46
46
 
47
47
  **Rule:** stock Bulma components map to `bulma/sass/<category>/<lowercased-name>`; bestax
48
48
  extras map to `@allxsmith/bestax-bulma/scss/<category>/<lowercased-name>`. Components that
49
- are pure stock Bulma (Box, Card, Navbar, Modal, Hero, …) have **no** extras partial —
49
+ are pure stock Bulma (Box, Card, Modal, Hero, …) have **no** extras partial —
50
50
  Bulma's own module is all they need.
51
51
 
52
52
  Bulma groups its form controls, so their modules don't follow the name: `Input` and `TextArea`
@@ -82,7 +82,7 @@ is **more complete** than the docs page's Option C example, which omits several)
82
82
  `loading`, `collapse`, `tooltip`, `popover`, `hovercard`, `contextmenu`, `steps`, `sidebar`,
83
83
  `toast`, `dialog`, `carousel`, `lightbox`, `tabs`, `menu`, `tableofcontents`, `reveal`, `avatar`, `avatars`,
84
84
  `badge`, `emptystate`, `timeline`, `treeview`, `scrollarea`, `command`, `datatable`,
85
- `pagination`, `affix`
85
+ `pagination`, `affix`, `navbar`
86
86
 
87
87
  **Layout** (`@allxsmith/bestax-bulma/scss/layout/<name>`): `appframe`, `splitter`, `stack`
88
88
 
@@ -135,6 +135,16 @@ Notes:
135
135
  @use '@allxsmith/bestax-bulma/scss/components/pagination' as bestax-pagination;
136
136
  ```
137
137
 
138
+ - The `navbar` partial **extends** stock Bulma navbar (it keeps the burger's bars in
139
+ ButtonText in forced colors, where Chromium paints them in the page's Canvas color), so an
140
+ app using `Navbar` needs both, in either order. `AppFrame.Burger` renders `Navbar.Burger`,
141
+ so a build with one wants this partial too:
142
+
143
+ ```scss
144
+ @use 'bulma/sass/components/navbar';
145
+ @use '@allxsmith/bestax-bulma/scss/components/navbar' as bestax-navbar;
146
+ ```
147
+
138
148
  - The `file` partial **extends** stock Bulma file (File's keyboard focus ring, and the rounded
139
149
  corners of a boxed `hasName` File with no name to show), so an app using `File` needs both, in
140
150
  either order:
package/data/skills.json CHANGED
@@ -162,7 +162,7 @@
162
162
  {
163
163
  "id": "modular-build",
164
164
  "file": "references/modular-build.md",
165
- "bytes": 18954
165
+ "bytes": 19404
166
166
  }
167
167
  ],
168
168
  "examples": []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bestax-mcp",
3
- "version": "1.18.35",
3
+ "version": "1.18.36",
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.32.2",
44
44
  "zod": "^4.6.7",
45
- "@allxsmith/bestax-bulma": "^5.66.1"
45
+ "@allxsmith/bestax-bulma": "^5.66.2"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/node": "^26.6.6",