@ssgoi/vue 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/README.md ADDED
@@ -0,0 +1,351 @@
1
+ # @ssgoi/vue
2
+
3
+ Vue bindings for SSGOI - Native app-like page transitions for Vue applications.
4
+
5
+ try this: [ssgoi.dev](https://ssgoi.dev)
6
+
7
+ ![https://ssgoi.dev](https://ssgoi.dev/ssgoi.gif)
8
+
9
+ ## What is SSGOI?
10
+
11
+ SSGOI brings native app-like page transitions to the web. Transform your static page navigations into smooth, delightful experiences that users love.
12
+
13
+ ### ✨ Key Features
14
+
15
+ - **🌍 Works Everywhere** - Unlike the browser's View Transition API, SSGOI works in all modern browsers (Chrome, Firefox, Safari)
16
+ - **🚀 SSR Ready** - Perfect compatibility with Nuxt. No hydration issues, SEO-friendly
17
+ - **🎯 Use Your Router** - Keep your existing routing. Vue Router, Nuxt - all work seamlessly
18
+ - **💾 State Persistence** - Remembers animation state during navigation, even with browser back/forward
19
+ - **🖖 Vue Optimized** - Built specifically for Vue 3 with Composition API and custom directives
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install @ssgoi/vue
25
+ # or
26
+ yarn add @ssgoi/vue
27
+ # or
28
+ pnpm add @ssgoi/vue
29
+ ```
30
+
31
+ ## Quick Start
32
+
33
+ ### 1. Wrap your app
34
+
35
+ ```vue
36
+ <template>
37
+ <Ssgoi :config="config">
38
+ <div style="position: relative">
39
+ <!-- Your app -->
40
+ <RouterView />
41
+ </div>
42
+ </Ssgoi>
43
+ </template>
44
+
45
+ <script setup>
46
+ import { Ssgoi } from '@ssgoi/vue';
47
+ import { fade } from '@ssgoi/vue/view-transitions';
48
+
49
+ const config = {
50
+ defaultTransition: fade()
51
+ };
52
+ </script>
53
+ ```
54
+
55
+ ### 2. Wrap your pages
56
+
57
+ ```vue
58
+ <template>
59
+ <SsgoiTransition id="/">
60
+ <h1>Welcome</h1>
61
+ <!-- Page content -->
62
+ </SsgoiTransition>
63
+ </template>
64
+
65
+ <script setup>
66
+ import { SsgoiTransition } from '@ssgoi/vue';
67
+ </script>
68
+ ```
69
+
70
+ **That's it!** Your pages now transition smoothly with a fade effect.
71
+
72
+ ## Advanced Transitions
73
+
74
+ ### Route-based Transitions
75
+
76
+ Define different transitions for different routes:
77
+
78
+ ```javascript
79
+ const config = {
80
+ transitions: [
81
+ // Slide between tabs
82
+ { from: '/home', to: '/about', transition: slide({ direction: 'left' }) },
83
+ { from: '/about', to: '/home', transition: slide({ direction: 'right' }) },
84
+
85
+ // Scale up when entering details
86
+ { from: '/products', to: '/products/*', transition: scale() },
87
+
88
+ // Pinterest-style image transitions
89
+ { from: '/gallery', to: '/photo/*', transition: pinterest() }
90
+ ],
91
+ defaultTransition: fade()
92
+ };
93
+ ```
94
+
95
+ ### Symmetric Transitions
96
+
97
+ Automatically create bidirectional transitions:
98
+
99
+ ```javascript
100
+ {
101
+ from: '/home',
102
+ to: '/about',
103
+ transition: slide({ direction: 'left' }),
104
+ symmetric: true // Automatically creates reverse transition
105
+ }
106
+ ```
107
+
108
+ ### Individual Element Animations
109
+
110
+ Animate specific elements during mount/unmount:
111
+
112
+ #### Method 1: Using Vue Directive (Recommended)
113
+
114
+ ```vue
115
+ <template>
116
+ <div v-transition="{
117
+ key: 'card',
118
+ in: fadeIn(),
119
+ out: slideUp()
120
+ }">
121
+ <h2>Animated Card</h2>
122
+ </div>
123
+ </template>
124
+
125
+ <script setup>
126
+ import { vTransition as vTransitionDirective } from '@ssgoi/vue';
127
+ import { fadeIn, slideUp } from '@ssgoi/vue/transitions';
128
+
129
+ // Local directive registration
130
+ const vTransition = vTransitionDirective;
131
+ </script>
132
+ ```
133
+
134
+ **Global Registration (in your main.ts/app.ts):**
135
+ ```javascript
136
+ import { createApp } from 'vue';
137
+ import { vTransition } from '@ssgoi/vue';
138
+ import App from './App.vue';
139
+
140
+ const app = createApp(App);
141
+
142
+ // Register the directive globally
143
+ app.directive('transition', vTransition);
144
+
145
+ app.mount('#app');
146
+ ```
147
+
148
+ #### Method 2: Using Composition API
149
+
150
+ ```vue
151
+ <template>
152
+ <div ref="cardRef">
153
+ <h2>Animated Card</h2>
154
+ </div>
155
+ </template>
156
+
157
+ <script setup>
158
+ import { ref, onMounted, onUnmounted } from 'vue';
159
+ import { transition } from '@ssgoi/vue';
160
+ import { fadeIn, slideUp } from '@ssgoi/vue/transitions';
161
+
162
+ const cardRef = ref();
163
+ let cleanup;
164
+
165
+ onMounted(() => {
166
+ cleanup = transition({
167
+ key: 'card',
168
+ in: fadeIn(),
169
+ out: slideUp()
170
+ })(cardRef.value);
171
+ });
172
+
173
+ onUnmounted(() => {
174
+ cleanup?.();
175
+ });
176
+ </script>
177
+ ```
178
+
179
+ ## Nuxt 3 Example
180
+
181
+ ```vue
182
+ <!-- app.vue -->
183
+ <template>
184
+ <Ssgoi :config="config">
185
+ <div style="position: relative; min-height: 100vh">
186
+ <NuxtPage />
187
+ </div>
188
+ </Ssgoi>
189
+ </template>
190
+
191
+ <script setup>
192
+ import { Ssgoi } from '@ssgoi/vue';
193
+ import { slide } from '@ssgoi/vue/view-transitions';
194
+
195
+ const config = {
196
+ defaultTransition: slide({ direction: 'left' })
197
+ };
198
+ </script>
199
+
200
+ <!-- pages/index.vue -->
201
+ <template>
202
+ <SsgoiTransition id="/">
203
+ <!-- Your page content -->
204
+ </SsgoiTransition>
205
+ </template>
206
+
207
+ <script setup>
208
+ import { SsgoiTransition } from '@ssgoi/vue';
209
+ </script>
210
+ ```
211
+
212
+ ## API Reference
213
+
214
+ ### Components
215
+
216
+ #### `<Ssgoi>`
217
+ The provider component that manages transition context.
218
+
219
+ ```vue
220
+ <Ssgoi :config="ssgoiConfig">
221
+ <!-- children -->
222
+ </Ssgoi>
223
+ ```
224
+
225
+ Props:
226
+ - `config` - Transition configuration object
227
+
228
+ #### `<SsgoiTransition>`
229
+ Wrapper component for pages that should transition.
230
+
231
+ ```vue
232
+ <SsgoiTransition id="/page-id">
233
+ <!-- children -->
234
+ </SsgoiTransition>
235
+ ```
236
+
237
+ Props:
238
+ - `id` - Unique identifier for the page (required)
239
+
240
+ ### Composables
241
+
242
+ #### `useSsgoi()`
243
+ Access transition context and state.
244
+
245
+ ```javascript
246
+ import { useSsgoi } from '@ssgoi/vue';
247
+
248
+ const ssgoi = useSsgoi();
249
+ ```
250
+
251
+ ### Directives
252
+
253
+ #### `v-transition`
254
+ Apply transitions to individual elements.
255
+
256
+ ```vue
257
+ <div v-transition="{
258
+ key: 'unique-key',
259
+ in: fadeIn(),
260
+ out: fadeOut()
261
+ }">
262
+ Content
263
+ </div>
264
+ ```
265
+
266
+ ### Functions
267
+
268
+ #### `transition()`
269
+ Apply transitions programmatically.
270
+
271
+ ```javascript
272
+ const cleanup = transition({
273
+ key: 'unique-key',
274
+ in: fadeIn(),
275
+ out: fadeOut()
276
+ })(element);
277
+ ```
278
+
279
+ ## Built-in Transitions
280
+
281
+ ### Page Transitions (`@ssgoi/vue/view-transitions`)
282
+ - `fade()` - Smooth opacity transition
283
+ - `slide()` - Directional sliding (left/right/up/down)
284
+ - `scale()` - Zoom in/out effect
285
+ - `hero()` - Shared element transitions
286
+ - `pinterest()` - Pinterest-style expand effect
287
+ - `ripple()` - Material Design ripple effect
288
+
289
+ ### Element Transitions (`@ssgoi/vue/transitions`)
290
+ - `fadeIn()` / `fadeOut()`
291
+ - `slideUp()` / `slideDown()` / `slideLeft()` / `slideRight()`
292
+ - `scaleIn()` / `scaleOut()`
293
+ - `bounce()`
294
+ - `blur()`
295
+ - `rotate()`
296
+
297
+ ## Spring Physics Configuration
298
+
299
+ All transitions use spring physics for natural motion:
300
+
301
+ ```javascript
302
+ slide({
303
+ direction: 'left',
304
+ spring: {
305
+ stiffness: 300, // 1-1000, higher = faster
306
+ damping: 30 // 0-100, higher = less oscillation
307
+ }
308
+ })
309
+ ```
310
+
311
+ ## TypeScript Support
312
+
313
+ SSGOI is written in TypeScript and provides full type definitions:
314
+
315
+ ```typescript
316
+ import type { SsgoiConfig, TransitionConfig } from '@ssgoi/vue';
317
+
318
+ const config: SsgoiConfig = {
319
+ // Full type safety
320
+ };
321
+ ```
322
+
323
+ ## Browser Support
324
+
325
+ - Chrome/Edge 88+
326
+ - Firefox 78+
327
+ - Safari 14+
328
+ - All modern mobile browsers
329
+
330
+ ## Performance
331
+
332
+ - Minimal bundle size (~8kb gzipped)
333
+ - Hardware-accelerated animations
334
+ - Automatic cleanup and memory management
335
+ - Smart preloading for instant transitions
336
+
337
+ ## Documentation
338
+
339
+ Visit [https://ssgoi.dev](https://ssgoi.dev) for:
340
+ - Complete API reference
341
+ - Interactive examples
342
+ - Advanced patterns
343
+ - Migration guides
344
+
345
+ ## Contributing
346
+
347
+ We welcome contributions! Please see our [contributing guide](https://github.com/meursyphus/ssgoi/blob/main/CONTRIBUTING.md) for details.
348
+
349
+ ## License
350
+
351
+ MIT © [MeurSyphus](https://github.com/meursyphus)
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=Symbol("ssgoi-context"),s=o=>{e.provide(t,o)},i=()=>{const o=e.inject(t);if(!o)throw new Error("useSsgoi must be used within Ssgoi component");return o};exports.provideSsgoi=s;exports.useSsgoi=i;
@@ -0,0 +1,3 @@
1
+ import { SsgoiContext } from './types';
2
+ export declare const provideSsgoi: (context: SsgoiContext) => void;
3
+ export declare const useSsgoi: () => SsgoiContext;
@@ -0,0 +1,13 @@
1
+ import { provide as e, inject as s } from "vue";
2
+ const t = Symbol("ssgoi-context"), n = (o) => {
3
+ e(t, o);
4
+ }, r = () => {
5
+ const o = s(t);
6
+ if (!o)
7
+ throw new Error("useSsgoi must be used within Ssgoi component");
8
+ return o;
9
+ };
10
+ export {
11
+ n as provideSsgoi,
12
+ r as useSsgoi
13
+ };
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./transition.cjs"),i=require("./ssgoi.vue.cjs"),e=require("./ssgoi-transition.vue.cjs");exports.transition=t.transition;exports.vTransition=t.vTransition;exports.Ssgoi=i.default;exports.SsgoiTransition=e.default;
@@ -0,0 +1,4 @@
1
+ export { transition, vTransition } from './transition';
2
+ export * from './types';
3
+ export { default as Ssgoi } from './ssgoi.vue';
4
+ export { default as SsgoiTransition } from './ssgoi-transition.vue';
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ import { transition as t, vTransition as i } from "./transition.js";
2
+ import { default as s } from "./ssgoi.vue.js";
3
+ import { default as e } from "./ssgoi-transition.vue.js";
4
+ export {
5
+ s as Ssgoi,
6
+ e as SsgoiTransition,
7
+ t as transition,
8
+ i as vTransition
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@ssgoi/core/presets");Object.keys(t).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
@@ -0,0 +1 @@
1
+ export * from '@ssgoi/core/presets';
@@ -0,0 +1 @@
1
+ export * from "@ssgoi/core/presets";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue"),r=require("./transition.cjs"),a=require("./context.cjs"),u=["data-ssgoi-transition"],c=t.defineComponent({__name:"ssgoi-transition",props:{id:{}},setup(i){const n=i,o=a.useSsgoi(),s=t.computed(()=>({...o(n.id),key:n.id}));return(e,d)=>t.withDirectives((t.openBlock(),t.createElementBlock("div",{"data-ssgoi-transition":e.id},[t.renderSlot(e.$slots,"default")],8,u)),[[t.unref(r.vTransition),s.value]])}});exports.default=c;
@@ -0,0 +1,20 @@
1
+ interface Props {
2
+ id: string;
3
+ }
4
+ declare function __VLS_template(): {
5
+ attrs: Partial<{}>;
6
+ slots: {
7
+ default?(_: {}): any;
8
+ };
9
+ refs: {};
10
+ rootEl: HTMLDivElement;
11
+ };
12
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
14
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
15
+ export default _default;
16
+ type __VLS_WithTemplateSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
@@ -0,0 +1,23 @@
1
+ import { defineComponent as e, computed as r, withDirectives as a, createElementBlock as c, openBlock as d, renderSlot as p, unref as m } from "vue";
2
+ import { vTransition as u } from "./transition.js";
3
+ import { useSsgoi as f } from "./context.js";
4
+ const l = ["data-ssgoi-transition"], k = /* @__PURE__ */ e({
5
+ __name: "ssgoi-transition",
6
+ props: {
7
+ id: {}
8
+ },
9
+ setup(i) {
10
+ const o = i, n = f(), s = r(() => ({
11
+ ...n(o.id),
12
+ key: o.id
13
+ }));
14
+ return (t, g) => a((d(), c("div", { "data-ssgoi-transition": t.id }, [
15
+ p(t.$slots, "default")
16
+ ], 8, l)), [
17
+ [m(u), s.value]
18
+ ]);
19
+ }
20
+ });
21
+ export {
22
+ k as default
23
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ssgoi-transition.vue.cjs");exports.default=e.default;
@@ -0,0 +1,4 @@
1
+ import f from "./ssgoi-transition.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),c=require("./context.cjs"),s=require("@ssgoi/core"),u=e.defineComponent({__name:"ssgoi",props:{config:{}},setup(t){const o=t,n=e.computed(()=>s.createSggoiTransitionContext(o.config));return e.watchEffect(()=>{c.provideSsgoi(n.value)}),(r,i)=>(e.openBlock(),e.createElementBlock("div",null,[e.renderSlot(r.$slots,"default")]))}});exports.default=u;
@@ -0,0 +1,21 @@
1
+ import { SsgoiConfig } from './types';
2
+ interface Props {
3
+ config: SsgoiConfig;
4
+ }
5
+ declare function __VLS_template(): {
6
+ attrs: Partial<{}>;
7
+ slots: {
8
+ default?(_: {}): any;
9
+ };
10
+ refs: {};
11
+ rootEl: HTMLDivElement;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
15
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
16
+ export default _default;
17
+ type __VLS_WithTemplateSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -0,0 +1,20 @@
1
+ import { defineComponent as r, computed as c, watchEffect as i, createElementBlock as s, openBlock as p, renderSlot as a } from "vue";
2
+ import { provideSsgoi as f } from "./context.js";
3
+ import { createSggoiTransitionContext as l } from "@ssgoi/core";
4
+ const _ = /* @__PURE__ */ r({
5
+ __name: "ssgoi",
6
+ props: {
7
+ config: {}
8
+ },
9
+ setup(o) {
10
+ const e = o, t = c(() => l(e.config));
11
+ return i(() => {
12
+ f(t.value);
13
+ }), (n, m) => (p(), s("div", null, [
14
+ a(n.$slots, "default")
15
+ ]));
16
+ }
17
+ });
18
+ export {
19
+ _ as default
20
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ssgoi.vue.cjs");exports.default=e.default;
@@ -0,0 +1,4 @@
1
+ import f from "./ssgoi.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@ssgoi/core"),o=s.transition,r={mounted(n,t){if(!t.value){console.warn("[SSGOI] v-transition directive requires a configuration object");return}const e=t.value;setTimeout(()=>{const i=o(e)(n);n._ssgoiCleanup=i},0)},unmounted(n){const t=n._ssgoiCleanup;t&&(t(),delete n._ssgoiCleanup)}};exports.transition=o;exports.vTransition=r;
@@ -0,0 +1,6 @@
1
+ import { transition as _transition, Transition, TransitionKey } from '@ssgoi/core';
2
+ import { Directive } from 'vue';
3
+ export declare const transition: typeof _transition;
4
+ export declare const vTransition: Directive<HTMLElement, Transition & {
5
+ key: TransitionKey;
6
+ }>;
@@ -0,0 +1,24 @@
1
+ import { transition as s } from "@ssgoi/core";
2
+ const e = s, r = {
3
+ mounted(n, t) {
4
+ if (!t.value) {
5
+ console.warn(
6
+ "[SSGOI] v-transition directive requires a configuration object"
7
+ );
8
+ return;
9
+ }
10
+ const o = t.value;
11
+ setTimeout(() => {
12
+ const i = e(o)(n);
13
+ n._ssgoiCleanup = i;
14
+ }, 0);
15
+ },
16
+ unmounted(n) {
17
+ const t = n._ssgoiCleanup;
18
+ t && (t(), delete n._ssgoiCleanup);
19
+ }
20
+ };
21
+ export {
22
+ e as transition,
23
+ r as vTransition
24
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@ssgoi/core/transitions");Object.keys(t).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
@@ -0,0 +1 @@
1
+ export * from '@ssgoi/core/transitions';
@@ -0,0 +1 @@
1
+ export * from "@ssgoi/core/transitions";
package/dist/types.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ export * from '@ssgoi/core/types';
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@ssgoi/core/view-transitions");Object.keys(t).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
@@ -0,0 +1 @@
1
+ export * from '@ssgoi/core/view-transitions';
@@ -0,0 +1 @@
1
+ export * from "@ssgoi/core/view-transitions";
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@ssgoi/vue",
3
+ "version": "2.0.0",
4
+ "description": "Vue bindings for SSGOI - Native app-like page transitions for Vue applications",
5
+ "private": false,
6
+ "type": "module",
7
+ "files": [
8
+ "dist",
9
+ "!dist/**/*.test.*",
10
+ "!dist/**/*.spec.*"
11
+ ],
12
+ "main": "./dist/index.cjs",
13
+ "module": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js",
19
+ "require": "./dist/index.cjs",
20
+ "default": "./dist/index.js"
21
+ },
22
+ "./transitions": {
23
+ "types": "./dist/transitions/index.d.ts",
24
+ "import": "./dist/transitions/index.js",
25
+ "require": "./dist/transitions/index.cjs",
26
+ "default": "./dist/transitions/index.js"
27
+ },
28
+ "./view-transitions": {
29
+ "types": "./dist/view-transitions/index.d.ts",
30
+ "import": "./dist/view-transitions/index.js",
31
+ "require": "./dist/view-transitions/index.cjs",
32
+ "default": "./dist/view-transitions/index.js"
33
+ },
34
+ "./types": {
35
+ "types": "./dist/types.d.ts",
36
+ "import": "./dist/types.js",
37
+ "require": "./dist/types.cjs",
38
+ "default": "./dist/types.js"
39
+ },
40
+ "./presets": {
41
+ "types": "./dist/presets/index.d.ts",
42
+ "import": "./dist/presets/index.js",
43
+ "require": "./dist/presets/index.cjs",
44
+ "default": "./dist/presets/index.js"
45
+ }
46
+ },
47
+ "scripts": {
48
+ "dev": "vite build --watch",
49
+ "build": "vue-tsc -b && vite build",
50
+ "watch": "vite build --watch",
51
+ "lint": "eslint .",
52
+ "preview": "vite preview",
53
+ "package": "vite build",
54
+ "prepare": "pnpm run build"
55
+ },
56
+ "dependencies": {
57
+ "@ssgoi/core": "workspace:*"
58
+ },
59
+ "peerDependencies": {
60
+ "vue": "^3.5.0"
61
+ },
62
+ "devDependencies": {
63
+ "@eslint/js": "^9.30.1",
64
+ "@vitejs/plugin-vue": "^6.0.0",
65
+ "@vue/tsconfig": "^0.7.0",
66
+ "eslint": "^9.30.1",
67
+ "eslint-plugin-vue": "^9.33.0",
68
+ "globals": "^16.3.0",
69
+ "rollup-plugin-preserve-directives": "^0.4.0",
70
+ "typescript": "~5.8.3",
71
+ "typescript-eslint": "^8.35.1",
72
+ "vite": "^7.0.4",
73
+ "vite-plugin-dts": "^4.5.4",
74
+ "vue-tsc": "^2.2.12"
75
+ },
76
+ "keywords": [
77
+ "vue",
78
+ "page-transition",
79
+ "animation",
80
+ "ssgoi",
81
+ "spring-physics"
82
+ ],
83
+ "author": "MeurSyphus <tmdeoans@snu.ac.kr>",
84
+ "license": "MIT",
85
+ "repository": {
86
+ "type": "git",
87
+ "url": "git+https://github.com/meursyphus/ssgoi.git",
88
+ "directory": "packages/vue"
89
+ },
90
+ "homepage": "https://ssgoi.dev",
91
+ "bugs": {
92
+ "url": "https://github.com/meursyphus/ssgoi/issues"
93
+ },
94
+ "publishConfig": {
95
+ "access": "public"
96
+ },
97
+ "engines": {
98
+ "node": ">=18.0.0"
99
+ }
100
+ }