@maltjoy/mcp-server 0.4.0 → 0.6.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +30 -3
- package/dist/doc/VJoyAdminBanner/guideline.md +284 -0
- package/dist/doc/VJoyAvailability/guideline.md +352 -0
- package/dist/doc/VJoyAvatar/guideline.md +192 -0
- package/dist/doc/VJoyAvatarsList/guideline.md +328 -0
- package/dist/doc/VJoyBadge/guideline.md +169 -0
- package/dist/doc/VJoyBadgeLevel/guideline.md +166 -0
- package/dist/doc/VJoyBlockSkeleton/guideline.md +150 -0
- package/dist/doc/VJoyBottomSheet/guideline.md +345 -0
- package/dist/doc/VJoyBottomSheetTrigger/guideline.md +156 -0
- package/dist/doc/VJoyButton/guideline.md +371 -0
- package/dist/doc/VJoyButton/metadata.json +0 -16
- package/dist/doc/VJoyButtonCard/guideline.md +384 -0
- package/dist/doc/VJoyCheckbox/guideline.md +317 -0
- package/dist/doc/VJoyCheckboxCard/guideline.md +381 -0
- package/dist/doc/VJoyCheckboxGroup/guideline.md +363 -0
- package/dist/doc/VJoyCheckboxGroup/metadata.json +7 -7
- package/dist/doc/VJoyCollapse/guideline.md +362 -0
- package/dist/doc/VJoyCollapseItem/guideline.md +394 -0
- package/dist/doc/VJoyCompanyAvatar/guideline.md +162 -0
- package/dist/doc/VJoyDialog/guideline.md +425 -0
- package/dist/doc/VJoyDialogTrigger/guideline.md +186 -0
- package/dist/doc/VJoyDot/guideline.md +177 -0
- package/dist/doc/VJoyDrawer/guideline.md +392 -0
- package/dist/doc/VJoyDrawerTrigger/guideline.md +145 -0
- package/dist/doc/VJoyDropdown/guideline.md +393 -0
- package/dist/doc/VJoyDropdown/metadata.json +6 -6
- package/dist/doc/VJoyDropdownList/guideline.md +396 -0
- package/dist/doc/VJoyDropdownList/metadata.json +7 -7
- package/dist/doc/VJoyDropzone/guideline.md +390 -0
- package/dist/doc/VJoyDropzone/metadata.json +36 -1
- package/dist/doc/VJoyFilterBar/guideline.md +419 -0
- package/dist/doc/VJoyFilterBarButton/guideline.md +359 -0
- package/dist/doc/VJoyFloatingActionsBar/guideline.md +372 -0
- package/dist/doc/VJoyFormError/guideline.md +325 -0
- package/dist/doc/VJoyFormError/metadata.json +0 -14
- package/dist/doc/VJoyFormFieldSkeleton/guideline.md +159 -0
- package/dist/doc/VJoyFormGroup/guideline.md +285 -0
- package/dist/doc/VJoyFunnel/guideline.md +349 -0
- package/dist/doc/VJoyFunnelFooter/guideline.md +178 -0
- package/dist/doc/VJoyFunnelHeader/guideline.md +204 -0
- package/dist/doc/VJoyHighlight/guideline.md +169 -0
- package/dist/doc/VJoyIcon/JoyIcon.types.ts +1 -1
- package/dist/doc/VJoyIcon/guideline.md +168 -0
- package/dist/doc/VJoyIcon/metadata.json +0 -1
- package/dist/doc/VJoyIconButton/guideline.md +169 -0
- package/dist/doc/VJoyIconButton/metadata.json +1 -1
- package/dist/doc/VJoyIndicator/guideline.md +168 -0
- package/dist/doc/VJoyIndicators/guideline.md +183 -0
- package/dist/doc/VJoyInput/JoyInput.types.ts +1 -6
- package/dist/doc/VJoyInput/guideline.md +401 -0
- package/dist/doc/VJoyInput/metadata.json +5 -14
- package/dist/doc/VJoyInputDigit/guideline.md +381 -0
- package/dist/doc/VJoyInputNumber/guideline.md +414 -0
- package/dist/doc/VJoyInputNumber/metadata.json +22 -17
- package/dist/doc/VJoyInputPassword/guideline.md +379 -0
- package/dist/doc/VJoyInputPassword/metadata.json +0 -14
- package/dist/doc/VJoyLabel/guideline.md +200 -0
- package/dist/doc/VJoyLink/guideline.md +360 -0
- package/dist/doc/VJoyListItem/guideline.md +335 -0
- package/dist/doc/VJoyMenu/guideline.md +304 -0
- package/dist/doc/VJoyMenu/metadata.json +21 -21
- package/dist/doc/VJoyMenuItem/guideline.md +352 -0
- package/dist/doc/VJoyPagination/guideline.md +355 -0
- package/dist/doc/VJoyPanel/guideline.md +238 -0
- package/dist/doc/VJoyPanelSection/guideline.md +160 -0
- package/dist/doc/VJoyPasswordRequirement/guideline.md +336 -0
- package/dist/doc/VJoyPasswordRequirement/metadata.json +1 -1
- package/dist/doc/VJoyProductTour/JoyProductTour.types.ts +0 -1
- package/dist/doc/VJoyProductTour/guideline.md +455 -0
- package/dist/doc/VJoyProductTour/metadata.json +1 -1
- package/dist/doc/VJoyProductTourTrigger/guideline.md +167 -0
- package/dist/doc/VJoyProgressBar/guideline.md +348 -0
- package/dist/doc/VJoyRadio/guideline.md +346 -0
- package/dist/doc/VJoyRadioGroup/guideline.md +331 -0
- package/dist/doc/VJoyRatingStars/guideline.md +306 -0
- package/dist/doc/VJoyScreenLoader/guideline.md +172 -0
- package/dist/doc/VJoySelect/guideline.md +396 -0
- package/dist/doc/VJoySelectableItem/guideline.md +351 -0
- package/dist/doc/VJoySelectableItemGroup/guideline.md +370 -0
- package/dist/doc/VJoySeparator/guideline.md +161 -0
- package/dist/doc/VJoySnackbar/guideline.md +402 -0
- package/dist/doc/VJoySpinner/guideline.md +168 -0
- package/dist/doc/VJoyStep/guideline.md +182 -0
- package/dist/doc/VJoyStepper/guideline.md +390 -0
- package/dist/doc/VJoyTab/guideline.md +298 -0
- package/dist/doc/VJoyTabs/guideline.md +353 -0
- package/dist/doc/VJoyTag/guideline.md +226 -0
- package/dist/doc/VJoyTagsInput/guideline.md +387 -0
- package/dist/doc/VJoyTagsList/guideline.md +311 -0
- package/dist/doc/VJoyTagsList/metadata.json +27 -27
- package/dist/doc/VJoyTemplate/guideline.md +366 -0
- package/dist/doc/VJoyText/guideline.md +175 -0
- package/dist/doc/VJoyText/metadata.json +1 -1
- package/dist/doc/VJoyTextarea/guideline.md +378 -0
- package/dist/doc/VJoyTitleBrand/guideline.md +155 -0
- package/dist/doc/VJoyToggle/guideline.md +327 -0
- package/dist/doc/VJoyTooltip/guideline.md +322 -0
- package/dist/doc/VJoyUserCard/guideline.md +268 -0
- package/dist/doc/VJoyUserCard/metadata.json +3 -17
- package/dist/doc/VJoyWalkthrough/guideline.md +351 -0
- package/dist/doc/VJoyWalkthroughTrigger/guideline.md +171 -0
- package/dist/doc/VJoyWrapper/guideline.md +173 -0
- package/dist/doc/css-classes.json +1 -15
- package/dist/doc/design-tokens.json +1 -0
- package/dist/doc/index.json +20 -30
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/get-component-guideline.d.ts +30 -0
- package/dist/tools/get-component-guideline.d.ts.map +1 -0
- package/dist/tools/get-component-guideline.js +51 -0
- package/dist/tools/get-component-guideline.js.map +1 -0
- package/dist/tools/get-documentation-page.d.ts +22 -0
- package/dist/tools/get-documentation-page.d.ts.map +1 -0
- package/dist/tools/get-documentation-page.js +21 -0
- package/dist/tools/get-documentation-page.js.map +1 -0
- package/dist/tools/list-documentation-pages.d.ts +22 -0
- package/dist/tools/list-documentation-pages.d.ts.map +1 -0
- package/dist/tools/list-documentation-pages.js +17 -0
- package/dist/tools/list-documentation-pages.js.map +1 -0
- package/dist/tools/search-documentation.d.ts +41 -0
- package/dist/tools/search-documentation.d.ts.map +1 -0
- package/dist/tools/search-documentation.js +25 -0
- package/dist/tools/search-documentation.js.map +1 -0
- package/dist/zeroheight-parser.d.ts +27 -0
- package/dist/zeroheight-parser.d.ts.map +1 -0
- package/dist/zeroheight-parser.js +77 -0
- package/dist/zeroheight-parser.js.map +1 -0
- package/package.json +10 -10
- package/dist/doc/VJoyMultiCheckbox/metadata.json +0 -332
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: VJoyWalkthroughTrigger
|
|
3
|
+
status: draft
|
|
4
|
+
language: en
|
|
5
|
+
dsds: JoyWalkthroughTrigger.dsds.json
|
|
6
|
+
dsdsVersion: "0.15.2"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Walkthrough trigger
|
|
10
|
+
|
|
11
|
+
Use **`VJoyWalkthroughTrigger`** as the **collapsed-state pill button** for a Joy walkthrough — a fixed, dark floating control with optional icon, title, subtitle, and chevron.
|
|
12
|
+
|
|
13
|
+
In product code, **prefer `VJoyWalkthrough`** and its `triggerTitle`, `triggerSubtitle`, and `triggerIcon` props; the parent renders this trigger when the modal is closed. Mount the trigger directly only when you need the chrome without the full walkthrough shell.
|
|
14
|
+
|
|
15
|
+
| | |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| **Code** | `VJoyWalkthroughTrigger` from `@maltjoy/core-vue` |
|
|
18
|
+
| **Design** | [ZeroHeight — Walkthrough](https://zeroheight.com/6bf479565/p/6305853-walkthrough) |
|
|
19
|
+
| **Storybook** | [VJoyWalkthrough docs](https://doc.malt.tech/joy-storybook/?path=/docs/components-overlays-vjoywalkthrough--docs) (subcomponent) |
|
|
20
|
+
| **DSDS (machine)** | [`JoyWalkthroughTrigger.dsds.json`](./JoyWalkthroughTrigger.dsds.json) |
|
|
21
|
+
| **Live API** | `joy_get_component_info("VJoyWalkthroughTrigger")` |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## When to use this component
|
|
26
|
+
|
|
27
|
+
Use this trigger when a walkthrough is **collapsed** and the user needs a persistent entry point — typically “Get started”, onboarding progress, or a resume CTA fixed to the viewport corner.
|
|
28
|
+
|
|
29
|
+
The button shows an optional leading icon, a **title** (primary line), an optional **subtitle** (secondary line, separated by a vertical rule), and a chevron that reflects open/closed state. Ripple feedback is built in (`v-joy-ripple`).
|
|
30
|
+
|
|
31
|
+
### When not to use this component
|
|
32
|
+
|
|
33
|
+
| Need | Use instead |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| Full collapsible walkthrough with modal, slots, and footer | `VJoyWalkthrough` (renders this trigger automatically when closed) |
|
|
36
|
+
| Spotlight tour anchored to page elements | `VJoyProductTour` |
|
|
37
|
+
| Generic page action or navigation | `VJoyButton` or `VJoyLink` |
|
|
38
|
+
| Short contextual hint on hover | `VJoyTooltip` |
|
|
39
|
+
| Custom floating pill with ad-hoc CSS | Still use `VJoyWalkthroughTrigger` or `VJoyWalkthrough` + Joy tokens |
|
|
40
|
+
|
|
41
|
+
> **Composition:** pass extra HTML attributes (for example `data-testid`, `aria-label`) through `triggerAttrs` on `VJoyWalkthrough`, or `v-bind="$attrs"` when using the trigger standalone.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## How it works
|
|
46
|
+
|
|
47
|
+
### Anatomy
|
|
48
|
+
|
|
49
|
+
| Part | Required? | What it is |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| Root button | Yes | Native `<button type="button">` — `.joy-walkthrough-trigger` |
|
|
52
|
+
| Leading icon | No | `VJoyIcon` when `icon` is set (`color="white"`) |
|
|
53
|
+
| Content row | No* | `.joy-walkthrough-trigger__content` — `title` and/or `subtitle` spans |
|
|
54
|
+
| Title | No | Primary label (`title` prop) |
|
|
55
|
+
| Subtitle | No | Secondary label (`subtitle` prop); vertical divider when both title and subtitle are present |
|
|
56
|
+
| Chevron | Yes | `VJoyIcon` — `chevron-up` when collapsed, `chevron-down` when `open` is true |
|
|
57
|
+
| Ripple | Yes | `v-joy-ripple` on the button |
|
|
58
|
+
|
|
59
|
+
\*At least one of `title`, `subtitle`, or `icon` should be provided so the control is recognizable.
|
|
60
|
+
|
|
61
|
+
### Default values
|
|
62
|
+
|
|
63
|
+
- `open` has **no default** in types — internal state starts from the prop when set; otherwise collapsed (`chevron-up`)
|
|
64
|
+
- `icon`, `title`, and `subtitle` are all **optional**
|
|
65
|
+
|
|
66
|
+
Props and exposed members: use Joy MCP or Storybook — this page focuses on **when** and **how**, not a full API dump.
|
|
67
|
+
|
|
68
|
+
### Parent integration
|
|
69
|
+
|
|
70
|
+
`VJoyWalkthrough` shows `VJoyWalkthroughTrigger` only while the modal is closed, forwards `triggerTitle` → `title`, `triggerSubtitle` → `subtitle`, `triggerIcon` → `icon`, merges `triggerAttrs` onto the button, and handles `@click` to open the modal. Positioning and mobile compaction (fixed bottom-left, shorter height, title hidden on narrow viewports) come from `JoyWalkthrough.scss` on the parent — not from props on the trigger.
|
|
71
|
+
|
|
72
|
+
Standalone usage toggles internal `open` on click (chevron only); wire your own handler with `@click` if the button should open custom content.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Best practices
|
|
77
|
+
|
|
78
|
+
Rules use RFC 2119 strength (**MUST** / **SHOULD** / **MUST NOT** / **SHOULD NOT**).
|
|
79
|
+
|
|
80
|
+
### Selection
|
|
81
|
+
|
|
82
|
+
- **SHOULD** use **`VJoyWalkthrough`** instead of mounting `VJoyWalkthroughTrigger` alone when the goal is onboarding or guided help with expandable content.
|
|
83
|
+
- **SHOULD** provide at least **`title`** or **`icon`** so the pill has a clear purpose at a glance.
|
|
84
|
+
- **SHOULD** use **`subtitle`** for progress or status (for example `80% completed`) — omit it when there is no secondary line to show.
|
|
85
|
+
- **MUST NOT** use this trigger for primary form submission or destructive actions.
|
|
86
|
+
|
|
87
|
+
### Implementation
|
|
88
|
+
|
|
89
|
+
- **MUST** use only documented props from MCP or `VJoyWalkthroughTrigger.vue` (`icon`, `title`, `subtitle`, `open`).
|
|
90
|
+
- **MUST** use Joy tokens — no custom `.joy-walkthrough-trigger` background, radius, height, or typography overrides.
|
|
91
|
+
- **MUST NOT** invent props (`variant`, `size`, `color`, `placement`, …).
|
|
92
|
+
- **MUST NOT** add slots — the component has none.
|
|
93
|
+
- **SHOULD** pass test and a11y attributes via **`triggerAttrs`** on `VJoyWalkthrough` or fallthrough attrs on a standalone trigger.
|
|
94
|
+
- **SHOULD** use valid Joy icon names for `icon` (see `TJoyIconsNames` / MCP).
|
|
95
|
+
|
|
96
|
+
### Do / don’t
|
|
97
|
+
|
|
98
|
+
| Do | Don’t |
|
|
99
|
+
| --- | --- |
|
|
100
|
+
| `VJoyWalkthrough` + `triggerTitle` / `triggerSubtitle` / `triggerIcon` | Rebuild the dark pill with `VJoyButton` + custom CSS |
|
|
101
|
+
| `subtitle` for progress when using `walkthrough-progress` | Duplicate progress in title and subtitle |
|
|
102
|
+
| `triggerAttrs` for `data-testid` or `aria-label` | Hardcode `64px` height or neutral-60 background in apps |
|
|
103
|
+
| `VJoyProductTour` for element-highlight tours | `VJoyWalkthroughTrigger` as a page spotlight |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Accessibility
|
|
108
|
+
|
|
109
|
+
Behaviors (what must happen), not slogans.
|
|
110
|
+
|
|
111
|
+
| Behavior | Expectation |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| Role | Native `button` (`type="button"`) |
|
|
114
|
+
| Name | Visible **`title`** and/or **`subtitle`** should carry the accessible name; if neither is sufficient alone, set **`aria-label`** via `triggerAttrs` or fallthrough attrs |
|
|
115
|
+
| Keyboard | **Enter** / **Space** activate the button when focused |
|
|
116
|
+
| Focus | Visible focus ring — `2px solid var(--joy-color-neutral-0)` with negative outline offset; do not remove in product CSS |
|
|
117
|
+
| Chevron / icon | Decorative when title or subtitle already names the control; supplement with `aria-label` if the trigger is icon-only |
|
|
118
|
+
| Mobile | Parent walkthrough layout may hide the title on narrow viewports — ensure **`subtitle`** or **`aria-label`** still conveys purpose |
|
|
119
|
+
|
|
120
|
+
Target: **WCAG 2.2 AA** where the product requires it.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Examples
|
|
125
|
+
|
|
126
|
+
```vue
|
|
127
|
+
<script setup lang="ts">
|
|
128
|
+
import { ref } from 'vue'
|
|
129
|
+
import { VJoyWalkthrough, VJoyWalkthroughTrigger } from '@maltjoy/core-vue'
|
|
130
|
+
|
|
131
|
+
const showPanel = ref(false)
|
|
132
|
+
</script>
|
|
133
|
+
|
|
134
|
+
<template>
|
|
135
|
+
<!-- Preferred: parent owns trigger + modal -->
|
|
136
|
+
<VJoyWalkthrough
|
|
137
|
+
trigger-icon="list"
|
|
138
|
+
trigger-title="Get started"
|
|
139
|
+
trigger-subtitle="80% completed"
|
|
140
|
+
footer="Close and don't show again"
|
|
141
|
+
:trigger-attrs="{ 'data-testid': 'onboarding-trigger' }"
|
|
142
|
+
>
|
|
143
|
+
<template #walkthrough-title>Welcome to your dashboard</template>
|
|
144
|
+
<template #walkthrough-content>Step-by-step guidance goes here.</template>
|
|
145
|
+
</VJoyWalkthrough>
|
|
146
|
+
|
|
147
|
+
<!-- Standalone trigger (uncommon — you handle open state) -->
|
|
148
|
+
<VJoyWalkthroughTrigger
|
|
149
|
+
icon="list"
|
|
150
|
+
title="Get started"
|
|
151
|
+
subtitle="3 steps left"
|
|
152
|
+
aria-label="Resume onboarding walkthrough"
|
|
153
|
+
@click="showPanel = true"
|
|
154
|
+
/>
|
|
155
|
+
</template>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
In Nuxt (or apps with auto-import), omit the import if `VJoyWalkthroughTrigger` is already global.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Related
|
|
163
|
+
|
|
164
|
+
| Component | Use when |
|
|
165
|
+
| --- | --- |
|
|
166
|
+
| `VJoyWalkthrough` | Full collapsible walkthrough — modal, slots, footer, teleport |
|
|
167
|
+
| `VJoyProductTour` | Multi-step tour with element spotlighting |
|
|
168
|
+
| `VJoyProductTourTrigger` | Trigger pattern for product tours |
|
|
169
|
+
| `VJoyIcon` | Icons passed to the `icon` prop |
|
|
170
|
+
| `VJoyProgressBar` | Progress slot content inside `VJoyWalkthrough` |
|
|
171
|
+
| `VJoyButton` | Standard actions unrelated to walkthrough chrome |
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: VJoyWrapper
|
|
3
|
+
status: draft
|
|
4
|
+
language: en
|
|
5
|
+
dsds: JoyWrapper.dsds.json
|
|
6
|
+
dsdsVersion: "0.15.2"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Wrapper
|
|
10
|
+
|
|
11
|
+
Use **`VJoyWrapper`** when you need a flex layout with Joy spacing tokens — for example a row of buttons, a vertical stack of form fields, or a wrapping tag list — without writing custom flex CSS.
|
|
12
|
+
|
|
13
|
+
The component maps common flexbox props (`justify`, `align`, `direction`, `wrap`, gaps) to token-based classes, applies a default bottom margin between stacked wrappers, and `provide`s `VJoyWrapperContext` so children (e.g. `VJoyFormFieldSkeleton`) can align with the parent layout.
|
|
14
|
+
|
|
15
|
+
| | |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| **Code** | `VJoyWrapper` from `@maltjoy/core-vue` |
|
|
18
|
+
| **Storybook** | [VJoyWrapper docs](https://doc.malt.tech/joy-storybook/?path=/docs/components-layout-vjoywrapper--docs) |
|
|
19
|
+
| **DSDS (machine)** | [`JoyWrapper.dsds.json`](./JoyWrapper.dsds.json) |
|
|
20
|
+
| **Live API** | `joy_get_component_info("VJoyWrapper")` |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## When to use this component
|
|
25
|
+
|
|
26
|
+
Use a wrapper when several sibling elements need **consistent gaps and alignment** in a flex row or column. Typical jobs: button groups, horizontal or vertical form field stacks, filter chips, skeleton layouts, and any list of Joy components that should wrap on small viewports.
|
|
27
|
+
|
|
28
|
+
Prefer `VJoyWrapper` over ad-hoc `display: flex` in product CSS so spacing stays on the Joy spacing scale (`columnGap` / `rowGap` map to `--joy-core-spacing-*`).
|
|
29
|
+
|
|
30
|
+
### When not to use this component
|
|
31
|
+
|
|
32
|
+
| Need | Use instead |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Label + field + error grouped as one form unit | `VJoyFormGroup` |
|
|
35
|
+
| Card / panel with header, body, and footer | `VJoyPanel` |
|
|
36
|
+
| Full page structure (header, sidebar, content) | `VJoyTemplate` |
|
|
37
|
+
| Pre-styled tag list container | `VJoyTagsList` (or `VJoyWrapper` + `VJoyTag` when you need more control) |
|
|
38
|
+
| Every flexbox option (grid, `space-around`, arbitrary child rules) | Extend only with documented props — don’t replace with raw layout CSS for the same job |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## How it works
|
|
43
|
+
|
|
44
|
+
### Anatomy
|
|
45
|
+
|
|
46
|
+
| Part | Required? | What it is |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| Root (`div.joy-wrapper`) | Yes | Flex container; modifier classes set justify, align, direction, wrap, and gaps |
|
|
49
|
+
| Default slot | Yes | Direct children laid out in the flex flow |
|
|
50
|
+
| Bottom margin | Default on | `margin-bottom: --joy-core-spacing-8` unless `noMargin` is true |
|
|
51
|
+
|
|
52
|
+
Children get `max-width: 100%`. With `itemStretch`, direct children receive `flex: 1 0 auto` so they share horizontal space. Nested `.joy-panel` children get `width: auto`.
|
|
53
|
+
|
|
54
|
+
### Default values
|
|
55
|
+
|
|
56
|
+
- `justify` defaults to **`flex-start`**
|
|
57
|
+
- `align` defaults to **`center`**
|
|
58
|
+
- `direction` defaults to **`row`**
|
|
59
|
+
- `wrap` defaults to **`wrap`**
|
|
60
|
+
- `columnGap` defaults to **`4`** (spacing token)
|
|
61
|
+
- `rowGap` defaults to **`8`** (spacing token)
|
|
62
|
+
- `noMargin` defaults to **`false`** (bottom margin applied)
|
|
63
|
+
- `itemStretch` is **unset** (no stretch until explicitly `true`)
|
|
64
|
+
|
|
65
|
+
Props and slots: use Joy MCP or Storybook — this page focuses on **when** and **how**, not a full API dump.
|
|
66
|
+
|
|
67
|
+
### Layout props (behavioral)
|
|
68
|
+
|
|
69
|
+
| Prop | Maps to | Typical use |
|
|
70
|
+
| --- | --- | --- |
|
|
71
|
+
| `direction="row"` | `flex-direction: row` | Button rows, inline filters |
|
|
72
|
+
| `direction="column"` | `flex-direction: column` | Stacked inputs or sections |
|
|
73
|
+
| `justify` | `justify-content` | Spread items (`space-between` for toolbar ends) |
|
|
74
|
+
| `align` | `align-items` | Vertical alignment in a row; use `stretch` for equal-height columns |
|
|
75
|
+
| `wrap` | `flex-wrap` | `wrap` (default) for responsive rows; `nowrap` to keep one line |
|
|
76
|
+
| `columnGap` / `rowGap` | `column-gap` / `row-gap` | Token `"0"`–`"12"` — don’t use raw px |
|
|
77
|
+
| `itemStretch` | `flex-grow` on children | Equal-width fields in a horizontal form row |
|
|
78
|
+
| `noMargin` | Removes default bottom margin | Nested wrappers or tight vertical rhythm |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Best practices
|
|
83
|
+
|
|
84
|
+
Rules use RFC 2119 strength (**MUST** / **SHOULD** / **MUST NOT** / **SHOULD NOT**).
|
|
85
|
+
|
|
86
|
+
### Layout
|
|
87
|
+
|
|
88
|
+
- **SHOULD** use `direction="column"` with `align="stretch"` for vertical form stacks.
|
|
89
|
+
- **SHOULD** use `itemStretch` when sibling inputs or panels should share horizontal space in a row.
|
|
90
|
+
- **SHOULD** set `noMargin` on the last wrapper in a section or when spacing is handled by a parent.
|
|
91
|
+
- **SHOULD** use `wrap="wrap"` (default) for button or tag rows that may overflow on narrow viewports.
|
|
92
|
+
- **MUST NOT** rely on `VJoyWrapper` for grid layouts or uncommon `justify-content` values not in the API.
|
|
93
|
+
|
|
94
|
+
### Implementation
|
|
95
|
+
|
|
96
|
+
- **MUST** use only documented prop values from MCP or `JoyWrapper.types.ts`.
|
|
97
|
+
- **MUST** use spacing tokens via `columnGap` / `rowGap` — not inline `gap` in px.
|
|
98
|
+
- **MUST NOT** invent props (`gap`, `size`, `variant`, …).
|
|
99
|
+
- **MUST NOT** override `.joy-wrapper` flex rules in product CSS when a prop already exists.
|
|
100
|
+
- **SHOULD** nest `VJoyFormGroup` inside a wrapper for each logical field, not replace `VJoyFormGroup` with wrapper-only markup.
|
|
101
|
+
|
|
102
|
+
### Do / don’t
|
|
103
|
+
|
|
104
|
+
| Do | Don’t |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `columnGap="4"` `rowGap="8"` for token-consistent spacing | `style="gap: 12px"` on a plain `motion.div` |
|
|
107
|
+
| `noMargin` on inner wrappers in a stack | Double bottom margins from wrapper + parent |
|
|
108
|
+
| `itemStretch` for equal-width inputs in a row | Manual `flex: 1` on every child in app CSS |
|
|
109
|
+
| `VJoyFormGroup` per field inside a column wrapper | One wrapper with no labels/errors between fields |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Accessibility
|
|
114
|
+
|
|
115
|
+
`VJoyWrapper` is a **non-interactive layout container** (`div`). It has no focusable parts and does not define ARIA roles.
|
|
116
|
+
|
|
117
|
+
| Behavior | Expectation |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| Semantics | Do not use the wrapper as a button, link, or landmark — keep semantics on children |
|
|
120
|
+
| Reading order | DOM order in the default slot matches visual order (row or column) |
|
|
121
|
+
| Keyboard | No keyboard behavior on the wrapper itself; interactive children keep their own focus order |
|
|
122
|
+
| Long content | Children are capped at `max-width: 100%`; very long unbroken text in `VJoyText` may still need an explicit `max-width` on the text node |
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Examples
|
|
127
|
+
|
|
128
|
+
```vue
|
|
129
|
+
<script setup lang="ts">
|
|
130
|
+
import { VJoyWrapper, VJoyButton, VJoyInput } from '@maltjoy/core-vue'
|
|
131
|
+
</script>
|
|
132
|
+
|
|
133
|
+
<template>
|
|
134
|
+
<!-- Button group (default row, wrap) -->
|
|
135
|
+
<VJoyWrapper>
|
|
136
|
+
<VJoyButton label="Save" variant="main" size="xsmall" />
|
|
137
|
+
<VJoyButton label="Cancel" variant="ghost" size="xsmall" />
|
|
138
|
+
</VJoyWrapper>
|
|
139
|
+
|
|
140
|
+
<!-- Vertical form stack -->
|
|
141
|
+
<VJoyWrapper direction="column" align="stretch">
|
|
142
|
+
<VJoyInput name="email" label="Email" />
|
|
143
|
+
<VJoyInput name="phone" label="Phone" />
|
|
144
|
+
</VJoyWrapper>
|
|
145
|
+
|
|
146
|
+
<!-- Horizontal fields with equal width -->
|
|
147
|
+
<VJoyWrapper item-stretch>
|
|
148
|
+
<VJoyInput name="first" label="First name" />
|
|
149
|
+
<VJoyInput name="last" label="Last name" />
|
|
150
|
+
</VJoyWrapper>
|
|
151
|
+
|
|
152
|
+
<!-- Tight nested layout (no extra bottom margin) -->
|
|
153
|
+
<VJoyWrapper direction="column" no-margin row-gap="2">
|
|
154
|
+
<slot name="password-requirements" />
|
|
155
|
+
</VJoyWrapper>
|
|
156
|
+
</template>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
In Nuxt (or apps with auto-import), omit the import if `VJoyWrapper` is already global.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Related
|
|
164
|
+
|
|
165
|
+
| Component | Use when |
|
|
166
|
+
| --- | --- |
|
|
167
|
+
| `VJoyFormGroup` | One label + control + errors as a single form unit |
|
|
168
|
+
| `VJoyPanel` | Bordered card with header, body, and actions |
|
|
169
|
+
| `VJoyTagsList` | Opinionated horizontal list of `VJoyTag` |
|
|
170
|
+
| `VJoyFormFieldSkeleton` / `VJoyBlockSkeleton` | Loading placeholders — often composed inside `VJoyWrapper` |
|
|
171
|
+
| `VJoyButton` | Primary actions in button groups |
|
|
172
|
+
| `VJoyInput` | Fields in column or stretched row layouts |
|
|
173
|
+
| `VJoyText` | Long copy inside a wrapper may need `max-width` to avoid layout breakage |
|
|
@@ -261,21 +261,7 @@
|
|
|
261
261
|
".joy-font-size-secondary-200",
|
|
262
262
|
".joy-font-size-secondary-400",
|
|
263
263
|
".joy-font-size-secondary-600",
|
|
264
|
-
".joy-font-size-secondary-800"
|
|
265
|
-
".joy-font-primary-150",
|
|
266
|
-
".joy-font-primary-200",
|
|
267
|
-
".joy-font-primary-250",
|
|
268
|
-
".joy-font-primary-300",
|
|
269
|
-
".joy-font-primary-350",
|
|
270
|
-
".joy-font-primary-400",
|
|
271
|
-
".joy-font-primary-450",
|
|
272
|
-
".joy-font-primary-600",
|
|
273
|
-
".joy-font-primary-650",
|
|
274
|
-
".joy-font-primary-800",
|
|
275
|
-
".joy-font-primary-850",
|
|
276
|
-
".joy-font-secondary-400",
|
|
277
|
-
".joy-font-secondary-600",
|
|
278
|
-
".joy-font-secondary-800"
|
|
264
|
+
".joy-font-size-secondary-800"
|
|
279
265
|
],
|
|
280
266
|
"elevation": [
|
|
281
267
|
".joy-core-elevation-0",
|
|
@@ -120,6 +120,7 @@
|
|
|
120
120
|
"zIndex": {
|
|
121
121
|
"--joy-core-z-index-fixed-content": "20",
|
|
122
122
|
"--joy-core-z-index-dropdown": "23",
|
|
123
|
+
"--joy-core-z-index-funnel": "1040",
|
|
123
124
|
"--joy-core-z-index-backdrop": "1050",
|
|
124
125
|
"--joy-core-z-index-product-tour": "1060",
|
|
125
126
|
"--joy-core-z-index-walkthrough": "1070",
|
package/dist/doc/index.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generated": "2026-
|
|
3
|
-
"version": "0.
|
|
2
|
+
"generated": "2026-07-22T09:35:12.292Z",
|
|
3
|
+
"version": "0.6.0-beta.0",
|
|
4
4
|
"statistics": {
|
|
5
|
-
"totalComponents":
|
|
6
|
-
"totalProps":
|
|
7
|
-
"totalEvents":
|
|
5
|
+
"totalComponents": 82,
|
|
6
|
+
"totalProps": 473,
|
|
7
|
+
"totalEvents": 66,
|
|
8
8
|
"totalSlots": 148,
|
|
9
|
-
"componentsWithVModel":
|
|
9
|
+
"componentsWithVModel": 22,
|
|
10
10
|
"componentsWithErrors": 0,
|
|
11
11
|
"componentsWithPartialErrors": 1
|
|
12
12
|
},
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"description": "A button component supporting multiple variants, sizes, and states.\nFeatures icon support, loading states and can function as either a button or link element.\nIncludes ripple effects and comprehensive styling options for different use cases from primary actions to subtle ghost buttons.\n\n**Tips:** set a \"href\" attribute to make the button a link.",
|
|
107
107
|
"category": "Buttons",
|
|
108
108
|
"path": "VJoyButton/metadata.json",
|
|
109
|
-
"propsCount":
|
|
109
|
+
"propsCount": 8,
|
|
110
110
|
"eventsCount": 0,
|
|
111
111
|
"slotsCount": 1,
|
|
112
112
|
"hasError": false
|
|
@@ -253,12 +253,12 @@
|
|
|
253
253
|
},
|
|
254
254
|
{
|
|
255
255
|
"name": "VJoyDropzone",
|
|
256
|
-
"description": "A file upload component with drag-and-drop functionality for handling file selection and management.\nSupports single or multiple file uploads, file validation and customizable file displays.\nFeatures visual feedback for drag states, error handling, and flexible content slots for file information and actions.\n\nThe dropzone
|
|
256
|
+
"description": "A file upload component with drag-and-drop functionality for handling file selection and management.\nSupports single or multiple file uploads, file validation and customizable file displays.\nFeatures visual feedback for disabled, invalid, and drag states, error handling, and flexible content slots for file information and actions.\n\nThe dropzone requires a `v-model` bound to an array containing objects with at least the `name` property (or `File` instances).\n\nUse `label` to display a label above the dropzone. Use `canDelete` (default `true`) to hide the delete button on file items while keeping update available. Set `disabled` to block uploads, drag-and-drop, and file actions. Set `invalid` for parent form feedback (e.g. required empty field); it adds invalid styling but does not replace format/size validation. The exposed `invalid` ref only reflects file validation (`accept`, `maxSize`); the `invalid` prop is for external form state—both can apply the invalid appearance.\n\nSlots: `dropzone-description` for the main instruction (default text with browse link), `dropzone-subtitle` for an optional hint line (empty by default), `dropzone-legend` for helper text below the zone, `file-information` and `file-actions` for per-file content (slot prop `file`). In single-file mode, `dropzone-legend` is hidden when a format or size error is shown (`VJoyFormError` instead); in multiple mode, errors appear on each file item and the legend stays visible.",
|
|
257
257
|
"category": "Forms",
|
|
258
258
|
"path": "VJoyDropzone/metadata.json",
|
|
259
|
-
"propsCount":
|
|
259
|
+
"propsCount": 14,
|
|
260
260
|
"eventsCount": 0,
|
|
261
|
-
"slotsCount":
|
|
261
|
+
"slotsCount": 5,
|
|
262
262
|
"hasError": false
|
|
263
263
|
},
|
|
264
264
|
{
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
"description": "A form error display component for showing error messages.\nFeatures a warning icon, support for single error messages or multiple error lists, and visibility control for conditional error display.\nIncludes proper accessibility attributes with alert role for screen reader announcement of form errors.",
|
|
297
297
|
"category": "Forms",
|
|
298
298
|
"path": "VJoyFormError/metadata.json",
|
|
299
|
-
"propsCount":
|
|
299
|
+
"propsCount": 3,
|
|
300
300
|
"eventsCount": 0,
|
|
301
301
|
"slotsCount": 1,
|
|
302
302
|
"hasError": false
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
"name": "VJoyIconButton",
|
|
376
|
-
"description": "A dedicated icon-button component built on top of `VJoyButton`.\
|
|
376
|
+
"description": "A dedicated icon-button component built on top of `VJoyButton`.\nIcon-only button with an accessible label.",
|
|
377
377
|
"category": "Buttons",
|
|
378
378
|
"path": "VJoyIconButton/metadata.json",
|
|
379
379
|
"propsCount": 6,
|
|
@@ -403,10 +403,10 @@
|
|
|
403
403
|
},
|
|
404
404
|
{
|
|
405
405
|
"name": "VJoyInput",
|
|
406
|
-
"description": "A comprehensive form input component with extensive customization and validation features.\nSupports multiple input types, icon support, clearable functionality,
|
|
406
|
+
"description": "A comprehensive form input component with extensive customization and validation features.\nSupports multiple input types, icon support, clearable functionality, and comprehensive validation states.\nFeatures auto-focus capabilities, accessibility compliance, and seamless integration with form validation systems.",
|
|
407
407
|
"category": "Forms",
|
|
408
408
|
"path": "VJoyInput/metadata.json",
|
|
409
|
-
"propsCount":
|
|
409
|
+
"propsCount": 18,
|
|
410
410
|
"eventsCount": 1,
|
|
411
411
|
"slotsCount": 2,
|
|
412
412
|
"hasError": false
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
"path": "VJoyInputNumber/metadata.json",
|
|
429
429
|
"propsCount": 17,
|
|
430
430
|
"eventsCount": 1,
|
|
431
|
-
"slotsCount":
|
|
431
|
+
"slotsCount": 1,
|
|
432
432
|
"hasError": false
|
|
433
433
|
},
|
|
434
434
|
{
|
|
@@ -436,7 +436,7 @@
|
|
|
436
436
|
"description": "Password input built on top of VJoyInput with built-in visibility toggle.",
|
|
437
437
|
"category": "Forms",
|
|
438
438
|
"path": "VJoyInputPassword/metadata.json",
|
|
439
|
-
"propsCount":
|
|
439
|
+
"propsCount": 14,
|
|
440
440
|
"eventsCount": 1,
|
|
441
441
|
"slotsCount": 1,
|
|
442
442
|
"hasError": false
|
|
@@ -491,16 +491,6 @@
|
|
|
491
491
|
"slotsCount": 0,
|
|
492
492
|
"hasError": false
|
|
493
493
|
},
|
|
494
|
-
{
|
|
495
|
-
"name": "VJoyMultiCheckbox",
|
|
496
|
-
"description": "A multi-selection checkbox group component for handling arrays of selected values.\nSimplifies multi-selection scenarios by managing checkbox states and array manipulation automatically.\nFeatures integrated labeling, fieldset structure for accessibility, and customizable checkbox content through slots.\nPerfect for filtering interfaces and bulk selection operations.",
|
|
497
|
-
"category": "Forms",
|
|
498
|
-
"path": "VJoyMultiCheckbox/metadata.json",
|
|
499
|
-
"propsCount": 9,
|
|
500
|
-
"eventsCount": 1,
|
|
501
|
-
"slotsCount": 2,
|
|
502
|
-
"hasError": false
|
|
503
|
-
},
|
|
504
494
|
{
|
|
505
495
|
"name": "VJoyPagination",
|
|
506
496
|
"description": "A complete pagination component for navigating through large datasets with proper accessibility support.\nFeatures automatic page number calculation, gap handling for large page counts, customizable navigation arrows,\nand router integration support through slots. Includes proper ARIA attributes and keyboard navigation\nfor an accessible pagination experience across different content types.",
|
|
@@ -533,7 +523,7 @@
|
|
|
533
523
|
},
|
|
534
524
|
{
|
|
535
525
|
"name": "VJoyPasswordRequirement",
|
|
536
|
-
"description": "A component to display a password requirement status.\nThis is meant to be displayed under
|
|
526
|
+
"description": "A component to display a password requirement status.\nThis is meant to be displayed under VJoyInputPassword.",
|
|
537
527
|
"category": "Forms",
|
|
538
528
|
"path": "VJoyPasswordRequirement/metadata.json",
|
|
539
529
|
"propsCount": 2,
|
|
@@ -753,7 +743,7 @@
|
|
|
753
743
|
},
|
|
754
744
|
{
|
|
755
745
|
"name": "VJoyText",
|
|
756
|
-
"description": "This component
|
|
746
|
+
"description": "This component uses CSS utility classes from `@maltjoy/themes` (`dist/default.css`).\n\n**Reminder**: values ending with 50 have same size but are bold.\n\nSee \"Fonts\" section here https://doc.malt.tech/joy-storybook/?path=/docs/css-framework--docs#advanced-fonts\n\n**Warning** If you use long text within a VJoyWrapper, you'll have to set a max-width to prevent the text from breaking the layout.",
|
|
757
747
|
"category": "View",
|
|
758
748
|
"path": "VJoyText/metadata.json",
|
|
759
749
|
"propsCount": 2,
|
|
@@ -803,10 +793,10 @@
|
|
|
803
793
|
},
|
|
804
794
|
{
|
|
805
795
|
"name": "VJoyUserCard",
|
|
806
|
-
"description": "A comprehensive user profile card component for displaying user information in a structured layout.\nFeatures integrated avatar display, name/subtitle presentation, rating stars support, and optional\nlink functionality for navigation. Includes multiple customization slots for avatar, title, subtitle,\nand
|
|
796
|
+
"description": "A comprehensive user profile card component for displaying user information in a structured layout.\nFeatures integrated avatar display, name/subtitle presentation, rating stars support, and optional\nlink functionality for navigation. Includes multiple customization slots for avatar, title, subtitle,\nand free content through the default slot, with full attribute inheritance for link behavior and\naccessibility. The user-card-rating-stars slot is deprecated; use the default slot for custom\nrating stars or other free content instead.",
|
|
807
797
|
"category": "View",
|
|
808
798
|
"path": "VJoyUserCard/metadata.json",
|
|
809
|
-
"propsCount":
|
|
799
|
+
"propsCount": 4,
|
|
810
800
|
"eventsCount": 0,
|
|
811
801
|
"slotsCount": 5,
|
|
812
802
|
"hasError": false
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { fileURLToPath } from 'url';
|
|
|
7
7
|
import { dirname, join } from 'path';
|
|
8
8
|
import { listComponentsTool, handleListComponents } from './tools/list-components.js';
|
|
9
9
|
import { getComponentInfoTool, handleGetComponentInfo } from './tools/get-component-info.js';
|
|
10
|
+
import { getComponentGuidelineTool, handleGetComponentGuideline } from './tools/get-component-guideline.js';
|
|
10
11
|
import { listDesignTokensTool, handleListDesignTokens } from './tools/list-design-tokens.js';
|
|
11
12
|
import { listCssClassesTool, handleListCssClasses } from './tools/list-css-classes.js';
|
|
12
13
|
import { getComponentTypesTool, handleGetComponentTypes } from './tools/get-component-types.js';
|
|
@@ -21,7 +22,7 @@ class JoyMcpServer {
|
|
|
21
22
|
constructor() {
|
|
22
23
|
this.server = new Server({
|
|
23
24
|
name: 'joy-design-system',
|
|
24
|
-
version: '0.
|
|
25
|
+
version: '0.6.0-beta.0',
|
|
25
26
|
}, {
|
|
26
27
|
capabilities: {
|
|
27
28
|
tools: {},
|
|
@@ -34,7 +35,14 @@ class JoyMcpServer {
|
|
|
34
35
|
// List available tools
|
|
35
36
|
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
36
37
|
return {
|
|
37
|
-
tools: [
|
|
38
|
+
tools: [
|
|
39
|
+
listComponentsTool,
|
|
40
|
+
getComponentInfoTool,
|
|
41
|
+
getComponentGuidelineTool,
|
|
42
|
+
getComponentTypesTool,
|
|
43
|
+
listDesignTokensTool,
|
|
44
|
+
listCssClassesTool,
|
|
45
|
+
],
|
|
38
46
|
};
|
|
39
47
|
});
|
|
40
48
|
// Handle tool calls
|
|
@@ -77,6 +85,18 @@ class JoyMcpServer {
|
|
|
77
85
|
],
|
|
78
86
|
};
|
|
79
87
|
}
|
|
88
|
+
case 'joy_get_component_guideline': {
|
|
89
|
+
const componentName = args?.componentName;
|
|
90
|
+
const result = await handleGetComponentGuideline(componentName);
|
|
91
|
+
return {
|
|
92
|
+
content: [
|
|
93
|
+
{
|
|
94
|
+
type: 'text',
|
|
95
|
+
text: JSON.stringify(result, null, 2),
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
80
100
|
case 'joy_list_design_tokens': {
|
|
81
101
|
const result = handleListDesignTokens();
|
|
82
102
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,YAAY;IACR,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool definition for retrieving the DSDS usage guideline markdown for a Joy component.
|
|
3
|
+
*/
|
|
4
|
+
export declare const getComponentGuidelineTool: {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
inputSchema: {
|
|
8
|
+
type: string;
|
|
9
|
+
properties: {
|
|
10
|
+
componentName: {
|
|
11
|
+
type: string;
|
|
12
|
+
description: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
required: string[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export interface ComponentGuidelineResult {
|
|
19
|
+
componentName: string;
|
|
20
|
+
format: 'markdown';
|
|
21
|
+
source: 'DSDS.guideline.md';
|
|
22
|
+
content: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Handler for joy_get_component_guideline
|
|
26
|
+
*/
|
|
27
|
+
export declare function handleGetComponentGuideline(componentName: string): Promise<ComponentGuidelineResult | {
|
|
28
|
+
error: string;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=get-component-guideline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-component-guideline.d.ts","sourceRoot":"","sources":["../../src/tools/get-component-guideline.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;CAkBrC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC7C,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,wBAAwB,GAAG;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAwBrD"}
|