loopwind 0.9.2 → 0.10.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/FONTS.md +13 -13
- package/HELPERS_DEMO.md +2 -2
- package/PROJECT_STRUCTURE.md +38 -38
- package/PUBLISHING.md +13 -13
- package/README.md +40 -48
- package/REGISTRY_SETUP.md +18 -18
- package/SHADCN_INTEGRATION.md +7 -7
- package/TAILWIND.md +4 -4
- package/TEMPLATE_SOURCES.md +30 -30
- package/dist/commands/render.d.ts +1 -1
- package/dist/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +53 -26
- package/dist/commands/render.js.map +1 -1
- package/dist/default-templates/AGENTS.md +29 -29
- package/dist/default-templates/image-template/template.tsx +15 -0
- package/dist/default-templates/video-template/template.tsx +19 -0
- package/dist/default-templates/website-template/template.tsx +18 -0
- package/dist/lib/renderer.js +15 -15
- package/dist/lib/renderer.js.map +1 -1
- package/dist/lib/tailwind-detector.js +1 -1
- package/dist/lib/tailwind-detector.js.map +1 -1
- package/dist/lib/tailwind.d.ts +1 -1
- package/dist/lib/tailwind.d.ts.map +1 -1
- package/dist/lib/tailwind.js +19 -19
- package/dist/lib/tailwind.js.map +1 -1
- package/dist/lib/template-validator.js +1 -1
- package/dist/lib/template-validator.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +8 -7
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/video-renderer.d.ts +6 -0
- package/dist/lib/video-renderer.d.ts.map +1 -1
- package/dist/lib/video-renderer.js +69 -0
- package/dist/lib/video-renderer.js.map +1 -1
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +8 -8
- package/dist/sdk/index.js.map +1 -1
- package/examples/nextjs-api/README.md +6 -6
- package/examples/nextjs-api/pages/api/intro-video.ts +1 -1
- package/examples/nextjs-api/pages/api/og-image.ts +2 -2
- package/package.json +2 -1
- package/test-templates/TESTS.md +1 -1
- package/test-templates/test-sdk.mjs +2 -2
- package/website/README.md +2 -2
- package/website/package-lock.json +186 -2480
- package/_dsgn/templates/banner-hero/banner-hero.tsx +0 -57
- package/_dsgn/templates/banner-hero/meta.json +0 -14
- package/_dsgn/templates/composite-card/meta.json +0 -16
- package/_dsgn/templates/composite-card/template.tsx +0 -44
- package/_dsgn/templates/image/meta.json +0 -13
- package/_dsgn/templates/image/template.tsx +0 -28
- package/_dsgn/templates/kitchen-sink/meta.json +0 -13
- package/_dsgn/templates/kitchen-sink/template.tsx +0 -72
- package/_dsgn/templates/qr-card/meta.json +0 -14
- package/_dsgn/templates/qr-card/template.tsx +0 -39
- package/_dsgn/templates/test-parent/child/meta.json +0 -11
- package/_dsgn/templates/test-parent/child/template.tsx +0 -27
- package/_dsgn/templates/test-parent/meta.json +0 -12
- package/_dsgn/templates/test-parent/template.tsx +0 -30
- package/_dsgn/templates/test-sibling/meta.json +0 -11
- package/_dsgn/templates/test-sibling/template.tsx +0 -20
- package/_dsgn/templates/video/.tmp/template-1763421345296.mjs +0 -43
- package/_dsgn/templates/video/.tmp/template-1763421362228.mjs +0 -43
- package/_dsgn/templates/video/.tmp/template-1763421377706.mjs +0 -43
- package/_dsgn/templates/video/meta.json +0 -17
- package/_dsgn/templates/video/template.tsx +0 -48
- package/dist/default-templates/image/meta.json +0 -13
- package/dist/default-templates/image-template/meta.json +0 -13
- package/dist/default-templates/kitchen-sink/meta.json +0 -13
- package/dist/default-templates/page/meta.json +0 -17
- package/dist/default-templates/video/meta.json +0 -17
- package/dist/default-templates/video-template/meta.json +0 -17
- package/dist/default-templates/website/meta.json +0 -16
- package/dist/default-templates/website-template/meta.json +0 -16
- package/test-templates/_dsgn/templates/absolute-spin/meta.json +0 -7
- package/test-templates/_dsgn/templates/absolute-spin/template.tsx +0 -16
- package/test-templates/_dsgn/templates/animated-intro/.tmp/template-1763468771640.mjs +0 -7
- package/test-templates/_dsgn/templates/animated-intro/meta.json +0 -10
- package/test-templates/_dsgn/templates/animated-intro/template.tsx +0 -23
- package/test-templates/_dsgn/templates/centered-spin/.tmp/template-1763468525386.mjs +0 -7
- package/test-templates/_dsgn/templates/centered-spin/meta.json +0 -7
- package/test-templates/_dsgn/templates/centered-spin/template.tsx +0 -11
- package/test-templates/_dsgn/templates/composite/.tmp/template-1763468815645.mjs +0 -7
- package/test-templates/_dsgn/templates/composite/meta.json +0 -9
- package/test-templates/_dsgn/templates/composite/template.tsx +0 -23
- package/test-templates/_dsgn/templates/easing-test/.tmp/template-1763468824501.mjs +0 -7
- package/test-templates/_dsgn/templates/easing-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/easing-test/template.tsx +0 -47
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763466364336.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763466584319.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763466667797.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763466746504.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763466930225.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467004552.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467060334.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467124493.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467174690.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467359134.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467451928.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467758275.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763467985201.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763468020563.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763468090428.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763468211036.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/.tmp/template-1763468394057.mjs +0 -10
- package/test-templates/_dsgn/templates/minimal-spin/meta.json +0 -7
- package/test-templates/_dsgn/templates/minimal-spin/template.tsx +0 -13
- package/test-templates/_dsgn/templates/no-origin-spin/meta.json +0 -7
- package/test-templates/_dsgn/templates/no-origin-spin/template.tsx +0 -10
- package/test-templates/_dsgn/templates/opacity-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/opacity-test/template.tsx +0 -9
- package/test-templates/_dsgn/templates/qr-code/.tmp/template-1763468758954.mjs +0 -17
- package/test-templates/_dsgn/templates/qr-code/.tmp/template-1763468815672.mjs +0 -17
- package/test-templates/_dsgn/templates/qr-code/meta.json +0 -9
- package/test-templates/_dsgn/templates/qr-code/template.tsx +0 -20
- package/test-templates/_dsgn/templates/rotation-abs-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/rotation-abs-test/template.tsx +0 -15
- package/test-templates/_dsgn/templates/rotation-corner/meta.json +0 -7
- package/test-templates/_dsgn/templates/rotation-corner/template.tsx +0 -12
- package/test-templates/_dsgn/templates/rotation-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/rotation-test/template.tsx +0 -12
- package/test-templates/_dsgn/templates/shake-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/shake-test/template.tsx +0 -12
- package/test-templates/_dsgn/templates/static-image/.tmp/template-1763468746271.mjs +0 -7
- package/test-templates/_dsgn/templates/static-image/meta.json +0 -9
- package/test-templates/_dsgn/templates/static-image/template.tsx +0 -19
- package/test-templates/_dsgn/templates/translate-test/meta.json +0 -7
- package/test-templates/_dsgn/templates/translate-test/template.tsx +0 -9
- package/test-templates/_dsgn/templates/video-loops/.tmp/template-1763468793192.mjs +0 -15
- package/test-templates/_dsgn/templates/video-loops/meta.json +0 -9
- package/test-templates/_dsgn/templates/video-loops/template.tsx +0 -39
- package/test-templates/_dsgn/templates/wrapped-spin/meta.json +0 -7
- package/test-templates/_dsgn/templates/wrapped-spin/template.tsx +0 -17
- package/test-templates/compare-svgs.mjs +0 -30
- package/test-templates/convert-frames.mjs +0 -15
- package/test-templates/debug-rotation.mjs +0 -25
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "video",
|
|
3
|
-
"description": "Animated video starter template",
|
|
4
|
-
"type": "video",
|
|
5
|
-
"size": {
|
|
6
|
-
"width": 1200,
|
|
7
|
-
"height": 630
|
|
8
|
-
},
|
|
9
|
-
"props": {
|
|
10
|
-
"title": "string",
|
|
11
|
-
"description": "string?"
|
|
12
|
-
},
|
|
13
|
-
"video": {
|
|
14
|
-
"fps": 30,
|
|
15
|
-
"duration": 3
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "video",
|
|
3
|
-
"description": "Animated video starter template",
|
|
4
|
-
"type": "video",
|
|
5
|
-
"size": {
|
|
6
|
-
"width": 1200,
|
|
7
|
-
"height": 630
|
|
8
|
-
},
|
|
9
|
-
"props": {
|
|
10
|
-
"title": "string",
|
|
11
|
-
"description": "string?"
|
|
12
|
-
},
|
|
13
|
-
"video": {
|
|
14
|
-
"fps": 30,
|
|
15
|
-
"duration": 3
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "video",
|
|
3
|
-
"description": "Animated video starter template",
|
|
4
|
-
"type": "video",
|
|
5
|
-
"size": {
|
|
6
|
-
"width": 1200,
|
|
7
|
-
"height": 630
|
|
8
|
-
},
|
|
9
|
-
"props": {
|
|
10
|
-
"title": "string",
|
|
11
|
-
"description": "string?"
|
|
12
|
-
},
|
|
13
|
-
"video": {
|
|
14
|
-
"fps": 30,
|
|
15
|
-
"duration": 3
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Use absolute within relative flex container
|
|
4
|
-
export default function AbsoluteSpin({ tw }) {
|
|
5
|
-
return (
|
|
6
|
-
<div style={tw('relative flex items-center justify-center w-full h-full bg-gray-900')}>
|
|
7
|
-
{/* Absolutely positioned at center - flex doesn't affect it */}
|
|
8
|
-
<div style={{
|
|
9
|
-
...tw('absolute w-32 h-32 rounded-lg bg-blue-500 animate-spin/90'),
|
|
10
|
-
top: '50%',
|
|
11
|
-
left: '50%',
|
|
12
|
-
transform: `translate(-50%, -50%) rotate(${0}deg)`
|
|
13
|
-
}} />
|
|
14
|
-
</div>
|
|
15
|
-
);
|
|
16
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function AnimatedIntro({ tw, title, subtitle }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-black to-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: tw("w-24 h-24 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 mb-8 ease-out animate-bounce-in/0/0.3") }), /* @__PURE__ */ React.createElement("h1", { style: tw("text-8xl font-bold text-white ease-out animate-bounce-in-up/0.15/0.5") }, title), /* @__PURE__ */ React.createElement("p", { style: tw("text-3xl text-white/70 mt-6 ease-out animate-fade-in-up/0.4/0.7") }, subtitle), /* @__PURE__ */ React.createElement("div", { style: tw("w-32 h-1 bg-gradient-to-r from-blue-500 to-purple-600 mt-8 ease-out animate-scale-in/0.6/0.9") }));
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
AnimatedIntro as default
|
|
7
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
export default function AnimatedIntro({ tw, title, subtitle }) {
|
|
4
|
-
return (
|
|
5
|
-
<div style={tw('flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-black to-gray-900')}>
|
|
6
|
-
{/* Logo/icon bounces in first */}
|
|
7
|
-
<div style={tw('w-24 h-24 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 mb-8 ease-out animate-bounce-in/0/0.3')} />
|
|
8
|
-
|
|
9
|
-
{/* Title slides up with bounce */}
|
|
10
|
-
<h1 style={tw('text-8xl font-bold text-white ease-out animate-bounce-in-up/0.15/0.5')}>
|
|
11
|
-
{title}
|
|
12
|
-
</h1>
|
|
13
|
-
|
|
14
|
-
{/* Subtitle fades in from below */}
|
|
15
|
-
<p style={tw('text-3xl text-white/70 mt-6 ease-out animate-fade-in-up/0.4/0.7')}>
|
|
16
|
-
{subtitle}
|
|
17
|
-
</p>
|
|
18
|
-
|
|
19
|
-
{/* Decorative line scales in */}
|
|
20
|
-
<div style={tw('w-32 h-1 bg-gradient-to-r from-blue-500 to-purple-600 mt-8 ease-out animate-scale-in/0.6/0.9')} />
|
|
21
|
-
</div>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function CenteredSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900 items-center justify-center gap-8") }, /* @__PURE__ */ React.createElement("div", { style: tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90") }), /* @__PURE__ */ React.createElement("div", { style: tw("w-32 h-32 rounded-lg bg-red-500 animate-spin/90") }));
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
CenteredSpin as default
|
|
7
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Two spinning elements side by side in flex container
|
|
4
|
-
export default function CenteredSpin({ tw }) {
|
|
5
|
-
return (
|
|
6
|
-
<div style={tw('flex w-full h-full bg-gray-900 items-center justify-center gap-8')}>
|
|
7
|
-
<div style={tw('w-32 h-32 rounded-lg bg-blue-500 animate-spin/90')} />
|
|
8
|
-
<div style={tw('w-32 h-32 rounded-lg bg-red-500 animate-spin/90')} />
|
|
9
|
-
</div>
|
|
10
|
-
);
|
|
11
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function Composite({ tw, template, title, qrUrl }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-100") }, /* @__PURE__ */ React.createElement("div", { style: tw("flex-1 flex flex-col justify-center p-12") }, /* @__PURE__ */ React.createElement("h1", { style: tw("text-5xl font-bold text-gray-900 mb-4") }, title), /* @__PURE__ */ React.createElement("p", { style: tw("text-xl text-gray-600 mb-8") }, "This template embeds another template using the template() helper"), /* @__PURE__ */ React.createElement("div", { style: tw("text-sm text-gray-500") }, "Composite Template Test")), /* @__PURE__ */ React.createElement("div", { style: tw("w-96 flex items-center justify-center bg-white border-l border-gray-200") }, template("qr-code", { url: qrUrl, title: "Scan Me" })));
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
Composite as default
|
|
7
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
export default function Composite({ tw, template, title, qrUrl }) {
|
|
4
|
-
return (
|
|
5
|
-
<div style={tw('flex w-full h-full bg-gray-100')}>
|
|
6
|
-
{/* Left side - main content */}
|
|
7
|
-
<div style={tw('flex-1 flex flex-col justify-center p-12')}>
|
|
8
|
-
<h1 style={tw('text-5xl font-bold text-gray-900 mb-4')}>{title}</h1>
|
|
9
|
-
<p style={tw('text-xl text-gray-600 mb-8')}>
|
|
10
|
-
This template embeds another template using the template() helper
|
|
11
|
-
</p>
|
|
12
|
-
<div style={tw('text-sm text-gray-500')}>
|
|
13
|
-
Composite Template Test
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
|
|
17
|
-
{/* Right side - embedded QR template */}
|
|
18
|
-
<div style={tw('w-96 flex items-center justify-center bg-white border-l border-gray-200')}>
|
|
19
|
-
{template('qr-code', { url: qrUrl, title: 'Scan Me' })}
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function EasingTest({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex flex-col w-full h-full bg-gray-900 p-12") }, /* @__PURE__ */ React.createElement("h1", { style: tw("text-4xl font-bold text-white mb-8 text-center") }, "Easing Functions Test"), /* @__PURE__ */ React.createElement("div", { style: tw("flex flex-col gap-4 flex-1 justify-center") }, /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "linear"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-red-500 linear animate-slide-right/0/1") })), /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "ease-in"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-orange-500 ease-in animate-slide-right/0/1") })), /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "ease-out"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-yellow-500 ease-out animate-slide-right/0/1") })), /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "ease-in-out"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-green-500 ease-in-out animate-slide-right/0/1") })), /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "ease-out-cubic"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-blue-500 ease-out-cubic animate-slide-right/0/1") })), /* @__PURE__ */ React.createElement("div", { style: tw("flex items-center gap-4") }, /* @__PURE__ */ React.createElement("span", { style: tw("w-32 text-white text-sm") }, "ease-in-out-quart"), /* @__PURE__ */ React.createElement("div", { style: tw("w-12 h-12 rounded bg-purple-500 ease-in-out-quart animate-slide-right/0/1") }))));
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
EasingTest as default
|
|
7
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
export default function EasingTest({ tw }) {
|
|
4
|
-
return (
|
|
5
|
-
<div style={tw('flex flex-col w-full h-full bg-gray-900 p-12')}>
|
|
6
|
-
<h1 style={tw('text-4xl font-bold text-white mb-8 text-center')}>Easing Functions Test</h1>
|
|
7
|
-
|
|
8
|
-
<div style={tw('flex flex-col gap-4 flex-1 justify-center')}>
|
|
9
|
-
{/* Linear */}
|
|
10
|
-
<div style={tw('flex items-center gap-4')}>
|
|
11
|
-
<span style={tw('w-32 text-white text-sm')}>linear</span>
|
|
12
|
-
<div style={tw('w-12 h-12 rounded bg-red-500 linear animate-slide-right/0/1')} />
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
{/* Ease In */}
|
|
16
|
-
<div style={tw('flex items-center gap-4')}>
|
|
17
|
-
<span style={tw('w-32 text-white text-sm')}>ease-in</span>
|
|
18
|
-
<div style={tw('w-12 h-12 rounded bg-orange-500 ease-in animate-slide-right/0/1')} />
|
|
19
|
-
</div>
|
|
20
|
-
|
|
21
|
-
{/* Ease Out */}
|
|
22
|
-
<div style={tw('flex items-center gap-4')}>
|
|
23
|
-
<span style={tw('w-32 text-white text-sm')}>ease-out</span>
|
|
24
|
-
<div style={tw('w-12 h-12 rounded bg-yellow-500 ease-out animate-slide-right/0/1')} />
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
{/* Ease In Out */}
|
|
28
|
-
<div style={tw('flex items-center gap-4')}>
|
|
29
|
-
<span style={tw('w-32 text-white text-sm')}>ease-in-out</span>
|
|
30
|
-
<div style={tw('w-12 h-12 rounded bg-green-500 ease-in-out animate-slide-right/0/1')} />
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
{/* Ease Out Cubic */}
|
|
34
|
-
<div style={tw('flex items-center gap-4')}>
|
|
35
|
-
<span style={tw('w-32 text-white text-sm')}>ease-out-cubic</span>
|
|
36
|
-
<div style={tw('w-12 h-12 rounded bg-blue-500 ease-out-cubic animate-slide-right/0/1')} />
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
{/* Ease In Out Quart */}
|
|
40
|
-
<div style={tw('flex items-center gap-4')}>
|
|
41
|
-
<span style={tw('w-32 text-white text-sm')}>ease-in-out-quart</span>
|
|
42
|
-
<div style={tw('w-12 h-12 rounded bg-purple-500 ease-in-out-quart animate-slide-right/0/1')} />
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
);
|
|
47
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function MinimalSpin({ tw }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex w-full h-full bg-gray-900") }, /* @__PURE__ */ React.createElement("div", { style: {
|
|
4
|
-
...tw("w-32 h-32 rounded-lg bg-blue-500 animate-spin/90"),
|
|
5
|
-
transformOrigin: "64px 64px"
|
|
6
|
-
} }));
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
MinimalSpin as default
|
|
10
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Exact copy of rotation-corner which worked
|
|
4
|
-
export default function MinimalSpin({ tw }) {
|
|
5
|
-
return (
|
|
6
|
-
<div style={tw('flex w-full h-full bg-gray-900')}>
|
|
7
|
-
<div style={{
|
|
8
|
-
...tw('w-32 h-32 rounded-lg bg-blue-500 animate-spin/90'),
|
|
9
|
-
transformOrigin: '64px 64px'
|
|
10
|
-
}} />
|
|
11
|
-
</div>
|
|
12
|
-
);
|
|
13
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// No transformOrigin - let Satori use default
|
|
4
|
-
export default function NoOriginSpin({ tw }) {
|
|
5
|
-
return (
|
|
6
|
-
<div style={tw('flex items-center justify-center w-full h-full bg-gray-900')}>
|
|
7
|
-
<div style={tw('w-32 h-32 rounded-lg bg-blue-500 animate-spin/90')} />
|
|
8
|
-
</div>
|
|
9
|
-
);
|
|
10
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function QRCode({ tw, qr, url, title }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex flex-col items-center justify-center w-full h-full bg-white p-12") }, /* @__PURE__ */ React.createElement("h1", { style: tw("text-4xl font-bold text-gray-900 mb-8") }, title), /* @__PURE__ */ React.createElement(
|
|
4
|
-
"img",
|
|
5
|
-
{
|
|
6
|
-
src: qr(url, {
|
|
7
|
-
width: 400,
|
|
8
|
-
margin: 2,
|
|
9
|
-
color: { dark: "#1a1a1a", light: "#ffffff" }
|
|
10
|
-
}),
|
|
11
|
-
style: tw("w-96 h-96")
|
|
12
|
-
}
|
|
13
|
-
), /* @__PURE__ */ React.createElement("p", { style: tw("text-xl text-gray-600 mt-8") }, url));
|
|
14
|
-
}
|
|
15
|
-
export {
|
|
16
|
-
QRCode as default
|
|
17
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from "file:///Users/tommyvedvik/Dev/dsgn/node_modules/react/index.js";
|
|
2
|
-
function QRCode({ tw, qr, url, title }) {
|
|
3
|
-
return /* @__PURE__ */ React.createElement("div", { style: tw("flex flex-col items-center justify-center w-full h-full bg-white p-12") }, /* @__PURE__ */ React.createElement("h1", { style: tw("text-4xl font-bold text-gray-900 mb-8") }, title), /* @__PURE__ */ React.createElement(
|
|
4
|
-
"img",
|
|
5
|
-
{
|
|
6
|
-
src: qr(url, {
|
|
7
|
-
width: 400,
|
|
8
|
-
margin: 2,
|
|
9
|
-
color: { dark: "#1a1a1a", light: "#ffffff" }
|
|
10
|
-
}),
|
|
11
|
-
style: tw("w-96 h-96")
|
|
12
|
-
}
|
|
13
|
-
), /* @__PURE__ */ React.createElement("p", { style: tw("text-xl text-gray-600 mt-8") }, url));
|
|
14
|
-
}
|
|
15
|
-
export {
|
|
16
|
-
QRCode as default
|
|
17
|
-
};
|