@prismicio/svelte 0.0.6 → 0.0.8-dev.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.
Files changed (91) hide show
  1. package/dist/__PRODUCTION__.d.ts +7 -0
  2. package/dist/__PRODUCTION__.js +11 -0
  3. package/dist/components/PrismicEmbed.svelte +26 -0
  4. package/{lib → dist}/components/PrismicEmbed.svelte.d.ts +11 -1
  5. package/dist/components/PrismicImage.svelte +90 -0
  6. package/dist/components/PrismicImage.svelte.d.ts +71 -0
  7. package/dist/components/PrismicRichText/DefaultComponent.svelte +51 -0
  8. package/dist/components/PrismicRichText/DefaultComponent.svelte.d.ts +21 -0
  9. package/dist/components/PrismicRichText/PrismicRichText.svelte +49 -0
  10. package/dist/components/PrismicRichText/PrismicRichText.svelte.d.ts +53 -0
  11. package/dist/components/PrismicRichText/Serialize.svelte +19 -0
  12. package/dist/components/PrismicRichText/Serialize.svelte.d.ts +21 -0
  13. package/dist/components/PrismicText.svelte +22 -0
  14. package/{lib → dist}/components/PrismicText.svelte.d.ts +14 -2
  15. package/dist/components/SliceZone.svelte +59 -0
  16. package/dist/components/SliceZone.svelte.d.ts +60 -0
  17. package/dist/components/index.d.ts +6 -0
  18. package/dist/components/index.js +6 -0
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +3 -0
  21. package/dist/src/lib/__PRODUCTION__.ts +12 -0
  22. package/dist/src/lib/components/PrismicEmbed.svelte +29 -0
  23. package/dist/src/lib/components/PrismicImage.svelte +178 -0
  24. package/{src → dist/src}/lib/components/PrismicLink.svelte +1 -0
  25. package/dist/src/lib/components/PrismicRichText/DefaultComponent.svelte +56 -0
  26. package/dist/src/lib/components/PrismicRichText/PrismicRichText.svelte +69 -0
  27. package/dist/src/lib/components/PrismicRichText/Serialize.svelte +30 -0
  28. package/dist/src/lib/components/PrismicText.svelte +29 -0
  29. package/{src → dist/src}/lib/components/SliceZone.svelte +47 -1
  30. package/dist/src/lib/components/index.ts +11 -0
  31. package/dist/src/lib/index.ts +9 -0
  32. package/{src → dist/src}/routes/+page.server.ts +1 -1
  33. package/dist/src/routes/+page.svelte +61 -0
  34. package/dist/src/routes/components/Emphasis.svelte +3 -0
  35. package/dist/src/routes/components/index.js +1 -0
  36. package/dist/src/routes/slices/RichText/index.svelte +9 -0
  37. package/{src → dist/src}/types/ExampleDocument.type.ts +2 -0
  38. package/{src → dist/src}/types/index.ts +0 -2
  39. package/package.json +144 -77
  40. package/CHANGELOG.md +0 -77
  41. package/PrismicProvider.svelte +0 -21
  42. package/components/PrismicEmbed.svelte +0 -10
  43. package/components/PrismicImage.svelte +0 -15
  44. package/components/PrismicPreview.svelte +0 -26
  45. package/components/PrismicRichText.svelte +0 -8
  46. package/components/PrismicText.svelte +0 -7
  47. package/components/SliceZone.svelte +0 -17
  48. package/components/index.js +0 -7
  49. package/configurePrismic.js +0 -17
  50. package/index.js +0 -13
  51. package/injectionSymbols.js +0 -1
  52. package/lib/PrismicProvider.svelte.d.ts +0 -24
  53. package/lib/components/PrismicImage.svelte.d.ts +0 -18
  54. package/lib/components/PrismicPreview.svelte.d.ts +0 -20
  55. package/lib/components/PrismicRichText.svelte.d.ts +0 -20
  56. package/lib/components/SliceZone.svelte.d.ts +0 -25
  57. package/lib/components/index.d.ts +0 -2
  58. package/lib/configurePrismic.d.ts +0 -9
  59. package/lib/index.d.ts +0 -1
  60. package/lib/injectionSymbols.d.ts +0 -1
  61. package/lib/usePrismic.d.ts +0 -2
  62. package/src/lib/PrismicProvider.svelte +0 -26
  63. package/src/lib/components/PrismicEmbed.svelte +0 -14
  64. package/src/lib/components/PrismicImage.svelte +0 -20
  65. package/src/lib/components/PrismicPreview.svelte +0 -29
  66. package/src/lib/components/PrismicRichText.svelte +0 -14
  67. package/src/lib/components/PrismicText.svelte +0 -12
  68. package/src/lib/components/index.ts +0 -13
  69. package/src/lib/configurePrismic.ts +0 -30
  70. package/src/lib/index.ts +0 -18
  71. package/src/lib/injectionSymbols.ts +0 -1
  72. package/src/lib/usePrismic.ts +0 -12
  73. package/src/routes/+page.svelte +0 -35
  74. package/src/routes/slices/RichText/index.svelte +0 -8
  75. package/src/types/PrismicConfig.type.ts +0 -8
  76. package/src/types/PrismicContext.type.ts +0 -13
  77. package/types/PrismicContext.type.d.ts +0 -7
  78. package/usePrismic.js +0 -10
  79. /package/{components → dist/components}/PrismicLink.svelte +0 -0
  80. /package/{lib → dist}/components/PrismicLink.svelte.d.ts +0 -0
  81. /package/{components → dist/components}/TodoSliceComponent.svelte +0 -0
  82. /package/{lib → dist}/components/TodoSliceComponent.svelte.d.ts +0 -0
  83. /package/{src → dist/src}/app.html +0 -0
  84. /package/{src → dist/src}/global.d.ts +0 -0
  85. /package/{src → dist/src}/lib/components/TodoSliceComponent.svelte +0 -0
  86. /package/{src → dist/src}/routes/slices/CodeSnippet/index.svelte +0 -0
  87. /package/{src → dist/src}/routes/slices/index.ts +0 -0
  88. /package/{src → dist/src}/types/CodeSnippetSlice.type.ts +0 -0
  89. /package/{src → dist/src}/types/PageDocument.type.ts +0 -0
  90. /package/{src → dist/src}/types/RichTextSlice.type.ts +0 -0
  91. /package/{src → dist/src}/types/Route.type.ts +0 -0
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import * as prismicH from "@prismicio/helpers";
3
+ import type * as prismicT from "@prismicio/types";
4
+
5
+ /**
6
+ * An Embed field from Prismic.
7
+ */
8
+ export let field: prismicT.EmbedField;
9
+ </script>
10
+
11
+ <!--
12
+ @component
13
+ Component to render a Prismic Embed field.
14
+
15
+ @example Rendering an Embed field:
16
+ ```svelte
17
+ <PrismicEmbed field={document.data.example_embed} />
18
+ ```
19
+ -->
20
+
21
+ {#if prismicH.isFilled.embed(field)}
22
+ <div
23
+ data-oembed={field.embed_url}
24
+ data-oembed-type={field.type}
25
+ data-oembed-provider={field.provider_name}
26
+ >
27
+ {@html field.html}
28
+ </div>
29
+ {/if}
@@ -0,0 +1,178 @@
1
+ <script lang="ts">
2
+ import * as prismicH from "@prismicio/helpers";
3
+ import type * as prismicT from "@prismicio/types";
4
+ import { __PRODUCTION__ } from "$lib/__PRODUCTION__";
5
+
6
+ type PrismicImageProps = {
7
+ /**
8
+ * A Prismic Image field.
9
+ */
10
+ field: prismicT.ImageField;
11
+ /**
12
+ * An object of Imgix URL API parameters to transform the image.
13
+ *
14
+ * See: https://docs.imgix.com/apis/rendering
15
+ */
16
+ imgixParams?: Parameters<typeof prismicH.asImageSrc>[1];
17
+ /**
18
+ * Widths used to build a `srcset` value for the Image field.
19
+ *
20
+ * If a `widths` prop is not given or `"defaults"` is passed, the following
21
+ * widths will be used: 640, 750, 828, 1080, 1200, 1920, 2048, 3840.
22
+ *
23
+ * If the Image field contains responsive views, each responsive view can be
24
+ * used as a width in the resulting `srcset` by passing `"thumbnails"` as
25
+ * the `widths` prop.
26
+ */
27
+ widths?:
28
+ | NonNullable<Parameters<typeof prismicH.asImageWidthSrcSet>[1]>["widths"]
29
+ | "defaults";
30
+ /**
31
+ * Pixel densities used to build a `srcset` value for the Image field.
32
+ *
33
+ * If a `pixelDensities` prop is passed `"defaults"`, the following pixel
34
+ * densities will be used: 1, 2, 3.
35
+ */
36
+ pixelDensities?:
37
+ | NonNullable<
38
+ Parameters<typeof prismicH.asImagePixelDensitySrcSet>[1]
39
+ >["pixelDensities"]
40
+ | "defaults";
41
+ /**
42
+ * Declare an image as decorative by providing `alt=""`.
43
+ *
44
+ * See:
45
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/alt#decorative_images
46
+ */
47
+ alt?: "";
48
+ /**
49
+ * Declare an image as decorative only if the Image field does not have
50
+ * alternative text by providing `fallbackAlt=""`.
51
+ *
52
+ * See:
53
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/alt#decorative_images
54
+ */
55
+ fallbackAlt?: "";
56
+ };
57
+
58
+ type $$Props = Omit<svelteHTML.IntrinsicElements["img"], "alt"> &
59
+ PrismicImageProps;
60
+
61
+ export let field: $$Props["field"];
62
+
63
+ export let imgixParams: $$Props["imgixParams"] = {};
64
+
65
+ export let widths: $$Props["widths"] = undefined;
66
+
67
+ export let pixelDensities: $$Props["pixelDensities"] = undefined;
68
+
69
+ export let width: $$Props["width"] = undefined;
70
+
71
+ export let height: $$Props["height"] = undefined;
72
+
73
+ export let alt: $$Props["alt"] = undefined;
74
+
75
+ export let fallbackAlt: $$Props["fallbackAlt"] = undefined;
76
+
77
+ const castInt = (
78
+ input: string | number | null | undefined,
79
+ ): number | undefined | null => {
80
+ if (
81
+ typeof input === "number" ||
82
+ typeof input === "undefined" ||
83
+ input === null
84
+ ) {
85
+ return input;
86
+ } else {
87
+ const parsed = Number.parseInt(input);
88
+
89
+ if (Number.isNaN(parsed)) {
90
+ return undefined;
91
+ } else {
92
+ return parsed;
93
+ }
94
+ }
95
+ };
96
+
97
+ const ar =
98
+ field.dimensions && field.dimensions.width / field.dimensions.height;
99
+
100
+ const castedWidth = castInt(width);
101
+ const castedHeight = castInt(height);
102
+
103
+ let resolvedWidth =
104
+ castedWidth ?? (field.dimensions && field.dimensions.width);
105
+ let resolvedHeight =
106
+ castedHeight ?? (field.dimensions && field.dimensions.height);
107
+
108
+ if (
109
+ ar &&
110
+ castedWidth != null &&
111
+ (castedHeight == null || typeof castedWidth !== "undefined")
112
+ ) {
113
+ resolvedHeight = castedWidth / ar;
114
+ } else if (
115
+ ar &&
116
+ castedHeight != null &&
117
+ (castedWidth == null || typeof castedWidth !== "undefined")
118
+ ) {
119
+ resolvedWidth = castedHeight * ar;
120
+ }
121
+
122
+ if (!__PRODUCTION__) {
123
+ if (widths && pixelDensities) {
124
+ console.warn(
125
+ `[PrismicImage] Only one of "widths" or "pixelDensities" props can be provided. You can resolve this warning by removing either the "widths" or "pixelDensities" prop. "widths" will be used in this case.`,
126
+ );
127
+ }
128
+
129
+ if (typeof alt === "string" && alt !== "") {
130
+ console.warn(
131
+ `[PrismicImage] The "alt" prop can only be used to declare an image as decorative by passing an empty string (alt="") but was provided a non-empty string. You can resolve this warning by removing the "alt" prop or changing it to alt="".`,
132
+ );
133
+ }
134
+
135
+ if (typeof fallbackAlt === "string" && fallbackAlt !== "") {
136
+ console.warn(
137
+ `[PrismicImage] The "fallbackAlt" prop can only be used to declare an image as decorative by passing an empty string (fallbackAlt="") but was provided a non-empty string. You can resolve this warning by removing the "fallbackAlt" prop or changing it to fallbackAlt="".`,
138
+ );
139
+ }
140
+ }
141
+ </script>
142
+
143
+ <!--
144
+ @component
145
+ Component to render a Prismic Image field as an `img` element with `width`, `height`, `alt`, `src`, and `srcset` attributes.
146
+
147
+ @example Rendering an Image field:
148
+ ```svelte
149
+ <PrismicImage
150
+ field={document.data.example_image}
151
+ imgixParams={{ sat: -100 }}
152
+ />
153
+ ```
154
+ -->
155
+
156
+ {#if prismicH.isFilled.image(field)}
157
+ {@const { src, srcset } =
158
+ pixelDensities && !widths
159
+ ? prismicH.asImagePixelDensitySrcSet(field, {
160
+ pixelDensities:
161
+ pixelDensities === "defaults" ? undefined : pixelDensities,
162
+ ...imgixParams,
163
+ })
164
+ : prismicH.asImageWidthSrcSet(field, {
165
+ widths: widths === "defaults" ? undefined : widths,
166
+ ...imgixParams,
167
+ })}
168
+ <img
169
+ {src}
170
+ {srcset}
171
+ alt={alt ?? field.alt ?? fallbackAlt}
172
+ width={width || height ? resolvedWidth : field.dimensions.width}
173
+ height={height || (width ? resolvedHeight : field.dimensions.height)}
174
+ {...$$restProps}
175
+ />
176
+ {:else}
177
+ <img alt={field.alt || ""} {...$$restProps} />
178
+ {/if}
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import * as prismicH from "@prismicio/helpers";
3
3
  import type * as prismicT from "@prismicio/types";
4
+ // import { usePrismic } from "../usePrismic";
4
5
 
5
6
  type PrismicLinkProps = {
6
7
  /**
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import { PrismicImage, PrismicEmbed, PrismicLink } from "$lib/components";
3
+ import type { LinkResolverFunction } from "@prismicio/helpers";
4
+ import type { RTAnyNode } from "@prismicio/types";
5
+
6
+ export let node: RTAnyNode;
7
+
8
+ export let linkResolver: LinkResolverFunction | undefined = undefined;
9
+ </script>
10
+
11
+ {#if node.type === "heading1"}
12
+ <h1><slot /></h1>
13
+ {:else if node.type === "heading2"}
14
+ <h2><slot /></h2>
15
+ {:else if node.type === "heading3"}
16
+ <h3><slot /></h3>
17
+ {:else if node.type === "heading4"}
18
+ <h4><slot /></h4>
19
+ {:else if node.type === "heading5"}
20
+ <h5><slot /></h5>
21
+ {:else if node.type === "heading6"}
22
+ <h6><slot /></h6>
23
+ {:else if node.type === "paragraph"}
24
+ <p><slot /></p>
25
+ {:else if node.type === "preformatted"}
26
+ <pre><slot /></pre>
27
+ {:else if node.type === "strong"}
28
+ <strong><slot /></strong>
29
+ {:else if node.type === "em"}
30
+ <em><slot /></em>
31
+ {:else if node.type === "list-item"}
32
+ <li><slot /></li>
33
+ {:else if node.type === "o-list-item"}
34
+ <li><slot /></li>
35
+ {:else if node.type === "group-list-item"}
36
+ <ul><slot /></ul>
37
+ {:else if node.type === "group-o-list-item"}
38
+ <ol><slot /></ol>
39
+ {:else if node.type === "image"}
40
+ <p class="block-img">
41
+ <PrismicImage field={node} />
42
+ </p>
43
+ {:else if node.type === "embed"}
44
+ <PrismicEmbed field={node.oembed} />
45
+ {:else if node.type === "hyperlink"}
46
+ <PrismicLink {linkResolver} field={node.data}><slot /></PrismicLink>
47
+ {:else if node.type === "label"}
48
+ <span class={node.data.label}><slot /></span>
49
+ {:else}
50
+ {#each node.text.split("\n") as line, index}
51
+ {#if index > 0}
52
+ <br />
53
+ {/if}
54
+ {line}
55
+ {/each}
56
+ {/if}
@@ -0,0 +1,69 @@
1
+ <script lang="ts">
2
+ import type { SvelteComponent } from "svelte";
3
+ import type { RichTextField } from "@prismicio/types";
4
+ import {
5
+ asTree,
6
+ wrapMapSerializer,
7
+ type RichTextFunctionSerializer,
8
+ type RichTextMapSerializer,
9
+ type TreeNode,
10
+ } from "@prismicio/richtext";
11
+
12
+ import Serialize from "./Serialize.svelte";
13
+ import type { LinkResolverFunction } from "@prismicio/helpers";
14
+
15
+ /**
16
+ * The Prismic Rich Text field to render.
17
+ */
18
+ export let field: RichTextField = [];
19
+
20
+ /**
21
+ * The Link Resolver used to resolve links.
22
+ *
23
+ * @remarks
24
+ * If your app uses Route Resolvers when querying for your Prismic
25
+ * repository's content, a Link Resolver does not need to be provided.
26
+ * @see Learn about Link Resolvers and Route Resolvers {@link https://prismic.io/docs/route-resolver}
27
+ */
28
+ export let linkResolver: LinkResolverFunction | undefined = undefined;
29
+
30
+ /**
31
+ * An object that maps Rich Text blocks to functions.
32
+ *
33
+ * @example A serializer that modififes `h1` and `em` elements:
34
+ *
35
+ * ```js
36
+ * import Title from "./Title.svelte";
37
+ *
38
+ * const field = exampleRichText;
39
+ *
40
+ * const richTextSerializer = {
41
+ * h1: () => Title,
42
+ * em: ({ children }) => `<mark>${children}</mark>`,
43
+ * };
44
+ * ```
45
+ */
46
+ export let richTextSerializer:
47
+ | RichTextMapSerializer<typeof SvelteComponent, TreeNode>
48
+ | RichTextFunctionSerializer<typeof SvelteComponent, TreeNode>
49
+ | undefined = undefined;
50
+
51
+ const resolvedSerializer =
52
+ typeof richTextSerializer === "object"
53
+ ? wrapMapSerializer(richTextSerializer)
54
+ : richTextSerializer;
55
+
56
+ const nodes = asTree(field).children;
57
+ </script>
58
+
59
+ <!--
60
+ @component
61
+ Component to render a Prismic Rich Text or Title field as HTML.
62
+
63
+ @example Rendering a Link field:
64
+ ```svelte
65
+ <PrismicRichText field={document.data.example_rich_text} />
66
+ ```
67
+ -->
68
+
69
+ <Serialize {nodes} serializer={resolvedSerializer} {linkResolver} />
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import type { SvelteComponent } from "svelte";
3
+ import type {
4
+ RichTextFunctionSerializer,
5
+ TreeNode,
6
+ } from "@prismicio/richtext";
7
+ import type { LinkResolverFunction } from "@prismicio/helpers";
8
+
9
+ import Default from "./DefaultComponent.svelte";
10
+
11
+ export let serializer:
12
+ | RichTextFunctionSerializer<typeof SvelteComponent, TreeNode>
13
+ | undefined;
14
+ export let nodes: TreeNode[] = [];
15
+ export let linkResolver: LinkResolverFunction | undefined = undefined;
16
+ </script>
17
+
18
+ {#each nodes as node}
19
+ <svelte:component
20
+ this={(serializer &&
21
+ serializer(node.type, node.node, node.text, node.children, node.key)) ||
22
+ Default}
23
+ {...node}
24
+ {linkResolver}
25
+ >
26
+ {#if node.children.length > 0}
27
+ <svelte:self nodes={node.children} {serializer} />
28
+ {/if}
29
+ </svelte:component>
30
+ {/each}
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import * as prismicH from "@prismicio/helpers";
3
+ import type * as prismicR from "@prismicio/richtext";
4
+
5
+ import type { RichTextField as RichTextFieldType } from "@prismicio/types";
6
+ import type { TitleField as TitleFieldType } from "@prismicio/types";
7
+
8
+ /**
9
+ * A Rich Text or Title field from Prismic.
10
+ */
11
+ export let field: TitleFieldType | RichTextFieldType;
12
+
13
+ /**
14
+ * The separator used between blocks. Defaults to `\n`.
15
+ */
16
+ export let separator: string | undefined = undefined;
17
+ </script>
18
+
19
+ <!--
20
+ @component
21
+ Component to render a Prismic Rich Text or Title field as plain text.
22
+
23
+ @example Rendering a Rich Text field:
24
+ ```svelte
25
+ <PrismicText field={document.data.example_rich_text} />
26
+ ```
27
+ -->
28
+
29
+ {@html prismicH.asText(field, separator)}
@@ -6,7 +6,7 @@
6
6
 
7
7
  type SliceComponents = Record<
8
8
  string,
9
- SvelteComponent | (new (...args: any[]) => SvelteComponent)
9
+ new (...args: any[]) => SvelteComponent
10
10
  >;
11
11
 
12
12
  /**
@@ -45,16 +45,62 @@
45
45
  | SliceLikeRestV2<SliceType>
46
46
  | SliceLikeGraphQL<SliceType>;
47
47
 
48
+ /**
49
+ * An array of Prismic Slices, such as the `slices` property from a Prismic document.
50
+ */
48
51
  export let slices: SliceLike[] = [];
52
+
53
+ /**
54
+ * An object that maps Slice components to their corresponding API IDs
55
+ *
56
+ * @example An example map:
57
+ *
58
+ * ```js
59
+ * import BlockQuote from "./BlockQuote.svelte";
60
+ * import HeroImage from "./HeroImage.svelte";
61
+ *
62
+ * const components = {
63
+ * block_quote: BlockQuote,
64
+ * hero_image: HeroImage,
65
+ * };
66
+ * ```
67
+ */
49
68
  export let components: SliceComponents = {};
69
+
70
+ /**
71
+ * Arbitrary data passed to all Slice components as a `context` prop.
72
+ */
50
73
  export let context: any = {};
74
+
75
+ /**
76
+ * The Svelte component rendered if a component mapping from the `components`
77
+ * prop cannot be found.
78
+ */
51
79
  export let defaultComponent:
52
80
  | SvelteComponent
53
81
  | (new (...args: any[]) => SvelteComponent)
54
82
  | undefined = undefined;
83
+
84
+ /**
85
+ * Whether the app is in development mode. When true, the SliceZone may
86
+ * display error messages in the UI.
87
+ */
55
88
  export let dev: boolean = false;
56
89
  </script>
57
90
 
91
+ <!--
92
+ @component
93
+ Component to render an array of Prismic Slices.
94
+
95
+ @example Rendering a Rich Text field:
96
+ ```svelte
97
+ <SliceZone slices={document.data.slices} components={{
98
+ block_quote: BlockQuote,
99
+ hero_image: HeroImage
100
+ }} />
101
+ ```
102
+ -->
103
+
58
104
  {#each slices as slice, index}
59
105
  {@const type = "slice_type" in slice ? slice.slice_type : slice.type}
60
106
  {@const Component = components[type] || defaultComponent}
@@ -0,0 +1,11 @@
1
+ export { default as PrismicEmbed } from "./PrismicEmbed.svelte";
2
+
3
+ export { default as PrismicImage } from "./PrismicImage.svelte";
4
+
5
+ export { default as PrismicLink } from "./PrismicLink.svelte";
6
+
7
+ export { default as PrismicText } from "./PrismicText.svelte";
8
+
9
+ export { default as PrismicRichText } from "./PrismicRichText/PrismicRichText.svelte";
10
+
11
+ export { default as SliceZone } from "./SliceZone.svelte";
@@ -0,0 +1,9 @@
1
+ export {
2
+ // Components
3
+ PrismicEmbed,
4
+ PrismicImage,
5
+ PrismicLink,
6
+ PrismicText,
7
+ PrismicRichText,
8
+ SliceZone,
9
+ } from "./components";
@@ -9,7 +9,7 @@ export const load = (async ({ fetch }) => {
9
9
  const pageDocument: PageDocument = await client.getSingle("homepage");
10
10
 
11
11
  const exampleClient = prismic.createClient("example-prismic-repo", { fetch })
12
- const exampleDocument = exampleClient.getFirst()
12
+ const exampleDocument = exampleClient.getFirst({ page: 11, pageSize: 1})
13
13
 
14
14
 
15
15
  return {
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import {
3
+ SliceZone,
4
+ PrismicLink,
5
+ PrismicImage,
6
+ PrismicRichText,
7
+ PrismicText,
8
+ PrismicEmbed,
9
+ } from "$lib";
10
+ import { RichText, CodeSnippet } from "./slices";
11
+
12
+ import type { PageData } from "./$types";
13
+ import { page } from "$app/stores";
14
+
15
+ const components = {
16
+ rich_text: RichText,
17
+ code_snippet: CodeSnippet,
18
+ };
19
+
20
+ export let data: PageData;
21
+ </script>
22
+
23
+ <main>
24
+ <h1>Welcome to SvelteKit</h1>
25
+ <h2><code>PrismicText</code></h2>
26
+ <PrismicText field={data.exampleDocument.data.example_rich_text} />
27
+ <h2><code>PrismicRichText</code></h2>
28
+ <PrismicRichText field={data.exampleDocument.data.example_rich_text} />
29
+ <h2><code>PrismicImage</code></h2>
30
+ <PrismicImage
31
+ field={data.exampleDocument.data.example_image}
32
+ height="200px"
33
+ alt=""
34
+ />
35
+ <h2><code>PrismicLink</code></h2>
36
+ <PrismicLink
37
+ data-sveltekit-noscroll
38
+ data-sveltekit-preload-code
39
+ data-sveltekit-preload-data
40
+ data-sveltekit-reload
41
+ rel="external"
42
+ class="doggo"
43
+ field={data.exampleDocument.data.example_link}>Link</PrismicLink
44
+ >
45
+ <h2><code>PrismicEmbed</code></h2>
46
+ <PrismicEmbed field={data.exampleDocument.data.example_embed} />
47
+ <h2><code>SliceZone</code></h2>
48
+ <SliceZone slices={data.pageDocument.data.body} {components} />
49
+ </main>
50
+
51
+ <style>
52
+ main {
53
+ max-width: min(90%, 700px);
54
+ margin: auto;
55
+ }
56
+
57
+ :global(img) {
58
+ height: auto;
59
+ max-width: 100%;
60
+ }
61
+ </style>
@@ -0,0 +1,3 @@
1
+ <mark>
2
+ <slot />
3
+ </mark>
@@ -0,0 +1 @@
1
+ export { default as Em } from "./Emphasis.svelte";
@@ -0,0 +1,9 @@
1
+ <script lang="ts">
2
+ import type { RichTextSlice } from "./../../../types/RichTextSlice.type";
3
+ import PrismicRichText from "$lib/components/PrismicRichText/PrismicRichText.svelte";
4
+ import Emphasis from "./../../components/Emphasis.svelte";
5
+
6
+ export let slice: RichTextSlice;
7
+ </script>
8
+
9
+ <PrismicRichText field={slice.primary.content} components={{ em: Emphasis }} />
@@ -3,4 +3,6 @@ import type * as prismicT from "@prismicio/types";
3
3
  export type ExampleDocument = prismicT.PrismicDocument<{
4
4
  example_link: prismicT.LinkField;
5
5
  example_content_relationship: prismicT.ContentRelationshipField;
6
+ example_rich_text: prismicT.RichTextField;
7
+ example_image: prismicT.ImageField;
6
8
  }>;
@@ -1,7 +1,5 @@
1
1
  export type { CodeSnippetSlice } from "./CodeSnippetSlice.type";
2
2
  export type { PageDocument } from "./PageDocument.type";
3
3
  export type { ExampleDocument } from "./ExampleDocument.type";
4
- export type { PrismicConfig } from "./PrismicConfig.type";
5
- export type { PrismicContext } from "./PrismicContext.type";
6
4
  export type { RichTextSlice } from "./RichTextSlice.type";
7
5
  export type { Route } from "./Route.type";