@veluai/velu 0.1.13 → 0.1.15
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/README.md +80 -80
- package/dist/cli.js +21 -21
- package/package.json +3 -2
- package/runtime/velu-ui/components/Accordion.jsx +64 -64
- package/runtime/velu-ui/components/ApiClient.jsx +121 -121
- package/runtime/velu-ui/components/ApiField.jsx +87 -87
- package/runtime/velu-ui/components/ApiPath.jsx +63 -63
- package/runtime/velu-ui/components/ApiSidebar.jsx +122 -122
- package/runtime/velu-ui/components/AskBar.jsx +71 -71
- package/runtime/velu-ui/components/Callout.jsx +114 -114
- package/runtime/velu-ui/components/Card.jsx +131 -131
- package/runtime/velu-ui/components/Chatbot.jsx +596 -596
- package/runtime/velu-ui/components/CodeBlock.jsx +375 -375
- package/runtime/velu-ui/components/Columns.jsx +56 -56
- package/runtime/velu-ui/components/ErrorCard.jsx +138 -138
- package/runtime/velu-ui/components/Field.jsx +81 -81
- package/runtime/velu-ui/components/Image.jsx +163 -163
- package/runtime/velu-ui/components/Logo.jsx +31 -0
- package/runtime/velu-ui/components/MethodBadge.jsx +31 -31
- package/runtime/velu-ui/components/NavSelect.jsx +108 -108
- package/runtime/velu-ui/components/PageFeedback.jsx +219 -219
- package/runtime/velu-ui/components/PageFooter.jsx +145 -213
- package/runtime/velu-ui/components/PageHeader.jsx +422 -414
- package/runtime/velu-ui/components/PageNav.jsx +77 -77
- package/runtime/velu-ui/components/PoweredBy.jsx +51 -51
- package/runtime/velu-ui/components/Prompt.jsx +115 -115
- package/runtime/velu-ui/components/Search.jsx +411 -366
- package/runtime/velu-ui/components/Sidebar.jsx +191 -191
- package/runtime/velu-ui/components/SocialLinks.jsx +90 -0
- package/runtime/velu-ui/components/Steps.jsx +65 -65
- package/runtime/velu-ui/components/ThemeToggle.jsx +48 -48
- package/runtime/velu-ui/components/Toc.jsx +537 -537
- package/runtime/velu-ui/components/TocBar.jsx +195 -195
- package/runtime/velu-ui/components/Tree.jsx +87 -87
- package/runtime/velu-ui/components/TryItBar.jsx +90 -90
- package/runtime/velu-ui/components/accordion.css +92 -92
- package/runtime/velu-ui/components/api.css +479 -479
- package/runtime/velu-ui/components/ask-bar.css +94 -94
- package/runtime/velu-ui/components/card.css +105 -105
- package/runtime/velu-ui/components/chatbot.css +617 -617
- package/runtime/velu-ui/components/code-block.css +263 -263
- package/runtime/velu-ui/components/docs-layout.css +784 -775
- package/runtime/velu-ui/components/field.css +82 -82
- package/runtime/velu-ui/components/image.css +237 -237
- package/runtime/velu-ui/components/nav-select.css +157 -157
- package/runtime/velu-ui/components/page-feedback.css +241 -241
- package/runtime/velu-ui/components/page-footer.css +130 -130
- package/runtime/velu-ui/components/page-header.css +557 -520
- package/runtime/velu-ui/components/page-nav.css +50 -50
- package/runtime/velu-ui/components/powered-by.css +86 -66
- package/runtime/velu-ui/components/prompt.css +99 -99
- package/runtime/velu-ui/components/search.css +307 -307
- package/runtime/velu-ui/components/sidebar.css +144 -144
- package/runtime/velu-ui/components/steps.css +77 -77
- package/runtime/velu-ui/components/theme-toggle.css +101 -101
- package/runtime/velu-ui/components/toc-bar.css +234 -234
- package/runtime/velu-ui/components/tree.css +49 -49
- package/runtime/velu-ui/index.js +48 -46
- package/runtime/velu-ui/lib/component-schemas.js +100 -100
- package/runtime/velu-ui/lib/copyText.js +64 -64
- package/runtime/velu-ui/lib/lang-icons.jsx +147 -147
- package/runtime/velu-ui/lib/prism-langs.js +957 -957
- package/runtime/velu-ui/lib/prism-loader.js +74 -74
- package/runtime/velu-ui/lib/resolveIcon.jsx +29 -29
- package/runtime/velu-ui/lib/scrollIntoNearestView.js +66 -66
- package/runtime/velu-ui/mdx-components.jsx +105 -105
- package/runtime/velu-ui/primitives/Cluster.jsx +49 -49
- package/runtime/velu-ui/primitives/Stack.jsx +63 -63
- package/runtime/velu-ui/primitives/Switcher.jsx +57 -57
- package/runtime/velu-ui/primitives/stack.css +3 -3
- package/runtime/velu-ui/primitives/switcher.css +25 -25
- package/runtime/velu-ui/styles.css +43 -43
- package/runtime/velu-ui/tokens.css +4 -4
- package/schema/velu.schema.json +281 -167
- package/src/lib/extract-mdx-error.js +170 -170
- package/src/lib/issues.js +159 -159
- package/src/lib/known-components.js +34 -34
- package/src/navigation.js +434 -434
- package/src/runtime/App.jsx +1506 -1476
- package/src/runtime/ErrorBoundary.jsx +54 -54
- package/src/runtime/client-entry.jsx +22 -22
- package/src/runtime/server-entry.jsx +16 -16
- package/src/template.html +48 -48
- package/templates/starter/ai-tools/claude-code.mdx +26 -26
- package/templates/starter/ai-tools/cursor.mdx +17 -17
- package/templates/starter/api-reference/endpoint/create.mdx +24 -24
- package/templates/starter/api-reference/endpoint/get.mdx +27 -27
- package/templates/starter/api-reference/introduction.mdx +28 -28
- package/templates/starter/development.mdx +19 -19
- package/templates/starter/essentials/code.mdx +29 -29
- package/templates/starter/essentials/images.mdx +29 -29
- package/templates/starter/essentials/markdown.mdx +25 -25
- package/templates/starter/essentials/navigation.mdx +39 -39
- package/templates/starter/essentials/settings.mdx +30 -30
- package/templates/starter/favicon.svg +6 -6
- package/templates/starter/index.mdx +31 -31
- package/templates/starter/quickstart.mdx +31 -31
- package/templates/starter/velu.json +33 -33
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import resolveIcon from '../lib/resolveIcon.jsx';
|
|
3
|
-
import Switcher from '../primitives/Switcher.jsx';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Card + CardGroup — content / horizontal / image / CTA cards.
|
|
7
|
-
*
|
|
8
|
-
* The card itself is NEVER a link and has NO hover state. The only
|
|
9
|
-
* interactive element is the CTA: pass `cta={{ label, href }}` to render a
|
|
10
|
-
* single "Click Here ›" link. Everything else is static presentation.
|
|
11
|
-
*
|
|
12
|
-
* Fully tokenized (border-width, border-color, radius scale, spacing, type,
|
|
13
|
-
* line-height, accent, icon-stroke) → light/dark automatic via [data-theme].
|
|
14
|
-
* SSR-safe & presentational.
|
|
15
|
-
*
|
|
16
|
-
* Variants (combinable):
|
|
17
|
-
* - basic: icon (accent, --f-h2) + title (--f-h4) + body
|
|
18
|
-
* - `horizontal`: icon vertically centered on the left, title+body right
|
|
19
|
-
* - `img`: image fills the top, clipped to the radius
|
|
20
|
-
* - `cta`: { label, href } → the single clickable "Click Here ›" link
|
|
21
|
-
*
|
|
22
|
-
* `icon` is a lucide id string (shared resolveIcon).
|
|
23
|
-
*
|
|
24
|
-
* @param {{ title?: React.ReactNode, icon?: string, horizontal?: boolean,
|
|
25
|
-
* img?: string, imgAlt?: string,
|
|
26
|
-
* cta?: {label: React.ReactNode, href: string},
|
|
27
|
-
* children?: React.ReactNode, className?: string }} props
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
export function Card({
|
|
31
|
-
title,
|
|
32
|
-
icon,
|
|
33
|
-
horizontal = false,
|
|
34
|
-
img,
|
|
35
|
-
imgAlt = '',
|
|
36
|
-
cta,
|
|
37
|
-
children,
|
|
38
|
-
className = '',
|
|
39
|
-
...rest
|
|
40
|
-
}) {
|
|
41
|
-
const cls = [
|
|
42
|
-
'velu-card',
|
|
43
|
-
horizontal && 'velu-card--horizontal',
|
|
44
|
-
img && 'velu-card--image',
|
|
45
|
-
cta && 'velu-card--cta',
|
|
46
|
-
className,
|
|
47
|
-
]
|
|
48
|
-
.filter(Boolean)
|
|
49
|
-
.join(' ');
|
|
50
|
-
|
|
51
|
-
const iconEl = icon ? (
|
|
52
|
-
<span className="velu-card__icon" aria-hidden="true">
|
|
53
|
-
{resolveIcon(icon, { size: '1em' })}
|
|
54
|
-
</span>
|
|
55
|
-
) : null;
|
|
56
|
-
|
|
57
|
-
const ctaEl = cta ? (
|
|
58
|
-
<a className="velu-card__cta" href={cta.href}>
|
|
59
|
-
{cta.label}
|
|
60
|
-
<span className="velu-card__cta-icon" aria-hidden="true">
|
|
61
|
-
{resolveIcon('chevron-right', { size: '1em' })}
|
|
62
|
-
</span>
|
|
63
|
-
</a>
|
|
64
|
-
) : null;
|
|
65
|
-
|
|
66
|
-
const titleEl = title ? (
|
|
67
|
-
<div className="velu-card__title">{title}</div>
|
|
68
|
-
) : null;
|
|
69
|
-
const textEl = children ? (
|
|
70
|
-
<div className="velu-card__text">{children}</div>
|
|
71
|
-
) : null;
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<div className={cls} {...rest}>
|
|
75
|
-
{img && (
|
|
76
|
-
<div className="velu-card__media">
|
|
77
|
-
<img src={img} alt={imgAlt} loading="lazy" />
|
|
78
|
-
</div>
|
|
79
|
-
)}
|
|
80
|
-
|
|
81
|
-
<div className="velu-card__body">
|
|
82
|
-
{horizontal ? (
|
|
83
|
-
<>
|
|
84
|
-
{iconEl}
|
|
85
|
-
<div className="velu-card__content">
|
|
86
|
-
{titleEl}
|
|
87
|
-
{textEl}
|
|
88
|
-
{ctaEl}
|
|
89
|
-
</div>
|
|
90
|
-
</>
|
|
91
|
-
) : (
|
|
92
|
-
<>
|
|
93
|
-
{!img ? iconEl : null}
|
|
94
|
-
{titleEl}
|
|
95
|
-
{textEl}
|
|
96
|
-
{ctaEl}
|
|
97
|
-
</>
|
|
98
|
-
)}
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* CardGroup — a row of Cards that switches to a FULL vertical stack the
|
|
106
|
-
* moment any one card would fall below the per-card minimum. Thin wrapper
|
|
107
|
-
* over the Switcher primitive: just supplies `min` (Switcher does the
|
|
108
|
-
* count-aware threshold math). `limit` hard-caps items per row.
|
|
109
|
-
*/
|
|
110
|
-
export function CardGroup({
|
|
111
|
-
space = 'var(--s0)',
|
|
112
|
-
min = 'var(--card-min, 18ch)',
|
|
113
|
-
limit = 3,
|
|
114
|
-
children,
|
|
115
|
-
className = '',
|
|
116
|
-
...rest
|
|
117
|
-
}) {
|
|
118
|
-
return (
|
|
119
|
-
<Switcher
|
|
120
|
-
className={`velu-card-group ${className}`.trim()}
|
|
121
|
-
space={space}
|
|
122
|
-
min={min}
|
|
123
|
-
limit={limit}
|
|
124
|
-
{...rest}
|
|
125
|
-
>
|
|
126
|
-
{children}
|
|
127
|
-
</Switcher>
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export default Card;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import resolveIcon from '../lib/resolveIcon.jsx';
|
|
3
|
+
import Switcher from '../primitives/Switcher.jsx';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Card + CardGroup — content / horizontal / image / CTA cards.
|
|
7
|
+
*
|
|
8
|
+
* The card itself is NEVER a link and has NO hover state. The only
|
|
9
|
+
* interactive element is the CTA: pass `cta={{ label, href }}` to render a
|
|
10
|
+
* single "Click Here ›" link. Everything else is static presentation.
|
|
11
|
+
*
|
|
12
|
+
* Fully tokenized (border-width, border-color, radius scale, spacing, type,
|
|
13
|
+
* line-height, accent, icon-stroke) → light/dark automatic via [data-theme].
|
|
14
|
+
* SSR-safe & presentational.
|
|
15
|
+
*
|
|
16
|
+
* Variants (combinable):
|
|
17
|
+
* - basic: icon (accent, --f-h2) + title (--f-h4) + body
|
|
18
|
+
* - `horizontal`: icon vertically centered on the left, title+body right
|
|
19
|
+
* - `img`: image fills the top, clipped to the radius
|
|
20
|
+
* - `cta`: { label, href } → the single clickable "Click Here ›" link
|
|
21
|
+
*
|
|
22
|
+
* `icon` is a lucide id string (shared resolveIcon).
|
|
23
|
+
*
|
|
24
|
+
* @param {{ title?: React.ReactNode, icon?: string, horizontal?: boolean,
|
|
25
|
+
* img?: string, imgAlt?: string,
|
|
26
|
+
* cta?: {label: React.ReactNode, href: string},
|
|
27
|
+
* children?: React.ReactNode, className?: string }} props
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
export function Card({
|
|
31
|
+
title,
|
|
32
|
+
icon,
|
|
33
|
+
horizontal = false,
|
|
34
|
+
img,
|
|
35
|
+
imgAlt = '',
|
|
36
|
+
cta,
|
|
37
|
+
children,
|
|
38
|
+
className = '',
|
|
39
|
+
...rest
|
|
40
|
+
}) {
|
|
41
|
+
const cls = [
|
|
42
|
+
'velu-card',
|
|
43
|
+
horizontal && 'velu-card--horizontal',
|
|
44
|
+
img && 'velu-card--image',
|
|
45
|
+
cta && 'velu-card--cta',
|
|
46
|
+
className,
|
|
47
|
+
]
|
|
48
|
+
.filter(Boolean)
|
|
49
|
+
.join(' ');
|
|
50
|
+
|
|
51
|
+
const iconEl = icon ? (
|
|
52
|
+
<span className="velu-card__icon" aria-hidden="true">
|
|
53
|
+
{resolveIcon(icon, { size: '1em' })}
|
|
54
|
+
</span>
|
|
55
|
+
) : null;
|
|
56
|
+
|
|
57
|
+
const ctaEl = cta ? (
|
|
58
|
+
<a className="velu-card__cta" href={cta.href}>
|
|
59
|
+
{cta.label}
|
|
60
|
+
<span className="velu-card__cta-icon" aria-hidden="true">
|
|
61
|
+
{resolveIcon('chevron-right', { size: '1em' })}
|
|
62
|
+
</span>
|
|
63
|
+
</a>
|
|
64
|
+
) : null;
|
|
65
|
+
|
|
66
|
+
const titleEl = title ? (
|
|
67
|
+
<div className="velu-card__title">{title}</div>
|
|
68
|
+
) : null;
|
|
69
|
+
const textEl = children ? (
|
|
70
|
+
<div className="velu-card__text">{children}</div>
|
|
71
|
+
) : null;
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<div className={cls} {...rest}>
|
|
75
|
+
{img && (
|
|
76
|
+
<div className="velu-card__media">
|
|
77
|
+
<img src={img} alt={imgAlt} loading="lazy" />
|
|
78
|
+
</div>
|
|
79
|
+
)}
|
|
80
|
+
|
|
81
|
+
<div className="velu-card__body">
|
|
82
|
+
{horizontal ? (
|
|
83
|
+
<>
|
|
84
|
+
{iconEl}
|
|
85
|
+
<div className="velu-card__content">
|
|
86
|
+
{titleEl}
|
|
87
|
+
{textEl}
|
|
88
|
+
{ctaEl}
|
|
89
|
+
</div>
|
|
90
|
+
</>
|
|
91
|
+
) : (
|
|
92
|
+
<>
|
|
93
|
+
{!img ? iconEl : null}
|
|
94
|
+
{titleEl}
|
|
95
|
+
{textEl}
|
|
96
|
+
{ctaEl}
|
|
97
|
+
</>
|
|
98
|
+
)}
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* CardGroup — a row of Cards that switches to a FULL vertical stack the
|
|
106
|
+
* moment any one card would fall below the per-card minimum. Thin wrapper
|
|
107
|
+
* over the Switcher primitive: just supplies `min` (Switcher does the
|
|
108
|
+
* count-aware threshold math). `limit` hard-caps items per row.
|
|
109
|
+
*/
|
|
110
|
+
export function CardGroup({
|
|
111
|
+
space = 'var(--s0)',
|
|
112
|
+
min = 'var(--card-min, 18ch)',
|
|
113
|
+
limit = 3,
|
|
114
|
+
children,
|
|
115
|
+
className = '',
|
|
116
|
+
...rest
|
|
117
|
+
}) {
|
|
118
|
+
return (
|
|
119
|
+
<Switcher
|
|
120
|
+
className={`velu-card-group ${className}`.trim()}
|
|
121
|
+
space={space}
|
|
122
|
+
min={min}
|
|
123
|
+
limit={limit}
|
|
124
|
+
{...rest}
|
|
125
|
+
>
|
|
126
|
+
{children}
|
|
127
|
+
</Switcher>
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export default Card;
|