vocs 2.0.0-rc.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/Callout.d.ts.map +1 -1
- package/dist/react/Callout.js +3 -2
- package/dist/react/Callout.js.map +1 -1
- package/dist/waku/internal/routes/_api/api/og.d.ts.map +1 -1
- package/dist/waku/internal/routes/_api/api/og.js +54 -29
- package/dist/waku/internal/routes/_api/api/og.js.map +1 -1
- package/package.json +2 -2
- package/src/react/Callout.tsx +11 -2
- package/src/waku/internal/routes/_api/api/og.tsx +112 -40
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callout.d.ts","sourceRoot":"","sources":["../../src/react/Callout.tsx"],"names":[],"mappings":"AAKA,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"Callout.d.ts","sourceRoot":"","sources":["../../src/react/Callout.tsx"],"names":[],"mappings":"AAKA,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,2CAwB3C;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC1C,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;KACpE,CAAC,CAAA;CACH"}
|
package/dist/react/Callout.js
CHANGED
|
@@ -4,7 +4,8 @@ import LucideInfo from '~icons/lucide/info';
|
|
|
4
4
|
import LucideLightbulb from '~icons/lucide/lightbulb';
|
|
5
5
|
import LucideTriangleAlert from '~icons/lucide/triangle-alert';
|
|
6
6
|
export function Callout(props) {
|
|
7
|
-
const { variant, ...rest } = props;
|
|
8
|
-
|
|
7
|
+
const { children, variant, ...rest } = props;
|
|
8
|
+
const content = typeof children === 'string' || typeof children === 'number' ? (_jsx("div", { "data-v-callout-content": true, "data-v-content": true, children: children })) : (children);
|
|
9
|
+
return (_jsxs("aside", { ...rest, "data-v": true, "data-v-callout": true, "data-v-content": true, "data-v-context": variant, children: [_jsxs("div", { "data-v-callout-icon": true, children: [props.variant === 'note' ? _jsx(LucideInfo, {}) : null, props.variant === 'info' ? _jsx(LucideInfo, {}) : null, props.variant === 'warning' ? _jsx(LucideTriangleAlert, {}) : null, props.variant === 'danger' ? _jsx(LucideTriangleAlert, {}) : null, props.variant === 'tip' ? _jsx(LucideLightbulb, {}) : null, props.variant === 'success' ? _jsx(LucideCircleCheck, {}) : null] }), content] }));
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=Callout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callout.js","sourceRoot":"","sources":["../../src/react/Callout.tsx"],"names":[],"mappings":";AAAA,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,UAAU,MAAM,oBAAoB,CAAA;AAC3C,OAAO,eAAe,MAAM,yBAAyB,CAAA;AACrD,OAAO,mBAAmB,MAAM,8BAA8B,CAAA;AAE9D,MAAM,UAAU,OAAO,CAAC,KAAoB;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"Callout.js","sourceRoot":"","sources":["../../src/react/Callout.tsx"],"names":[],"mappings":";AAAA,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,UAAU,MAAM,oBAAoB,CAAA;AAC3C,OAAO,eAAe,MAAM,yBAAyB,CAAA;AACrD,OAAO,mBAAmB,MAAM,8BAA8B,CAAA;AAE9D,MAAM,UAAU,OAAO,CAAC,KAAoB;IAC1C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAC5C,MAAM,OAAO,GACX,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7D,gFACG,QAAQ,GACL,CACP,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CAAA;IAEH,OAAO,CACL,oBAAW,IAAI,oFAAuD,OAAO,aAC3E,uDACG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC,CAAC,IAAI,EAChD,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC,CAAC,IAAI,EAChD,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,mBAAmB,KAAG,CAAC,CAAC,CAAC,IAAI,EAC5D,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAC,mBAAmB,KAAG,CAAC,CAAC,CAAC,IAAI,EAC3D,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAC,eAAe,KAAG,CAAC,CAAC,CAAC,IAAI,EACpD,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,iBAAiB,KAAG,CAAC,CAAC,CAAC,IAAI,IACvD,EACL,OAAO,IACF,CACT,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"og.d.ts","sourceRoot":"","sources":["../../../../../../src/waku/internal/routes/_api/api/og.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"og.d.ts","sourceRoot":"","sources":["../../../../../../src/waku/internal/routes/_api/api/og.tsx"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,OAAO,qBAoH/C"}
|
|
@@ -2,38 +2,63 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as Handler from '../../../../../server/handlers.js';
|
|
3
3
|
const colors = {
|
|
4
4
|
background: '#161616',
|
|
5
|
+
pattern: '#202020',
|
|
5
6
|
text: '#ffffff',
|
|
6
7
|
textMuted: 'rgba(255, 255, 255, 0.6)',
|
|
7
8
|
};
|
|
9
|
+
const dimensions = {
|
|
10
|
+
height: 630,
|
|
11
|
+
width: 1200,
|
|
12
|
+
};
|
|
13
|
+
const patternStep = 56;
|
|
14
|
+
const diagonalOffsets = Array.from({ length: Math.ceil((dimensions.width + dimensions.height * 2) / patternStep) }, (_, index) => index * patternStep - dimensions.height);
|
|
15
|
+
const reverseDiagonalOffsets = Array.from({ length: Math.ceil((dimensions.width + dimensions.height * 2) / patternStep) }, (_, index) => index * patternStep);
|
|
8
16
|
export default function handler(request) {
|
|
9
|
-
return Handler.og(({ title, description, logo }) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
17
|
+
return Handler.og(({ title, description, logo }) => {
|
|
18
|
+
const titleLines = title.split('\n');
|
|
19
|
+
return (_jsxs("div", { style: {
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
alignItems: 'flex-start',
|
|
23
|
+
justifyContent: 'center',
|
|
24
|
+
position: 'relative',
|
|
25
|
+
width: '100%',
|
|
26
|
+
height: '100%',
|
|
27
|
+
overflow: 'hidden',
|
|
28
|
+
backgroundColor: colors.background,
|
|
29
|
+
color: colors.text,
|
|
30
|
+
}, children: [_jsx("div", { style: {
|
|
31
|
+
position: 'absolute',
|
|
32
|
+
top: 0,
|
|
33
|
+
right: 0,
|
|
34
|
+
bottom: 0,
|
|
35
|
+
left: 0,
|
|
36
|
+
}, children: _jsxs("svg", { "aria-hidden": true, width: dimensions.width, height: dimensions.height, viewBox: `0 0 ${dimensions.width} ${dimensions.height}`, fill: "none", children: [_jsx("title", { children: "Background pattern" }), diagonalOffsets.map((offset) => (_jsx("line", { x1: offset, y1: 0, x2: offset + dimensions.height, y2: dimensions.height, stroke: colors.pattern, strokeWidth: 1.5 }, `diagonal-${offset}`))), reverseDiagonalOffsets.map((offset) => (_jsx("line", { x1: offset, y1: 0, x2: offset - dimensions.height, y2: dimensions.height, stroke: colors.pattern, strokeWidth: 1.5 }, `reverse-diagonal-${offset}`)))] }) }), logo && (_jsx("img", { alt: "", src: logo, style: {
|
|
37
|
+
height: 48,
|
|
38
|
+
position: 'absolute',
|
|
39
|
+
right: 40,
|
|
40
|
+
bottom: 40,
|
|
41
|
+
} })), _jsxs("div", { style: {
|
|
42
|
+
display: 'flex',
|
|
43
|
+
flexDirection: 'column',
|
|
44
|
+
gap: 12,
|
|
45
|
+
position: 'relative',
|
|
46
|
+
justifyContent: 'center',
|
|
47
|
+
width: '100%',
|
|
48
|
+
height: '100%',
|
|
49
|
+
padding: 80,
|
|
50
|
+
}, children: [_jsx("div", { style: {
|
|
51
|
+
display: 'flex',
|
|
52
|
+
flexDirection: 'column',
|
|
53
|
+
fontSize: title.length < 15 ? 80 : 64,
|
|
54
|
+
fontWeight: 700,
|
|
55
|
+
lineHeight: 1.1,
|
|
56
|
+
color: colors.text,
|
|
57
|
+
}, children: titleLines.map((line) => (_jsx("div", { children: line }, line))) }), description && (_jsx("div", { style: {
|
|
58
|
+
fontSize: 28,
|
|
59
|
+
color: colors.textMuted,
|
|
60
|
+
maxWidth: 800,
|
|
61
|
+
}, children: description }))] })] }));
|
|
62
|
+
}).fetch(request);
|
|
38
63
|
}
|
|
39
64
|
//# sourceMappingURL=og.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"og.js","sourceRoot":"","sources":["../../../../../../src/waku/internal/routes/_api/api/og.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,mCAAmC,CAAA;AAE5D,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,SAAS;IACrB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,0BAA0B;CACtC,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAgB;IAC9C,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"og.js","sourceRoot":"","sources":["../../../../../../src/waku/internal/routes/_api/api/og.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vocs",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.0
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"zod": "^4.3.5"
|
|
86
86
|
},
|
|
87
87
|
"peerDependencies": {
|
|
88
|
-
"@vocs/twoslash-rust": "^0.1.0
|
|
88
|
+
"@vocs/twoslash-rust": "^0.1.0",
|
|
89
89
|
"mermaid": "^11",
|
|
90
90
|
"react": "^19",
|
|
91
91
|
"react-dom": "^19",
|
package/src/react/Callout.tsx
CHANGED
|
@@ -4,7 +4,16 @@ import LucideLightbulb from '~icons/lucide/lightbulb'
|
|
|
4
4
|
import LucideTriangleAlert from '~icons/lucide/triangle-alert'
|
|
5
5
|
|
|
6
6
|
export function Callout(props: Callout.Props) {
|
|
7
|
-
const { variant, ...rest } = props
|
|
7
|
+
const { children, variant, ...rest } = props
|
|
8
|
+
const content =
|
|
9
|
+
typeof children === 'string' || typeof children === 'number' ? (
|
|
10
|
+
<div data-v-callout-content data-v-content>
|
|
11
|
+
{children}
|
|
12
|
+
</div>
|
|
13
|
+
) : (
|
|
14
|
+
children
|
|
15
|
+
)
|
|
16
|
+
|
|
8
17
|
return (
|
|
9
18
|
<aside {...rest} data-v data-v-callout data-v-content data-v-context={variant}>
|
|
10
19
|
<div data-v-callout-icon>
|
|
@@ -15,7 +24,7 @@ export function Callout(props: Callout.Props) {
|
|
|
15
24
|
{props.variant === 'tip' ? <LucideLightbulb /> : null}
|
|
16
25
|
{props.variant === 'success' ? <LucideCircleCheck /> : null}
|
|
17
26
|
</div>
|
|
18
|
-
{
|
|
27
|
+
{content}
|
|
19
28
|
</aside>
|
|
20
29
|
)
|
|
21
30
|
}
|
|
@@ -2,68 +2,140 @@ import * as Handler from '../../../../../server/handlers.js'
|
|
|
2
2
|
|
|
3
3
|
const colors = {
|
|
4
4
|
background: '#161616',
|
|
5
|
+
pattern: '#202020',
|
|
5
6
|
text: '#ffffff',
|
|
6
7
|
textMuted: 'rgba(255, 255, 255, 0.6)',
|
|
7
8
|
}
|
|
8
9
|
|
|
10
|
+
const dimensions = {
|
|
11
|
+
height: 630,
|
|
12
|
+
width: 1200,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const patternStep = 56
|
|
16
|
+
const diagonalOffsets = Array.from(
|
|
17
|
+
{ length: Math.ceil((dimensions.width + dimensions.height * 2) / patternStep) },
|
|
18
|
+
(_, index) => index * patternStep - dimensions.height,
|
|
19
|
+
)
|
|
20
|
+
const reverseDiagonalOffsets = Array.from(
|
|
21
|
+
{ length: Math.ceil((dimensions.width + dimensions.height * 2) / patternStep) },
|
|
22
|
+
(_, index) => index * patternStep,
|
|
23
|
+
)
|
|
24
|
+
|
|
9
25
|
export default function handler(request: Request) {
|
|
10
|
-
return Handler.og(({ title, description, logo }) =>
|
|
11
|
-
|
|
12
|
-
style={{
|
|
13
|
-
display: 'flex',
|
|
14
|
-
flexDirection: 'column',
|
|
15
|
-
alignItems: 'flex-start',
|
|
16
|
-
justifyContent: 'center',
|
|
17
|
-
width: '100%',
|
|
18
|
-
height: '100%',
|
|
19
|
-
padding: 80,
|
|
20
|
-
backgroundColor: colors.background,
|
|
21
|
-
color: colors.text,
|
|
22
|
-
}}
|
|
23
|
-
>
|
|
24
|
-
{logo && (
|
|
25
|
-
<img
|
|
26
|
-
alt=""
|
|
27
|
-
src={logo}
|
|
28
|
-
style={{
|
|
29
|
-
height: 48,
|
|
30
|
-
position: 'absolute',
|
|
31
|
-
right: 40,
|
|
32
|
-
bottom: 40,
|
|
33
|
-
}}
|
|
34
|
-
/>
|
|
35
|
-
)}
|
|
26
|
+
return Handler.og(({ title, description, logo }) => {
|
|
27
|
+
const titleLines = title.split('\n')
|
|
36
28
|
|
|
29
|
+
return (
|
|
37
30
|
<div
|
|
38
31
|
style={{
|
|
39
32
|
display: 'flex',
|
|
40
33
|
flexDirection: 'column',
|
|
41
|
-
|
|
34
|
+
alignItems: 'flex-start',
|
|
35
|
+
justifyContent: 'center',
|
|
36
|
+
position: 'relative',
|
|
37
|
+
width: '100%',
|
|
38
|
+
height: '100%',
|
|
39
|
+
overflow: 'hidden',
|
|
40
|
+
backgroundColor: colors.background,
|
|
41
|
+
color: colors.text,
|
|
42
42
|
}}
|
|
43
43
|
>
|
|
44
44
|
<div
|
|
45
45
|
style={{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
position: 'absolute',
|
|
47
|
+
top: 0,
|
|
48
|
+
right: 0,
|
|
49
|
+
bottom: 0,
|
|
50
|
+
left: 0,
|
|
50
51
|
}}
|
|
51
52
|
>
|
|
52
|
-
|
|
53
|
+
<svg
|
|
54
|
+
aria-hidden
|
|
55
|
+
width={dimensions.width}
|
|
56
|
+
height={dimensions.height}
|
|
57
|
+
viewBox={`0 0 ${dimensions.width} ${dimensions.height}`}
|
|
58
|
+
fill="none"
|
|
59
|
+
>
|
|
60
|
+
<title>Background pattern</title>
|
|
61
|
+
{diagonalOffsets.map((offset) => (
|
|
62
|
+
<line
|
|
63
|
+
key={`diagonal-${offset}`}
|
|
64
|
+
x1={offset}
|
|
65
|
+
y1={0}
|
|
66
|
+
x2={offset + dimensions.height}
|
|
67
|
+
y2={dimensions.height}
|
|
68
|
+
stroke={colors.pattern}
|
|
69
|
+
strokeWidth={1.5}
|
|
70
|
+
/>
|
|
71
|
+
))}
|
|
72
|
+
{reverseDiagonalOffsets.map((offset) => (
|
|
73
|
+
<line
|
|
74
|
+
key={`reverse-diagonal-${offset}`}
|
|
75
|
+
x1={offset}
|
|
76
|
+
y1={0}
|
|
77
|
+
x2={offset - dimensions.height}
|
|
78
|
+
y2={dimensions.height}
|
|
79
|
+
stroke={colors.pattern}
|
|
80
|
+
strokeWidth={1.5}
|
|
81
|
+
/>
|
|
82
|
+
))}
|
|
83
|
+
</svg>
|
|
53
84
|
</div>
|
|
54
85
|
|
|
55
|
-
{
|
|
86
|
+
{logo && (
|
|
87
|
+
<img
|
|
88
|
+
alt=""
|
|
89
|
+
src={logo}
|
|
90
|
+
style={{
|
|
91
|
+
height: 48,
|
|
92
|
+
position: 'absolute',
|
|
93
|
+
right: 40,
|
|
94
|
+
bottom: 40,
|
|
95
|
+
}}
|
|
96
|
+
/>
|
|
97
|
+
)}
|
|
98
|
+
|
|
99
|
+
<div
|
|
100
|
+
style={{
|
|
101
|
+
display: 'flex',
|
|
102
|
+
flexDirection: 'column',
|
|
103
|
+
gap: 12,
|
|
104
|
+
position: 'relative',
|
|
105
|
+
justifyContent: 'center',
|
|
106
|
+
width: '100%',
|
|
107
|
+
height: '100%',
|
|
108
|
+
padding: 80,
|
|
109
|
+
}}
|
|
110
|
+
>
|
|
56
111
|
<div
|
|
57
112
|
style={{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
113
|
+
display: 'flex',
|
|
114
|
+
flexDirection: 'column',
|
|
115
|
+
fontSize: title.length < 15 ? 80 : 64,
|
|
116
|
+
fontWeight: 700,
|
|
117
|
+
lineHeight: 1.1,
|
|
118
|
+
color: colors.text,
|
|
61
119
|
}}
|
|
62
120
|
>
|
|
63
|
-
{
|
|
121
|
+
{titleLines.map((line) => (
|
|
122
|
+
<div key={line}>{line}</div>
|
|
123
|
+
))}
|
|
64
124
|
</div>
|
|
65
|
-
|
|
125
|
+
|
|
126
|
+
{description && (
|
|
127
|
+
<div
|
|
128
|
+
style={{
|
|
129
|
+
fontSize: 28,
|
|
130
|
+
color: colors.textMuted,
|
|
131
|
+
maxWidth: 800,
|
|
132
|
+
}}
|
|
133
|
+
>
|
|
134
|
+
{description}
|
|
135
|
+
</div>
|
|
136
|
+
)}
|
|
137
|
+
</div>
|
|
66
138
|
</div>
|
|
67
|
-
|
|
68
|
-
)
|
|
139
|
+
)
|
|
140
|
+
}).fetch(request)
|
|
69
141
|
}
|