@madebywild/sanity-richtext-field 1.1.0 → 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 +3 -3
- package/dist/blocks/media-grid-block.d.cts +4 -4
- package/dist/blocks/media-grid-block.d.ts +4 -4
- package/dist/blocks/media-only-block.d.ts +4 -4
- package/dist/blocks/media-slider-block.d.cts +4 -4
- package/dist/blocks/media-slider-block.d.ts +4 -4
- package/dist/blocks/quote-block.d.cts +4 -4
- package/dist/blocks/quote-block.d.ts +4 -4
- package/dist/index.d.cts +2 -2
- package/dist/parts.cjs +14 -16
- package/dist/parts.cjs.map +1 -1
- package/dist/parts.d.cts +17 -19
- package/dist/parts.d.ts +16 -18
- package/dist/parts.js +14 -16
- package/dist/parts.js.map +1 -1
- package/dist/utils.d.cts +4 -4
- package/package.json +3 -3
- package/src/parts/annotations/color.tsx +14 -23
- package/src/parts/spans/icon.tsx +6 -5
package/README.md
CHANGED
|
@@ -58,17 +58,17 @@ wildSanityRichtextFieldPlugin({
|
|
|
58
58
|
annotations: [
|
|
59
59
|
...createAnnotations({
|
|
60
60
|
textColor: {
|
|
61
|
-
|
|
61
|
+
renderValue: (value) => getColor(value)?.cssVar,
|
|
62
62
|
},
|
|
63
63
|
highlightColor: {
|
|
64
|
-
|
|
64
|
+
renderValue: (value) => getColor(value)?.cssVar,
|
|
65
65
|
},
|
|
66
66
|
}),
|
|
67
67
|
],
|
|
68
68
|
spans: [
|
|
69
69
|
...createSpans({
|
|
70
70
|
icon: {
|
|
71
|
-
|
|
71
|
+
renderValuePreview: (value) => <Icon name={value as IconName} />,
|
|
72
72
|
},
|
|
73
73
|
}),
|
|
74
74
|
],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity69 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
import { FieldOptions } from "@madebywild/sanity-media-field";
|
|
4
4
|
type Options = Omit<Partial<ObjectDefinition>, "type"> & {
|
|
@@ -16,9 +16,9 @@ declare function createBlock({
|
|
|
16
16
|
}?: Options): {
|
|
17
17
|
type: "object";
|
|
18
18
|
name?: string | undefined;
|
|
19
|
-
} & Omit<
|
|
20
|
-
preview?:
|
|
19
|
+
} & Omit<sanity69.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
20
|
+
preview?: sanity69.PreviewConfig<{
|
|
21
21
|
[x: string]: string;
|
|
22
22
|
}, Record<string, string>> | undefined;
|
|
23
|
-
} &
|
|
23
|
+
} & sanity69.WidenValidation & sanity69.WidenInitialValue;
|
|
24
24
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity73 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
import { FieldOptions } from "@madebywild/sanity-media-field";
|
|
4
4
|
type Options = Omit<Partial<ObjectDefinition>, "type"> & {
|
|
@@ -16,9 +16,9 @@ declare function createBlock({
|
|
|
16
16
|
}?: Options): {
|
|
17
17
|
type: "object";
|
|
18
18
|
name?: string | undefined;
|
|
19
|
-
} & Omit<
|
|
20
|
-
preview?:
|
|
19
|
+
} & Omit<sanity73.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
20
|
+
preview?: sanity73.PreviewConfig<{
|
|
21
21
|
[x: string]: string;
|
|
22
22
|
}, Record<string, string>> | undefined;
|
|
23
|
-
} &
|
|
23
|
+
} & sanity73.WidenValidation & sanity73.WidenInitialValue;
|
|
24
24
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity69 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
import { FieldOptions } from "@madebywild/sanity-media-field";
|
|
4
4
|
type Options = Omit<Partial<ObjectDefinition>, "type"> & {
|
|
@@ -16,9 +16,9 @@ declare function createBlock({
|
|
|
16
16
|
}?: Options): {
|
|
17
17
|
type: "object";
|
|
18
18
|
name?: string | undefined;
|
|
19
|
-
} & Omit<
|
|
20
|
-
preview?:
|
|
19
|
+
} & Omit<sanity69.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
20
|
+
preview?: sanity69.PreviewConfig<{
|
|
21
21
|
[x: string]: string;
|
|
22
22
|
}, Record<string, string>> | undefined;
|
|
23
|
-
} &
|
|
23
|
+
} & sanity69.WidenValidation & sanity69.WidenInitialValue;
|
|
24
24
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity73 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
import { FieldOptions } from "@madebywild/sanity-media-field";
|
|
4
4
|
type Options = Omit<Partial<ObjectDefinition>, "type"> & {
|
|
@@ -16,9 +16,9 @@ declare function createBlock({
|
|
|
16
16
|
}?: Options): {
|
|
17
17
|
type: "object";
|
|
18
18
|
name?: string | undefined;
|
|
19
|
-
} & Omit<
|
|
20
|
-
preview?:
|
|
19
|
+
} & Omit<sanity73.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
20
|
+
preview?: sanity73.PreviewConfig<{
|
|
21
21
|
[x: string]: string;
|
|
22
22
|
}, Record<string, string>> | undefined;
|
|
23
|
-
} &
|
|
23
|
+
} & sanity73.WidenValidation & sanity73.WidenInitialValue;
|
|
24
24
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity61 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
import { FieldOptions } from "@madebywild/sanity-media-field";
|
|
4
4
|
type Options = Omit<Partial<ObjectDefinition>, "type"> & {
|
|
@@ -16,9 +16,9 @@ declare function createBlock({
|
|
|
16
16
|
}?: Options): {
|
|
17
17
|
type: "object";
|
|
18
18
|
name?: string | undefined;
|
|
19
|
-
} & Omit<
|
|
20
|
-
preview?:
|
|
19
|
+
} & Omit<sanity61.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
20
|
+
preview?: sanity61.PreviewConfig<{
|
|
21
21
|
[x: string]: string;
|
|
22
22
|
}, Record<string, string>> | undefined;
|
|
23
|
-
} &
|
|
23
|
+
} & sanity61.WidenValidation & sanity61.WidenInitialValue;
|
|
24
24
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity64 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
type Options = Omit<Partial<ObjectDefinition>, "type">;
|
|
4
4
|
/** @public */
|
|
@@ -9,9 +9,9 @@ declare function createBlock({
|
|
|
9
9
|
}?: Options): {
|
|
10
10
|
type: "object";
|
|
11
11
|
name?: string | undefined;
|
|
12
|
-
} & Omit<
|
|
13
|
-
preview?:
|
|
12
|
+
} & Omit<sanity64.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
13
|
+
preview?: sanity64.PreviewConfig<{
|
|
14
14
|
[x: string]: string;
|
|
15
15
|
}, Record<string, string>> | undefined;
|
|
16
|
-
} &
|
|
16
|
+
} & sanity64.WidenValidation & sanity64.WidenInitialValue;
|
|
17
17
|
export { createBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity65 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
type Options = Omit<Partial<ObjectDefinition>, "type">;
|
|
4
4
|
/** @public */
|
|
@@ -9,9 +9,9 @@ declare function createBlock({
|
|
|
9
9
|
}?: Options): {
|
|
10
10
|
type: "object";
|
|
11
11
|
name?: string | undefined;
|
|
12
|
-
} & Omit<
|
|
13
|
-
preview?:
|
|
12
|
+
} & Omit<sanity65.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
13
|
+
preview?: sanity65.PreviewConfig<{
|
|
14
14
|
[x: string]: string;
|
|
15
15
|
}, Record<string, string>> | undefined;
|
|
16
|
-
} &
|
|
16
|
+
} & sanity65.WidenValidation & sanity65.WidenInitialValue;
|
|
17
17
|
export { createBlock };
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity68 from "sanity";
|
|
2
2
|
import { ArrayDefinition, ArrayOfType, ArrayOptions, BlockDecoratorDefinition, BlockListDefinition, BlockStyleDefinition } from "sanity";
|
|
3
3
|
/** @public */
|
|
4
4
|
declare const typeName: "wild.richtext";
|
|
@@ -86,5 +86,5 @@ declare module "sanity" {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
/** @public */
|
|
89
|
-
declare const wildSanityRichtextFieldPlugin:
|
|
89
|
+
declare const wildSanityRichtextFieldPlugin: sanity68.Plugin<PluginConfig>;
|
|
90
90
|
export { type FieldOptions, type PluginConfig, typeName, wildSanityRichtextFieldPlugin };
|
package/dist/parts.cjs
CHANGED
|
@@ -22,17 +22,15 @@ const ColorText = styledComponents.styled.span`
|
|
|
22
22
|
background-color: inherit;
|
|
23
23
|
border-bottom: unset;
|
|
24
24
|
color: ${({
|
|
25
|
-
color = "inherit"
|
|
26
|
-
}) => color};
|
|
25
|
+
$color = "inherit"
|
|
26
|
+
}) => $color};
|
|
27
27
|
}
|
|
28
28
|
`;
|
|
29
29
|
function defaultResolveColor(value) {
|
|
30
|
-
|
|
31
|
-
if (value && typeof value == "object" && "value" in value && typeof value.value == "string")
|
|
32
|
-
return value.value;
|
|
30
|
+
return value;
|
|
33
31
|
}
|
|
34
32
|
function createTextColorAnnotation(options) {
|
|
35
|
-
const
|
|
33
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
36
34
|
return sanity.defineField({
|
|
37
35
|
type: "object",
|
|
38
36
|
name: `${types.typeName}.annotation.textColor`,
|
|
@@ -44,8 +42,8 @@ function createTextColorAnnotation(options) {
|
|
|
44
42
|
})],
|
|
45
43
|
components: {
|
|
46
44
|
annotation: (props) => {
|
|
47
|
-
const
|
|
48
|
-
return
|
|
45
|
+
const value = renderValue(props.value?.color);
|
|
46
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ColorText, { $color: value, children: props.renderDefault(props) });
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
});
|
|
@@ -53,14 +51,14 @@ function createTextColorAnnotation(options) {
|
|
|
53
51
|
const ColorBg = styledComponents.styled.span`
|
|
54
52
|
& > span {
|
|
55
53
|
background-color: ${({
|
|
56
|
-
color = "inherit"
|
|
57
|
-
}) => color};
|
|
54
|
+
$color = "inherit"
|
|
55
|
+
}) => $color};
|
|
58
56
|
border-bottom: unset;
|
|
59
57
|
color: inherit;
|
|
60
58
|
}
|
|
61
59
|
`;
|
|
62
60
|
function createHighlightColorAnnotation(options) {
|
|
63
|
-
const
|
|
61
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
64
62
|
return sanity.defineField({
|
|
65
63
|
type: "object",
|
|
66
64
|
name: `${types.typeName}.annotation.highlightColor`,
|
|
@@ -72,8 +70,8 @@ function createHighlightColorAnnotation(options) {
|
|
|
72
70
|
})],
|
|
73
71
|
components: {
|
|
74
72
|
annotation: (props) => {
|
|
75
|
-
const
|
|
76
|
-
return
|
|
73
|
+
const value = renderValue(props.value?.color);
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ColorBg, { $color: value, children: props.renderDefault(props) });
|
|
77
75
|
}
|
|
78
76
|
}
|
|
79
77
|
});
|
|
@@ -138,10 +136,10 @@ function createLists() {
|
|
|
138
136
|
return [bullet, number];
|
|
139
137
|
}
|
|
140
138
|
function defaultRenderIconPreview(value) {
|
|
141
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { role: "img", className: "inline-block size-[1em] shrink-0 text-current", title: value
|
|
139
|
+
return React__namespace.isValidElement(value) ? value : /* @__PURE__ */ jsxRuntime.jsx("span", { role: "img", className: "inline-block size-[1em] shrink-0 text-current", title: typeof value == "string" ? value : "Icon", children: "\u{1F9FF}" });
|
|
142
140
|
}
|
|
143
141
|
function createIconSpan(options) {
|
|
144
|
-
const
|
|
142
|
+
const renderValuePreview = options?.renderValuePreview;
|
|
145
143
|
return sanity.defineArrayMember({
|
|
146
144
|
name: `${types.typeName}.span.icon`,
|
|
147
145
|
type: "object",
|
|
@@ -165,7 +163,7 @@ function createIconSpan(options) {
|
|
|
165
163
|
icon
|
|
166
164
|
}) {
|
|
167
165
|
return {
|
|
168
|
-
media:
|
|
166
|
+
media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon)
|
|
169
167
|
};
|
|
170
168
|
}
|
|
171
169
|
}
|
package/dist/parts.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.cjs","sources":["../src/parts/annotations/color.tsx","../src/parts/annotations/link.tsx","../src/parts/annotations/index.tsx","../src/parts/decorators/index.tsx","../src/parts/lists/index.tsx","../src/parts/spans/icon.tsx","../src/parts/spans/media.tsx","../src/parts/spans/index.tsx","../src/parts/styles/index.tsx"],"sourcesContent":["import { ColorWheelIcon, HighlightIcon } from \"@sanity/icons\";\nimport { type BlockAnnotationProps, defineField } from \"sanity\";\nimport { styled } from \"styled-components\";\nimport { typeName } from \"../../types\";\n\ntype ColorAnnotationOptions = {\n resolveColor?: (value: unknown) => string | undefined;\n renderAnnotation?: (props: BlockAnnotationProps, color?: string) => React.JSX.Element;\n};\n\nconst ColorText = styled.span<{ color?: string }>`\n & > span {\n background-color: inherit;\n border-bottom: unset;\n color: ${({ color = \"inherit\" }) => color};\n }\n`;\n\nfunction defaultResolveColor(value: unknown) {\n if (typeof value === \"string\") return value;\n if (value && typeof value === \"object\" && \"value\" in value && typeof value.value === \"string\") {\n return value.value;\n }\n return undefined;\n}\n\nfunction createTextColorAnnotation(options?: ColorAnnotationOptions) {\n const resolveColor = options?.resolveColor ?? defaultResolveColor;\n const renderAnnotation = options?.renderAnnotation;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.textColor`,\n title: \"Text Color\",\n icon: ColorWheelIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const color = resolveColor(props.value?.color);\n if (renderAnnotation) return renderAnnotation(props, color);\n return <ColorText color={color}>{props.renderDefault(props)}</ColorText>;\n },\n },\n });\n}\n\nconst ColorBg = styled.span<{ color?: string }>`\n & > span {\n background-color: ${({ color = \"inherit\" }) => color};\n border-bottom: unset;\n color: inherit;\n }\n`;\n\nfunction createHighlightColorAnnotation(options?: ColorAnnotationOptions) {\n const resolveColor = options?.resolveColor ?? defaultResolveColor;\n const renderAnnotation = options?.renderAnnotation;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.highlightColor`,\n title: \"Highlight Color\",\n icon: HighlightIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const color = resolveColor(props.value?.color);\n if (renderAnnotation) return renderAnnotation(props, color);\n return <ColorBg color={color}>{props.renderDefault(props)}</ColorBg>;\n },\n },\n });\n}\n\nexport { createTextColorAnnotation, createHighlightColorAnnotation, type ColorAnnotationOptions };\n","import { LinkIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const link = defineField({\n type: \"wild.link\",\n name: `${typeName}.annotation.link`,\n title: \"Link\",\n icon: LinkIcon,\n options: {\n collapsed: false,\n collapsible: false,\n },\n});\n","import { type ColorAnnotationOptions, createHighlightColorAnnotation, createTextColorAnnotation } from \"./color\";\nimport { link } from \"./link\";\n\n/** @public */\nfunction createAnnotations(options?: { textColor?: ColorAnnotationOptions; highlightColor?: ColorAnnotationOptions }) {\n return [link, createTextColorAnnotation(options?.textColor), createHighlightColorAnnotation(options?.highlightColor)] as const;\n}\n\nexport { createAnnotations };\n","import { BoldIcon, CodeIcon, ItalicIcon } from \"@sanity/icons\";\nimport type { BlockDecoratorDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst strong = {\n title: \"Strong\",\n value: `${typeName}.decorator.strong`,\n icon: BoldIcon,\n component: ({ children }) => <strong>{children}</strong>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst em = {\n title: \"Emphasis\",\n value: `${typeName}.decorator.em`,\n icon: ItalicIcon,\n component: ({ children }) => <em>{children}</em>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst code = {\n title: \"Code\",\n value: `${typeName}.decorator.code`,\n icon: CodeIcon,\n component: ({ children }) => <code>{children}</code>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst sup = {\n title: \"Sup\",\n value: `${typeName}.decorator.sup`,\n icon: () => <sup>[1]</sup>,\n component: ({ children }) => <sup style={{ verticalAlign: \"super\" }}>{children}</sup>,\n} as const satisfies BlockDecoratorDefinition;\n\n/** @public */\nfunction createDecorators() {\n return [strong, em, code, sup] as const;\n}\n\nexport { createDecorators };\n","import { OlistIcon, UlistIcon } from \"@sanity/icons\";\nimport type { BlockListDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst bullet = {\n title: \"Bullet\",\n value: `${typeName}.list.bullet`,\n icon: UlistIcon,\n} as const satisfies BlockListDefinition;\n\nconst number = {\n title: \"Number\",\n value: `${typeName}.list.number`,\n icon: OlistIcon,\n} as const satisfies BlockListDefinition;\n\n/** @public */\nfunction createLists() {\n return [bullet, number] as const;\n}\n\nexport { createLists };\n","import * as React from \"react\";\nimport { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\ntype IconSpanOptions = {\n renderPreview?: (value?: string) => React.ReactNode;\n};\n\nfunction defaultRenderIconPreview(value?: string) {\n return (\n <span role=\"img\" className=\"inline-block size-[1em] shrink-0 text-current\" title={value ?? \"Icon\"}>\n 🧿\n </span>\n );\n}\n\nfunction createIconSpan(options?: IconSpanOptions) {\n const renderPreview = options?.renderPreview ?? defaultRenderIconPreview;\n\n return defineArrayMember({\n name: `${typeName}.span.icon`,\n type: \"object\",\n title: \"Icon\",\n description: \"Insert an icon.\",\n icon: () => <>🧿</>,\n fields: [defineField({ name: \"icon\", type: \"wild.icon\" })],\n components: {\n // This is the inline-preview in the PortableText editor.\n // It gets its props from the prepare function below.\n preview: (props) => {\n return React.isValidElement(props.media) ? props.media : props.fallbackTitle;\n },\n },\n preview: {\n select: {\n icon: \"icon\",\n },\n prepare({ icon }) {\n return {\n media: renderPreview(icon),\n };\n },\n },\n });\n}\n\nexport { createIconSpan, type IconSpanOptions };\n","import { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const media = defineArrayMember({\n name: `${typeName}.span.media`,\n type: \"object\",\n title: \"Inline Media\",\n description: \"Embed inline video or image content.\",\n icon: () => <>🫧</>,\n fields: [\n defineField({\n name: \"media\",\n type: \"wild.media\",\n options: {\n inline: true,\n },\n }),\n ],\n components: {\n // This is the inline-preview in the PortableText editor.\n preview: (props) => {\n const icons = {\n video: <>🎥</>,\n image: <>🖼️</>,\n motion: <>🌀</>,\n };\n\n // @ts-expect-error: It gets its props from the prepare function below.\n return icons[props.kind as keyof typeof icons] || <>🖼️</>;\n },\n },\n preview: {\n select: {\n kind: \"media.kind\",\n },\n },\n});\n","import { createIconSpan, type IconSpanOptions } from \"./icon\";\nimport { media } from \"./media\";\n\n/** @public */\nfunction createSpans(options?: { icon?: IconSpanOptions }) {\n return [createIconSpan(options?.icon), media] as const;\n}\n\nexport { createSpans };\n","import type { BlockStyleDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst h2 = {\n title: \"Heading 2\",\n value: `${typeName}.style.h2`,\n component: ({ children }) => (\n <h2\n style={{\n fontSize: \"2.0625rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(41 / 33)\",\n }}\n >\n {children}\n </h2>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h3 = {\n title: \"Heading 3\",\n value: `${typeName}.style.h3`,\n component: ({ children }) => (\n <h3\n style={{\n fontSize: \"1.6875rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(35 / 27)\",\n }}\n >\n {children}\n </h3>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h4 = {\n title: \"Heading 4\",\n value: `${typeName}.style.h4`,\n component: ({ children }) => (\n <h4\n style={{\n fontSize: \"1.3125rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(29 / 21)\",\n }}\n >\n {children}\n </h4>\n ),\n} as const satisfies BlockStyleDefinition;\n\n/** @public */\nfunction createStyles() {\n return [h2, h3, h4] as const;\n}\n\nexport { createStyles };\n"],"names":["ColorText","styled","span","color","defaultResolveColor","value","createTextColorAnnotation","options","resolveColor","renderAnnotation","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","jsx","renderDefault","ColorBg","createHighlightColorAnnotation","HighlightIcon","link","LinkIcon","collapsed","collapsible","createAnnotations","textColor","highlightColor","strong","BoldIcon","component","children","em","ItalicIcon","code","CodeIcon","sup","verticalAlign","createDecorators","bullet","UlistIcon","number","OlistIcon","createLists","defaultRenderIconPreview","createIconSpan","renderPreview","defineArrayMember","description","Fragment","preview","React","isValidElement","media","fallbackTitle","select","prepare","inline","video","image","motion","kind","createSpans","h2","fontSize","fontWeight","lineHeight","h3","h4","createStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parts.cjs","sources":["../src/parts/annotations/color.tsx","../src/parts/annotations/link.tsx","../src/parts/annotations/index.tsx","../src/parts/decorators/index.tsx","../src/parts/lists/index.tsx","../src/parts/spans/icon.tsx","../src/parts/spans/media.tsx","../src/parts/spans/index.tsx","../src/parts/styles/index.tsx"],"sourcesContent":["import { ColorWheelIcon, HighlightIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { styled } from \"styled-components\";\nimport { typeName } from \"../../types\";\n\ntype ColorAnnotationOptions = {\n renderValue?: (value: string | undefined) => string | undefined;\n};\n\nconst ColorText = styled.span<{ $color?: string }>`\n & > span {\n background-color: inherit;\n border-bottom: unset;\n color: ${({ $color = \"inherit\" }) => $color};\n }\n`;\n\nfunction defaultResolveColor(value: string | undefined) {\n return value;\n}\n\nfunction createTextColorAnnotation(options?: ColorAnnotationOptions) {\n const renderValue = options?.renderValue ?? defaultResolveColor;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.textColor`,\n title: \"Text Color\",\n icon: ColorWheelIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const value = renderValue(props.value?.color);\n return <ColorText $color={value}>{props.renderDefault(props)}</ColorText>;\n },\n },\n });\n}\n\nconst ColorBg = styled.span<{ $color?: string }>`\n & > span {\n background-color: ${({ $color = \"inherit\" }) => $color};\n border-bottom: unset;\n color: inherit;\n }\n`;\n\nfunction createHighlightColorAnnotation(options?: ColorAnnotationOptions) {\n const renderValue = options?.renderValue ?? defaultResolveColor;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.highlightColor`,\n title: \"Highlight Color\",\n icon: HighlightIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const value = renderValue(props.value?.color);\n return <ColorBg $color={value}>{props.renderDefault(props)}</ColorBg>;\n },\n },\n });\n}\n\nexport { createTextColorAnnotation, createHighlightColorAnnotation, type ColorAnnotationOptions };\n","import { LinkIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const link = defineField({\n type: \"wild.link\",\n name: `${typeName}.annotation.link`,\n title: \"Link\",\n icon: LinkIcon,\n options: {\n collapsed: false,\n collapsible: false,\n },\n});\n","import { type ColorAnnotationOptions, createHighlightColorAnnotation, createTextColorAnnotation } from \"./color\";\nimport { link } from \"./link\";\n\n/** @public */\nfunction createAnnotations(options?: { textColor?: ColorAnnotationOptions; highlightColor?: ColorAnnotationOptions }) {\n return [link, createTextColorAnnotation(options?.textColor), createHighlightColorAnnotation(options?.highlightColor)] as const;\n}\n\nexport { createAnnotations };\n","import { BoldIcon, CodeIcon, ItalicIcon } from \"@sanity/icons\";\nimport type { BlockDecoratorDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst strong = {\n title: \"Strong\",\n value: `${typeName}.decorator.strong`,\n icon: BoldIcon,\n component: ({ children }) => <strong>{children}</strong>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst em = {\n title: \"Emphasis\",\n value: `${typeName}.decorator.em`,\n icon: ItalicIcon,\n component: ({ children }) => <em>{children}</em>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst code = {\n title: \"Code\",\n value: `${typeName}.decorator.code`,\n icon: CodeIcon,\n component: ({ children }) => <code>{children}</code>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst sup = {\n title: \"Sup\",\n value: `${typeName}.decorator.sup`,\n icon: () => <sup>[1]</sup>,\n component: ({ children }) => <sup style={{ verticalAlign: \"super\" }}>{children}</sup>,\n} as const satisfies BlockDecoratorDefinition;\n\n/** @public */\nfunction createDecorators() {\n return [strong, em, code, sup] as const;\n}\n\nexport { createDecorators };\n","import { OlistIcon, UlistIcon } from \"@sanity/icons\";\nimport type { BlockListDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst bullet = {\n title: \"Bullet\",\n value: `${typeName}.list.bullet`,\n icon: UlistIcon,\n} as const satisfies BlockListDefinition;\n\nconst number = {\n title: \"Number\",\n value: `${typeName}.list.number`,\n icon: OlistIcon,\n} as const satisfies BlockListDefinition;\n\n/** @public */\nfunction createLists() {\n return [bullet, number] as const;\n}\n\nexport { createLists };\n","import * as React from \"react\";\nimport { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\ntype IconSpanOptions = {\n renderValuePreview?: (value?: string) => React.ReactNode;\n};\n\nfunction defaultRenderIconPreview(value?: React.ReactNode) {\n if (React.isValidElement(value)) return value;\n return (\n <span role=\"img\" className=\"inline-block size-[1em] shrink-0 text-current\" title={typeof value === \"string\" ? value : \"Icon\"}>\n 🧿\n </span>\n );\n}\n\nfunction createIconSpan(options?: IconSpanOptions) {\n const renderValuePreview = options?.renderValuePreview;\n\n return defineArrayMember({\n name: `${typeName}.span.icon`,\n type: \"object\",\n title: \"Icon\",\n description: \"Insert an icon.\",\n icon: () => <>🧿</>,\n fields: [defineField({ name: \"icon\", type: \"wild.icon\" })],\n components: {\n // This is the inline-preview in the PortableText editor.\n // It gets its props from the prepare function below.\n preview: (props) => {\n return React.isValidElement(props.media) ? props.media : props.fallbackTitle;\n },\n },\n preview: {\n select: {\n icon: \"icon\",\n },\n prepare({ icon }) {\n return {\n media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon),\n };\n },\n },\n });\n}\n\nexport { createIconSpan, type IconSpanOptions };\n","import { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const media = defineArrayMember({\n name: `${typeName}.span.media`,\n type: \"object\",\n title: \"Inline Media\",\n description: \"Embed inline video or image content.\",\n icon: () => <>🫧</>,\n fields: [\n defineField({\n name: \"media\",\n type: \"wild.media\",\n options: {\n inline: true,\n },\n }),\n ],\n components: {\n // This is the inline-preview in the PortableText editor.\n preview: (props) => {\n const icons = {\n video: <>🎥</>,\n image: <>🖼️</>,\n motion: <>🌀</>,\n };\n\n // @ts-expect-error: It gets its props from the prepare function below.\n return icons[props.kind as keyof typeof icons] || <>🖼️</>;\n },\n },\n preview: {\n select: {\n kind: \"media.kind\",\n },\n },\n});\n","import { createIconSpan, type IconSpanOptions } from \"./icon\";\nimport { media } from \"./media\";\n\n/** @public */\nfunction createSpans(options?: { icon?: IconSpanOptions }) {\n return [createIconSpan(options?.icon), media] as const;\n}\n\nexport { createSpans };\n","import type { BlockStyleDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst h2 = {\n title: \"Heading 2\",\n value: `${typeName}.style.h2`,\n component: ({ children }) => (\n <h2\n style={{\n fontSize: \"2.0625rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(41 / 33)\",\n }}\n >\n {children}\n </h2>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h3 = {\n title: \"Heading 3\",\n value: `${typeName}.style.h3`,\n component: ({ children }) => (\n <h3\n style={{\n fontSize: \"1.6875rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(35 / 27)\",\n }}\n >\n {children}\n </h3>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h4 = {\n title: \"Heading 4\",\n value: `${typeName}.style.h4`,\n component: ({ children }) => (\n <h4\n style={{\n fontSize: \"1.3125rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(29 / 21)\",\n }}\n >\n {children}\n </h4>\n ),\n} as const satisfies BlockStyleDefinition;\n\n/** @public */\nfunction createStyles() {\n return [h2, h3, h4] as const;\n}\n\nexport { createStyles };\n"],"names":["ColorText","styled","span","$color","defaultResolveColor","value","createTextColorAnnotation","options","renderValue","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","color","renderDefault","ColorBg","createHighlightColorAnnotation","HighlightIcon","link","LinkIcon","collapsed","collapsible","createAnnotations","textColor","highlightColor","strong","BoldIcon","component","children","jsx","em","ItalicIcon","code","CodeIcon","sup","verticalAlign","createDecorators","bullet","UlistIcon","number","OlistIcon","createLists","defaultRenderIconPreview","React","isValidElement","createIconSpan","renderValuePreview","defineArrayMember","description","Fragment","preview","media","fallbackTitle","select","prepare","inline","video","image","motion","kind","createSpans","h2","fontSize","fontWeight","lineHeight","h3","h4","createStyles"],"mappings":"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"}
|
package/dist/parts.d.cts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as sanity77 from "sanity";
|
|
2
|
-
import
|
|
3
|
-
import * as react31 from "react";
|
|
2
|
+
import * as react22 from "react";
|
|
4
3
|
type ColorAnnotationOptions = {
|
|
5
|
-
|
|
6
|
-
renderAnnotation?: (props: BlockAnnotationProps, color?: string) => React.JSX.Element;
|
|
4
|
+
renderValue?: (value: string | undefined) => string | undefined;
|
|
7
5
|
};
|
|
8
6
|
/** @public */
|
|
9
7
|
declare function createAnnotations(options?: {
|
|
@@ -12,7 +10,7 @@ declare function createAnnotations(options?: {
|
|
|
12
10
|
}): readonly [{
|
|
13
11
|
type: "wild.link";
|
|
14
12
|
name: "wild.richtext.annotation.link";
|
|
15
|
-
} & sanity77.TypeAliasDefinition<"wild.link", "string" | "number" | "boolean" | "object" | "wild.
|
|
13
|
+
} & sanity77.TypeAliasDefinition<"wild.link", "string" | "number" | "boolean" | "object" | "wild.richtext" | "wild.media" | "wild.quote" | "array" | "block" | "date" | "datetime" | "document" | "file" | "geopoint" | "image" | "reference" | "crossDatasetReference" | "globalDocumentReference" | "slug" | "text" | "url" | "email" | undefined> & {
|
|
16
14
|
preview?: sanity77.PreviewConfig<Record<string, string>, Record<never, any>> | undefined;
|
|
17
15
|
} & sanity77.FieldDefinitionBase & sanity77.WidenValidation & sanity77.WidenInitialValue, {
|
|
18
16
|
type: "object";
|
|
@@ -29,44 +27,44 @@ declare function createAnnotations(options?: {
|
|
|
29
27
|
declare function createDecorators(): readonly [{
|
|
30
28
|
readonly title: "Strong";
|
|
31
29
|
readonly value: "wild.richtext.decorator.strong";
|
|
32
|
-
readonly icon:
|
|
30
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
33
31
|
readonly component: ({
|
|
34
32
|
children
|
|
35
|
-
}: BlockDecoratorProps) =>
|
|
33
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
36
34
|
}, {
|
|
37
35
|
readonly title: "Emphasis";
|
|
38
36
|
readonly value: "wild.richtext.decorator.em";
|
|
39
|
-
readonly icon:
|
|
37
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
40
38
|
readonly component: ({
|
|
41
39
|
children
|
|
42
|
-
}: BlockDecoratorProps) =>
|
|
40
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
43
41
|
}, {
|
|
44
42
|
readonly title: "Code";
|
|
45
43
|
readonly value: "wild.richtext.decorator.code";
|
|
46
|
-
readonly icon:
|
|
44
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
47
45
|
readonly component: ({
|
|
48
46
|
children
|
|
49
|
-
}: BlockDecoratorProps) =>
|
|
47
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
50
48
|
}, {
|
|
51
49
|
readonly title: "Sup";
|
|
52
50
|
readonly value: "wild.richtext.decorator.sup";
|
|
53
|
-
readonly icon: () =>
|
|
51
|
+
readonly icon: () => react22.JSX.Element;
|
|
54
52
|
readonly component: ({
|
|
55
53
|
children
|
|
56
|
-
}: BlockDecoratorProps) =>
|
|
54
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
57
55
|
}];
|
|
58
56
|
/** @public */
|
|
59
57
|
declare function createLists(): readonly [{
|
|
60
58
|
readonly title: "Bullet";
|
|
61
59
|
readonly value: "wild.richtext.list.bullet";
|
|
62
|
-
readonly icon:
|
|
60
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
63
61
|
}, {
|
|
64
62
|
readonly title: "Number";
|
|
65
63
|
readonly value: "wild.richtext.list.number";
|
|
66
|
-
readonly icon:
|
|
64
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
67
65
|
}];
|
|
68
66
|
type IconSpanOptions = {
|
|
69
|
-
|
|
67
|
+
renderValuePreview?: (value?: string) => react22.ReactNode;
|
|
70
68
|
};
|
|
71
69
|
declare function createIconSpan(options?: IconSpanOptions): {
|
|
72
70
|
type: "object";
|
|
@@ -100,18 +98,18 @@ declare function createStyles(): readonly [{
|
|
|
100
98
|
readonly value: "wild.richtext.style.h2";
|
|
101
99
|
readonly component: ({
|
|
102
100
|
children
|
|
103
|
-
}: BlockStyleProps) =>
|
|
101
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
104
102
|
}, {
|
|
105
103
|
readonly title: "Heading 3";
|
|
106
104
|
readonly value: "wild.richtext.style.h3";
|
|
107
105
|
readonly component: ({
|
|
108
106
|
children
|
|
109
|
-
}: BlockStyleProps) =>
|
|
107
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
110
108
|
}, {
|
|
111
109
|
readonly title: "Heading 4";
|
|
112
110
|
readonly value: "wild.richtext.style.h4";
|
|
113
111
|
readonly component: ({
|
|
114
112
|
children
|
|
115
|
-
}: BlockStyleProps) =>
|
|
113
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
116
114
|
}];
|
|
117
115
|
export { createAnnotations, createDecorators, createIconSpan, createLists, createSpans, createStyles };
|
package/dist/parts.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import * as sanity81 from "sanity";
|
|
2
|
-
import
|
|
3
|
-
import * as react31 from "react";
|
|
2
|
+
import * as react22 from "react";
|
|
4
3
|
type ColorAnnotationOptions = {
|
|
5
|
-
|
|
6
|
-
renderAnnotation?: (props: BlockAnnotationProps, color?: string) => React.JSX.Element;
|
|
4
|
+
renderValue?: (value: string | undefined) => string | undefined;
|
|
7
5
|
};
|
|
8
6
|
/** @public */
|
|
9
7
|
declare function createAnnotations(options?: {
|
|
@@ -29,44 +27,44 @@ declare function createAnnotations(options?: {
|
|
|
29
27
|
declare function createDecorators(): readonly [{
|
|
30
28
|
readonly title: "Strong";
|
|
31
29
|
readonly value: "wild.richtext.decorator.strong";
|
|
32
|
-
readonly icon:
|
|
30
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
33
31
|
readonly component: ({
|
|
34
32
|
children
|
|
35
|
-
}: BlockDecoratorProps) =>
|
|
33
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
36
34
|
}, {
|
|
37
35
|
readonly title: "Emphasis";
|
|
38
36
|
readonly value: "wild.richtext.decorator.em";
|
|
39
|
-
readonly icon:
|
|
37
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
40
38
|
readonly component: ({
|
|
41
39
|
children
|
|
42
|
-
}: BlockDecoratorProps) =>
|
|
40
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
43
41
|
}, {
|
|
44
42
|
readonly title: "Code";
|
|
45
43
|
readonly value: "wild.richtext.decorator.code";
|
|
46
|
-
readonly icon:
|
|
44
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
47
45
|
readonly component: ({
|
|
48
46
|
children
|
|
49
|
-
}: BlockDecoratorProps) =>
|
|
47
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
50
48
|
}, {
|
|
51
49
|
readonly title: "Sup";
|
|
52
50
|
readonly value: "wild.richtext.decorator.sup";
|
|
53
|
-
readonly icon: () =>
|
|
51
|
+
readonly icon: () => react22.JSX.Element;
|
|
54
52
|
readonly component: ({
|
|
55
53
|
children
|
|
56
|
-
}: BlockDecoratorProps) =>
|
|
54
|
+
}: BlockDecoratorProps) => react22.JSX.Element;
|
|
57
55
|
}];
|
|
58
56
|
/** @public */
|
|
59
57
|
declare function createLists(): readonly [{
|
|
60
58
|
readonly title: "Bullet";
|
|
61
59
|
readonly value: "wild.richtext.list.bullet";
|
|
62
|
-
readonly icon:
|
|
60
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
63
61
|
}, {
|
|
64
62
|
readonly title: "Number";
|
|
65
63
|
readonly value: "wild.richtext.list.number";
|
|
66
|
-
readonly icon:
|
|
64
|
+
readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
|
|
67
65
|
}];
|
|
68
66
|
type IconSpanOptions = {
|
|
69
|
-
|
|
67
|
+
renderValuePreview?: (value?: string) => react22.ReactNode;
|
|
70
68
|
};
|
|
71
69
|
declare function createIconSpan(options?: IconSpanOptions): {
|
|
72
70
|
type: "object";
|
|
@@ -100,18 +98,18 @@ declare function createStyles(): readonly [{
|
|
|
100
98
|
readonly value: "wild.richtext.style.h2";
|
|
101
99
|
readonly component: ({
|
|
102
100
|
children
|
|
103
|
-
}: BlockStyleProps) =>
|
|
101
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
104
102
|
}, {
|
|
105
103
|
readonly title: "Heading 3";
|
|
106
104
|
readonly value: "wild.richtext.style.h3";
|
|
107
105
|
readonly component: ({
|
|
108
106
|
children
|
|
109
|
-
}: BlockStyleProps) =>
|
|
107
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
110
108
|
}, {
|
|
111
109
|
readonly title: "Heading 4";
|
|
112
110
|
readonly value: "wild.richtext.style.h4";
|
|
113
111
|
readonly component: ({
|
|
114
112
|
children
|
|
115
|
-
}: BlockStyleProps) =>
|
|
113
|
+
}: BlockStyleProps) => react22.JSX.Element;
|
|
116
114
|
}];
|
|
117
115
|
export { createAnnotations, createDecorators, createIconSpan, createLists, createSpans, createStyles };
|
package/dist/parts.js
CHANGED
|
@@ -9,17 +9,15 @@ const ColorText = styled.span`
|
|
|
9
9
|
background-color: inherit;
|
|
10
10
|
border-bottom: unset;
|
|
11
11
|
color: ${({
|
|
12
|
-
color = "inherit"
|
|
13
|
-
}) => color};
|
|
12
|
+
$color = "inherit"
|
|
13
|
+
}) => $color};
|
|
14
14
|
}
|
|
15
15
|
`;
|
|
16
16
|
function defaultResolveColor(value) {
|
|
17
|
-
|
|
18
|
-
if (value && typeof value == "object" && "value" in value && typeof value.value == "string")
|
|
19
|
-
return value.value;
|
|
17
|
+
return value;
|
|
20
18
|
}
|
|
21
19
|
function createTextColorAnnotation(options) {
|
|
22
|
-
const
|
|
20
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
23
21
|
return defineField({
|
|
24
22
|
type: "object",
|
|
25
23
|
name: `${typeName}.annotation.textColor`,
|
|
@@ -31,8 +29,8 @@ function createTextColorAnnotation(options) {
|
|
|
31
29
|
})],
|
|
32
30
|
components: {
|
|
33
31
|
annotation: (props) => {
|
|
34
|
-
const
|
|
35
|
-
return
|
|
32
|
+
const value = renderValue(props.value?.color);
|
|
33
|
+
return /* @__PURE__ */ jsx(ColorText, { $color: value, children: props.renderDefault(props) });
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
});
|
|
@@ -40,14 +38,14 @@ function createTextColorAnnotation(options) {
|
|
|
40
38
|
const ColorBg = styled.span`
|
|
41
39
|
& > span {
|
|
42
40
|
background-color: ${({
|
|
43
|
-
color = "inherit"
|
|
44
|
-
}) => color};
|
|
41
|
+
$color = "inherit"
|
|
42
|
+
}) => $color};
|
|
45
43
|
border-bottom: unset;
|
|
46
44
|
color: inherit;
|
|
47
45
|
}
|
|
48
46
|
`;
|
|
49
47
|
function createHighlightColorAnnotation(options) {
|
|
50
|
-
const
|
|
48
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
51
49
|
return defineField({
|
|
52
50
|
type: "object",
|
|
53
51
|
name: `${typeName}.annotation.highlightColor`,
|
|
@@ -59,8 +57,8 @@ function createHighlightColorAnnotation(options) {
|
|
|
59
57
|
})],
|
|
60
58
|
components: {
|
|
61
59
|
annotation: (props) => {
|
|
62
|
-
const
|
|
63
|
-
return
|
|
60
|
+
const value = renderValue(props.value?.color);
|
|
61
|
+
return /* @__PURE__ */ jsx(ColorBg, { $color: value, children: props.renderDefault(props) });
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
});
|
|
@@ -125,10 +123,10 @@ function createLists() {
|
|
|
125
123
|
return [bullet, number];
|
|
126
124
|
}
|
|
127
125
|
function defaultRenderIconPreview(value) {
|
|
128
|
-
return /* @__PURE__ */ jsx("span", { role: "img", className: "inline-block size-[1em] shrink-0 text-current", title: value
|
|
126
|
+
return React.isValidElement(value) ? value : /* @__PURE__ */ jsx("span", { role: "img", className: "inline-block size-[1em] shrink-0 text-current", title: typeof value == "string" ? value : "Icon", children: "\u{1F9FF}" });
|
|
129
127
|
}
|
|
130
128
|
function createIconSpan(options) {
|
|
131
|
-
const
|
|
129
|
+
const renderValuePreview = options?.renderValuePreview;
|
|
132
130
|
return defineArrayMember({
|
|
133
131
|
name: `${typeName}.span.icon`,
|
|
134
132
|
type: "object",
|
|
@@ -152,7 +150,7 @@ function createIconSpan(options) {
|
|
|
152
150
|
icon
|
|
153
151
|
}) {
|
|
154
152
|
return {
|
|
155
|
-
media:
|
|
153
|
+
media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon)
|
|
156
154
|
};
|
|
157
155
|
}
|
|
158
156
|
}
|
package/dist/parts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","sources":["../src/parts/annotations/color.tsx","../src/parts/annotations/link.tsx","../src/parts/annotations/index.tsx","../src/parts/decorators/index.tsx","../src/parts/lists/index.tsx","../src/parts/spans/icon.tsx","../src/parts/spans/media.tsx","../src/parts/spans/index.tsx","../src/parts/styles/index.tsx"],"sourcesContent":["import { ColorWheelIcon, HighlightIcon } from \"@sanity/icons\";\nimport { type BlockAnnotationProps, defineField } from \"sanity\";\nimport { styled } from \"styled-components\";\nimport { typeName } from \"../../types\";\n\ntype ColorAnnotationOptions = {\n resolveColor?: (value: unknown) => string | undefined;\n renderAnnotation?: (props: BlockAnnotationProps, color?: string) => React.JSX.Element;\n};\n\nconst ColorText = styled.span<{ color?: string }>`\n & > span {\n background-color: inherit;\n border-bottom: unset;\n color: ${({ color = \"inherit\" }) => color};\n }\n`;\n\nfunction defaultResolveColor(value: unknown) {\n if (typeof value === \"string\") return value;\n if (value && typeof value === \"object\" && \"value\" in value && typeof value.value === \"string\") {\n return value.value;\n }\n return undefined;\n}\n\nfunction createTextColorAnnotation(options?: ColorAnnotationOptions) {\n const resolveColor = options?.resolveColor ?? defaultResolveColor;\n const renderAnnotation = options?.renderAnnotation;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.textColor`,\n title: \"Text Color\",\n icon: ColorWheelIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const color = resolveColor(props.value?.color);\n if (renderAnnotation) return renderAnnotation(props, color);\n return <ColorText color={color}>{props.renderDefault(props)}</ColorText>;\n },\n },\n });\n}\n\nconst ColorBg = styled.span<{ color?: string }>`\n & > span {\n background-color: ${({ color = \"inherit\" }) => color};\n border-bottom: unset;\n color: inherit;\n }\n`;\n\nfunction createHighlightColorAnnotation(options?: ColorAnnotationOptions) {\n const resolveColor = options?.resolveColor ?? defaultResolveColor;\n const renderAnnotation = options?.renderAnnotation;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.highlightColor`,\n title: \"Highlight Color\",\n icon: HighlightIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const color = resolveColor(props.value?.color);\n if (renderAnnotation) return renderAnnotation(props, color);\n return <ColorBg color={color}>{props.renderDefault(props)}</ColorBg>;\n },\n },\n });\n}\n\nexport { createTextColorAnnotation, createHighlightColorAnnotation, type ColorAnnotationOptions };\n","import { LinkIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const link = defineField({\n type: \"wild.link\",\n name: `${typeName}.annotation.link`,\n title: \"Link\",\n icon: LinkIcon,\n options: {\n collapsed: false,\n collapsible: false,\n },\n});\n","import { type ColorAnnotationOptions, createHighlightColorAnnotation, createTextColorAnnotation } from \"./color\";\nimport { link } from \"./link\";\n\n/** @public */\nfunction createAnnotations(options?: { textColor?: ColorAnnotationOptions; highlightColor?: ColorAnnotationOptions }) {\n return [link, createTextColorAnnotation(options?.textColor), createHighlightColorAnnotation(options?.highlightColor)] as const;\n}\n\nexport { createAnnotations };\n","import { BoldIcon, CodeIcon, ItalicIcon } from \"@sanity/icons\";\nimport type { BlockDecoratorDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst strong = {\n title: \"Strong\",\n value: `${typeName}.decorator.strong`,\n icon: BoldIcon,\n component: ({ children }) => <strong>{children}</strong>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst em = {\n title: \"Emphasis\",\n value: `${typeName}.decorator.em`,\n icon: ItalicIcon,\n component: ({ children }) => <em>{children}</em>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst code = {\n title: \"Code\",\n value: `${typeName}.decorator.code`,\n icon: CodeIcon,\n component: ({ children }) => <code>{children}</code>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst sup = {\n title: \"Sup\",\n value: `${typeName}.decorator.sup`,\n icon: () => <sup>[1]</sup>,\n component: ({ children }) => <sup style={{ verticalAlign: \"super\" }}>{children}</sup>,\n} as const satisfies BlockDecoratorDefinition;\n\n/** @public */\nfunction createDecorators() {\n return [strong, em, code, sup] as const;\n}\n\nexport { createDecorators };\n","import { OlistIcon, UlistIcon } from \"@sanity/icons\";\nimport type { BlockListDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst bullet = {\n title: \"Bullet\",\n value: `${typeName}.list.bullet`,\n icon: UlistIcon,\n} as const satisfies BlockListDefinition;\n\nconst number = {\n title: \"Number\",\n value: `${typeName}.list.number`,\n icon: OlistIcon,\n} as const satisfies BlockListDefinition;\n\n/** @public */\nfunction createLists() {\n return [bullet, number] as const;\n}\n\nexport { createLists };\n","import * as React from \"react\";\nimport { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\ntype IconSpanOptions = {\n renderPreview?: (value?: string) => React.ReactNode;\n};\n\nfunction defaultRenderIconPreview(value?: string) {\n return (\n <span role=\"img\" className=\"inline-block size-[1em] shrink-0 text-current\" title={value ?? \"Icon\"}>\n 🧿\n </span>\n );\n}\n\nfunction createIconSpan(options?: IconSpanOptions) {\n const renderPreview = options?.renderPreview ?? defaultRenderIconPreview;\n\n return defineArrayMember({\n name: `${typeName}.span.icon`,\n type: \"object\",\n title: \"Icon\",\n description: \"Insert an icon.\",\n icon: () => <>🧿</>,\n fields: [defineField({ name: \"icon\", type: \"wild.icon\" })],\n components: {\n // This is the inline-preview in the PortableText editor.\n // It gets its props from the prepare function below.\n preview: (props) => {\n return React.isValidElement(props.media) ? props.media : props.fallbackTitle;\n },\n },\n preview: {\n select: {\n icon: \"icon\",\n },\n prepare({ icon }) {\n return {\n media: renderPreview(icon),\n };\n },\n },\n });\n}\n\nexport { createIconSpan, type IconSpanOptions };\n","import { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const media = defineArrayMember({\n name: `${typeName}.span.media`,\n type: \"object\",\n title: \"Inline Media\",\n description: \"Embed inline video or image content.\",\n icon: () => <>🫧</>,\n fields: [\n defineField({\n name: \"media\",\n type: \"wild.media\",\n options: {\n inline: true,\n },\n }),\n ],\n components: {\n // This is the inline-preview in the PortableText editor.\n preview: (props) => {\n const icons = {\n video: <>🎥</>,\n image: <>🖼️</>,\n motion: <>🌀</>,\n };\n\n // @ts-expect-error: It gets its props from the prepare function below.\n return icons[props.kind as keyof typeof icons] || <>🖼️</>;\n },\n },\n preview: {\n select: {\n kind: \"media.kind\",\n },\n },\n});\n","import { createIconSpan, type IconSpanOptions } from \"./icon\";\nimport { media } from \"./media\";\n\n/** @public */\nfunction createSpans(options?: { icon?: IconSpanOptions }) {\n return [createIconSpan(options?.icon), media] as const;\n}\n\nexport { createSpans };\n","import type { BlockStyleDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst h2 = {\n title: \"Heading 2\",\n value: `${typeName}.style.h2`,\n component: ({ children }) => (\n <h2\n style={{\n fontSize: \"2.0625rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(41 / 33)\",\n }}\n >\n {children}\n </h2>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h3 = {\n title: \"Heading 3\",\n value: `${typeName}.style.h3`,\n component: ({ children }) => (\n <h3\n style={{\n fontSize: \"1.6875rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(35 / 27)\",\n }}\n >\n {children}\n </h3>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h4 = {\n title: \"Heading 4\",\n value: `${typeName}.style.h4`,\n component: ({ children }) => (\n <h4\n style={{\n fontSize: \"1.3125rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(29 / 21)\",\n }}\n >\n {children}\n </h4>\n ),\n} as const satisfies BlockStyleDefinition;\n\n/** @public */\nfunction createStyles() {\n return [h2, h3, h4] as const;\n}\n\nexport { createStyles };\n"],"names":["ColorText","styled","span","color","defaultResolveColor","value","createTextColorAnnotation","options","resolveColor","renderAnnotation","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","renderDefault","ColorBg","createHighlightColorAnnotation","HighlightIcon","link","LinkIcon","collapsed","collapsible","createAnnotations","textColor","highlightColor","strong","BoldIcon","component","children","em","ItalicIcon","code","CodeIcon","sup","verticalAlign","createDecorators","bullet","UlistIcon","number","OlistIcon","createLists","defaultRenderIconPreview","createIconSpan","renderPreview","defineArrayMember","description","preview","React","isValidElement","media","fallbackTitle","select","prepare","inline","video","image","motion","kind","createSpans","h2","fontSize","fontWeight","lineHeight","h3","h4","createStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parts.js","sources":["../src/parts/annotations/color.tsx","../src/parts/annotations/link.tsx","../src/parts/annotations/index.tsx","../src/parts/decorators/index.tsx","../src/parts/lists/index.tsx","../src/parts/spans/icon.tsx","../src/parts/spans/media.tsx","../src/parts/spans/index.tsx","../src/parts/styles/index.tsx"],"sourcesContent":["import { ColorWheelIcon, HighlightIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { styled } from \"styled-components\";\nimport { typeName } from \"../../types\";\n\ntype ColorAnnotationOptions = {\n renderValue?: (value: string | undefined) => string | undefined;\n};\n\nconst ColorText = styled.span<{ $color?: string }>`\n & > span {\n background-color: inherit;\n border-bottom: unset;\n color: ${({ $color = \"inherit\" }) => $color};\n }\n`;\n\nfunction defaultResolveColor(value: string | undefined) {\n return value;\n}\n\nfunction createTextColorAnnotation(options?: ColorAnnotationOptions) {\n const renderValue = options?.renderValue ?? defaultResolveColor;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.textColor`,\n title: \"Text Color\",\n icon: ColorWheelIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const value = renderValue(props.value?.color);\n return <ColorText $color={value}>{props.renderDefault(props)}</ColorText>;\n },\n },\n });\n}\n\nconst ColorBg = styled.span<{ $color?: string }>`\n & > span {\n background-color: ${({ $color = \"inherit\" }) => $color};\n border-bottom: unset;\n color: inherit;\n }\n`;\n\nfunction createHighlightColorAnnotation(options?: ColorAnnotationOptions) {\n const renderValue = options?.renderValue ?? defaultResolveColor;\n\n return defineField({\n type: \"object\",\n name: `${typeName}.annotation.highlightColor`,\n title: \"Highlight Color\",\n icon: HighlightIcon,\n fields: [defineField({ name: \"color\", type: \"wild.color\" })],\n components: {\n annotation: (props) => {\n const value = renderValue(props.value?.color);\n return <ColorBg $color={value}>{props.renderDefault(props)}</ColorBg>;\n },\n },\n });\n}\n\nexport { createTextColorAnnotation, createHighlightColorAnnotation, type ColorAnnotationOptions };\n","import { LinkIcon } from \"@sanity/icons\";\nimport { defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const link = defineField({\n type: \"wild.link\",\n name: `${typeName}.annotation.link`,\n title: \"Link\",\n icon: LinkIcon,\n options: {\n collapsed: false,\n collapsible: false,\n },\n});\n","import { type ColorAnnotationOptions, createHighlightColorAnnotation, createTextColorAnnotation } from \"./color\";\nimport { link } from \"./link\";\n\n/** @public */\nfunction createAnnotations(options?: { textColor?: ColorAnnotationOptions; highlightColor?: ColorAnnotationOptions }) {\n return [link, createTextColorAnnotation(options?.textColor), createHighlightColorAnnotation(options?.highlightColor)] as const;\n}\n\nexport { createAnnotations };\n","import { BoldIcon, CodeIcon, ItalicIcon } from \"@sanity/icons\";\nimport type { BlockDecoratorDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst strong = {\n title: \"Strong\",\n value: `${typeName}.decorator.strong`,\n icon: BoldIcon,\n component: ({ children }) => <strong>{children}</strong>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst em = {\n title: \"Emphasis\",\n value: `${typeName}.decorator.em`,\n icon: ItalicIcon,\n component: ({ children }) => <em>{children}</em>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst code = {\n title: \"Code\",\n value: `${typeName}.decorator.code`,\n icon: CodeIcon,\n component: ({ children }) => <code>{children}</code>,\n} as const satisfies BlockDecoratorDefinition;\n\nconst sup = {\n title: \"Sup\",\n value: `${typeName}.decorator.sup`,\n icon: () => <sup>[1]</sup>,\n component: ({ children }) => <sup style={{ verticalAlign: \"super\" }}>{children}</sup>,\n} as const satisfies BlockDecoratorDefinition;\n\n/** @public */\nfunction createDecorators() {\n return [strong, em, code, sup] as const;\n}\n\nexport { createDecorators };\n","import { OlistIcon, UlistIcon } from \"@sanity/icons\";\nimport type { BlockListDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst bullet = {\n title: \"Bullet\",\n value: `${typeName}.list.bullet`,\n icon: UlistIcon,\n} as const satisfies BlockListDefinition;\n\nconst number = {\n title: \"Number\",\n value: `${typeName}.list.number`,\n icon: OlistIcon,\n} as const satisfies BlockListDefinition;\n\n/** @public */\nfunction createLists() {\n return [bullet, number] as const;\n}\n\nexport { createLists };\n","import * as React from \"react\";\nimport { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\ntype IconSpanOptions = {\n renderValuePreview?: (value?: string) => React.ReactNode;\n};\n\nfunction defaultRenderIconPreview(value?: React.ReactNode) {\n if (React.isValidElement(value)) return value;\n return (\n <span role=\"img\" className=\"inline-block size-[1em] shrink-0 text-current\" title={typeof value === \"string\" ? value : \"Icon\"}>\n 🧿\n </span>\n );\n}\n\nfunction createIconSpan(options?: IconSpanOptions) {\n const renderValuePreview = options?.renderValuePreview;\n\n return defineArrayMember({\n name: `${typeName}.span.icon`,\n type: \"object\",\n title: \"Icon\",\n description: \"Insert an icon.\",\n icon: () => <>🧿</>,\n fields: [defineField({ name: \"icon\", type: \"wild.icon\" })],\n components: {\n // This is the inline-preview in the PortableText editor.\n // It gets its props from the prepare function below.\n preview: (props) => {\n return React.isValidElement(props.media) ? props.media : props.fallbackTitle;\n },\n },\n preview: {\n select: {\n icon: \"icon\",\n },\n prepare({ icon }) {\n return {\n media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon),\n };\n },\n },\n });\n}\n\nexport { createIconSpan, type IconSpanOptions };\n","import { defineArrayMember, defineField } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nexport const media = defineArrayMember({\n name: `${typeName}.span.media`,\n type: \"object\",\n title: \"Inline Media\",\n description: \"Embed inline video or image content.\",\n icon: () => <>🫧</>,\n fields: [\n defineField({\n name: \"media\",\n type: \"wild.media\",\n options: {\n inline: true,\n },\n }),\n ],\n components: {\n // This is the inline-preview in the PortableText editor.\n preview: (props) => {\n const icons = {\n video: <>🎥</>,\n image: <>🖼️</>,\n motion: <>🌀</>,\n };\n\n // @ts-expect-error: It gets its props from the prepare function below.\n return icons[props.kind as keyof typeof icons] || <>🖼️</>;\n },\n },\n preview: {\n select: {\n kind: \"media.kind\",\n },\n },\n});\n","import { createIconSpan, type IconSpanOptions } from \"./icon\";\nimport { media } from \"./media\";\n\n/** @public */\nfunction createSpans(options?: { icon?: IconSpanOptions }) {\n return [createIconSpan(options?.icon), media] as const;\n}\n\nexport { createSpans };\n","import type { BlockStyleDefinition } from \"sanity\";\nimport { typeName } from \"../../types\";\n\nconst h2 = {\n title: \"Heading 2\",\n value: `${typeName}.style.h2`,\n component: ({ children }) => (\n <h2\n style={{\n fontSize: \"2.0625rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(41 / 33)\",\n }}\n >\n {children}\n </h2>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h3 = {\n title: \"Heading 3\",\n value: `${typeName}.style.h3`,\n component: ({ children }) => (\n <h3\n style={{\n fontSize: \"1.6875rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(35 / 27)\",\n }}\n >\n {children}\n </h3>\n ),\n} as const satisfies BlockStyleDefinition;\n\nconst h4 = {\n title: \"Heading 4\",\n value: `${typeName}.style.h4`,\n component: ({ children }) => (\n <h4\n style={{\n fontSize: \"1.3125rem\",\n fontWeight: \"700\",\n lineHeight: \"calc(29 / 21)\",\n }}\n >\n {children}\n </h4>\n ),\n} as const satisfies BlockStyleDefinition;\n\n/** @public */\nfunction createStyles() {\n return [h2, h3, h4] as const;\n}\n\nexport { createStyles };\n"],"names":["ColorText","styled","span","$color","defaultResolveColor","value","createTextColorAnnotation","options","renderValue","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","color","renderDefault","ColorBg","createHighlightColorAnnotation","HighlightIcon","link","LinkIcon","collapsed","collapsible","createAnnotations","textColor","highlightColor","strong","BoldIcon","component","children","em","ItalicIcon","code","CodeIcon","sup","verticalAlign","createDecorators","bullet","UlistIcon","number","OlistIcon","createLists","defaultRenderIconPreview","React","isValidElement","createIconSpan","renderValuePreview","defineArrayMember","description","preview","media","fallbackTitle","select","prepare","inline","video","image","motion","kind","createSpans","h2","fontSize","fontWeight","lineHeight","h3","h4","createStyles"],"mappings":"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"}
|
package/dist/utils.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as sanity92 from "sanity";
|
|
2
2
|
import { ObjectDefinition } from "sanity";
|
|
3
3
|
/**
|
|
4
4
|
* Creates a schema definition for a new richtext block.
|
|
@@ -7,11 +7,11 @@ import { ObjectDefinition } from "sanity";
|
|
|
7
7
|
declare function createBlock(block: ObjectDefinition): {
|
|
8
8
|
type: "object";
|
|
9
9
|
name?: string | undefined;
|
|
10
|
-
} & Omit<
|
|
11
|
-
preview?:
|
|
10
|
+
} & Omit<sanity92.ArrayOfEntry<ObjectDefinition>, "preview"> & {
|
|
11
|
+
preview?: sanity92.PreviewConfig<{
|
|
12
12
|
[x: string]: string;
|
|
13
13
|
}, Record<string, string>> | undefined;
|
|
14
|
-
} &
|
|
14
|
+
} & sanity92.WidenValidation & sanity92.WidenInitialValue;
|
|
15
15
|
/**
|
|
16
16
|
* Reshapes the list kind of an array field.
|
|
17
17
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@madebywild/sanity-richtext-field",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"ts-deepmerge": "^7.0.3",
|
|
55
55
|
"@madebywild/sanity-media-field": "1.0.0",
|
|
56
|
-
"@madebywild/sanity-
|
|
57
|
-
"@madebywild/sanity-
|
|
56
|
+
"@madebywild/sanity-quote-field": "1.0.2",
|
|
57
|
+
"@madebywild/sanity-utils": "1.0.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@sanity/icons": "^3.7.4",
|
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
import { ColorWheelIcon, HighlightIcon } from "@sanity/icons";
|
|
2
|
-
import {
|
|
2
|
+
import { defineField } from "sanity";
|
|
3
3
|
import { styled } from "styled-components";
|
|
4
4
|
import { typeName } from "../../types";
|
|
5
5
|
|
|
6
6
|
type ColorAnnotationOptions = {
|
|
7
|
-
|
|
8
|
-
renderAnnotation?: (props: BlockAnnotationProps, color?: string) => React.JSX.Element;
|
|
7
|
+
renderValue?: (value: string | undefined) => string | undefined;
|
|
9
8
|
};
|
|
10
9
|
|
|
11
|
-
const ColorText = styled.span<{ color?: string }>`
|
|
10
|
+
const ColorText = styled.span<{ $color?: string }>`
|
|
12
11
|
& > span {
|
|
13
12
|
background-color: inherit;
|
|
14
13
|
border-bottom: unset;
|
|
15
|
-
color: ${({ color = "inherit" }) => color};
|
|
14
|
+
color: ${({ $color = "inherit" }) => $color};
|
|
16
15
|
}
|
|
17
16
|
`;
|
|
18
17
|
|
|
19
|
-
function defaultResolveColor(value:
|
|
20
|
-
|
|
21
|
-
if (value && typeof value === "object" && "value" in value && typeof value.value === "string") {
|
|
22
|
-
return value.value;
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
18
|
+
function defaultResolveColor(value: string | undefined) {
|
|
19
|
+
return value;
|
|
25
20
|
}
|
|
26
21
|
|
|
27
22
|
function createTextColorAnnotation(options?: ColorAnnotationOptions) {
|
|
28
|
-
const
|
|
29
|
-
const renderAnnotation = options?.renderAnnotation;
|
|
23
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
30
24
|
|
|
31
25
|
return defineField({
|
|
32
26
|
type: "object",
|
|
@@ -36,25 +30,23 @@ function createTextColorAnnotation(options?: ColorAnnotationOptions) {
|
|
|
36
30
|
fields: [defineField({ name: "color", type: "wild.color" })],
|
|
37
31
|
components: {
|
|
38
32
|
annotation: (props) => {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
return <ColorText color={color}>{props.renderDefault(props)}</ColorText>;
|
|
33
|
+
const value = renderValue(props.value?.color);
|
|
34
|
+
return <ColorText $color={value}>{props.renderDefault(props)}</ColorText>;
|
|
42
35
|
},
|
|
43
36
|
},
|
|
44
37
|
});
|
|
45
38
|
}
|
|
46
39
|
|
|
47
|
-
const ColorBg = styled.span<{ color?: string }>`
|
|
40
|
+
const ColorBg = styled.span<{ $color?: string }>`
|
|
48
41
|
& > span {
|
|
49
|
-
background-color: ${({ color = "inherit" }) => color};
|
|
42
|
+
background-color: ${({ $color = "inherit" }) => $color};
|
|
50
43
|
border-bottom: unset;
|
|
51
44
|
color: inherit;
|
|
52
45
|
}
|
|
53
46
|
`;
|
|
54
47
|
|
|
55
48
|
function createHighlightColorAnnotation(options?: ColorAnnotationOptions) {
|
|
56
|
-
const
|
|
57
|
-
const renderAnnotation = options?.renderAnnotation;
|
|
49
|
+
const renderValue = options?.renderValue ?? defaultResolveColor;
|
|
58
50
|
|
|
59
51
|
return defineField({
|
|
60
52
|
type: "object",
|
|
@@ -64,9 +56,8 @@ function createHighlightColorAnnotation(options?: ColorAnnotationOptions) {
|
|
|
64
56
|
fields: [defineField({ name: "color", type: "wild.color" })],
|
|
65
57
|
components: {
|
|
66
58
|
annotation: (props) => {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
return <ColorBg color={color}>{props.renderDefault(props)}</ColorBg>;
|
|
59
|
+
const value = renderValue(props.value?.color);
|
|
60
|
+
return <ColorBg $color={value}>{props.renderDefault(props)}</ColorBg>;
|
|
70
61
|
},
|
|
71
62
|
},
|
|
72
63
|
});
|
package/src/parts/spans/icon.tsx
CHANGED
|
@@ -3,19 +3,20 @@ import { defineArrayMember, defineField } from "sanity";
|
|
|
3
3
|
import { typeName } from "../../types";
|
|
4
4
|
|
|
5
5
|
type IconSpanOptions = {
|
|
6
|
-
|
|
6
|
+
renderValuePreview?: (value?: string) => React.ReactNode;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
function defaultRenderIconPreview(value?:
|
|
9
|
+
function defaultRenderIconPreview(value?: React.ReactNode) {
|
|
10
|
+
if (React.isValidElement(value)) return value;
|
|
10
11
|
return (
|
|
11
|
-
<span role="img" className="inline-block size-[1em] shrink-0 text-current" title={value
|
|
12
|
+
<span role="img" className="inline-block size-[1em] shrink-0 text-current" title={typeof value === "string" ? value : "Icon"}>
|
|
12
13
|
🧿
|
|
13
14
|
</span>
|
|
14
15
|
);
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
function createIconSpan(options?: IconSpanOptions) {
|
|
18
|
-
const
|
|
19
|
+
const renderValuePreview = options?.renderValuePreview;
|
|
19
20
|
|
|
20
21
|
return defineArrayMember({
|
|
21
22
|
name: `${typeName}.span.icon`,
|
|
@@ -37,7 +38,7 @@ function createIconSpan(options?: IconSpanOptions) {
|
|
|
37
38
|
},
|
|
38
39
|
prepare({ icon }) {
|
|
39
40
|
return {
|
|
40
|
-
media:
|
|
41
|
+
media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon),
|
|
41
42
|
};
|
|
42
43
|
},
|
|
43
44
|
},
|