storyloco 1.15.2 → 1.16.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/package.json +4 -3
- package/packages/asset/r2.ts +217 -0
- package/packages/asset/types.ts +1 -1
- package/packages/mux/types.ts +65 -2
- package/packages/shared/dist/global.css +1 -1
- package/packages/vite/dist/schema/plugin.js +26 -2
- package/packages/vite/dist/components.schema.d.ts +0 -475
- package/packages/vite/dist/components.schema.js +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "storyloco",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "A collection of slick Storyblok field plugins built with Svelte 5, TypeScript, and Tailwind CSS",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"storyblok",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"packages/plans/types.ts",
|
|
26
26
|
"packages/link/types.ts",
|
|
27
27
|
"packages/asset/types.ts",
|
|
28
|
+
"packages/asset/r2.ts",
|
|
28
29
|
"packages/theme/types.ts",
|
|
29
30
|
"packages/shared/dist",
|
|
30
31
|
"packages/vite/dist",
|
|
@@ -91,8 +92,9 @@
|
|
|
91
92
|
"@typescript-eslint/parser": "8.46.3",
|
|
92
93
|
"eslint": "9.39.1",
|
|
93
94
|
"kitto": "1.0.0-rc.17",
|
|
95
|
+
"oxfmt": "0.55.0",
|
|
94
96
|
"typescript": "5.9.3",
|
|
95
|
-
"vite": "7.2.
|
|
97
|
+
"vite": "7.2.2"
|
|
96
98
|
},
|
|
97
99
|
"peerDependencies": {
|
|
98
100
|
"@storyblok/svelte": "5.2.14",
|
|
@@ -111,7 +113,6 @@
|
|
|
111
113
|
],
|
|
112
114
|
"dependencies": {
|
|
113
115
|
"ora": "9.0.0",
|
|
114
|
-
"oxfmt": "0.55.0",
|
|
115
116
|
"path-to-regexp": "8.3.0"
|
|
116
117
|
}
|
|
117
118
|
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendored subset of the `moxyloco/r2` types.
|
|
3
|
+
*
|
|
4
|
+
* These are hand-copied from the moxy R2 OpenAPI client so storyloco consumers
|
|
5
|
+
* don't need `moxyloco` (and its `openapi-client-axios` dependency) installed
|
|
6
|
+
* just to read the asset field-plugin types. Only the schemas and operations the
|
|
7
|
+
* plugin actually uses are modelled here.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* Asset resource in JSON:API format */
|
|
11
|
+
export interface R2Asset {
|
|
12
|
+
/* Resource type */
|
|
13
|
+
type: 'asset'
|
|
14
|
+
|
|
15
|
+
/* Unique asset identifier (uuid) */
|
|
16
|
+
id: string
|
|
17
|
+
|
|
18
|
+
attributes: R2AssetAttributes
|
|
19
|
+
|
|
20
|
+
links?: {
|
|
21
|
+
/* URL to this asset */
|
|
22
|
+
self?: string
|
|
23
|
+
|
|
24
|
+
/* Public URL for accessing the asset */
|
|
25
|
+
public?: string
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Asset attributes */
|
|
30
|
+
export interface R2AssetAttributes {
|
|
31
|
+
/* Original filename */
|
|
32
|
+
filename: string
|
|
33
|
+
|
|
34
|
+
/* Display name for the asset (can be different from filename) */
|
|
35
|
+
name?: string
|
|
36
|
+
|
|
37
|
+
/* File size in bytes */
|
|
38
|
+
size_bytes: number
|
|
39
|
+
|
|
40
|
+
/* MIME type of the file */
|
|
41
|
+
content_type?: string
|
|
42
|
+
|
|
43
|
+
/* Detected file format (e.g. "jpeg", "png") */
|
|
44
|
+
format?: string
|
|
45
|
+
|
|
46
|
+
/* Image width in pixels (for images) */
|
|
47
|
+
width?: number
|
|
48
|
+
|
|
49
|
+
/* Image height in pixels (for images) */
|
|
50
|
+
height?: number
|
|
51
|
+
|
|
52
|
+
/* When the asset was uploaded (date-time) */
|
|
53
|
+
created_at: string
|
|
54
|
+
|
|
55
|
+
/* Title for the asset */
|
|
56
|
+
title?: string
|
|
57
|
+
|
|
58
|
+
/* Alt text for accessibility */
|
|
59
|
+
alt?: string
|
|
60
|
+
|
|
61
|
+
/* Source attribution */
|
|
62
|
+
source?: string
|
|
63
|
+
|
|
64
|
+
/* Copyright information */
|
|
65
|
+
copyright?: string
|
|
66
|
+
|
|
67
|
+
/* Focus point for image cropping */
|
|
68
|
+
focus?: string
|
|
69
|
+
|
|
70
|
+
/* Whether the asset is soft-deleted */
|
|
71
|
+
deleted?: boolean
|
|
72
|
+
|
|
73
|
+
/* When the asset was deleted, if applicable (date-time) */
|
|
74
|
+
deleted_at?: string | null
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Folder resource in JSON:API format */
|
|
78
|
+
export interface R2Folder {
|
|
79
|
+
/* Resource type */
|
|
80
|
+
type: 'folder'
|
|
81
|
+
|
|
82
|
+
/* Unique folder identifier (uuid) */
|
|
83
|
+
id: string
|
|
84
|
+
|
|
85
|
+
attributes: R2FolderAttributes
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Folder attributes */
|
|
89
|
+
export interface R2FolderAttributes {
|
|
90
|
+
/* Folder name */
|
|
91
|
+
name: string
|
|
92
|
+
|
|
93
|
+
/* UUID of parent folder (null for root folders) */
|
|
94
|
+
parent_id?: string | null
|
|
95
|
+
|
|
96
|
+
/* Number of assets in this folder */
|
|
97
|
+
asset_count: number
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Structured folder tree format with unlimited nesting */
|
|
101
|
+
export interface R2FolderTree {
|
|
102
|
+
/* Folder name */
|
|
103
|
+
name: string
|
|
104
|
+
|
|
105
|
+
/* Folder UUID */
|
|
106
|
+
id: string
|
|
107
|
+
|
|
108
|
+
/* UUID of parent folder (null for root folders) */
|
|
109
|
+
parent_id?: string | null
|
|
110
|
+
|
|
111
|
+
/* Number of assets in this folder */
|
|
112
|
+
asset_count: number
|
|
113
|
+
|
|
114
|
+
/* Child folders (recursive) */
|
|
115
|
+
children: Array<R2FolderTree>
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Request/response shapes for the R2 operations the plugin calls */
|
|
119
|
+
export namespace Paths {
|
|
120
|
+
export namespace ListAssets {
|
|
121
|
+
export namespace Responses {
|
|
122
|
+
export interface $200 {
|
|
123
|
+
data?: Array<R2Asset>
|
|
124
|
+
included?: Array<R2Folder>
|
|
125
|
+
meta?: {
|
|
126
|
+
page?: number
|
|
127
|
+
limit?: number
|
|
128
|
+
total?: number
|
|
129
|
+
total_pages?: number
|
|
130
|
+
}
|
|
131
|
+
links?: {
|
|
132
|
+
self?: string
|
|
133
|
+
next?: string
|
|
134
|
+
prev?: string
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export namespace UpdateAssetsBulk {
|
|
141
|
+
export interface RequestBody {
|
|
142
|
+
/* Array of asset UUIDs to update */
|
|
143
|
+
assets: Array<string>
|
|
144
|
+
metadata: {
|
|
145
|
+
name?: string
|
|
146
|
+
alt?: string
|
|
147
|
+
title?: string
|
|
148
|
+
source?: string
|
|
149
|
+
copyright?: string
|
|
150
|
+
focus?: string
|
|
151
|
+
/* UUID of the folder to move the assets to (null for no folder) */
|
|
152
|
+
folder_id?: string | null
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export namespace Responses {
|
|
157
|
+
export type $204 = Record<string, never>
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export namespace UpdateAssetMetadata {
|
|
162
|
+
export interface RequestBody {
|
|
163
|
+
name?: string
|
|
164
|
+
alt?: string
|
|
165
|
+
title?: string
|
|
166
|
+
source?: string
|
|
167
|
+
copyright?: string
|
|
168
|
+
focus?: string
|
|
169
|
+
/* UUID of the folder to move the asset to (null for no folder) */
|
|
170
|
+
folder_id?: string | null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export namespace Responses {
|
|
174
|
+
export interface $200 {
|
|
175
|
+
data?: R2Asset
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export namespace CreateFolder {
|
|
181
|
+
export interface RequestBody {
|
|
182
|
+
/* Folder name */
|
|
183
|
+
name: string
|
|
184
|
+
|
|
185
|
+
/* UUID of parent folder (null for root folders) */
|
|
186
|
+
parent_id?: string | null
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export namespace Responses {
|
|
190
|
+
export interface $201 {
|
|
191
|
+
data?: R2Folder
|
|
192
|
+
meta?: {
|
|
193
|
+
/* Indicates the folder was created */
|
|
194
|
+
created?: boolean
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export namespace ListFolders {
|
|
201
|
+
export namespace Responses {
|
|
202
|
+
export interface $200 {
|
|
203
|
+
data?: {
|
|
204
|
+
/* JSON:API format folder list */
|
|
205
|
+
list?: Array<R2Folder>
|
|
206
|
+
|
|
207
|
+
/* Structured tree format for easier frontend consumption */
|
|
208
|
+
structured?: Array<R2FolderTree>
|
|
209
|
+
}
|
|
210
|
+
meta?: {
|
|
211
|
+
/* Total number of folders */
|
|
212
|
+
total?: number
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
package/packages/asset/types.ts
CHANGED
package/packages/mux/types.ts
CHANGED
|
@@ -1,7 +1,70 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Vendored subset of the Mux `Asset` type (previously from `@mux/mux-node`).
|
|
3
|
+
* Kept self-contained so consumers don't need the Mux SDK installed just to read
|
|
4
|
+
* these types. Only the fields the plugin actually touches are modelled — the real
|
|
5
|
+
* SDK `Asset` remains structurally assignable to this.
|
|
6
|
+
*/
|
|
7
|
+
export interface MuxPlaybackID {
|
|
8
|
+
/* Unique identifier for the PlaybackID */
|
|
9
|
+
id: string
|
|
10
|
+
|
|
11
|
+
/* How the playback ID is secured */
|
|
12
|
+
policy: 'public' | 'signed' | 'drm'
|
|
13
|
+
|
|
14
|
+
/* DRM configuration used by this playback ID (only when `policy` is `drm`) */
|
|
15
|
+
drm_configuration_id?: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface MuxAssetErrors {
|
|
19
|
+
/* Error messages with more details */
|
|
20
|
+
messages?: Array<string>
|
|
21
|
+
|
|
22
|
+
/* The type of error that occurred for this asset */
|
|
23
|
+
type?: string
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface MuxAssetMeta {
|
|
27
|
+
/* Identifier for the creator of the asset */
|
|
28
|
+
creator_id?: string
|
|
29
|
+
|
|
30
|
+
/* Identifier linking the asset to your own data */
|
|
31
|
+
external_id?: string
|
|
32
|
+
|
|
33
|
+
/* The asset title */
|
|
34
|
+
title?: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface MuxAsset {
|
|
38
|
+
/* Unique identifier for the Asset */
|
|
39
|
+
id: string
|
|
40
|
+
|
|
41
|
+
/* Time the Asset was created (Unix timestamp, seconds since epoch) */
|
|
42
|
+
created_at: string
|
|
43
|
+
|
|
44
|
+
/* The status of the asset */
|
|
45
|
+
status: 'preparing' | 'ready' | 'errored'
|
|
46
|
+
|
|
47
|
+
/* Object describing any errors that happened when processing this asset */
|
|
48
|
+
errors?: MuxAssetErrors
|
|
49
|
+
|
|
50
|
+
/* The aspect ratio of the asset in the form `width:height` (e.g. `16:9`) */
|
|
51
|
+
aspect_ratio?: string
|
|
52
|
+
|
|
53
|
+
/* The duration of the asset in seconds */
|
|
54
|
+
duration?: number
|
|
55
|
+
|
|
56
|
+
/* Playback ID objects used to build HLS playback URLs */
|
|
57
|
+
playback_ids?: Array<MuxPlaybackID>
|
|
58
|
+
|
|
59
|
+
/* Customer provided metadata about this asset */
|
|
60
|
+
meta?: MuxAssetMeta
|
|
61
|
+
|
|
62
|
+
/* Arbitrary passthrough value included in the asset details and webhooks */
|
|
63
|
+
passthrough?: string
|
|
64
|
+
}
|
|
2
65
|
|
|
3
66
|
export interface Video {
|
|
4
|
-
mux_video?:
|
|
67
|
+
mux_video?: MuxAsset
|
|
5
68
|
playback_id?: string
|
|
6
69
|
m3u8_url?: string
|
|
7
70
|
title?: string
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
[data-theme='dark'] {
|
|
56
56
|
--teal-muted: oklch(74.591% 0.11569 187.182);
|
|
57
|
-
--background:
|
|
57
|
+
--background: #333338;
|
|
58
58
|
--foreground: oklch(0.984 0.003 247.858);
|
|
59
59
|
--card: oklch(26.239% 0.00928 285.704);
|
|
60
60
|
--card-foreground: oklch(0.984 0.003 247.858);
|
|
@@ -4,9 +4,33 @@ import path from "node:path";
|
|
|
4
4
|
import { $ } from "../shared/shell.js";
|
|
5
5
|
import exec from "../shared/x.js";
|
|
6
6
|
import { Logger } from "../shared/logger.js";
|
|
7
|
-
import { format } from "oxfmt";
|
|
8
7
|
const name = "vite-storyblok-schema";
|
|
9
8
|
const logger = new Logger(name);
|
|
9
|
+
/**
|
|
10
|
+
* Formats generated code as a nicety, not a necessity. Prefers oxfmt if it's
|
|
11
|
+
* installed, falls back to prettier if that happens to be around, and otherwise
|
|
12
|
+
* leaves the code untouched. Never throws — formatting is entirely optional and
|
|
13
|
+
* these tools are intentionally not hard dependencies.
|
|
14
|
+
*/
|
|
15
|
+
async function format_code(filename, content) {
|
|
16
|
+
try {
|
|
17
|
+
const oxfmt = await import("oxfmt");
|
|
18
|
+
const { code } = await oxfmt.format(filename, content);
|
|
19
|
+
return code;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
/* oxfmt not available — try the next option */
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const specifier = "prettier";
|
|
26
|
+
const prettier = await import(specifier);
|
|
27
|
+
return await prettier.format(content, { filepath: filename });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
/* prettier not available either — leave the code as-is */
|
|
31
|
+
}
|
|
32
|
+
return content;
|
|
33
|
+
}
|
|
10
34
|
/**
|
|
11
35
|
* @remarks
|
|
12
36
|
* Vite plugin that automatically regenerates Storyblok component types at regular intervals
|
|
@@ -176,7 +200,7 @@ import type { ISbStoryData } from '@storyblok/js';`, "");
|
|
|
176
200
|
content = content.replace(/any\[]/g, "unknown[]");
|
|
177
201
|
// Make _uid and component optional (helps us reuse Storyblok types for non-storyblok components)
|
|
178
202
|
content = content.replace(/^([a-zA-Z0-9_]+):/gm, "$1?:");
|
|
179
|
-
const
|
|
203
|
+
const formatted = await format_code(path.basename(schema_ts_file), content);
|
|
180
204
|
// Write the final file
|
|
181
205
|
logger.start("Finalising schema file...");
|
|
182
206
|
await writeFile(schema_ts_file, formatted);
|
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AUTO-GENERATED FILE. DO NOT EDIT.
|
|
3
|
-
* Generated by vite-storyblok-schema plugin on 2025-10-01T12:20:26.416Z.
|
|
4
|
-
* Any changes will be overwritten.
|
|
5
|
-
*/
|
|
6
|
-
import type { StoryblokCustomPlugins } from "../../vite.config.js";
|
|
7
|
-
import type { SbBlokData } from "@storyblok/svelte";
|
|
8
|
-
export type Blok<T> = SbBlokData & T;
|
|
9
|
-
import type { ISbStoryData } from "@storyblok/js";
|
|
10
|
-
export interface Action {
|
|
11
|
-
appearance?: "default" | "alternate";
|
|
12
|
-
header_size?: number | string;
|
|
13
|
-
space_above?: "" | "0" | "2" | "4" | "6" | "8" | "10";
|
|
14
|
-
space_below?: number | string;
|
|
15
|
-
header?: string;
|
|
16
|
-
body?: StoryblokRichtext;
|
|
17
|
-
image?: StoryblokAsset;
|
|
18
|
-
link?: Exclude<StoryblokMultilink, {
|
|
19
|
-
linktype?: "asset";
|
|
20
|
-
}>;
|
|
21
|
-
button?: string;
|
|
22
|
-
component?: "Action";
|
|
23
|
-
_uid?: string;
|
|
24
|
-
}
|
|
25
|
-
export interface Author {
|
|
26
|
-
photo?: StoryblokAsset;
|
|
27
|
-
component?: "Author";
|
|
28
|
-
_uid?: string;
|
|
29
|
-
}
|
|
30
|
-
export interface Button {
|
|
31
|
-
title?: string;
|
|
32
|
-
link?: StoryblokMultilink;
|
|
33
|
-
align?: "" | "left" | "center" | "right";
|
|
34
|
-
variant?: "" | "ghost" | "secondary" | "primary" | "light";
|
|
35
|
-
component?: "Button";
|
|
36
|
-
_uid?: string;
|
|
37
|
-
}
|
|
38
|
-
export interface Checkboxes {
|
|
39
|
-
label?: string;
|
|
40
|
-
options?: Option[];
|
|
41
|
-
required?: boolean;
|
|
42
|
-
component?: "Checkboxes";
|
|
43
|
-
_uid?: string;
|
|
44
|
-
}
|
|
45
|
-
export interface Connect {
|
|
46
|
-
subtitle_size?: number | string;
|
|
47
|
-
space_above?: number | string;
|
|
48
|
-
space_below?: number | string;
|
|
49
|
-
title?: string;
|
|
50
|
-
subtitle?: string;
|
|
51
|
-
title_size?: number | string;
|
|
52
|
-
component?: "Connect";
|
|
53
|
-
_uid?: string;
|
|
54
|
-
}
|
|
55
|
-
export interface Embed {
|
|
56
|
-
code?: string;
|
|
57
|
-
component?: "Embed";
|
|
58
|
-
_uid?: string;
|
|
59
|
-
}
|
|
60
|
-
export interface Entry {
|
|
61
|
-
location?: string;
|
|
62
|
-
title?: string;
|
|
63
|
-
start_time?: string;
|
|
64
|
-
end_time?: string;
|
|
65
|
-
component?: "Entry";
|
|
66
|
-
_uid?: string;
|
|
67
|
-
}
|
|
68
|
-
export interface FeaturePages {
|
|
69
|
-
appearance?: "compact" | "large";
|
|
70
|
-
space_above?: number | string;
|
|
71
|
-
space_below?: number | string;
|
|
72
|
-
title?: string;
|
|
73
|
-
links?: Link[];
|
|
74
|
-
component?: "FeaturePages";
|
|
75
|
-
_uid?: string;
|
|
76
|
-
}
|
|
77
|
-
export interface Form {
|
|
78
|
-
title?: string;
|
|
79
|
-
fields?: (Checkboxes | Input | Radios | Select | Textarea)[];
|
|
80
|
-
submit_label?: string;
|
|
81
|
-
confirmation_message?: string;
|
|
82
|
-
space_below?: number | string;
|
|
83
|
-
space_above?: number | string;
|
|
84
|
-
title_size?: number | string;
|
|
85
|
-
to?: string;
|
|
86
|
-
from?: string;
|
|
87
|
-
subject?: string;
|
|
88
|
-
component?: "Form";
|
|
89
|
-
_uid?: string;
|
|
90
|
-
}
|
|
91
|
-
export interface Hero {
|
|
92
|
-
squish?: boolean;
|
|
93
|
-
asset?: StoryblokAsset;
|
|
94
|
-
title?: StoryblokRichtext;
|
|
95
|
-
button?: string;
|
|
96
|
-
button_link?: Exclude<StoryblokMultilink, {
|
|
97
|
-
linktype?: "email";
|
|
98
|
-
} | {
|
|
99
|
-
linktype?: "asset";
|
|
100
|
-
}>;
|
|
101
|
-
button2?: string;
|
|
102
|
-
button2_link?: Exclude<StoryblokMultilink, {
|
|
103
|
-
linktype?: "email";
|
|
104
|
-
} | {
|
|
105
|
-
linktype?: "asset";
|
|
106
|
-
}>;
|
|
107
|
-
component?: "Hero";
|
|
108
|
-
_uid?: string;
|
|
109
|
-
}
|
|
110
|
-
export interface Ident {
|
|
111
|
-
component?: "Ident";
|
|
112
|
-
_uid?: string;
|
|
113
|
-
}
|
|
114
|
-
export interface Image {
|
|
115
|
-
aspect?: "" | "16/9" | "4/3" | "1/1" | "3/2";
|
|
116
|
-
space_above?: number | string;
|
|
117
|
-
space_below?: number | string;
|
|
118
|
-
asset?: StoryblokAsset;
|
|
119
|
-
component?: "Image";
|
|
120
|
-
_uid?: string;
|
|
121
|
-
}
|
|
122
|
-
export interface ImageCarousel {
|
|
123
|
-
images?: StoryblokMultiasset;
|
|
124
|
-
space_between?: number | string;
|
|
125
|
-
component?: "ImageCarousel";
|
|
126
|
-
_uid?: string;
|
|
127
|
-
}
|
|
128
|
-
export interface Input {
|
|
129
|
-
label?: string;
|
|
130
|
-
placeholder?: string;
|
|
131
|
-
type?: "" | "text" | "email";
|
|
132
|
-
required?: boolean;
|
|
133
|
-
component?: "Input";
|
|
134
|
-
_uid?: string;
|
|
135
|
-
}
|
|
136
|
-
export interface IWouldLikeToContactStyleStudio {
|
|
137
|
-
component?: "I would like to contact Style Studio";
|
|
138
|
-
_uid?: string;
|
|
139
|
-
}
|
|
140
|
-
export interface Latest {
|
|
141
|
-
title_size?: number | string;
|
|
142
|
-
space_above?: number | string;
|
|
143
|
-
space_below?: number | string;
|
|
144
|
-
title?: string;
|
|
145
|
-
link?: Exclude<StoryblokMultilink, {
|
|
146
|
-
linktype?: "email";
|
|
147
|
-
} | {
|
|
148
|
-
linktype?: "asset";
|
|
149
|
-
}>;
|
|
150
|
-
button?: string;
|
|
151
|
-
component?: "Latest";
|
|
152
|
-
_uid?: string;
|
|
153
|
-
}
|
|
154
|
-
export interface Layout {
|
|
155
|
-
nav?: Link[];
|
|
156
|
-
about_links?: Link[];
|
|
157
|
-
locations?: LocationItem[];
|
|
158
|
-
nav_image?: StoryblokAsset;
|
|
159
|
-
meta_title?: string;
|
|
160
|
-
meta_description?: string;
|
|
161
|
-
meta_tagline?: string;
|
|
162
|
-
meta_image?: StoryblokAsset;
|
|
163
|
-
social_x?: string;
|
|
164
|
-
social_facebook?: string;
|
|
165
|
-
social_instagram?: string;
|
|
166
|
-
social_youtube?: string;
|
|
167
|
-
component?: "Layout";
|
|
168
|
-
_uid?: string;
|
|
169
|
-
}
|
|
170
|
-
export interface Link {
|
|
171
|
-
img?: StoryblokAsset;
|
|
172
|
-
title?: string;
|
|
173
|
-
excerpt?: string;
|
|
174
|
-
component?: "Link";
|
|
175
|
-
_uid?: string;
|
|
176
|
-
}
|
|
177
|
-
export interface LocationItem {
|
|
178
|
-
title?: number | string;
|
|
179
|
-
image?: StoryblokAsset;
|
|
180
|
-
link?: Exclude<StoryblokMultilink, {
|
|
181
|
-
linktype?: "email";
|
|
182
|
-
} | {
|
|
183
|
-
linktype?: "asset";
|
|
184
|
-
}>;
|
|
185
|
-
component?: "LocationItem";
|
|
186
|
-
_uid?: string;
|
|
187
|
-
}
|
|
188
|
-
export interface Locations {
|
|
189
|
-
title_size?: number | string;
|
|
190
|
-
space_above?: number | string;
|
|
191
|
-
space_below?: number | string;
|
|
192
|
-
title?: string;
|
|
193
|
-
blocks?: LocationItem[];
|
|
194
|
-
component?: "Locations";
|
|
195
|
-
_uid?: string;
|
|
196
|
-
}
|
|
197
|
-
export interface Map {
|
|
198
|
-
zoom?: string;
|
|
199
|
-
space_below?: number | string;
|
|
200
|
-
markers?: Marker[];
|
|
201
|
-
space_above?: number | string;
|
|
202
|
-
component?: "Map";
|
|
203
|
-
_uid?: string;
|
|
204
|
-
}
|
|
205
|
-
export interface Marker {
|
|
206
|
-
name?: string;
|
|
207
|
-
latitude?: string;
|
|
208
|
-
longitude?: string;
|
|
209
|
-
component?: "Marker";
|
|
210
|
-
_uid?: string;
|
|
211
|
-
}
|
|
212
|
-
export interface Modal {
|
|
213
|
-
id?: string;
|
|
214
|
-
title?: string;
|
|
215
|
-
body?: StoryblokRichtext;
|
|
216
|
-
component?: "Modal";
|
|
217
|
-
_uid?: string;
|
|
218
|
-
}
|
|
219
|
-
export interface Option {
|
|
220
|
-
name?: string;
|
|
221
|
-
disabled?: boolean;
|
|
222
|
-
selected?: boolean;
|
|
223
|
-
component?: "Option";
|
|
224
|
-
_uid?: string;
|
|
225
|
-
}
|
|
226
|
-
export interface Page {
|
|
227
|
-
image?: StoryblokAsset;
|
|
228
|
-
subtitle?: string;
|
|
229
|
-
blocks?: (Action | Author | Button | Checkboxes | Connect | Embed | Entry | FeaturePages | Form | Hero | Ident | Image | ImageCarousel | Input | IWouldLikeToContactStyleStudio | Latest | Layout | Link | LocationItem | Locations | Map | Marker | Modal | Option | Page | Post | Project | Projects | Quote | Radios | RichText | Select | Sidekick | Spacer | Sublink | Textarea | Vacancy | VacancyList | Video | Whatson)[];
|
|
230
|
-
meta_title?: string;
|
|
231
|
-
meta_description?: string;
|
|
232
|
-
meta_tagline?: string;
|
|
233
|
-
meta_image?: StoryblokAsset;
|
|
234
|
-
modals?: Modal[];
|
|
235
|
-
location?: {
|
|
236
|
-
[k: string]: unknown;
|
|
237
|
-
}[];
|
|
238
|
-
category?: {
|
|
239
|
-
[k: string]: unknown;
|
|
240
|
-
}[];
|
|
241
|
-
component?: "Page";
|
|
242
|
-
_uid?: string;
|
|
243
|
-
}
|
|
244
|
-
export interface Post {
|
|
245
|
-
author?: ISbStoryData<Author> | string;
|
|
246
|
-
meta_title?: string;
|
|
247
|
-
meta_description?: string;
|
|
248
|
-
meta_tagline?: string;
|
|
249
|
-
meta_image?: StoryblokAsset;
|
|
250
|
-
blocks?: (Action | Author | Button | Checkboxes | Connect | Embed | Entry | FeaturePages | Form | Hero | Ident | Image | ImageCarousel | Input | IWouldLikeToContactStyleStudio | Latest | Layout | Link | LocationItem | Locations | Map | Marker | Modal | Option | Page | Post | Project | Projects | Quote | Radios | RichText | Select | Sidekick | Spacer | Sublink | Textarea | Vacancy | VacancyList | Video | Whatson)[];
|
|
251
|
-
location?: (number | string)[];
|
|
252
|
-
image?: StoryblokAsset;
|
|
253
|
-
body?: StoryblokRichtext;
|
|
254
|
-
component?: "Post";
|
|
255
|
-
_uid?: string;
|
|
256
|
-
}
|
|
257
|
-
export interface Project {
|
|
258
|
-
location?: (number | string)[];
|
|
259
|
-
category?: (number | string)[];
|
|
260
|
-
blocks?: (Action | Author | Button | Checkboxes | Connect | Embed | Entry | FeaturePages | Form | Hero | Ident | Image | ImageCarousel | Input | IWouldLikeToContactStyleStudio | Latest | Layout | Link | LocationItem | Locations | Map | Marker | Modal | Option | Page | Post | Project | Projects | Quote | Radios | RichText | Select | Sidekick | Spacer | Sublink | Textarea | Vacancy | VacancyList | Video | Whatson)[];
|
|
261
|
-
image?: StoryblokAsset;
|
|
262
|
-
subtitle?: string;
|
|
263
|
-
meta_title?: string;
|
|
264
|
-
meta_tagline?: string;
|
|
265
|
-
meta_description?: string;
|
|
266
|
-
meta_image?: StoryblokAsset;
|
|
267
|
-
component?: "Project";
|
|
268
|
-
_uid?: string;
|
|
269
|
-
}
|
|
270
|
-
export interface Projects {
|
|
271
|
-
title?: string;
|
|
272
|
-
limit?: string;
|
|
273
|
-
categories?: (number | string)[];
|
|
274
|
-
more?: boolean;
|
|
275
|
-
component?: "Projects";
|
|
276
|
-
_uid?: string;
|
|
277
|
-
}
|
|
278
|
-
export interface Quote {
|
|
279
|
-
space_above?: number | string;
|
|
280
|
-
space_below?: number | string;
|
|
281
|
-
component?: "Quote";
|
|
282
|
-
_uid?: string;
|
|
283
|
-
}
|
|
284
|
-
export interface Radios {
|
|
285
|
-
label?: string;
|
|
286
|
-
options?: Option[];
|
|
287
|
-
required?: boolean;
|
|
288
|
-
component?: "Radios";
|
|
289
|
-
_uid?: string;
|
|
290
|
-
}
|
|
291
|
-
export interface RichText {
|
|
292
|
-
alignment?: "" | "left" | "center" | "right";
|
|
293
|
-
space_above?: number | string;
|
|
294
|
-
space_below?: number | string;
|
|
295
|
-
body?: StoryblokRichtext;
|
|
296
|
-
component?: "RichText";
|
|
297
|
-
_uid?: string;
|
|
298
|
-
}
|
|
299
|
-
export interface Select {
|
|
300
|
-
label?: string;
|
|
301
|
-
placeholder?: string;
|
|
302
|
-
options?: Option[];
|
|
303
|
-
required?: boolean;
|
|
304
|
-
component?: "Select";
|
|
305
|
-
_uid?: string;
|
|
306
|
-
}
|
|
307
|
-
export interface Sidekick {
|
|
308
|
-
flip?: boolean;
|
|
309
|
-
space_above?: number | string;
|
|
310
|
-
space_below?: number | string;
|
|
311
|
-
title_size?: number | string;
|
|
312
|
-
subtitle_size?: number | string;
|
|
313
|
-
background?: number | string;
|
|
314
|
-
title?: string;
|
|
315
|
-
subtitle?: string;
|
|
316
|
-
body?: StoryblokRichtext;
|
|
317
|
-
button?: string;
|
|
318
|
-
button_link?: Exclude<StoryblokMultilink, {
|
|
319
|
-
linktype?: "email";
|
|
320
|
-
} | {
|
|
321
|
-
linktype?: "asset";
|
|
322
|
-
}>;
|
|
323
|
-
image?: StoryblokAsset;
|
|
324
|
-
stamp?: StoryblokAsset;
|
|
325
|
-
component?: "Sidekick";
|
|
326
|
-
_uid?: string;
|
|
327
|
-
}
|
|
328
|
-
export interface Spacer {
|
|
329
|
-
size?: StoryblokCustomPlugins["storyblok-slider"];
|
|
330
|
-
component?: "Spacer";
|
|
331
|
-
_uid?: string;
|
|
332
|
-
}
|
|
333
|
-
export interface Sublink {
|
|
334
|
-
link?: Exclude<StoryblokMultilink, {
|
|
335
|
-
linktype?: "email";
|
|
336
|
-
} | {
|
|
337
|
-
linktype?: "asset";
|
|
338
|
-
}>;
|
|
339
|
-
title?: string;
|
|
340
|
-
component?: "Sublink";
|
|
341
|
-
_uid?: string;
|
|
342
|
-
}
|
|
343
|
-
export interface Textarea {
|
|
344
|
-
label?: string;
|
|
345
|
-
placeholder?: string;
|
|
346
|
-
required?: boolean;
|
|
347
|
-
component?: "Textarea";
|
|
348
|
-
_uid?: string;
|
|
349
|
-
}
|
|
350
|
-
export interface Vacancy {
|
|
351
|
-
location?: (number | string)[];
|
|
352
|
-
blocks?: (Action | Author | Button | Checkboxes | Connect | Embed | Entry | FeaturePages | Form | Hero | Ident | Image | ImageCarousel | Input | IWouldLikeToContactStyleStudio | Latest | Layout | Link | LocationItem | Locations | Map | Marker | Modal | Option | Page | Post | Project | Projects | Quote | Radios | RichText | Select | Sidekick | Spacer | Sublink | Textarea | Vacancy | VacancyList | Video | Whatson)[];
|
|
353
|
-
type?: "" | "Full Time" | "Part Time" | "Volunteer";
|
|
354
|
-
closing_date?: string;
|
|
355
|
-
term?: "" | "Permanent" | "Temporary" | "Contract" | "Volunteer";
|
|
356
|
-
salary?: string;
|
|
357
|
-
department?: string;
|
|
358
|
-
apply_email_address?: string;
|
|
359
|
-
specification?: StoryblokRichtext;
|
|
360
|
-
component?: "Vacancy";
|
|
361
|
-
_uid?: string;
|
|
362
|
-
}
|
|
363
|
-
export interface VacancyList {
|
|
364
|
-
type?: ("" | "all" | "paid" | "voluntary")[];
|
|
365
|
-
component?: "VacancyList";
|
|
366
|
-
_uid?: string;
|
|
367
|
-
}
|
|
368
|
-
export interface Video {
|
|
369
|
-
space_above?: number | string;
|
|
370
|
-
space_below?: number | string;
|
|
371
|
-
title_size?: number | string;
|
|
372
|
-
video?: StoryblokAsset;
|
|
373
|
-
embed?: string;
|
|
374
|
-
component?: "Video";
|
|
375
|
-
_uid?: string;
|
|
376
|
-
}
|
|
377
|
-
export interface Whatson {
|
|
378
|
-
location?: number | string;
|
|
379
|
-
monday?: Entry[];
|
|
380
|
-
tuesday?: Entry[];
|
|
381
|
-
wednesday?: Entry[];
|
|
382
|
-
thursday?: Entry[];
|
|
383
|
-
friday?: Entry[];
|
|
384
|
-
component?: "Whatson";
|
|
385
|
-
_uid?: string;
|
|
386
|
-
}
|
|
387
|
-
type StoryblokPropertyType = "asset" | "multiasset" | "multilink" | "table" | "richtext";
|
|
388
|
-
interface StoryblokAsset {
|
|
389
|
-
alt: string | null;
|
|
390
|
-
copyright: string | null;
|
|
391
|
-
fieldtype: "asset";
|
|
392
|
-
id: number;
|
|
393
|
-
filename: string | null;
|
|
394
|
-
name: string;
|
|
395
|
-
title: string | null;
|
|
396
|
-
focus: string | null;
|
|
397
|
-
meta_data: Record<string, unknown>;
|
|
398
|
-
source: string | null;
|
|
399
|
-
is_external_url: boolean;
|
|
400
|
-
is_private: boolean;
|
|
401
|
-
src: string;
|
|
402
|
-
updated_at: string;
|
|
403
|
-
width: number | null;
|
|
404
|
-
height: number | null;
|
|
405
|
-
aspect_ratio: number | null;
|
|
406
|
-
public_id: string | null;
|
|
407
|
-
content_type: string;
|
|
408
|
-
}
|
|
409
|
-
interface StoryblokMultiasset extends Array<StoryblokAsset> {
|
|
410
|
-
}
|
|
411
|
-
interface StoryblokMultilink {
|
|
412
|
-
fieldtype: "multilink";
|
|
413
|
-
id: string;
|
|
414
|
-
url: string;
|
|
415
|
-
cached_url: string;
|
|
416
|
-
target?: "_blank" | "_self";
|
|
417
|
-
anchor?: string;
|
|
418
|
-
rel?: string;
|
|
419
|
-
title?: string;
|
|
420
|
-
prep?: string;
|
|
421
|
-
linktype: "story" | "url" | "email" | "asset";
|
|
422
|
-
story?: {
|
|
423
|
-
name: string;
|
|
424
|
-
created_at: string;
|
|
425
|
-
published_at: string;
|
|
426
|
-
id: number;
|
|
427
|
-
uuid: string;
|
|
428
|
-
content: Record<string, unknown>;
|
|
429
|
-
slug: string;
|
|
430
|
-
full_slug: string;
|
|
431
|
-
sort_by_date?: string;
|
|
432
|
-
position?: number;
|
|
433
|
-
tag_list?: string[];
|
|
434
|
-
is_startpage?: boolean;
|
|
435
|
-
parent_id?: number | null;
|
|
436
|
-
meta_data?: Record<string, unknown> | null;
|
|
437
|
-
group_id?: string;
|
|
438
|
-
first_published_at?: string;
|
|
439
|
-
release_id?: number | null;
|
|
440
|
-
lang?: string;
|
|
441
|
-
path?: string | null;
|
|
442
|
-
alternates?: unknown[];
|
|
443
|
-
default_full_slug?: string | null;
|
|
444
|
-
translated_slugs?: unknown[] | null;
|
|
445
|
-
};
|
|
446
|
-
email?: string;
|
|
447
|
-
}
|
|
448
|
-
interface StoryblokTable {
|
|
449
|
-
fieldtype: "table";
|
|
450
|
-
thead: Array<{
|
|
451
|
-
_uid: string;
|
|
452
|
-
value: string;
|
|
453
|
-
component: "_table_head";
|
|
454
|
-
_editable?: string;
|
|
455
|
-
}>;
|
|
456
|
-
tbody: Array<{
|
|
457
|
-
_uid: string;
|
|
458
|
-
component: "_table_row";
|
|
459
|
-
_editable?: string;
|
|
460
|
-
body: Array<{
|
|
461
|
-
_uid: string;
|
|
462
|
-
value: string;
|
|
463
|
-
component: "_table_col";
|
|
464
|
-
_editable?: string;
|
|
465
|
-
}>;
|
|
466
|
-
}>;
|
|
467
|
-
}
|
|
468
|
-
interface StoryblokRichtext {
|
|
469
|
-
type: string;
|
|
470
|
-
content?: StoryblokRichtext[];
|
|
471
|
-
marks?: StoryblokRichtext[];
|
|
472
|
-
attrs?: Record<string, unknown>;
|
|
473
|
-
text?: string;
|
|
474
|
-
}
|
|
475
|
-
export type { StoryblokAsset, StoryblokMultiasset, StoryblokMultilink, StoryblokPropertyType, StoryblokRichtext, StoryblokTable, };
|