@madebywild/sanity-richtext-field 2.0.0 → 3.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 CHANGED
@@ -58,17 +58,21 @@ wildSanityRichtextFieldPlugin({
58
58
  annotations: [
59
59
  ...createAnnotations({
60
60
  textColor: {
61
- renderValue: (value) => getColor(value)?.cssVar,
61
+ renderValue: (value, props) => (
62
+ <span style={{ color: getColor(value)?.cssVar }}>{props.renderDefault(props)}</span>
63
+ ),
62
64
  },
63
65
  highlightColor: {
64
- renderValue: (value) => getColor(value)?.cssVar,
66
+ renderValue: (value, props) => (
67
+ <mark style={{ backgroundColor: getColor(value)?.cssVar }}>{props.renderDefault(props)}</mark>
68
+ ),
65
69
  },
66
70
  }),
67
71
  ],
68
72
  spans: [
69
73
  ...createSpans({
70
74
  icon: {
71
- renderValuePreview: (value) => <Icon name={value as IconName} />,
75
+ renderValue: (value) => <Icon name={value as IconName} />,
72
76
  },
73
77
  }),
74
78
  ],
@@ -1,4 +1,4 @@
1
- import * as sanity69 from "sanity";
1
+ import * as sanity65 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<sanity69.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity69.PreviewConfig<{
19
+ } & Omit<sanity65.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity65.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity69.WidenValidation & sanity69.WidenInitialValue;
23
+ } & sanity65.WidenValidation & sanity65.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity73 from "sanity";
1
+ import * as sanity72 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<sanity73.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity73.PreviewConfig<{
19
+ } & Omit<sanity72.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity72.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity73.WidenValidation & sanity73.WidenInitialValue;
23
+ } & sanity72.WidenValidation & sanity72.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity60 from "sanity";
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<sanity60.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity60.PreviewConfig<{
19
+ } & Omit<sanity73.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity73.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity60.WidenValidation & sanity60.WidenInitialValue;
23
+ } & sanity73.WidenValidation & sanity73.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity69 from "sanity";
1
+ import * as sanity60 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<sanity69.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity69.PreviewConfig<{
19
+ } & Omit<sanity60.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity60.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity69.WidenValidation & sanity69.WidenInitialValue;
23
+ } & sanity60.WidenValidation & sanity60.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity73 from "sanity";
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<sanity73.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity73.PreviewConfig<{
19
+ } & Omit<sanity61.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity61.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity73.WidenValidation & sanity73.WidenInitialValue;
23
+ } & sanity61.WidenValidation & sanity61.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity61 from "sanity";
1
+ import * as sanity64 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<sanity61.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
- preview?: sanity61.PreviewConfig<{
19
+ } & Omit<sanity64.ArrayOfEntry<ObjectDefinition>, "preview"> & {
20
+ preview?: sanity64.PreviewConfig<{
21
21
  [x: string]: string;
22
22
  }, Record<string, string>> | undefined;
23
- } & sanity61.WidenValidation & sanity61.WidenInitialValue;
23
+ } & sanity64.WidenValidation & sanity64.WidenInitialValue;
24
24
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity64 from "sanity";
1
+ import * as sanity69 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<sanity64.ArrayOfEntry<ObjectDefinition>, "preview"> & {
13
- preview?: sanity64.PreviewConfig<{
12
+ } & Omit<sanity69.ArrayOfEntry<ObjectDefinition>, "preview"> & {
13
+ preview?: sanity69.PreviewConfig<{
14
14
  [x: string]: string;
15
15
  }, Record<string, string>> | undefined;
16
- } & sanity64.WidenValidation & sanity64.WidenInitialValue;
16
+ } & sanity69.WidenValidation & sanity69.WidenInitialValue;
17
17
  export { createBlock };
@@ -1,4 +1,4 @@
1
- import * as sanity65 from "sanity";
1
+ import * as sanity68 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<sanity65.ArrayOfEntry<ObjectDefinition>, "preview"> & {
13
- preview?: sanity65.PreviewConfig<{
12
+ } & Omit<sanity68.ArrayOfEntry<ObjectDefinition>, "preview"> & {
13
+ preview?: sanity68.PreviewConfig<{
14
14
  [x: string]: string;
15
15
  }, Record<string, string>> | undefined;
16
- } & sanity65.WidenValidation & sanity65.WidenInitialValue;
16
+ } & sanity68.WidenValidation & sanity68.WidenInitialValue;
17
17
  export { createBlock };
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import * as sanity68 from "sanity";
1
+ import * as sanity60 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: sanity68.Plugin<PluginConfig>;
89
+ declare const wildSanityRichtextFieldPlugin: sanity60.Plugin<PluginConfig>;
90
90
  export { type FieldOptions, type PluginConfig, typeName, wildSanityRichtextFieldPlugin };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as sanity60 from "sanity";
1
+ import * as sanity76 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: sanity60.Plugin<PluginConfig>;
89
+ declare const wildSanityRichtextFieldPlugin: sanity76.Plugin<PluginConfig>;
90
90
  export { type FieldOptions, type PluginConfig, typeName, wildSanityRichtextFieldPlugin };
package/dist/parts.cjs CHANGED
@@ -26,11 +26,8 @@ const ColorText = styledComponents.styled.span`
26
26
  }) => $color};
27
27
  }
28
28
  `;
29
- function defaultResolveColor(value) {
30
- return value;
31
- }
32
29
  function createTextColorAnnotation(options) {
33
- const renderValue = options?.renderValue ?? defaultResolveColor;
30
+ const renderValue = options?.renderValue;
34
31
  return sanity.defineField({
35
32
  type: "object",
36
33
  name: `${types.typeName}.annotation.textColor`,
@@ -42,8 +39,10 @@ function createTextColorAnnotation(options) {
42
39
  })],
43
40
  components: {
44
41
  annotation: (props) => {
45
- const value = renderValue(props.value?.color);
46
- return /* @__PURE__ */ jsxRuntime.jsx(ColorText, { $color: value, children: props.renderDefault(props) });
42
+ const value = props.value?.color;
43
+ if (renderValue) return renderValue(value, props);
44
+ const resolvedValue = value;
45
+ return /* @__PURE__ */ jsxRuntime.jsx(ColorText, { $color: resolvedValue, children: props.renderDefault(props) });
47
46
  }
48
47
  }
49
48
  });
@@ -58,7 +57,7 @@ const ColorBg = styledComponents.styled.span`
58
57
  }
59
58
  `;
60
59
  function createHighlightColorAnnotation(options) {
61
- const renderValue = options?.renderValue ?? defaultResolveColor;
60
+ const renderValue = options?.renderValue;
62
61
  return sanity.defineField({
63
62
  type: "object",
64
63
  name: `${types.typeName}.annotation.highlightColor`,
@@ -70,8 +69,10 @@ function createHighlightColorAnnotation(options) {
70
69
  })],
71
70
  components: {
72
71
  annotation: (props) => {
73
- const value = renderValue(props.value?.color);
74
- return /* @__PURE__ */ jsxRuntime.jsx(ColorBg, { $color: value, children: props.renderDefault(props) });
72
+ const value = props.value?.color;
73
+ if (renderValue) return renderValue(value, props);
74
+ const resolvedValue = value;
75
+ return /* @__PURE__ */ jsxRuntime.jsx(ColorBg, { $color: resolvedValue, children: props.renderDefault(props) });
75
76
  }
76
77
  }
77
78
  });
@@ -139,7 +140,7 @@ function defaultRenderIconPreview(value) {
139
140
  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}" });
140
141
  }
141
142
  function createIconSpan(options) {
142
- const renderValuePreview = options?.renderValuePreview;
143
+ const renderValue = options?.renderValue;
143
144
  return sanity.defineArrayMember({
144
145
  name: `${types.typeName}.span.icon`,
145
146
  type: "object",
@@ -163,7 +164,7 @@ function createIconSpan(options) {
163
164
  icon
164
165
  }) {
165
166
  return {
166
- media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon)
167
+ media: renderValue?.(icon) ?? defaultRenderIconPreview(icon)
167
168
  };
168
169
  }
169
170
  }
@@ -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 { 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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"}
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, props: BlockAnnotationProps) => React.ReactNode;\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;\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 = props.value?.color;\n if (renderValue) return renderValue(value, props);\n const resolvedValue = defaultResolveColor(value);\n return <ColorText $color={resolvedValue}>{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;\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 = props.value?.color;\n if (renderValue) return renderValue(value, props);\n const resolvedValue = defaultResolveColor(value);\n return <ColorBg $color={resolvedValue}>{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 renderValue?: (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 renderValue = options?.renderValue;\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: renderValue?.(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","createTextColorAnnotation","options","renderValue","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","value","color","resolvedValue","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","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,7 +1,7 @@
1
1
  import * as sanity77 from "sanity";
2
- import * as react22 from "react";
2
+ import * as react28 from "react";
3
3
  type ColorAnnotationOptions = {
4
- renderValue?: (value: string | undefined) => string | undefined;
4
+ renderValue?: (value: string | undefined, props: BlockAnnotationProps) => React.ReactNode;
5
5
  };
6
6
  /** @public */
7
7
  declare function createAnnotations(options?: {
@@ -10,7 +10,7 @@ declare function createAnnotations(options?: {
10
10
  }): readonly [{
11
11
  type: "wild.link";
12
12
  name: "wild.richtext.annotation.link";
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> & {
13
+ } & sanity77.TypeAliasDefinition<"wild.link", "string" | "number" | "boolean" | "object" | "wild.richtext" | "wild.quote" | "wild.media" | "array" | "block" | "date" | "datetime" | "document" | "file" | "geopoint" | "image" | "reference" | "crossDatasetReference" | "globalDocumentReference" | "slug" | "text" | "url" | "email" | undefined> & {
14
14
  preview?: sanity77.PreviewConfig<Record<string, string>, Record<never, any>> | undefined;
15
15
  } & sanity77.FieldDefinitionBase & sanity77.WidenValidation & sanity77.WidenInitialValue, {
16
16
  type: "object";
@@ -27,44 +27,44 @@ declare function createAnnotations(options?: {
27
27
  declare function createDecorators(): readonly [{
28
28
  readonly title: "Strong";
29
29
  readonly value: "wild.richtext.decorator.strong";
30
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
30
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
31
31
  readonly component: ({
32
32
  children
33
- }: BlockDecoratorProps) => react22.JSX.Element;
33
+ }: BlockDecoratorProps) => react28.JSX.Element;
34
34
  }, {
35
35
  readonly title: "Emphasis";
36
36
  readonly value: "wild.richtext.decorator.em";
37
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
37
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
38
38
  readonly component: ({
39
39
  children
40
- }: BlockDecoratorProps) => react22.JSX.Element;
40
+ }: BlockDecoratorProps) => react28.JSX.Element;
41
41
  }, {
42
42
  readonly title: "Code";
43
43
  readonly value: "wild.richtext.decorator.code";
44
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
44
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
45
45
  readonly component: ({
46
46
  children
47
- }: BlockDecoratorProps) => react22.JSX.Element;
47
+ }: BlockDecoratorProps) => react28.JSX.Element;
48
48
  }, {
49
49
  readonly title: "Sup";
50
50
  readonly value: "wild.richtext.decorator.sup";
51
- readonly icon: () => react22.JSX.Element;
51
+ readonly icon: () => react28.JSX.Element;
52
52
  readonly component: ({
53
53
  children
54
- }: BlockDecoratorProps) => react22.JSX.Element;
54
+ }: BlockDecoratorProps) => react28.JSX.Element;
55
55
  }];
56
56
  /** @public */
57
57
  declare function createLists(): readonly [{
58
58
  readonly title: "Bullet";
59
59
  readonly value: "wild.richtext.list.bullet";
60
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
60
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
61
61
  }, {
62
62
  readonly title: "Number";
63
63
  readonly value: "wild.richtext.list.number";
64
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
64
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
65
65
  }];
66
66
  type IconSpanOptions = {
67
- renderValuePreview?: (value?: string) => react22.ReactNode;
67
+ renderValue?: (value?: string) => react28.ReactNode;
68
68
  };
69
69
  declare function createIconSpan(options?: IconSpanOptions): {
70
70
  type: "object";
@@ -98,18 +98,18 @@ declare function createStyles(): readonly [{
98
98
  readonly value: "wild.richtext.style.h2";
99
99
  readonly component: ({
100
100
  children
101
- }: BlockStyleProps) => react22.JSX.Element;
101
+ }: BlockStyleProps) => react28.JSX.Element;
102
102
  }, {
103
103
  readonly title: "Heading 3";
104
104
  readonly value: "wild.richtext.style.h3";
105
105
  readonly component: ({
106
106
  children
107
- }: BlockStyleProps) => react22.JSX.Element;
107
+ }: BlockStyleProps) => react28.JSX.Element;
108
108
  }, {
109
109
  readonly title: "Heading 4";
110
110
  readonly value: "wild.richtext.style.h4";
111
111
  readonly component: ({
112
112
  children
113
- }: BlockStyleProps) => react22.JSX.Element;
113
+ }: BlockStyleProps) => react28.JSX.Element;
114
114
  }];
115
115
  export { createAnnotations, createDecorators, createIconSpan, createLists, createSpans, createStyles };
package/dist/parts.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as sanity81 from "sanity";
2
- import * as react22 from "react";
2
+ import * as react28 from "react";
3
3
  type ColorAnnotationOptions = {
4
- renderValue?: (value: string | undefined) => string | undefined;
4
+ renderValue?: (value: string | undefined, props: BlockAnnotationProps) => React.ReactNode;
5
5
  };
6
6
  /** @public */
7
7
  declare function createAnnotations(options?: {
@@ -10,7 +10,7 @@ declare function createAnnotations(options?: {
10
10
  }): readonly [{
11
11
  type: "wild.link";
12
12
  name: "wild.richtext.annotation.link";
13
- } & sanity81.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> & {
13
+ } & sanity81.TypeAliasDefinition<"wild.link", "string" | "number" | "boolean" | "object" | "wild.media" | "wild.richtext" | "wild.quote" | "array" | "block" | "date" | "datetime" | "document" | "file" | "geopoint" | "image" | "reference" | "crossDatasetReference" | "globalDocumentReference" | "slug" | "text" | "url" | "email" | undefined> & {
14
14
  preview?: sanity81.PreviewConfig<Record<string, string>, Record<never, any>> | undefined;
15
15
  } & sanity81.FieldDefinitionBase & sanity81.WidenValidation & sanity81.WidenInitialValue, {
16
16
  type: "object";
@@ -27,44 +27,44 @@ declare function createAnnotations(options?: {
27
27
  declare function createDecorators(): readonly [{
28
28
  readonly title: "Strong";
29
29
  readonly value: "wild.richtext.decorator.strong";
30
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
30
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
31
31
  readonly component: ({
32
32
  children
33
- }: BlockDecoratorProps) => react22.JSX.Element;
33
+ }: BlockDecoratorProps) => react28.JSX.Element;
34
34
  }, {
35
35
  readonly title: "Emphasis";
36
36
  readonly value: "wild.richtext.decorator.em";
37
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
37
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
38
38
  readonly component: ({
39
39
  children
40
- }: BlockDecoratorProps) => react22.JSX.Element;
40
+ }: BlockDecoratorProps) => react28.JSX.Element;
41
41
  }, {
42
42
  readonly title: "Code";
43
43
  readonly value: "wild.richtext.decorator.code";
44
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
44
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
45
45
  readonly component: ({
46
46
  children
47
- }: BlockDecoratorProps) => react22.JSX.Element;
47
+ }: BlockDecoratorProps) => react28.JSX.Element;
48
48
  }, {
49
49
  readonly title: "Sup";
50
50
  readonly value: "wild.richtext.decorator.sup";
51
- readonly icon: () => react22.JSX.Element;
51
+ readonly icon: () => react28.JSX.Element;
52
52
  readonly component: ({
53
53
  children
54
- }: BlockDecoratorProps) => react22.JSX.Element;
54
+ }: BlockDecoratorProps) => react28.JSX.Element;
55
55
  }];
56
56
  /** @public */
57
57
  declare function createLists(): readonly [{
58
58
  readonly title: "Bullet";
59
59
  readonly value: "wild.richtext.list.bullet";
60
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
60
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
61
61
  }, {
62
62
  readonly title: "Number";
63
63
  readonly value: "wild.richtext.list.number";
64
- readonly icon: react22.ForwardRefExoticComponent<Omit<react22.SVGProps<SVGSVGElement>, "ref"> & react22.RefAttributes<SVGSVGElement>>;
64
+ readonly icon: react28.ForwardRefExoticComponent<Omit<react28.SVGProps<SVGSVGElement>, "ref"> & react28.RefAttributes<SVGSVGElement>>;
65
65
  }];
66
66
  type IconSpanOptions = {
67
- renderValuePreview?: (value?: string) => react22.ReactNode;
67
+ renderValue?: (value?: string) => react28.ReactNode;
68
68
  };
69
69
  declare function createIconSpan(options?: IconSpanOptions): {
70
70
  type: "object";
@@ -98,18 +98,18 @@ declare function createStyles(): readonly [{
98
98
  readonly value: "wild.richtext.style.h2";
99
99
  readonly component: ({
100
100
  children
101
- }: BlockStyleProps) => react22.JSX.Element;
101
+ }: BlockStyleProps) => react28.JSX.Element;
102
102
  }, {
103
103
  readonly title: "Heading 3";
104
104
  readonly value: "wild.richtext.style.h3";
105
105
  readonly component: ({
106
106
  children
107
- }: BlockStyleProps) => react22.JSX.Element;
107
+ }: BlockStyleProps) => react28.JSX.Element;
108
108
  }, {
109
109
  readonly title: "Heading 4";
110
110
  readonly value: "wild.richtext.style.h4";
111
111
  readonly component: ({
112
112
  children
113
- }: BlockStyleProps) => react22.JSX.Element;
113
+ }: BlockStyleProps) => react28.JSX.Element;
114
114
  }];
115
115
  export { createAnnotations, createDecorators, createIconSpan, createLists, createSpans, createStyles };
package/dist/parts.js CHANGED
@@ -13,11 +13,8 @@ const ColorText = styled.span`
13
13
  }) => $color};
14
14
  }
15
15
  `;
16
- function defaultResolveColor(value) {
17
- return value;
18
- }
19
16
  function createTextColorAnnotation(options) {
20
- const renderValue = options?.renderValue ?? defaultResolveColor;
17
+ const renderValue = options?.renderValue;
21
18
  return defineField({
22
19
  type: "object",
23
20
  name: `${typeName}.annotation.textColor`,
@@ -29,8 +26,8 @@ function createTextColorAnnotation(options) {
29
26
  })],
30
27
  components: {
31
28
  annotation: (props) => {
32
- const value = renderValue(props.value?.color);
33
- return /* @__PURE__ */ jsx(ColorText, { $color: value, children: props.renderDefault(props) });
29
+ const value = props.value?.color;
30
+ return renderValue ? renderValue(value, props) : /* @__PURE__ */ jsx(ColorText, { $color: value, children: props.renderDefault(props) });
34
31
  }
35
32
  }
36
33
  });
@@ -45,7 +42,7 @@ const ColorBg = styled.span`
45
42
  }
46
43
  `;
47
44
  function createHighlightColorAnnotation(options) {
48
- const renderValue = options?.renderValue ?? defaultResolveColor;
45
+ const renderValue = options?.renderValue;
49
46
  return defineField({
50
47
  type: "object",
51
48
  name: `${typeName}.annotation.highlightColor`,
@@ -57,8 +54,8 @@ function createHighlightColorAnnotation(options) {
57
54
  })],
58
55
  components: {
59
56
  annotation: (props) => {
60
- const value = renderValue(props.value?.color);
61
- return /* @__PURE__ */ jsx(ColorBg, { $color: value, children: props.renderDefault(props) });
57
+ const value = props.value?.color;
58
+ return renderValue ? renderValue(value, props) : /* @__PURE__ */ jsx(ColorBg, { $color: value, children: props.renderDefault(props) });
62
59
  }
63
60
  }
64
61
  });
@@ -126,7 +123,7 @@ function defaultRenderIconPreview(value) {
126
123
  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}" });
127
124
  }
128
125
  function createIconSpan(options) {
129
- const renderValuePreview = options?.renderValuePreview;
126
+ const renderValue = options?.renderValue;
130
127
  return defineArrayMember({
131
128
  name: `${typeName}.span.icon`,
132
129
  type: "object",
@@ -150,7 +147,7 @@ function createIconSpan(options) {
150
147
  icon
151
148
  }) {
152
149
  return {
153
- media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon)
150
+ media: renderValue?.(icon) ?? defaultRenderIconPreview(icon)
154
151
  };
155
152
  }
156
153
  }
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 { 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":";;;;;;AASA,MAAMA,YAAYC,OAAOC;AAAAA;AAAAA;AAAAA;AAAAA,aAIZ,CAAC;AAAA,EAAEC,SAAS;AAAU,MAAMA,MAAM;AAAA;AAAA;AAI/C,SAASC,oBAAoBC,OAA2B;AACtD,SAAOA;AACT;AAEA,SAASC,0BAA0BC,SAAkC;AACnE,QAAMC,cAAcD,SAASC,eAAeJ;AAE5C,SAAOK,YAAY;AAAA,IACjBC,MAAM;AAAA,IACNC,MAAM,GAAGC,QAAQ;AAAA,IACjBC,OAAO;AAAA,IACPC,MAAMC;AAAAA,IACNC,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAASD,MAAM;AAAA,IAAA,CAAc,CAAC;AAAA,IAC3DO,YAAY;AAAA,MACVC,YAAaC,CAAAA,UAAU;AACrB,cAAMd,QAAQG,YAAYW,MAAMd,OAAOe,KAAK;AAC5C,mCAAQ,WAAA,EAAU,QAAQf,OAAQc,UAAAA,MAAME,cAAcF,KAAK,GAAE;AAAA,MAC/D;AAAA,IAAA;AAAA,EACF,CACD;AACH;AAEA,MAAMG,UAAUrB,OAAOC;AAAAA;AAAAA,wBAEC,CAAC;AAAA,EAAEC,SAAS;AAAU,MAAMA,MAAM;AAAA;AAAA;AAAA;AAAA;AAM1D,SAASoB,+BAA+BhB,SAAkC;AACxE,QAAMC,cAAcD,SAASC,eAAeJ;AAE5C,SAAOK,YAAY;AAAA,IACjBC,MAAM;AAAA,IACNC,MAAM,GAAGC,QAAQ;AAAA,IACjBC,OAAO;AAAA,IACPC,MAAMU;AAAAA,IACNR,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAASD,MAAM;AAAA,IAAA,CAAc,CAAC;AAAA,IAC3DO,YAAY;AAAA,MACVC,YAAaC,CAAAA,UAAU;AACrB,cAAMd,QAAQG,YAAYW,MAAMd,OAAOe,KAAK;AAC5C,mCAAQ,SAAA,EAAQ,QAAQf,OAAQc,UAAAA,MAAME,cAAcF,KAAK,GAAE;AAAA,MAC7D;AAAA,IAAA;AAAA,EACF,CACD;AACH;AC3DO,MAAMM,OAAOhB,YAAY;AAAA,EAC9BC,MAAM;AAAA,EACNC,MAAM,GAAGC,QAAQ;AAAA,EACjBC,OAAO;AAAA,EACPC,MAAMY;AAAAA,EACNnB,SAAS;AAAA,IACPoB,WAAW;AAAA,IACXC,aAAa;AAAA,EAAA;AAEjB,CAAC;ACTD,SAASC,kBAAkBtB,SAA2F;AACpH,SAAO,CAACkB,MAAMnB,0BAA0BC,SAASuB,SAAS,GAAGP,+BAA+BhB,SAASwB,cAAc,CAAC;AACtH;ACFA,MAAMC,SAAS;AAAA,EACbnB,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAMmB;AAAAA,EACNC,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,UAAA,EAAQA,SAAAA,CAAS;AACjD,GAEMC,KAAK;AAAA,EACTvB,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAMuB;AAAAA,EACNH,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,MAAA,EAAIA,SAAAA,CAAS;AAC7C,GAEMG,OAAO;AAAA,EACXzB,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAMyB;AAAAA,EACNL,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,QAAA,EAAMA,SAAAA,CAAS;AAC/C,GAEMK,MAAM;AAAA,EACV3B,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAMA,MAAM,oBAAC,OAAA,EAAI,UAAA,MAAA,CAAG;AAAA,EACpBoB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,OAAA,EAAI,OAAO;AAAA,IAAEM,eAAe;AAAA,EAAA,GAAYN,SAAAA,CAAS;AACjF;AAGA,SAASO,mBAAmB;AAC1B,SAAO,CAACV,QAAQI,IAAIE,MAAME,GAAG;AAC/B;AC/BA,MAAMG,SAAS;AAAA,EACb9B,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAM8B;AACR,GAEMC,SAAS;AAAA,EACbhC,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBE,MAAMgC;AACR;AAGA,SAASC,cAAc;AACrB,SAAO,CAACJ,QAAQE,MAAM;AACxB;ACXA,SAASG,yBAAyB3C,OAAyB;AACzD,SAAI4C,MAAMC,eAAe7C,KAAK,IAAUA,4BAErC,QAAA,EAAK,MAAK,OAAM,WAAU,iDAAgD,OAAO,OAAOA,SAAU,WAAWA,QAAQ,QAAO,UAAA,aAE7H;AAEJ;AAEA,SAAS8C,eAAe5C,SAA2B;AACjD,QAAM6C,qBAAqB7C,SAAS6C;AAEpC,SAAOC,kBAAkB;AAAA,IACvB1C,MAAM,GAAGC,QAAQ;AAAA,IACjBF,MAAM;AAAA,IACNG,OAAO;AAAA,IACPyC,aAAa;AAAA,IACbxC,MAAMA,MAAM,oBAAA,UAAA,EAAE,UAAA,YAAA,CAAE;AAAA,IAChBE,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAAQD,MAAM;AAAA,IAAA,CAAa,CAAC;AAAA,IACzDO,YAAY;AAAA;AAAA;AAAA,MAGVsC,SAAUpC,WACD8B,MAAMC,eAAe/B,MAAMqC,KAAK,IAAIrC,MAAMqC,QAAQrC,MAAMsC;AAAAA,IAAAA;AAAAA,IAGnEF,SAAS;AAAA,MACPG,QAAQ;AAAA,QACN5C,MAAM;AAAA,MAAA;AAAA,MAER6C,QAAQ;AAAA,QAAE7C;AAAAA,MAAAA,GAAQ;AAChB,eAAO;AAAA,UACL0C,OAAOJ,qBAAqBtC,IAAI,KAAKkC,yBAAyBlC,IAAI;AAAA,QAAA;AAAA,MAEtE;AAAA,IAAA;AAAA,EACF,CACD;AACH;AC1CO,MAAM0C,QAAQH,kBAAkB;AAAA,EACrC1C,MAAM,GAAGC,QAAQ;AAAA,EACjBF,MAAM;AAAA,EACNG,OAAO;AAAA,EACPyC,aAAa;AAAA,EACbxC,MAAMA,MAAM,oBAAA,UAAA,EAAE,UAAA,YAAA,CAAE;AAAA,EAChBE,QAAQ,CACNP,YAAY;AAAA,IACVE,MAAM;AAAA,IACND,MAAM;AAAA,IACNH,SAAS;AAAA,MACPqD,QAAQ;AAAA,IAAA;AAAA,EACV,CACD,CAAC;AAAA,EAEJ3C,YAAY;AAAA;AAAA,IAEVsC,SAAUpC,CAAAA,WACM;AAAA,MACZ0C,uCAAS,UAAA,YAAA,CAAE;AAAA,MACXC,uCAAS,UAAA,kBAAA,CAAG;AAAA,MACZC,wCAAU,UAAA,YAAA,CAAE;AAAA,IAAA,GAID5C,MAAM6C,IAAI,qCAA6B,UAAA,kBAAA,CAAG;AAAA,EAAA;AAAA,EAG3DT,SAAS;AAAA,IACPG,QAAQ;AAAA,MACNM,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,CAAC;AChCD,SAASC,YAAY1D,SAAsC;AACzD,SAAO,CAAC4C,eAAe5C,SAASO,IAAI,GAAG0C,KAAK;AAC9C;ACHA,MAAMU,KAAK;AAAA,EACTrD,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBsB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACLgC,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGblC,SAAAA,CACH;AAEJ,GAEMmC,KAAK;AAAA,EACTzD,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBsB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACLgC,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGblC,SAAAA,CACH;AAEJ,GAEMoC,KAAK;AAAA,EACT1D,OAAO;AAAA,EACPR,OAAO,GAAGO,QAAQ;AAAA,EAClBsB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACLgC,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGblC,SAAAA,CACH;AAEJ;AAGA,SAASqC,eAAe;AACtB,SAAO,CAACN,IAAII,IAAIC,EAAE;AACpB;"}
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, props: BlockAnnotationProps) => React.ReactNode;\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;\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 = props.value?.color;\n if (renderValue) return renderValue(value, props);\n const resolvedValue = defaultResolveColor(value);\n return <ColorText $color={resolvedValue}>{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;\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 = props.value?.color;\n if (renderValue) return renderValue(value, props);\n const resolvedValue = defaultResolveColor(value);\n return <ColorBg $color={resolvedValue}>{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 renderValue?: (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 renderValue = options?.renderValue;\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: renderValue?.(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","createTextColorAnnotation","options","renderValue","defineField","type","name","typeName","title","icon","ColorWheelIcon","fields","components","annotation","props","value","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","defineArrayMember","description","preview","media","fallbackTitle","select","prepare","inline","video","image","motion","kind","createSpans","h2","fontSize","fontWeight","lineHeight","h3","h4","createStyles"],"mappings":";;;;;;AASA,MAAMA,YAAYC,OAAOC;AAAAA;AAAAA;AAAAA;AAAAA,aAIZ,CAAC;AAAA,EAAEC,SAAS;AAAU,MAAMA,MAAM;AAAA;AAAA;AAQ/C,SAASC,0BAA0BC,SAAkC;AACnE,QAAMC,cAAcD,SAASC;AAE7B,SAAOC,YAAY;AAAA,IACjBC,MAAM;AAAA,IACNC,MAAM,GAAGC,QAAQ;AAAA,IACjBC,OAAO;AAAA,IACPC,MAAMC;AAAAA,IACNC,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAASD,MAAM;AAAA,IAAA,CAAc,CAAC;AAAA,IAC3DO,YAAY;AAAA,MACVC,YAAaC,CAAAA,UAAU;AACrB,cAAMC,QAAQD,MAAMC,OAAOC;AAC3B,eAAIb,cAAoBA,YAAYY,OAAOD,KAAK,wBAExC,WAAA,EAAU,QADwBC,OACAD,UAAAA,MAAMG,cAAcH,KAAK,GAAE;AAAA,MACvE;AAAA,IAAA;AAAA,EACF,CACD;AACH;AAEA,MAAMI,UAAUpB,OAAOC;AAAAA;AAAAA,wBAEC,CAAC;AAAA,EAAEC,SAAS;AAAU,MAAMA,MAAM;AAAA;AAAA;AAAA;AAAA;AAM1D,SAASmB,+BAA+BjB,SAAkC;AACxE,QAAMC,cAAcD,SAASC;AAE7B,SAAOC,YAAY;AAAA,IACjBC,MAAM;AAAA,IACNC,MAAM,GAAGC,QAAQ;AAAA,IACjBC,OAAO;AAAA,IACPC,MAAMW;AAAAA,IACNT,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAASD,MAAM;AAAA,IAAA,CAAc,CAAC;AAAA,IAC3DO,YAAY;AAAA,MACVC,YAAaC,CAAAA,UAAU;AACrB,cAAMC,QAAQD,MAAMC,OAAOC;AAC3B,eAAIb,cAAoBA,YAAYY,OAAOD,KAAK,wBAExC,SAAA,EAAQ,QAD0BC,OACFD,UAAAA,MAAMG,cAAcH,KAAK,GAAE;AAAA,MACrE;AAAA,IAAA;AAAA,EACF,CACD;AACH;AC/DO,MAAMO,OAAOjB,YAAY;AAAA,EAC9BC,MAAM;AAAA,EACNC,MAAM,GAAGC,QAAQ;AAAA,EACjBC,OAAO;AAAA,EACPC,MAAMa;AAAAA,EACNpB,SAAS;AAAA,IACPqB,WAAW;AAAA,IACXC,aAAa;AAAA,EAAA;AAEjB,CAAC;ACTD,SAASC,kBAAkBvB,SAA2F;AACpH,SAAO,CAACmB,MAAMpB,0BAA0BC,SAASwB,SAAS,GAAGP,+BAA+BjB,SAASyB,cAAc,CAAC;AACtH;ACFA,MAAMC,SAAS;AAAA,EACbpB,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAMoB;AAAAA,EACNC,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,UAAA,EAAQA,SAAAA,CAAS;AACjD,GAEMC,KAAK;AAAA,EACTxB,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAMwB;AAAAA,EACNH,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,MAAA,EAAIA,SAAAA,CAAS;AAC7C,GAEMG,OAAO;AAAA,EACX1B,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAM0B;AAAAA,EACNL,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,QAAA,EAAMA,SAAAA,CAAS;AAC/C,GAEMK,MAAM;AAAA,EACV5B,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAMA,MAAM,oBAAC,OAAA,EAAI,UAAA,MAAA,CAAG;AAAA,EACpBqB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAe,oBAAC,OAAA,EAAI,OAAO;AAAA,IAAEM,eAAe;AAAA,EAAA,GAAYN,SAAAA,CAAS;AACjF;AAGA,SAASO,mBAAmB;AAC1B,SAAO,CAACV,QAAQI,IAAIE,MAAME,GAAG;AAC/B;AC/BA,MAAMG,SAAS;AAAA,EACb/B,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAM+B;AACR,GAEMC,SAAS;AAAA,EACbjC,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBE,MAAMiC;AACR;AAGA,SAASC,cAAc;AACrB,SAAO,CAACJ,QAAQE,MAAM;AACxB;ACXA,SAASG,yBAAyB7B,OAAyB;AACzD,SAAI8B,MAAMC,eAAe/B,KAAK,IAAUA,4BAErC,QAAA,EAAK,MAAK,OAAM,WAAU,iDAAgD,OAAO,OAAOA,SAAU,WAAWA,QAAQ,QAAO,UAAA,aAE7H;AAEJ;AAEA,SAASgC,eAAe7C,SAA2B;AACjD,QAAMC,cAAcD,SAASC;AAE7B,SAAO6C,kBAAkB;AAAA,IACvB1C,MAAM,GAAGC,QAAQ;AAAA,IACjBF,MAAM;AAAA,IACNG,OAAO;AAAA,IACPyC,aAAa;AAAA,IACbxC,MAAMA,MAAM,oBAAA,UAAA,EAAE,UAAA,YAAA,CAAE;AAAA,IAChBE,QAAQ,CAACP,YAAY;AAAA,MAAEE,MAAM;AAAA,MAAQD,MAAM;AAAA,IAAA,CAAa,CAAC;AAAA,IACzDO,YAAY;AAAA;AAAA;AAAA,MAGVsC,SAAUpC,WACD+B,MAAMC,eAAehC,MAAMqC,KAAK,IAAIrC,MAAMqC,QAAQrC,MAAMsC;AAAAA,IAAAA;AAAAA,IAGnEF,SAAS;AAAA,MACPG,QAAQ;AAAA,QACN5C,MAAM;AAAA,MAAA;AAAA,MAER6C,QAAQ;AAAA,QAAE7C;AAAAA,MAAAA,GAAQ;AAChB,eAAO;AAAA,UACL0C,OAAOhD,cAAcM,IAAI,KAAKmC,yBAAyBnC,IAAI;AAAA,QAAA;AAAA,MAE/D;AAAA,IAAA;AAAA,EACF,CACD;AACH;AC1CO,MAAM0C,QAAQH,kBAAkB;AAAA,EACrC1C,MAAM,GAAGC,QAAQ;AAAA,EACjBF,MAAM;AAAA,EACNG,OAAO;AAAA,EACPyC,aAAa;AAAA,EACbxC,MAAMA,MAAM,oBAAA,UAAA,EAAE,UAAA,YAAA,CAAE;AAAA,EAChBE,QAAQ,CACNP,YAAY;AAAA,IACVE,MAAM;AAAA,IACND,MAAM;AAAA,IACNH,SAAS;AAAA,MACPqD,QAAQ;AAAA,IAAA;AAAA,EACV,CACD,CAAC;AAAA,EAEJ3C,YAAY;AAAA;AAAA,IAEVsC,SAAUpC,CAAAA,WACM;AAAA,MACZ0C,uCAAS,UAAA,YAAA,CAAE;AAAA,MACXC,uCAAS,UAAA,kBAAA,CAAG;AAAA,MACZC,wCAAU,UAAA,YAAA,CAAE;AAAA,IAAA,GAID5C,MAAM6C,IAAI,qCAA6B,UAAA,kBAAA,CAAG;AAAA,EAAA;AAAA,EAG3DT,SAAS;AAAA,IACPG,QAAQ;AAAA,MACNM,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,CAAC;AChCD,SAASC,YAAY1D,SAAsC;AACzD,SAAO,CAAC6C,eAAe7C,SAASO,IAAI,GAAG0C,KAAK;AAC9C;ACHA,MAAMU,KAAK;AAAA,EACTrD,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBuB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACL+B,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGbjC,SAAAA,CACH;AAEJ,GAEMkC,KAAK;AAAA,EACTzD,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBuB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACL+B,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGbjC,SAAAA,CACH;AAEJ,GAEMmC,KAAK;AAAA,EACT1D,OAAO;AAAA,EACPO,OAAO,GAAGR,QAAQ;AAAA,EAClBuB,WAAWA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MACZ,oBAAC,MAAA,EACC,OAAO;AAAA,IACL+B,UAAU;AAAA,IACVC,YAAY;AAAA,IACZC,YAAY;AAAA,EAAA,GAGbjC,SAAAA,CACH;AAEJ;AAGA,SAASoC,eAAe;AACtB,SAAO,CAACN,IAAII,IAAIC,EAAE;AACpB;"}
package/dist/utils.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import * as sanity92 from "sanity";
1
+ import * as sanity107 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<sanity92.ArrayOfEntry<ObjectDefinition>, "preview"> & {
11
- preview?: sanity92.PreviewConfig<{
10
+ } & Omit<sanity107.ArrayOfEntry<ObjectDefinition>, "preview"> & {
11
+ preview?: sanity107.PreviewConfig<{
12
12
  [x: string]: string;
13
13
  }, Record<string, string>> | undefined;
14
- } & sanity92.WidenValidation & sanity92.WidenInitialValue;
14
+ } & sanity107.WidenValidation & sanity107.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": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "license": "UNLICENSED",
@@ -53,7 +53,7 @@
53
53
  "dependencies": {
54
54
  "ts-deepmerge": "^7.0.3",
55
55
  "@madebywild/sanity-media-field": "1.0.0",
56
- "@madebywild/sanity-quote-field": "1.0.2",
56
+ "@madebywild/sanity-quote-field": "1.0.3",
57
57
  "@madebywild/sanity-utils": "1.0.0"
58
58
  },
59
59
  "peerDependencies": {
@@ -4,7 +4,7 @@ import { styled } from "styled-components";
4
4
  import { typeName } from "../../types";
5
5
 
6
6
  type ColorAnnotationOptions = {
7
- renderValue?: (value: string | undefined) => string | undefined;
7
+ renderValue?: (value: string | undefined, props: BlockAnnotationProps) => React.ReactNode;
8
8
  };
9
9
 
10
10
  const ColorText = styled.span<{ $color?: string }>`
@@ -20,7 +20,7 @@ function defaultResolveColor(value: string | undefined) {
20
20
  }
21
21
 
22
22
  function createTextColorAnnotation(options?: ColorAnnotationOptions) {
23
- const renderValue = options?.renderValue ?? defaultResolveColor;
23
+ const renderValue = options?.renderValue;
24
24
 
25
25
  return defineField({
26
26
  type: "object",
@@ -30,8 +30,10 @@ function createTextColorAnnotation(options?: ColorAnnotationOptions) {
30
30
  fields: [defineField({ name: "color", type: "wild.color" })],
31
31
  components: {
32
32
  annotation: (props) => {
33
- const value = renderValue(props.value?.color);
34
- return <ColorText $color={value}>{props.renderDefault(props)}</ColorText>;
33
+ const value = props.value?.color;
34
+ if (renderValue) return renderValue(value, props);
35
+ const resolvedValue = defaultResolveColor(value);
36
+ return <ColorText $color={resolvedValue}>{props.renderDefault(props)}</ColorText>;
35
37
  },
36
38
  },
37
39
  });
@@ -46,7 +48,7 @@ const ColorBg = styled.span<{ $color?: string }>`
46
48
  `;
47
49
 
48
50
  function createHighlightColorAnnotation(options?: ColorAnnotationOptions) {
49
- const renderValue = options?.renderValue ?? defaultResolveColor;
51
+ const renderValue = options?.renderValue;
50
52
 
51
53
  return defineField({
52
54
  type: "object",
@@ -56,8 +58,10 @@ function createHighlightColorAnnotation(options?: ColorAnnotationOptions) {
56
58
  fields: [defineField({ name: "color", type: "wild.color" })],
57
59
  components: {
58
60
  annotation: (props) => {
59
- const value = renderValue(props.value?.color);
60
- return <ColorBg $color={value}>{props.renderDefault(props)}</ColorBg>;
61
+ const value = props.value?.color;
62
+ if (renderValue) return renderValue(value, props);
63
+ const resolvedValue = defaultResolveColor(value);
64
+ return <ColorBg $color={resolvedValue}>{props.renderDefault(props)}</ColorBg>;
61
65
  },
62
66
  },
63
67
  });
@@ -3,7 +3,7 @@ import { defineArrayMember, defineField } from "sanity";
3
3
  import { typeName } from "../../types";
4
4
 
5
5
  type IconSpanOptions = {
6
- renderValuePreview?: (value?: string) => React.ReactNode;
6
+ renderValue?: (value?: string) => React.ReactNode;
7
7
  };
8
8
 
9
9
  function defaultRenderIconPreview(value?: React.ReactNode) {
@@ -16,7 +16,7 @@ function defaultRenderIconPreview(value?: React.ReactNode) {
16
16
  }
17
17
 
18
18
  function createIconSpan(options?: IconSpanOptions) {
19
- const renderValuePreview = options?.renderValuePreview;
19
+ const renderValue = options?.renderValue;
20
20
 
21
21
  return defineArrayMember({
22
22
  name: `${typeName}.span.icon`,
@@ -38,7 +38,7 @@ function createIconSpan(options?: IconSpanOptions) {
38
38
  },
39
39
  prepare({ icon }) {
40
40
  return {
41
- media: renderValuePreview?.(icon) ?? defaultRenderIconPreview(icon),
41
+ media: renderValue?.(icon) ?? defaultRenderIconPreview(icon),
42
42
  };
43
43
  },
44
44
  },