@useavalon/avalon 0.1.11 → 0.1.13
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 +54 -54
- package/mod.ts +302 -302
- package/package.json +49 -26
- package/src/build/integration-bundler-plugin.ts +116 -116
- package/src/build/integration-config.ts +168 -168
- package/src/build/integration-detection-plugin.ts +117 -117
- package/src/build/integration-resolver-plugin.ts +90 -90
- package/src/build/island-manifest.ts +269 -269
- package/src/build/island-types-generator.ts +476 -476
- package/src/build/mdx-island-transform.ts +464 -464
- package/src/build/mdx-plugin.ts +98 -98
- package/src/build/page-island-transform.ts +598 -598
- package/src/build/prop-extractors/index.ts +21 -21
- package/src/build/prop-extractors/lit.ts +140 -140
- package/src/build/prop-extractors/qwik.ts +16 -16
- package/src/build/prop-extractors/solid.ts +125 -125
- package/src/build/prop-extractors/svelte.ts +194 -194
- package/src/build/prop-extractors/vue.ts +111 -111
- package/src/build/sidecar-file-manager.ts +104 -104
- package/src/build/sidecar-renderer.ts +30 -30
- package/src/client/adapters/index.ts +21 -13
- package/src/client/components.ts +35 -35
- package/src/client/css-hmr-handler.ts +344 -344
- package/src/client/framework-adapter.ts +462 -462
- package/src/client/hmr-coordinator.ts +396 -396
- package/src/client/hmr-error-overlay.js +533 -533
- package/src/client/main.js +824 -816
- package/src/client/types/framework-runtime.d.ts +68 -68
- package/src/client/types/vite-hmr.d.ts +46 -46
- package/src/client/types/vite-virtual-modules.d.ts +70 -60
- package/src/components/Image.tsx +123 -123
- package/src/components/IslandErrorBoundary.tsx +145 -145
- package/src/components/LayoutDataErrorBoundary.tsx +141 -141
- package/src/components/LayoutErrorBoundary.tsx +127 -127
- package/src/components/PersistentIsland.tsx +52 -52
- package/src/components/StreamingErrorBoundary.tsx +233 -233
- package/src/components/StreamingLayout.tsx +538 -538
- package/src/core/components/component-analyzer.ts +192 -192
- package/src/core/components/component-detection.ts +508 -508
- package/src/core/components/enhanced-framework-detector.ts +500 -500
- package/src/core/components/framework-registry.ts +563 -563
- package/src/core/content/mdx-processor.ts +46 -46
- package/src/core/integrations/index.ts +19 -19
- package/src/core/integrations/loader.ts +125 -125
- package/src/core/integrations/registry.ts +175 -175
- package/src/core/islands/island-persistence.ts +325 -325
- package/src/core/islands/island-state-serializer.ts +258 -258
- package/src/core/islands/persistent-island-context.tsx +80 -80
- package/src/core/islands/use-persistent-state.ts +68 -68
- package/src/core/layout/enhanced-layout-resolver.ts +322 -322
- package/src/core/layout/layout-cache-manager.ts +485 -485
- package/src/core/layout/layout-composer.ts +357 -357
- package/src/core/layout/layout-data-loader.ts +516 -516
- package/src/core/layout/layout-discovery.ts +243 -243
- package/src/core/layout/layout-matcher.ts +299 -299
- package/src/core/layout/layout-types.ts +110 -110
- package/src/core/modules/framework-module-resolver.ts +273 -273
- package/src/islands/component-analysis.ts +213 -213
- package/src/islands/css-utils.ts +565 -565
- package/src/islands/discovery/index.ts +80 -80
- package/src/islands/discovery/registry.ts +340 -340
- package/src/islands/discovery/resolver.ts +477 -477
- package/src/islands/discovery/scanner.ts +386 -386
- package/src/islands/discovery/types.ts +117 -117
- package/src/islands/discovery/validator.ts +544 -544
- package/src/islands/discovery/watcher.ts +368 -368
- package/src/islands/framework-detection.ts +428 -428
- package/src/islands/integration-loader.ts +490 -490
- package/src/islands/island.tsx +565 -565
- package/src/islands/render-cache.ts +550 -550
- package/src/islands/types.ts +80 -80
- package/src/islands/universal-css-collector.ts +157 -157
- package/src/islands/universal-head-collector.ts +137 -137
- package/src/layout-system.d.ts +592 -592
- package/src/layout-system.ts +218 -218
- package/src/middleware/discovery.ts +268 -268
- package/src/middleware/executor.ts +315 -315
- package/src/middleware/index.ts +76 -76
- package/src/middleware/types.ts +99 -99
- package/src/nitro/build-config.ts +575 -575
- package/src/nitro/config.ts +483 -483
- package/src/nitro/error-handler.ts +636 -636
- package/src/nitro/index.ts +173 -173
- package/src/nitro/island-manifest.ts +584 -584
- package/src/nitro/middleware-adapter.ts +260 -260
- package/src/nitro/renderer.ts +1471 -1471
- package/src/nitro/route-discovery.ts +439 -439
- package/src/nitro/types.ts +321 -321
- package/src/render/collect-css.ts +198 -198
- package/src/render/error-pages.ts +79 -79
- package/src/render/isolated-ssr-renderer.ts +654 -654
- package/src/render/ssr.ts +1030 -1030
- package/src/schemas/api.ts +30 -30
- package/src/schemas/core.ts +64 -64
- package/src/schemas/index.ts +212 -212
- package/src/schemas/layout.ts +279 -279
- package/src/schemas/routing/index.ts +38 -38
- package/src/schemas/routing.ts +376 -376
- package/src/types/as-island.ts +20 -20
- package/src/types/image.d.ts +106 -106
- package/src/types/index.d.ts +22 -22
- package/src/types/island-jsx.d.ts +33 -33
- package/src/types/island-prop.d.ts +20 -20
- package/src/types/layout.ts +285 -285
- package/src/types/mdx.d.ts +6 -6
- package/src/types/routing.ts +555 -555
- package/src/types/types.ts +5 -5
- package/src/types/urlpattern.d.ts +49 -49
- package/src/types/vite-env.d.ts +11 -11
- package/src/utils/dev-logger.ts +299 -299
- package/src/utils/fs.ts +151 -151
- package/src/vite-plugin/auto-discover.ts +551 -551
- package/src/vite-plugin/config.ts +266 -266
- package/src/vite-plugin/errors.ts +127 -127
- package/src/vite-plugin/image-optimization.ts +156 -156
- package/src/vite-plugin/integration-activator.ts +126 -126
- package/src/vite-plugin/island-sidecar-plugin.ts +176 -176
- package/src/vite-plugin/module-discovery.ts +189 -189
- package/src/vite-plugin/nitro-integration.ts +1354 -1354
- package/src/vite-plugin/plugin.ts +403 -409
- package/src/vite-plugin/types.ts +327 -327
- package/src/vite-plugin/validation.ts +228 -228
- package/src/client/adapters/index.js +0 -12
- package/src/client/adapters/lit-adapter.js +0 -467
- package/src/client/adapters/lit-adapter.ts +0 -654
- package/src/client/adapters/preact-adapter.js +0 -223
- package/src/client/adapters/preact-adapter.ts +0 -331
- package/src/client/adapters/qwik-adapter.js +0 -259
- package/src/client/adapters/qwik-adapter.ts +0 -345
- package/src/client/adapters/react-adapter.js +0 -220
- package/src/client/adapters/react-adapter.ts +0 -353
- package/src/client/adapters/solid-adapter.js +0 -295
- package/src/client/adapters/solid-adapter.ts +0 -451
- package/src/client/adapters/svelte-adapter.js +0 -368
- package/src/client/adapters/svelte-adapter.ts +0 -524
- package/src/client/adapters/vue-adapter.js +0 -278
- package/src/client/adapters/vue-adapter.ts +0 -467
- package/src/client/components.js +0 -23
- package/src/client/css-hmr-handler.js +0 -263
- package/src/client/framework-adapter.js +0 -283
- package/src/client/hmr-coordinator.js +0 -274
package/src/types/as-island.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type { IslandDirective } from './island-prop.d.ts';
|
|
2
|
-
import type { ComponentType } from 'preact';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Cast a cross-framework component (Vue, Svelte, Lit, Solid) to be usable
|
|
6
|
-
* in Preact JSX with the `island` prop and correct prop types.
|
|
7
|
-
*
|
|
8
|
-
* The Vite transform handles these components at build time — this cast is
|
|
9
|
-
* purely for TypeScript's benefit.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* import _VueCounter from '../islands/VueCounter.vue';
|
|
13
|
-
* const VueCounter = asIsland<{ initialCount?: number }>(_VueCounter);
|
|
14
|
-
* // Now usable as: <VueCounter island={{ condition: 'on:visible' }} initialCount={0} />
|
|
15
|
-
*/
|
|
16
|
-
export function asIsland<P extends Record<string, unknown> = Record<string, unknown>>(
|
|
17
|
-
_component: unknown,
|
|
18
|
-
): ComponentType<P & { island?: IslandDirective }> {
|
|
19
|
-
return _component as ComponentType<P & { island?: IslandDirective }>;
|
|
20
|
-
}
|
|
1
|
+
import type { IslandDirective } from './island-prop.d.ts';
|
|
2
|
+
import type { ComponentType } from 'preact';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Cast a cross-framework component (Vue, Svelte, Lit, Solid) to be usable
|
|
6
|
+
* in Preact JSX with the `island` prop and correct prop types.
|
|
7
|
+
*
|
|
8
|
+
* The Vite transform handles these components at build time — this cast is
|
|
9
|
+
* purely for TypeScript's benefit.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import _VueCounter from '../islands/VueCounter.vue';
|
|
13
|
+
* const VueCounter = asIsland<{ initialCount?: number }>(_VueCounter);
|
|
14
|
+
* // Now usable as: <VueCounter island={{ condition: 'on:visible' }} initialCount={0} />
|
|
15
|
+
*/
|
|
16
|
+
export function asIsland<P extends Record<string, unknown> = Record<string, unknown>>(
|
|
17
|
+
_component: unknown,
|
|
18
|
+
): ComponentType<P & { island?: IslandDirective }> {
|
|
19
|
+
return _component as ComponentType<P & { island?: IslandDirective }>;
|
|
20
|
+
}
|
package/src/types/image.d.ts
CHANGED
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type declarations for image imports with vite-imagetools
|
|
3
|
-
*
|
|
4
|
-
* These types enable TypeScript support for optimized image imports.
|
|
5
|
-
* Include this in your tsconfig.json `types` array:
|
|
6
|
-
*
|
|
7
|
-
* ```json
|
|
8
|
-
* {
|
|
9
|
-
* "compilerOptions": {
|
|
10
|
-
* "types": ["@useavalon/avalon/types"]
|
|
11
|
-
* }
|
|
12
|
-
* }
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
declare module "*.jpg" {
|
|
17
|
-
const src: string;
|
|
18
|
-
export default src;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
declare module "*.jpeg" {
|
|
22
|
-
const src: string;
|
|
23
|
-
export default src;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
declare module "*.png" {
|
|
27
|
-
const src: string;
|
|
28
|
-
export default src;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
declare module "*.webp" {
|
|
32
|
-
const src: string;
|
|
33
|
-
export default src;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
declare module "*.avif" {
|
|
37
|
-
const src: string;
|
|
38
|
-
export default src;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
declare module "*.gif" {
|
|
42
|
-
const src: string;
|
|
43
|
-
export default src;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
declare module "*.tiff" {
|
|
47
|
-
const src: string;
|
|
48
|
-
export default src;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
declare module "*.svg" {
|
|
52
|
-
const src: string;
|
|
53
|
-
export default src;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// vite-imagetools srcset output
|
|
57
|
-
interface ImageToolsSrcset {
|
|
58
|
-
src: string;
|
|
59
|
-
srcset: string;
|
|
60
|
-
width: number;
|
|
61
|
-
height: number;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
declare module "*&as=srcset" {
|
|
65
|
-
const srcset: ImageToolsSrcset;
|
|
66
|
-
export default srcset;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
declare module "*?as=srcset" {
|
|
70
|
-
const srcset: ImageToolsSrcset;
|
|
71
|
-
export default srcset;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// vite-imagetools picture output (multiple formats)
|
|
75
|
-
interface ImageToolsPicture {
|
|
76
|
-
sources: Record<string, ImageToolsSrcset>;
|
|
77
|
-
img: ImageToolsSrcset;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
declare module "*&as=picture" {
|
|
81
|
-
const picture: ImageToolsPicture;
|
|
82
|
-
export default picture;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
declare module "*?as=picture" {
|
|
86
|
-
const picture: ImageToolsPicture;
|
|
87
|
-
export default picture;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// vite-imagetools metadata output
|
|
91
|
-
interface ImageToolsMetadata {
|
|
92
|
-
src: string;
|
|
93
|
-
width: number;
|
|
94
|
-
height: number;
|
|
95
|
-
format: string;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
declare module "*&as=metadata" {
|
|
99
|
-
const metadata: ImageToolsMetadata;
|
|
100
|
-
export default metadata;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
declare module "*?as=metadata" {
|
|
104
|
-
const metadata: ImageToolsMetadata;
|
|
105
|
-
export default metadata;
|
|
106
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Type declarations for image imports with vite-imagetools
|
|
3
|
+
*
|
|
4
|
+
* These types enable TypeScript support for optimized image imports.
|
|
5
|
+
* Include this in your tsconfig.json `types` array:
|
|
6
|
+
*
|
|
7
|
+
* ```json
|
|
8
|
+
* {
|
|
9
|
+
* "compilerOptions": {
|
|
10
|
+
* "types": ["@useavalon/avalon/types"]
|
|
11
|
+
* }
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
declare module "*.jpg" {
|
|
17
|
+
const src: string;
|
|
18
|
+
export default src;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare module "*.jpeg" {
|
|
22
|
+
const src: string;
|
|
23
|
+
export default src;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare module "*.png" {
|
|
27
|
+
const src: string;
|
|
28
|
+
export default src;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
declare module "*.webp" {
|
|
32
|
+
const src: string;
|
|
33
|
+
export default src;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare module "*.avif" {
|
|
37
|
+
const src: string;
|
|
38
|
+
export default src;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare module "*.gif" {
|
|
42
|
+
const src: string;
|
|
43
|
+
export default src;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
declare module "*.tiff" {
|
|
47
|
+
const src: string;
|
|
48
|
+
export default src;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
declare module "*.svg" {
|
|
52
|
+
const src: string;
|
|
53
|
+
export default src;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// vite-imagetools srcset output
|
|
57
|
+
interface ImageToolsSrcset {
|
|
58
|
+
src: string;
|
|
59
|
+
srcset: string;
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare module "*&as=srcset" {
|
|
65
|
+
const srcset: ImageToolsSrcset;
|
|
66
|
+
export default srcset;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
declare module "*?as=srcset" {
|
|
70
|
+
const srcset: ImageToolsSrcset;
|
|
71
|
+
export default srcset;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// vite-imagetools picture output (multiple formats)
|
|
75
|
+
interface ImageToolsPicture {
|
|
76
|
+
sources: Record<string, ImageToolsSrcset>;
|
|
77
|
+
img: ImageToolsSrcset;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declare module "*&as=picture" {
|
|
81
|
+
const picture: ImageToolsPicture;
|
|
82
|
+
export default picture;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
declare module "*?as=picture" {
|
|
86
|
+
const picture: ImageToolsPicture;
|
|
87
|
+
export default picture;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// vite-imagetools metadata output
|
|
91
|
+
interface ImageToolsMetadata {
|
|
92
|
+
src: string;
|
|
93
|
+
width: number;
|
|
94
|
+
height: number;
|
|
95
|
+
format: string;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
declare module "*&as=metadata" {
|
|
99
|
+
const metadata: ImageToolsMetadata;
|
|
100
|
+
export default metadata;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
declare module "*?as=metadata" {
|
|
104
|
+
const metadata: ImageToolsMetadata;
|
|
105
|
+
export default metadata;
|
|
106
|
+
}
|
package/src/types/index.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Avalon type definitions.
|
|
3
|
-
*
|
|
4
|
-
* Include this in your tsconfig.json `types` array to get island prop support:
|
|
5
|
-
*
|
|
6
|
-
* ```json
|
|
7
|
-
* {
|
|
8
|
-
* "compilerOptions": {
|
|
9
|
-
* "types": ["@useavalon/avalon/types"]
|
|
10
|
-
* }
|
|
11
|
-
* }
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
// Re-export island prop types
|
|
16
|
-
export * from './island-prop.d.ts';
|
|
17
|
-
|
|
18
|
-
// Import JSX augmentations (side-effect import for type augmentation)
|
|
19
|
-
import './island-jsx.d.ts';
|
|
20
|
-
|
|
21
|
-
// Import image type declarations
|
|
22
|
-
import './image.d.ts';
|
|
1
|
+
/**
|
|
2
|
+
* Avalon type definitions.
|
|
3
|
+
*
|
|
4
|
+
* Include this in your tsconfig.json `types` array to get island prop support:
|
|
5
|
+
*
|
|
6
|
+
* ```json
|
|
7
|
+
* {
|
|
8
|
+
* "compilerOptions": {
|
|
9
|
+
* "types": ["@useavalon/avalon/types"]
|
|
10
|
+
* }
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// Re-export island prop types
|
|
16
|
+
export * from './island-prop.d.ts';
|
|
17
|
+
|
|
18
|
+
// Import JSX augmentations (side-effect import for type augmentation)
|
|
19
|
+
import './island-jsx.d.ts';
|
|
20
|
+
|
|
21
|
+
// Import image type declarations
|
|
22
|
+
import './image.d.ts';
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSX augmentation for the `island` prop.
|
|
3
|
-
*
|
|
4
|
-
* Automatically included via tsconfig.json `compilerOptions.types`.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { IslandDirective } from './island-prop.d.ts';
|
|
8
|
-
|
|
9
|
-
declare module 'preact' {
|
|
10
|
-
namespace JSX {
|
|
11
|
-
interface IntrinsicAttributes {
|
|
12
|
-
island?: IslandDirective;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Augment the global JSX namespace so the `island` prop is accepted on
|
|
18
|
-
// non-Preact components (Svelte, Solid) when used in a Preact JSX context.
|
|
19
|
-
declare global {
|
|
20
|
-
namespace JSX {
|
|
21
|
-
interface IntrinsicAttributes {
|
|
22
|
-
island?: IslandDirective;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Augment Vue's ComponentCustomProps so Volar accepts `island` on all Vue SFCs.
|
|
28
|
-
declare module '@vue/runtime-core' {
|
|
29
|
-
interface ComponentCustomProps {
|
|
30
|
-
island?: IslandDirective;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
1
|
+
/**
|
|
2
|
+
* JSX augmentation for the `island` prop.
|
|
3
|
+
*
|
|
4
|
+
* Automatically included via tsconfig.json `compilerOptions.types`.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { IslandDirective } from './island-prop.d.ts';
|
|
8
|
+
|
|
9
|
+
declare module 'preact' {
|
|
10
|
+
namespace JSX {
|
|
11
|
+
interface IntrinsicAttributes {
|
|
12
|
+
island?: IslandDirective;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Augment the global JSX namespace so the `island` prop is accepted on
|
|
18
|
+
// non-Preact components (Svelte, Solid) when used in a Preact JSX context.
|
|
19
|
+
declare global {
|
|
20
|
+
namespace JSX {
|
|
21
|
+
interface IntrinsicAttributes {
|
|
22
|
+
island?: IslandDirective;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Augment Vue's ComponentCustomProps so Volar accepts `island` on all Vue SFCs.
|
|
28
|
+
declare module '@vue/runtime-core' {
|
|
29
|
+
interface ComponentCustomProps {
|
|
30
|
+
island?: IslandDirective;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type augmentation for the `island` prop on island components.
|
|
3
|
-
*
|
|
4
|
-
* When importing a component from the islands directory and using it in a page,
|
|
5
|
-
* you can pass an `island` prop to control hydration behavior. The Vite transform
|
|
6
|
-
* plugin intercepts this at build time and converts it to a renderIsland() call.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* import Counter from '../islands/Counter.tsx';
|
|
10
|
-
* <Counter island={{ condition: 'on:interaction' }} someProp={42} />
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export interface IslandDirective {
|
|
14
|
-
/** Hydration condition */
|
|
15
|
-
condition?: 'on:visible' | 'on:interaction' | 'on:idle' | 'on:client' | `media:${string}`;
|
|
16
|
-
/** Force SSR-only rendering without client hydration */
|
|
17
|
-
ssrOnly?: boolean;
|
|
18
|
-
/** Whether to render server-side (default: true) */
|
|
19
|
-
ssr?: boolean;
|
|
20
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Type augmentation for the `island` prop on island components.
|
|
3
|
+
*
|
|
4
|
+
* When importing a component from the islands directory and using it in a page,
|
|
5
|
+
* you can pass an `island` prop to control hydration behavior. The Vite transform
|
|
6
|
+
* plugin intercepts this at build time and converts it to a renderIsland() call.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import Counter from '../islands/Counter.tsx';
|
|
10
|
+
* <Counter island={{ condition: 'on:interaction' }} someProp={42} />
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export interface IslandDirective {
|
|
14
|
+
/** Hydration condition */
|
|
15
|
+
condition?: 'on:visible' | 'on:interaction' | 'on:idle' | 'on:client' | `media:${string}`;
|
|
16
|
+
/** Force SSR-only rendering without client hydration */
|
|
17
|
+
ssrOnly?: boolean;
|
|
18
|
+
/** Whether to render server-side (default: true) */
|
|
19
|
+
ssr?: boolean;
|
|
20
|
+
}
|