govuk-chakra 0.0.16 → 0.0.18
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 +1 -1
- package/dist/{Button-DBeoyc1e.js → Button-Bzp4VO4J.js} +2 -2
- package/dist/{Button-DBeoyc1e.js.map → Button-Bzp4VO4J.js.map} +1 -1
- package/dist/{Button-D2zPYhfj.mjs → Button-uvb-6FRY.mjs} +13 -13
- package/dist/{Button-D2zPYhfj.mjs.map → Button-uvb-6FRY.mjs.map} +1 -1
- package/dist/chakra.cjs +1 -1
- package/dist/chakra.mjs +3 -3
- package/dist/editor.cjs +1 -1
- package/dist/editor.cjs.map +1 -1
- package/dist/editor.mjs +3 -3
- package/dist/editor.mjs.map +1 -1
- package/dist/{fieldFocusStyles-SnxM1ENz.js → fieldFocusStyles-CPu63vW8.js} +2 -2
- package/dist/{fieldFocusStyles-SnxM1ENz.js.map → fieldFocusStyles-CPu63vW8.js.map} +1 -1
- package/dist/{fieldFocusStyles-i7bGS_ct.mjs → fieldFocusStyles-DtS-106W.mjs} +11 -11
- package/dist/{fieldFocusStyles-i7bGS_ct.mjs.map → fieldFocusStyles-DtS-106W.mjs.map} +1 -1
- package/dist/{govUKTheme-B6N8jc4i.js → govUKTheme-ZxJEKEJS.js} +2 -2
- package/dist/{govUKTheme-B6N8jc4i.js.map → govUKTheme-ZxJEKEJS.js.map} +1 -1
- package/dist/{govUKTheme-CDTBLgqV.mjs → govUKTheme-fklX-_tG.mjs} +28 -28
- package/dist/{govUKTheme-CDTBLgqV.mjs.map → govUKTheme-fklX-_tG.mjs.map} +1 -1
- package/dist/{govuk-chakra-G-0BpNPi.mjs → govuk-chakra-DQ9KkYkk.mjs} +113 -51
- package/dist/govuk-chakra-DQ9KkYkk.mjs.map +1 -0
- package/dist/{govuk-chakra-DIQtEMpV.js → govuk-chakra-DjCULAkr.js} +2 -2
- package/dist/govuk-chakra-DjCULAkr.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +3 -3
- package/dist/provider.cjs +1 -1
- package/dist/provider.mjs +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.mjs +1 -1
- package/dist/types/components/Listbox/Listbox.recipe.d.ts +1 -1
- package/dist/types/components/Tag/Tag.d.ts +1 -1
- package/dist/types/theme/colors.d.ts +2 -2
- package/dist/types/theme/govUKTheme.d.ts +3 -3
- package/dist/utils.cjs +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
- package/dist/govuk-chakra-DIQtEMpV.js.map +0 -1
- package/dist/govuk-chakra-G-0BpNPi.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Current Chakra version being used is: **3.34.0**.
|
|
|
14
14
|
## Links
|
|
15
15
|
|
|
16
16
|
- [**Live Demo**](https://gov-uk-gds-react-chakra.vercel.app 'Live demo')
|
|
17
|
-
- [**Sandbox Demo**](https://
|
|
17
|
+
- [**Sandbox Demo**](https://codesandbox.io/p/devbox/ancient-sunset-cs6k5h 'Sandbox demo')
|
|
18
18
|
|
|
19
19
|
- [**The npm page**](https://www.npmjs.com/package/govuk-chakra)
|
|
20
20
|
- [**GOV.UK Design System Figma File in Community**](https://www.figma.com/community/file/1550623138170727031/gov-uk-design-system-2025)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`./iconBase-BVfFpyD6.js`);const e=require(`./px-to-rem-kQOjVfEt.js`);let t=require(`@chakra-ui/react`),n=require(`react/jsx-runtime`),r=require(`react`);var i={outline:`none`,bgColor:`yellow.500`,color:`
|
|
2
|
-
//# sourceMappingURL=Button-
|
|
1
|
+
require(`./iconBase-BVfFpyD6.js`);const e=require(`./px-to-rem-kQOjVfEt.js`);let t=require(`@chakra-ui/react`),n=require(`react/jsx-runtime`),r=require(`react`);var i={outline:`none`,bgColor:`yellow.500`,color:`gray.950`},a={primary:{bgColor:`green.500`,color:`white`,boxShadow:`0 2px 0 {colors.green.800}`,_hover:{bgColor:`green.700`,color:`white`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},secondary:{color:`gray.900`,bgColor:`gray.50`,_dark:{color:`gray.50`,bgColor:`gray.600`,_hover:{bgColor:`gray.600`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},boxShadow:`0 2px 0 {colors.gray.200}`,_hover:{bgColor:`gray.100`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},error:{bgColor:`border.error`,color:`white`,boxShadow:`0 2px 0 {colors.red.800}`,_hover:{bgColor:`red.700`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},inverse:{bgColor:`bg`,color:`blue.500`,boxShadow:`0 2px 0 {colors.blue.700}`,_dark:{bgColor:`blue.900`,color:`blue.50`,_hover:{color:`blue.50`,bgColor:`blue.800`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},_hover:{color:`blue.700`,bgColor:`blue.100`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},plain:{bgColor:`transparent`,color:`fg`,_dark:{_hover:{color:`gray.50`,bgColor:`gray.800`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},_hover:{color:`gray.700`,bgColor:`gray.100`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},link:{bgColor:`transparent`,color:`blue.500`,textDecoration:`underline`,boxShadow:`none`,_hover:{color:`blue.700`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i}},o=(0,r.forwardRef)(({variant:r=`primary`,children:i,startButton:o,...s},c)=>(0,n.jsxs)(t.Button,{ref:c,borderRadius:`0`,fontSize:`1.1875rem`,bg:`green.500`,color:`white`,boxShadow:`0 2px 0 {colors.green.900}`,fontFamily:`body`,fontWeight:o?`bold`:`normal`,padding:`${e.o(8)} ${e.o(10)} ${e.o(7)}`,...a[r],...s,children:[i,o&&(0,n.jsx)(`svg`,{className:`govuk-button__start-icon`,xmlns:`http://www.w3.org/2000/svg`,width:`17.5`,height:`19`,viewBox:`0 0 33 40`,"aria-hidden":`true`,focusable:`false`,children:(0,n.jsx)(`path`,{fill:`currentColor`,d:`M0 0h13l20 20-20 20H0l20-20z`})})]}));o.displayName=`Button`,Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|
|
2
|
+
//# sourceMappingURL=Button-Bzp4VO4J.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button-
|
|
1
|
+
{"version":3,"file":"Button-Bzp4VO4J.js","names":[],"sources":["../src/components/Button/buttonVariants.ts","../src/components/Button/Button.tsx"],"sourcesContent":["import type { SystemStyleObject } from '@chakra-ui/react'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'plain' | 'error' | 'inverse' | 'link'\n\nexport const buttonFocusStyles: SystemStyleObject = {\n outline: 'none',\n bgColor: 'yellow.500',\n color: 'gray.950',\n}\n\nexport const buttonVariantStyles: Record<ButtonVariant, SystemStyleObject> = {\n primary: {\n bgColor: 'green.500',\n color: 'white',\n boxShadow: '0 2px 0 {colors.green.800}',\n _hover: {\n bgColor: 'green.700',\n color: 'white',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n secondary: {\n color: 'gray.900',\n bgColor: 'gray.50',\n _dark: {\n color: 'gray.50',\n bgColor: 'gray.600',\n _hover: {\n bgColor: 'gray.600',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n boxShadow: '0 2px 0 {colors.gray.200}',\n _hover: {\n bgColor: 'gray.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n error: {\n bgColor: 'border.error',\n color: 'white',\n boxShadow: '0 2px 0 {colors.red.800}',\n _hover: {\n bgColor: 'red.700',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n inverse: {\n bgColor: 'bg',\n color: 'blue.500',\n boxShadow: '0 2px 0 {colors.blue.700}',\n _dark: {\n bgColor: 'blue.900',\n color: 'blue.50',\n _hover: {\n color: 'blue.50',\n bgColor: 'blue.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'blue.700',\n bgColor: 'blue.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n plain: {\n bgColor: 'transparent',\n color: 'fg',\n _dark: {\n _hover: {\n color: 'gray.50',\n bgColor: 'gray.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'gray.700',\n bgColor: 'gray.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n link: {\n bgColor: 'transparent',\n color: 'blue.500',\n textDecoration: 'underline',\n boxShadow: 'none',\n _hover: {\n color: 'blue.700',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n}\n","import { Button as ChakraButton, type ButtonProps as ChakraButtonProps } from '@chakra-ui/react'\n\nimport { forwardRef } from 'react'\nimport { pxToRem } from '@/utils'\nimport { buttonVariantStyles, type ButtonVariant } from './buttonVariants'\n\nexport interface ButtonProps extends Omit<ChakraButtonProps, 'variant'> {\n variant?: ButtonVariant\n startButton?: boolean\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', children, startButton, ...props }, ref) => {\n return (\n <ChakraButton\n ref={ref}\n borderRadius=\"0\"\n fontSize=\"1.1875rem\"\n bg=\"green.500\"\n color=\"white\"\n boxShadow=\"0 2px 0 {colors.green.900}\"\n fontFamily=\"body\"\n fontWeight={startButton ? 'bold' : 'normal'}\n padding={`${pxToRem(8)} ${pxToRem(10)} ${pxToRem(7)}`}\n {...buttonVariantStyles[variant]}\n {...props}\n >\n {children}\n {startButton && (\n <svg\n className=\"govuk-button__start-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"19\"\n viewBox=\"0 0 33 40\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path fill=\"currentColor\" d=\"M0 0h13l20 20-20 20H0l20-20z\"></path>\n </svg>\n )}\n </ChakraButton>\n )\n }\n)\n\nButton.displayName = 'Button'\n"],"mappings":"iKAIA,IAAa,EAAuC,CAClD,QAAS,OACT,QAAS,aACT,MAAO,WACR,CAEY,EAAgE,CAC3E,QAAS,CACP,QAAS,YACT,MAAO,QACP,UAAW,6BACX,OAAQ,CACN,QAAS,YACT,MAAO,QACP,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,UAAW,CACT,MAAO,WACP,QAAS,UACT,MAAO,CACL,MAAO,UACP,QAAS,WACT,OAAQ,CACN,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,UAAW,4BACX,OAAQ,CACN,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,MAAO,CACL,QAAS,eACT,MAAO,QACP,UAAW,2BACX,OAAQ,CACN,QAAS,UACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,QAAS,CACP,QAAS,KACT,MAAO,WACP,UAAW,4BACX,MAAO,CACL,QAAS,WACT,MAAO,UACP,OAAQ,CACN,MAAO,UACP,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,CACN,MAAO,WACP,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,MAAO,CACL,QAAS,cACT,MAAO,KACP,MAAO,CACL,OAAQ,CACN,MAAO,UACP,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,CACN,MAAO,WACP,QAAS,WACT,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACD,KAAM,CACJ,QAAS,cACT,MAAO,WACP,eAAgB,YAChB,UAAW,OACX,OAAQ,CACN,MAAO,WACP,OAAQ,EACR,cAAe,EAChB,CACD,OAAQ,EACR,cAAe,EAChB,CACF,CC5GY,GAAA,EAAA,EAAA,aACV,CAAE,UAAU,UAAW,WAAU,cAAa,GAAG,GAAS,KAEvD,EAAA,EAAA,MAAC,EAAA,OAAD,CACO,MACL,aAAa,IACb,SAAS,YACT,GAAG,YACH,MAAM,QACN,UAAU,6BACV,WAAW,OACX,WAAY,EAAc,OAAS,SACnC,QAAS,GAAG,EAAA,EAAQ,EAAE,CAAC,GAAG,EAAA,EAAQ,GAAG,CAAC,GAAG,EAAA,EAAQ,EAAE,GACnD,GAAI,EAAoB,GACxB,GAAI,WAXN,CAaG,EACA,IACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,2BACV,MAAM,6BACN,MAAM,OACN,OAAO,KACP,QAAQ,YACR,cAAY,OACZ,UAAU,kBAEV,EAAA,EAAA,KAAC,OAAD,CAAM,KAAK,eAAe,EAAE,+BAAsC,CAAA,CAC9D,CAAA,CAEK,GAGpB,CAED,EAAO,YAAc"}
|
|
@@ -6,7 +6,7 @@ import { forwardRef as i } from "react";
|
|
|
6
6
|
var a = {
|
|
7
7
|
outline: "none",
|
|
8
8
|
bgColor: "yellow.500",
|
|
9
|
-
color: "
|
|
9
|
+
color: "gray.950"
|
|
10
10
|
}, o = {
|
|
11
11
|
primary: {
|
|
12
12
|
bgColor: "green.500",
|
|
@@ -22,22 +22,22 @@ var a = {
|
|
|
22
22
|
_focusVisible: a
|
|
23
23
|
},
|
|
24
24
|
secondary: {
|
|
25
|
-
color: "
|
|
26
|
-
bgColor: "
|
|
25
|
+
color: "gray.900",
|
|
26
|
+
bgColor: "gray.50",
|
|
27
27
|
_dark: {
|
|
28
|
-
color: "
|
|
29
|
-
bgColor: "
|
|
28
|
+
color: "gray.50",
|
|
29
|
+
bgColor: "gray.600",
|
|
30
30
|
_hover: {
|
|
31
|
-
bgColor: "
|
|
31
|
+
bgColor: "gray.600",
|
|
32
32
|
_focus: a,
|
|
33
33
|
_focusVisible: a
|
|
34
34
|
},
|
|
35
35
|
_focus: a,
|
|
36
36
|
_focusVisible: a
|
|
37
37
|
},
|
|
38
|
-
boxShadow: "0 2px 0 {colors.
|
|
38
|
+
boxShadow: "0 2px 0 {colors.gray.200}",
|
|
39
39
|
_hover: {
|
|
40
|
-
bgColor: "
|
|
40
|
+
bgColor: "gray.100",
|
|
41
41
|
_focus: a,
|
|
42
42
|
_focusVisible: a
|
|
43
43
|
},
|
|
@@ -86,8 +86,8 @@ var a = {
|
|
|
86
86
|
color: "fg",
|
|
87
87
|
_dark: {
|
|
88
88
|
_hover: {
|
|
89
|
-
color: "
|
|
90
|
-
bgColor: "
|
|
89
|
+
color: "gray.50",
|
|
90
|
+
bgColor: "gray.800",
|
|
91
91
|
_focus: a,
|
|
92
92
|
_focusVisible: a
|
|
93
93
|
},
|
|
@@ -95,8 +95,8 @@ var a = {
|
|
|
95
95
|
_focusVisible: a
|
|
96
96
|
},
|
|
97
97
|
_hover: {
|
|
98
|
-
color: "
|
|
99
|
-
bgColor: "
|
|
98
|
+
color: "gray.700",
|
|
99
|
+
bgColor: "gray.100",
|
|
100
100
|
_focus: a,
|
|
101
101
|
_focusVisible: a
|
|
102
102
|
},
|
|
@@ -146,4 +146,4 @@ s.displayName = "Button";
|
|
|
146
146
|
//#endregion
|
|
147
147
|
export { o as n, s as t };
|
|
148
148
|
|
|
149
|
-
//# sourceMappingURL=Button-
|
|
149
|
+
//# sourceMappingURL=Button-uvb-6FRY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button-
|
|
1
|
+
{"version":3,"file":"Button-uvb-6FRY.mjs","names":[],"sources":["../src/components/Button/buttonVariants.ts","../src/components/Button/Button.tsx"],"sourcesContent":["import type { SystemStyleObject } from '@chakra-ui/react'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'plain' | 'error' | 'inverse' | 'link'\n\nexport const buttonFocusStyles: SystemStyleObject = {\n outline: 'none',\n bgColor: 'yellow.500',\n color: 'gray.950',\n}\n\nexport const buttonVariantStyles: Record<ButtonVariant, SystemStyleObject> = {\n primary: {\n bgColor: 'green.500',\n color: 'white',\n boxShadow: '0 2px 0 {colors.green.800}',\n _hover: {\n bgColor: 'green.700',\n color: 'white',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n secondary: {\n color: 'gray.900',\n bgColor: 'gray.50',\n _dark: {\n color: 'gray.50',\n bgColor: 'gray.600',\n _hover: {\n bgColor: 'gray.600',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n boxShadow: '0 2px 0 {colors.gray.200}',\n _hover: {\n bgColor: 'gray.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n error: {\n bgColor: 'border.error',\n color: 'white',\n boxShadow: '0 2px 0 {colors.red.800}',\n _hover: {\n bgColor: 'red.700',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n inverse: {\n bgColor: 'bg',\n color: 'blue.500',\n boxShadow: '0 2px 0 {colors.blue.700}',\n _dark: {\n bgColor: 'blue.900',\n color: 'blue.50',\n _hover: {\n color: 'blue.50',\n bgColor: 'blue.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'blue.700',\n bgColor: 'blue.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n plain: {\n bgColor: 'transparent',\n color: 'fg',\n _dark: {\n _hover: {\n color: 'gray.50',\n bgColor: 'gray.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'gray.700',\n bgColor: 'gray.100',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n link: {\n bgColor: 'transparent',\n color: 'blue.500',\n textDecoration: 'underline',\n boxShadow: 'none',\n _hover: {\n color: 'blue.700',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n}\n","import { Button as ChakraButton, type ButtonProps as ChakraButtonProps } from '@chakra-ui/react'\n\nimport { forwardRef } from 'react'\nimport { pxToRem } from '@/utils'\nimport { buttonVariantStyles, type ButtonVariant } from './buttonVariants'\n\nexport interface ButtonProps extends Omit<ChakraButtonProps, 'variant'> {\n variant?: ButtonVariant\n startButton?: boolean\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', children, startButton, ...props }, ref) => {\n return (\n <ChakraButton\n ref={ref}\n borderRadius=\"0\"\n fontSize=\"1.1875rem\"\n bg=\"green.500\"\n color=\"white\"\n boxShadow=\"0 2px 0 {colors.green.900}\"\n fontFamily=\"body\"\n fontWeight={startButton ? 'bold' : 'normal'}\n padding={`${pxToRem(8)} ${pxToRem(10)} ${pxToRem(7)}`}\n {...buttonVariantStyles[variant]}\n {...props}\n >\n {children}\n {startButton && (\n <svg\n className=\"govuk-button__start-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"19\"\n viewBox=\"0 0 33 40\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path fill=\"currentColor\" d=\"M0 0h13l20 20-20 20H0l20-20z\"></path>\n </svg>\n )}\n </ChakraButton>\n )\n }\n)\n\nButton.displayName = 'Button'\n"],"mappings":";;;;;AAIA,IAAa,IAAuC;CAClD,SAAS;CACT,SAAS;CACT,OAAO;CACR,EAEY,IAAgE;CAC3E,SAAS;EACP,SAAS;EACT,OAAO;EACP,WAAW;EACX,QAAQ;GACN,SAAS;GACT,OAAO;GACP,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACD,WAAW;EACT,OAAO;EACP,SAAS;EACT,OAAO;GACL,OAAO;GACP,SAAS;GACT,QAAQ;IACN,SAAS;IACT,QAAQ;IACR,eAAe;IAChB;GACD,QAAQ;GACR,eAAe;GAChB;EACD,WAAW;EACX,QAAQ;GACN,SAAS;GACT,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACD,OAAO;EACL,SAAS;EACT,OAAO;EACP,WAAW;EACX,QAAQ;GACN,SAAS;GACT,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACD,SAAS;EACP,SAAS;EACT,OAAO;EACP,WAAW;EACX,OAAO;GACL,SAAS;GACT,OAAO;GACP,QAAQ;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,eAAe;IAChB;GACD,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;GACN,OAAO;GACP,SAAS;GACT,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACD,OAAO;EACL,SAAS;EACT,OAAO;EACP,OAAO;GACL,QAAQ;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,eAAe;IAChB;GACD,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;GACN,OAAO;GACP,SAAS;GACT,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACD,MAAM;EACJ,SAAS;EACT,OAAO;EACP,gBAAgB;EAChB,WAAW;EACX,QAAQ;GACN,OAAO;GACP,QAAQ;GACR,eAAe;GAChB;EACD,QAAQ;EACR,eAAe;EAChB;CACF,EC5GY,IAAS,GACnB,EAAE,aAAU,WAAW,aAAU,gBAAa,GAAG,KAAS,MAEvD,kBAAC,GAAD;CACO;CACL,cAAa;CACb,UAAS;CACT,IAAG;CACH,OAAM;CACN,WAAU;CACV,YAAW;CACX,YAAY,IAAc,SAAS;CACnC,SAAS,GAAG,EAAQ,EAAE,CAAC,GAAG,EAAQ,GAAG,CAAC,GAAG,EAAQ,EAAE;CACnD,GAAI,EAAoB;CACxB,GAAI;WAXN,CAaG,GACA,KACC,kBAAC,OAAD;EACE,WAAU;EACV,OAAM;EACN,OAAM;EACN,QAAO;EACP,SAAQ;EACR,eAAY;EACZ,WAAU;YAEV,kBAAC,QAAD;GAAM,MAAK;GAAe,GAAE;GAAsC,CAAA;EAC9D,CAAA,CAEK;GAGpB;AAED,EAAO,cAAc"}
|
package/dist/chakra.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./provider-BSZ9Md7O.js`),t=require(`./govUKTheme-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./provider-BSZ9Md7O.js`),t=require(`./govUKTheme-ZxJEKEJS.js`),n=require(`./govuk-chakra-DjCULAkr.js`),r=require(`./DonutChart-D3Sq34se.js`),i=require(`./Button-Bzp4VO4J.js`);exports.Accordion=n.Ct,exports.Alert=n.xt,exports.Avatar=n.bt,exports.BackLink=n.yt,exports.Breadcrumbs=n.vt,exports.Button=i.t,exports.Calendar=n._t,exports.Card=n.ht,exports.CardGroup=n.gt,exports.Carousel=n.mt,exports.Checkbox=n.ft,exports.Code=n.dt,exports.Collapsible=n.ut,exports.ColorPicker=n.lt,exports.ColorSwatch=n.ct,exports.Combobox=n.st,exports.CookieBanner=n.ot,exports.DateInput=n.at,exports.Details=n.it,exports.Dialog=n.rt,exports.DonutChart=r.t,exports.Editable=n.nt,exports.EmptyState=n.tt,exports.ErrorSummary=n.et,exports.Fieldset=n.pt,exports.FileUpload=n.$,exports.GOVUKCrest=n.Q,exports.GOVUKCrown=n.Z,exports.GOVUKFooter=n.X,exports.GOVUKHeader=n.Y,exports.GOVUKOGL=n.J,exports.GOVUKProvider=e.t,exports.Heading=n.St,exports.Highlight=n.q,exports.HoverCard=n.K,exports.IconButton=n.G,exports.Image=n.W,exports.InsetText=n.U,exports.Kbd=n.H,exports.Link=n.wt,exports.Listbox=n.V,exports.Marquee=n.B,exports.Menu=n.z,exports.NotificationBanner=n.R,exports.Pagination=n.L,exports.Panel=n.I,exports.PhaseBanner=n.t,exports.PinInput=n.F,exports.Popover=n.P,exports.Progress=n.N,exports.ProgressCircle=n.M,exports.QRCode=n.j,exports.Radio=n.A,exports.RadioCard=n.k,exports.Rating=n.O,exports.SegmentedControl=n.E,exports.Select=n.D,exports.Separator=n.T,exports.ServiceNavigation=n.w,exports.Skeleton=n.C,exports.SkipLink=n.S,exports.Slider=n.x,exports.Spinner=n.b,exports.Stat=n.y,exports.Status=n.v,exports.Steps=n._,exports.SummaryList=n.g,exports.Switch=n.h,exports.Table=n.m,exports.Tabs=n.p,exports.Tag=n.n,exports.TagsInput=n.f,exports.TaskList=n.d,exports.Text=r.r,exports.Textarea=n.u,exports.Textinput=n.l,exports.Timeline=n.c,exports.Toast=n.s,exports.ToggleTip=n.o,exports.Tooltip=n.a,exports.TreeView=n.i,exports.WarningText=n.r,exports.govUKTheme=t.t,exports.govUKThemeSystem=t.n;var a=require(`@chakra-ui/react`);Object.keys(a).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return a[e]}})});
|
package/dist/chakra.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { $ as e, A as t, B as n, C as r, Ct as i, D as a, E as o, F as s, G as c, H as l, I as u, J as d, K as f, L as p, M as m, N as h, O as g, P as _, Q as v, R as y, S as b, St as x, T as S, U as C, V as w, W as T, X as E, Y as D, Z as O, _ as k, _t as A, a as j, at as M, b as N, bt as P, c as F, ct as I, d as L, dt as R, et as z, f as B, ft as V, g as H, gt as U, h as W, ht as G, i as K, it as q, j as J, k as Y, l as X, lt as Z, m as Q, mt as $, n as ee, nt as te, o as ne, ot as re, p as ie, pt as ae, q as oe, r as se, rt as ce, s as le, st as ue, t as de, tt as fe, u as pe, ut as me, v as he, vt as ge, w as _e, wt as ve, x as ye, xt as be, y as xe, yt as Se, z as Ce } from "./govuk-chakra-
|
|
1
|
+
import { $ as e, A as t, B as n, C as r, Ct as i, D as a, E as o, F as s, G as c, H as l, I as u, J as d, K as f, L as p, M as m, N as h, O as g, P as _, Q as v, R as y, S as b, St as x, T as S, U as C, V as w, W as T, X as E, Y as D, Z as O, _ as k, _t as A, a as j, at as M, b as N, bt as P, c as F, ct as I, d as L, dt as R, et as z, f as B, ft as V, g as H, gt as U, h as W, ht as G, i as K, it as q, j as J, k as Y, l as X, lt as Z, m as Q, mt as $, n as ee, nt as te, o as ne, ot as re, p as ie, pt as ae, q as oe, r as se, rt as ce, s as le, st as ue, t as de, tt as fe, u as pe, ut as me, v as he, vt as ge, w as _e, wt as ve, x as ye, xt as be, y as xe, yt as Se, z as Ce } from "./govuk-chakra-DQ9KkYkk.mjs";
|
|
2
2
|
import { t as we } from "./provider-BiK0vyjw.mjs";
|
|
3
|
-
import { n as Te, t as Ee } from "./govUKTheme-
|
|
3
|
+
import { n as Te, t as Ee } from "./govUKTheme-fklX-_tG.mjs";
|
|
4
4
|
import { r as De, t as Oe } from "./DonutChart-XZvUd_OH.mjs";
|
|
5
|
-
import { t as ke } from "./Button-
|
|
5
|
+
import { t as ke } from "./Button-uvb-6FRY.mjs";
|
|
6
6
|
export * from "@chakra-ui/react";
|
|
7
7
|
export { i as Accordion, be as Alert, P as Avatar, Se as BackLink, ge as Breadcrumbs, ke as Button, A as Calendar, G as Card, U as CardGroup, $ as Carousel, V as Checkbox, R as Code, me as Collapsible, Z as ColorPicker, I as ColorSwatch, ue as Combobox, re as CookieBanner, M as DateInput, q as Details, ce as Dialog, Oe as DonutChart, te as Editable, fe as EmptyState, z as ErrorSummary, ae as Fieldset, e as FileUpload, v as GOVUKCrest, O as GOVUKCrown, E as GOVUKFooter, D as GOVUKHeader, d as GOVUKOGL, we as GOVUKProvider, x as Heading, oe as Highlight, f as HoverCard, c as IconButton, T as Image, C as InsetText, l as Kbd, ve as Link, w as Listbox, n as Marquee, Ce as Menu, y as NotificationBanner, p as Pagination, u as Panel, de as PhaseBanner, s as PinInput, _ as Popover, h as Progress, m as ProgressCircle, J as QRCode, t as Radio, Y as RadioCard, g as Rating, o as SegmentedControl, a as Select, S as Separator, _e as ServiceNavigation, r as Skeleton, b as SkipLink, ye as Slider, N as Spinner, xe as Stat, he as Status, k as Steps, H as SummaryList, W as Switch, Q as Table, ie as Tabs, ee as Tag, B as TagsInput, L as TaskList, De as Text, pe as Textarea, X as Textinput, F as Timeline, le as Toast, ne as ToggleTip, j as Tooltip, K as TreeView, se as WarningText, Ee as govUKTheme, Te as govUKThemeSystem };
|
package/dist/editor.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./iconBase-BVfFpyD6.js`),t=require(`./px-to-rem-kQOjVfEt.js`),n=require(`./Button-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./iconBase-BVfFpyD6.js`),t=require(`./px-to-rem-kQOjVfEt.js`),n=require(`./Button-Bzp4VO4J.js`),r=require(`./lu-M1lNcGoV.js`),i=require(`./fa-lJYs9HpW.js`);let a=require(`@chakra-ui/react`),o=require(`react/jsx-runtime`),s=require(`react`);s=e.i(s);let c=require(`@tiptap/react`);var l=[`bash`,`html`,`javascript`,`json`,`python`,`tsx`,`typescript`],u=[`github-light`,`github-dark`],d={light:`github-light`,dark:`github-dark`},f=l,p=u,m=(0,a.createShikiAdapter)({async load(){let{createHighlighter:e}=await import(`shiki`);return e({langs:l,themes:u})},theme:d});function h({languages:e=l,themes:t=u,theme:n=d}={}){return(0,a.createShikiAdapter)({async load(){let{createHighlighter:n}=await import(`shiki`);return n({langs:e,themes:t})},theme:n})}var g=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},_=s.createContext(void 0),v={setTheme:e=>{},themes:[]},y=()=>s.useContext(_)??v;s.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:c,nonce:l,scriptProps:u})=>{let d=JSON.stringify([n,t,a,e,c,o,r,i]).slice(1,-1);return s.createElement(`script`,{...u,suppressHydrationWarning:!0,nonce:typeof window>`u`?l:``,dangerouslySetInnerHTML:{__html:`(${g.toString()})(${d})`}})});function b(){let{resolvedTheme:e,setTheme:t,forcedTheme:n}=y(),r=typeof document<`u`&&document.documentElement.classList.contains(`dark`)?`dark`:`light`,i=n||e||r;return{colorMode:i,setColorMode:t,toggleColorMode:()=>{t(i===`dark`?`light`:`dark`)}}}function x(){let{colorMode:e}=b();return e===`dark`?(0,o.jsx)(r.c,{}):(0,o.jsx)(r.u,{})}s.forwardRef(function(e,t){let{toggleColorMode:n}=b();return(0,o.jsx)(a.ClientOnly,{fallback:(0,o.jsx)(a.Skeleton,{boxSize:`9`}),children:(0,o.jsx)(a.IconButton,{onClick:n,variant:`ghost`,"aria-label":`Toggle color mode`,size:`sm`,ref:t,...e,css:{_icon:{width:`5`,height:`5`}},children:(0,o.jsx)(x,{})})})}),s.forwardRef(function(e,t){return(0,o.jsx)(a.Span,{color:`fg`,display:`contents`,className:`chakra-theme light`,colorPalette:`gray`,colorScheme:`light`,ref:t,...e})}),s.forwardRef(function(e,t){return(0,o.jsx)(a.Span,{color:`fg`,display:`contents`,className:`chakra-theme dark`,colorPalette:`gray`,colorScheme:`dark`,ref:t,...e})});var S={minH:t.o(48),px:t.o(16),py:t.o(10),borderBottomWidth:`1px`,borderColor:`border`,bg:`bg.subtle`,gap:t.o(12)},C={position:`relative`,overflowX:`auto`,bg:`bg`},w={display:`block`,w:`100%`,px:t.o(16),py:t.o(16),fontSize:t.o(16),lineHeight:`1.6`},T=(0,s.forwardRef)(function(e,t){let{meta:n,...r}=e,{colorMode:i}=b();return(0,o.jsx)(a.CodeBlock.AdapterProvider,{value:m,children:(0,o.jsx)(a.ClientOnly,{fallback:(0,o.jsx)(a.Skeleton,{height:`200px`}),children:()=>(0,o.jsx)(a.CodeBlock.Root,{ref:t,meta:{...n,colorScheme:i},colorPalette:`green`,bg:`bg`,color:`fg`,borderWidth:`1px`,borderColor:`border`,borderRadius:`0`,overflow:`hidden`,className:`code-block`,...r})})})}),E=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.Header,{ref:t,mb:0,...S,...e})}),D=(0,s.forwardRef)(function(e,n){return(0,o.jsx)(a.CodeBlock.Title,{ref:n,fontSize:t.o(16),fontWeight:`700`,color:`fg`,...e})}),O=(0,s.forwardRef)(function(e,n){return(0,o.jsx)(a.CodeBlock.Control,{ref:n,gap:t.o(8),...e})}),k=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.Content,{ref:t,...C,...e})}),A=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.Code,{ref:t,fontFamily:`mono`,...w,...e})}),j=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.CodeText,{ref:t,...e})}),M=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.CopyTrigger,{ref:t,...e})}),N=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.CopyIndicator,{ref:t,copied:(0,o.jsx)(r.n,{}),...e,children:(0,o.jsx)(i.t,{})})}),P=(0,s.forwardRef)(function({copiedLabel:e=`Copied`,copyLabel:r=`Copy code`,size:i=`xs`,variant:s=`secondary`,...c},l){return(0,o.jsx)(M,{asChild:!0,children:(0,o.jsxs)(n.t,{ref:l,size:i,variant:s,color:`fg`,h:`auto`,minW:`unset`,px:t.o(10),py:t.o(6),gap:t.o(6),...c,children:[(0,o.jsx)(N,{}),(0,o.jsx)(a.CodeBlock.CopyIndicator,{copied:e,children:r})]})})}),F=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.Overlay,{ref:t,...e})}),I=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.CollapseTrigger,{ref:t,...e})}),L=(0,s.forwardRef)(function({children:e,collapsedLabel:t=`Expand code`,expandedLabel:r=`Collapse code`,...i},s){let c=r??e;return(0,o.jsx)(a.CodeBlock.CollapseIndicator,{asChild:!0,ref:s,cursor:`pointer`,collapsed:(0,o.jsx)(n.t,{variant:`secondary`,size:`xs`,children:t}),display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minH:`auto`,...i,children:(0,o.jsx)(n.t,{variant:`secondary`,size:`xs`,children:c})})}),R=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.CodeBlock.CollapseText,{ref:t,...e})}),z=Object.assign(T,{Root:T,Header:E,Title:D,Control:O,Content:k,Code:A,CodeText:j,CopyTrigger:M,CopyIndicator:N,CopyButton:P,Overlay:F,CollapseTrigger:I,CollapseIndicator:L,CollapseText:R}),B=(0,s.createContext)(null);function V(e){let t=(0,s.useContext)(B);if(!t)throw Error(e+` must be used within RichTextEditor.Root`);return t}var H=(0,s.forwardRef)(function({children:e,css:t,disabled:n,editor:r,...i},c){let l=(0,s.useMemo)(()=>({editor:r}),[r]),u=(0,a.useSlotRecipe)({key:`richTextEditor`})();return(0,o.jsx)(B.Provider,{value:l,children:(0,o.jsx)(a.Box,{ref:c,"data-disabled":n||void 0,css:[u.root,{"& .ProseMirror":u.content},t],...i,children:e})})}),U=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.HStack,{ref:t,css:(0,a.useSlotRecipe)({key:`richTextEditor`})().toolbar,separator:(0,o.jsx)(a.StackSeparator,{h:`5`}),...e})}),W=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.HStack,{ref:t,css:(0,a.useSlotRecipe)({key:`richTextEditor`})().footer,...e})}),G=(0,s.forwardRef)(function(e,t){return(0,o.jsx)(a.ButtonGroup,{ref:t,css:(0,a.useSlotRecipe)({key:`richTextEditor`})().controlGroup,size:`sm`,variant:`outline`,...e})}),K=(0,s.forwardRef)(function(e,t){let{editor:n}=V(`RichTextEditor.Content`);return n?(0,o.jsx)(c.EditorContent,{editor:n,innerRef:t,...e}):null});function q(e,t,n,r){return function(){let{editor:i}=V(`RichTextEditor.Control`),s=i&&r?r(i):!1;return(0,o.jsx)(a.IconButton,{"aria-label":e,variant:s?`subtle`:`ghost`,size:`sm`,onClick:()=>{i&&n(i)},children:t})}}var J={Bold:q(`Bold`,(0,o.jsx)(r.t,{}),e=>e.chain().focus().toggleBold().run(),e=>e.isActive(`bold`)),Italic:q(`Italic`,(0,o.jsx)(r.o,{}),e=>e.chain().focus().toggleItalic().run(),e=>e.isActive(`italic`)),H1:q(`Heading 1`,(0,o.jsx)(r.r,{}),e=>e.chain().focus().toggleHeading({level:1}).run(),e=>e.isActive(`heading`,{level:1})),H2:q(`Heading 2`,(0,o.jsx)(r.i,{}),e=>e.chain().focus().toggleHeading({level:2}).run(),e=>e.isActive(`heading`,{level:2})),BulletList:q(`Bullet list`,(0,o.jsx)(r.s,{}),e=>e.chain().focus().toggleBulletList().run(),e=>e.isActive(`bulletList`)),Undo:q(`Undo`,(0,o.jsx)(r.d,{}),e=>e.chain().focus().undo().run()),Redo:q(`Redo`,(0,o.jsx)(r.l,{}),e=>e.chain().focus().redo().run())},Y=Object.assign(H,{Root:H,Toolbar:U,Content:K,ControlGroup:G,Footer:W,Control:J});exports.CodeBlock=z,exports.CodeBlockCode=A,exports.CodeBlockCodeText=j,exports.CodeBlockCollapseIndicator=L,exports.CodeBlockCollapseText=R,exports.CodeBlockCollapseTrigger=I,exports.CodeBlockContent=k,exports.CodeBlockControl=O,exports.CodeBlockCopyButton=P,exports.CodeBlockCopyIndicator=N,exports.CodeBlockCopyTrigger=M,exports.CodeBlockHeader=E,exports.CodeBlockOverlay=F,exports.CodeBlockRoot=T,exports.CodeBlockTitle=D,exports.Control=J,exports.RichTextEditor=Y,exports.RichTextEditorContent=K,exports.RichTextEditorControlGroup=G,exports.RichTextEditorFooter=W,exports.RichTextEditorRoot=H,exports.RichTextEditorToolbar=U,exports.createGovUkShikiAdapter=h,exports.shikiAdapter=m,exports.shikiLanguages=f,exports.shikiThemes=p;
|
|
2
2
|
//# sourceMappingURL=editor.cjs.map
|
package/dist/editor.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.cjs","names":["t"],"sources":["../src/utils/shiki-adapter.ts","../node_modules/next-themes/dist/index.mjs","../src/components/ui/color-mode.tsx","../src/components/CodeBlock/CodeBlock.tsx","../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import { createShikiAdapter } from '@chakra-ui/react'\nimport type { BundledLanguage, BundledTheme, HighlighterGeneric } from 'shiki'\n\nexport type ShikiHighlighter = HighlighterGeneric<BundledLanguage, BundledTheme>\n\nexport interface GovUkShikiAdapterOptions {\n languages?: BundledLanguage[]\n themes?: BundledTheme[]\n theme?: string | Record<string, string>\n}\n\nconst defaultShikiLanguages: BundledLanguage[] = [\n 'bash',\n 'html',\n 'javascript',\n 'json',\n 'python',\n 'tsx',\n 'typescript',\n]\nconst defaultShikiThemes: BundledTheme[] = ['github-light', 'github-dark']\nconst defaultShikiTheme = {\n light: 'github-light',\n dark: 'github-dark',\n} satisfies Record<string, string>\n\nexport const shikiLanguages = defaultShikiLanguages\nexport const shikiThemes = defaultShikiThemes\n\nexport const shikiAdapter = createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: defaultShikiLanguages,\n themes: defaultShikiThemes,\n })\n },\n theme: defaultShikiTheme,\n})\n\nexport function createGovUkShikiAdapter({\n languages = defaultShikiLanguages,\n themes = defaultShikiThemes,\n theme = defaultShikiTheme,\n}: GovUkShikiAdapterOptions = {}) {\n return createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: languages,\n themes,\n })\n },\n theme,\n })\n}\n","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client'\n\nimport type { IconButtonProps, SpanProps } from '@chakra-ui/react'\nimport { ClientOnly, IconButton, Skeleton, Span } from '@chakra-ui/react'\nimport { ThemeProvider, useTheme } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\nimport * as React from 'react'\nimport { LuMoon, LuSun } from 'react-icons/lu'\n\nexport type ColorModeProviderProps = ThemeProviderProps\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n}\n\nexport type ColorMode = 'light' | 'dark'\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode\n setColorMode: (colorMode: ColorMode) => void\n toggleColorMode: () => void\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme, forcedTheme } = useTheme()\n const fallbackTheme =\n typeof document !== 'undefined' && document.documentElement.classList.contains('dark')\n ? 'dark'\n : 'light'\n const colorMode = (forcedTheme || resolvedTheme || fallbackTheme) as ColorMode\n const toggleColorMode = () => {\n setTheme(colorMode === 'dark' ? 'light' : 'dark')\n }\n return {\n colorMode,\n setColorMode: setTheme,\n toggleColorMode,\n }\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? dark : light\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? <LuMoon /> : <LuSun />\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, 'aria-label'>\n\nexport const ColorModeButton = React.forwardRef<HTMLButtonElement, ColorModeButtonProps>(\n function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode()\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"9\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: '5',\n height: '5',\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n )\n }\n)\n\nexport const LightMode = React.forwardRef<HTMLSpanElement, SpanProps>(\n function LightMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme light\"\n colorPalette=\"grey\"\n colorScheme=\"light\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nexport const DarkMode = React.forwardRef<HTMLSpanElement, SpanProps>(function DarkMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme dark\"\n colorPalette=\"grey\"\n colorScheme=\"dark\"\n ref={ref}\n {...props}\n />\n )\n})\n","import {\n CodeBlock as ChakraCodeBlock,\n ClientOnly,\n Skeleton,\n type SystemStyleObject,\n} from '@chakra-ui/react'\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type ReactNode } from 'react'\nimport { LuCheck } from 'react-icons/lu'\n\nimport { pxToRem, shikiAdapter } from '@/utils'\nimport { Button, type ButtonProps } from '@/components/Button'\nimport { useColorMode } from '@/components/ui/color-mode'\nimport { FaCopy } from 'react-icons/fa'\n\nexport type CodeBlockProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Root>\nexport type CodeBlockHeaderProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Header>\nexport type CodeBlockTitleProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Title>\nexport type CodeBlockContentProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Content>\nexport type CodeBlockCodeProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Code>\nexport type CodeBlockCodeTextProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CodeText>\nexport type CodeBlockControlProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Control>\nexport type CodeBlockCopyTriggerProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CopyTrigger>\nexport type CodeBlockCopyIndicatorProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CopyIndicator\n>\nexport type CodeBlockOverlayProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Overlay>\nexport type CodeBlockCollapseTriggerProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseTrigger\n>\nexport interface CodeBlockCollapseIndicatorProps extends Omit<\n ComponentPropsWithoutRef<typeof ChakraCodeBlock.CollapseIndicator>,\n 'collapsed'\n> {\n collapsedLabel?: ReactNode\n expandedLabel?: ReactNode\n}\nexport type CodeBlockCollapseTextProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseText\n>\n\nexport interface CodeBlockCopyButtonProps extends Omit<ButtonProps, 'children'> {\n copyLabel?: ReactNode\n copiedLabel?: ReactNode\n}\n\nconst headerStyles: SystemStyleObject = {\n minH: pxToRem(48),\n px: pxToRem(16),\n py: pxToRem(10),\n borderBottomWidth: '1px',\n borderColor: 'border',\n bg: 'bg.subtle',\n gap: pxToRem(12),\n}\n\nconst contentStyles: SystemStyleObject = {\n position: 'relative',\n overflowX: 'auto',\n bg: 'bg',\n}\n\nconst codeStyles: SystemStyleObject = {\n display: 'block',\n w: '100%',\n px: pxToRem(16),\n py: pxToRem(16),\n fontSize: pxToRem(16),\n lineHeight: '1.6',\n}\n\nconst CodeBlockRoot = forwardRef<ElementRef<typeof ChakraCodeBlock.Root>, CodeBlockProps>(\n function CodeBlockRoot(props, ref) {\n const { meta, ...restProps } = props\n const { colorMode } = useColorMode()\n return (\n <ChakraCodeBlock.AdapterProvider value={shikiAdapter}>\n <ClientOnly fallback={<Skeleton height=\"200px\" />}>\n {() => (\n <ChakraCodeBlock.Root\n ref={ref}\n meta={{ ...meta, colorScheme: colorMode }}\n colorPalette={'green'}\n bg=\"bg\"\n color=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"0\"\n overflow=\"hidden\"\n className=\"code-block\"\n {...restProps}\n />\n )}\n </ClientOnly>\n </ChakraCodeBlock.AdapterProvider>\n )\n }\n)\n\nconst CodeBlockHeader = forwardRef<ElementRef<typeof ChakraCodeBlock.Header>, CodeBlockHeaderProps>(\n function CodeBlockHeader(props, ref) {\n return <ChakraCodeBlock.Header ref={ref} mb={0} {...headerStyles} {...props} />\n }\n)\n\nconst CodeBlockTitle = forwardRef<ElementRef<typeof ChakraCodeBlock.Title>, CodeBlockTitleProps>(\n function CodeBlockTitle(props, ref) {\n return (\n <ChakraCodeBlock.Title\n ref={ref}\n fontSize={pxToRem(16)}\n fontWeight=\"700\"\n color=\"fg\"\n {...props}\n />\n )\n }\n)\n\nconst CodeBlockControl = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Control>,\n CodeBlockControlProps\n>(function CodeBlockControl(props, ref) {\n return <ChakraCodeBlock.Control ref={ref} gap={pxToRem(8)} {...props} />\n})\n\nconst CodeBlockContent = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Content>,\n CodeBlockContentProps\n>(function CodeBlockContent(props, ref) {\n return <ChakraCodeBlock.Content ref={ref} {...contentStyles} {...props} />\n})\n\nconst CodeBlockCode = forwardRef<ElementRef<typeof ChakraCodeBlock.Code>, CodeBlockCodeProps>(\n function CodeBlockCode(props, ref) {\n return <ChakraCodeBlock.Code ref={ref} fontFamily=\"mono\" {...codeStyles} {...props} />\n }\n)\n\nconst CodeBlockCodeText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CodeText>,\n CodeBlockCodeTextProps\n>(function CodeBlockCodeText(props, ref) {\n return <ChakraCodeBlock.CodeText ref={ref} {...props} />\n})\n\nconst CodeBlockCopyTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyTrigger>,\n CodeBlockCopyTriggerProps\n>(function CodeBlockCopyTrigger(props, ref) {\n return <ChakraCodeBlock.CopyTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCopyIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyIndicator>,\n CodeBlockCopyIndicatorProps\n>(function CodeBlockCopyIndicator(props, ref) {\n return (\n <ChakraCodeBlock.CopyIndicator ref={ref} copied={<LuCheck />} {...props}>\n <FaCopy />\n </ChakraCodeBlock.CopyIndicator>\n )\n})\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n function CodeBlockCopyButton(\n {\n copiedLabel = 'Copied',\n copyLabel = 'Copy code',\n size = 'xs',\n variant = 'secondary',\n ...props\n },\n ref\n ) {\n return (\n <CodeBlockCopyTrigger asChild>\n <Button\n ref={ref}\n size={size}\n variant={variant}\n color=\"fg\"\n h=\"auto\"\n minW=\"unset\"\n px={pxToRem(10)}\n py={pxToRem(6)}\n gap={pxToRem(6)}\n {...props}\n >\n <CodeBlockCopyIndicator />\n <ChakraCodeBlock.CopyIndicator copied={copiedLabel}>\n {copyLabel}\n </ChakraCodeBlock.CopyIndicator>\n </Button>\n </CodeBlockCopyTrigger>\n )\n }\n)\n\nconst CodeBlockOverlay = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Overlay>,\n CodeBlockOverlayProps\n>(function CodeBlockOverlay(props, ref) {\n return <ChakraCodeBlock.Overlay ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseTrigger>,\n CodeBlockCollapseTriggerProps\n>(function CodeBlockCollapseTrigger(props, ref) {\n return <ChakraCodeBlock.CollapseTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseIndicator>,\n CodeBlockCollapseIndicatorProps\n>(function CodeBlockCollapseIndicator(\n { children, collapsedLabel = 'Expand code', expandedLabel = 'Collapse code', ...props },\n ref\n) {\n const expandedContent = expandedLabel ?? children\n const collapsedComponent = () => {\n return (\n <Button variant=\"secondary\" size=\"xs\">\n {collapsedLabel}\n </Button>\n )\n }\n return (\n <ChakraCodeBlock.CollapseIndicator\n asChild\n ref={ref}\n cursor=\"pointer\"\n collapsed={collapsedComponent()}\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n minH=\"auto\"\n {...props}\n >\n <Button variant=\"secondary\" size=\"xs\">\n {expandedContent}\n </Button>\n </ChakraCodeBlock.CollapseIndicator>\n )\n})\n\nconst CodeBlockCollapseText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseText>,\n CodeBlockCollapseTextProps\n>(function CodeBlockCollapseText(props, ref) {\n return <ChakraCodeBlock.CollapseText ref={ref} {...props} />\n})\n\nexport const CodeBlock = Object.assign(CodeBlockRoot, {\n Root: CodeBlockRoot,\n Header: CodeBlockHeader,\n Title: CodeBlockTitle,\n Control: CodeBlockControl,\n Content: CodeBlockContent,\n Code: CodeBlockCode,\n CodeText: CodeBlockCodeText,\n CopyTrigger: CodeBlockCopyTrigger,\n CopyIndicator: CodeBlockCopyIndicator,\n CopyButton: CodeBlockCopyButton,\n Overlay: CodeBlockOverlay,\n CollapseTrigger: CodeBlockCollapseTrigger,\n CollapseIndicator: CodeBlockCollapseIndicator,\n CollapseText: CodeBlockCollapseText,\n})\n\nexport {\n CodeBlockRoot,\n CodeBlockHeader,\n CodeBlockTitle,\n CodeBlockControl,\n CodeBlockContent,\n CodeBlockCode,\n CodeBlockCodeText,\n CodeBlockCopyTrigger,\n CodeBlockCopyIndicator,\n CodeBlockCopyButton,\n CodeBlockOverlay,\n CodeBlockCollapseTrigger,\n CodeBlockCollapseIndicator,\n CodeBlockCollapseText,\n}\n","import {\n Box,\n ButtonGroup,\n HStack,\n IconButton,\n StackSeparator,\n useSlotRecipe,\n} from '@chakra-ui/react'\nimport type { BoxProps, StackProps } from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { EditorContent } from '@tiptap/react'\nimport {\n createContext,\n forwardRef,\n type ComponentPropsWithoutRef,\n type JSX,\n type ReactNode,\n useContext,\n useMemo,\n} from 'react'\nimport { LuBold, LuHeading1, LuHeading2, LuItalic, LuList, LuRedo, LuUndo } from 'react-icons/lu'\n\ninterface RichTextEditorContextValue {\n editor: Editor | null\n}\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue | null>(null)\n\nfunction useRichTextEditorContext(componentName: string) {\n const context = useContext(RichTextEditorContext)\n if (!context) {\n throw new Error(componentName + ' must be used within RichTextEditor.Root')\n }\n return context\n}\n\nexport interface RichTextEditorProps extends BoxProps {\n editor: Editor | null\n disabled?: boolean\n}\n\nexport const RichTextEditorRoot = forwardRef<HTMLDivElement, RichTextEditorProps>(\n function RichTextEditorRoot({ children, css, disabled, editor, ...props }, ref) {\n const value = useMemo(() => ({ editor }), [editor])\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <RichTextEditorContext.Provider value={value}>\n <Box\n ref={ref}\n data-disabled={disabled || undefined}\n css={[\n styles.root,\n {\n '& .ProseMirror': styles.content,\n },\n css,\n ]}\n {...props}\n >\n {children}\n </Box>\n </RichTextEditorContext.Provider>\n )\n }\n)\n\nexport type RichTextEditorToolbarProps = StackProps\n\nexport const RichTextEditorToolbar = forwardRef<HTMLDivElement, RichTextEditorToolbarProps>(\n function RichTextEditorToolbar(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.toolbar} separator={<StackSeparator h=\"5\" />} {...props} />\n }\n)\n\nexport const RichTextEditorFooter = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorFooter(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.footer} {...props} />\n }\n)\n\nexport const RichTextEditorControlGroup = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorControlGroup(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <ButtonGroup ref={ref} css={styles.controlGroup} size=\"sm\" variant=\"outline\" {...props} />\n )\n }\n)\n\nexport type RichTextEditorContentProps = Omit<\n ComponentPropsWithoutRef<typeof EditorContent>,\n 'editor' | 'innerRef'\n>\n\nexport const RichTextEditorContent = forwardRef<HTMLDivElement, RichTextEditorContentProps>(\n function RichTextEditorContent(props, ref) {\n const { editor } = useRichTextEditorContext('RichTextEditor.Content')\n if (!editor) return null\n return <EditorContent editor={editor} innerRef={ref} {...props} />\n }\n)\n\nfunction createControl(\n label: string,\n icon: ReactNode,\n action: (editor: Editor) => void,\n isActive?: (editor: Editor) => boolean\n): () => JSX.Element {\n return function ControlButton(): JSX.Element {\n const { editor } = useRichTextEditorContext('RichTextEditor.Control')\n const active = editor && isActive ? isActive(editor) : false\n\n return (\n <IconButton\n aria-label={label}\n variant={active ? 'subtle' : 'ghost'}\n size=\"sm\"\n onClick={() => {\n if (!editor) return\n action(editor)\n }}\n >\n {icon}\n </IconButton>\n )\n }\n}\n\nexport const Control = {\n Bold: createControl(\n 'Bold',\n <LuBold />,\n (editor) => editor.chain().focus().toggleBold().run(),\n (editor) => editor.isActive('bold')\n ),\n Italic: createControl(\n 'Italic',\n <LuItalic />,\n (editor) => editor.chain().focus().toggleItalic().run(),\n (editor) => editor.isActive('italic')\n ),\n H1: createControl(\n 'Heading 1',\n <LuHeading1 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n (editor) => editor.isActive('heading', { level: 1 })\n ),\n H2: createControl(\n 'Heading 2',\n <LuHeading2 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n (editor) => editor.isActive('heading', { level: 2 })\n ),\n BulletList: createControl(\n 'Bullet list',\n <LuList />,\n (editor) => editor.chain().focus().toggleBulletList().run(),\n (editor) => editor.isActive('bulletList')\n ),\n Undo: createControl('Undo', <LuUndo />, (editor) => editor.chain().focus().undo().run()),\n Redo: createControl('Redo', <LuRedo />, (editor) => editor.chain().focus().redo().run()),\n}\n\nexport const RichTextEditor = Object.assign(RichTextEditorRoot, {\n Root: RichTextEditorRoot,\n Toolbar: RichTextEditorToolbar,\n Content: RichTextEditorContent,\n ControlGroup: RichTextEditorControlGroup,\n Footer: RichTextEditorFooter,\n Control,\n})\n"],"x_google_ignoreList":[1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.cjs","names":["t"],"sources":["../src/utils/shiki-adapter.ts","../node_modules/next-themes/dist/index.mjs","../src/components/ui/color-mode.tsx","../src/components/CodeBlock/CodeBlock.tsx","../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import { createShikiAdapter } from '@chakra-ui/react'\nimport type { BundledLanguage, BundledTheme, HighlighterGeneric } from 'shiki'\n\nexport type ShikiHighlighter = HighlighterGeneric<BundledLanguage, BundledTheme>\n\nexport interface GovUkShikiAdapterOptions {\n languages?: BundledLanguage[]\n themes?: BundledTheme[]\n theme?: string | Record<string, string>\n}\n\nconst defaultShikiLanguages: BundledLanguage[] = [\n 'bash',\n 'html',\n 'javascript',\n 'json',\n 'python',\n 'tsx',\n 'typescript',\n]\nconst defaultShikiThemes: BundledTheme[] = ['github-light', 'github-dark']\nconst defaultShikiTheme = {\n light: 'github-light',\n dark: 'github-dark',\n} satisfies Record<string, string>\n\nexport const shikiLanguages = defaultShikiLanguages\nexport const shikiThemes = defaultShikiThemes\n\nexport const shikiAdapter = createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: defaultShikiLanguages,\n themes: defaultShikiThemes,\n })\n },\n theme: defaultShikiTheme,\n})\n\nexport function createGovUkShikiAdapter({\n languages = defaultShikiLanguages,\n themes = defaultShikiThemes,\n theme = defaultShikiTheme,\n}: GovUkShikiAdapterOptions = {}) {\n return createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: languages,\n themes,\n })\n },\n theme,\n })\n}\n","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client'\n\nimport type { IconButtonProps, SpanProps } from '@chakra-ui/react'\nimport { ClientOnly, IconButton, Skeleton, Span } from '@chakra-ui/react'\nimport { ThemeProvider, useTheme } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\nimport * as React from 'react'\nimport { LuMoon, LuSun } from 'react-icons/lu'\n\nexport type ColorModeProviderProps = ThemeProviderProps\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n}\n\nexport type ColorMode = 'light' | 'dark'\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode\n setColorMode: (colorMode: ColorMode) => void\n toggleColorMode: () => void\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme, forcedTheme } = useTheme()\n const fallbackTheme =\n typeof document !== 'undefined' && document.documentElement.classList.contains('dark')\n ? 'dark'\n : 'light'\n const colorMode = (forcedTheme || resolvedTheme || fallbackTheme) as ColorMode\n const toggleColorMode = () => {\n setTheme(colorMode === 'dark' ? 'light' : 'dark')\n }\n return {\n colorMode,\n setColorMode: setTheme,\n toggleColorMode,\n }\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? dark : light\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? <LuMoon /> : <LuSun />\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, 'aria-label'>\n\nexport const ColorModeButton = React.forwardRef<HTMLButtonElement, ColorModeButtonProps>(\n function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode()\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"9\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: '5',\n height: '5',\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n )\n }\n)\n\nexport const LightMode = React.forwardRef<HTMLSpanElement, SpanProps>(\n function LightMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme light\"\n colorPalette=\"gray\"\n colorScheme=\"light\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nexport const DarkMode = React.forwardRef<HTMLSpanElement, SpanProps>(function DarkMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme dark\"\n colorPalette=\"gray\"\n colorScheme=\"dark\"\n ref={ref}\n {...props}\n />\n )\n})\n","import {\n CodeBlock as ChakraCodeBlock,\n ClientOnly,\n Skeleton,\n type SystemStyleObject,\n} from '@chakra-ui/react'\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type ReactNode } from 'react'\nimport { LuCheck } from 'react-icons/lu'\n\nimport { pxToRem, shikiAdapter } from '@/utils'\nimport { Button, type ButtonProps } from '@/components/Button'\nimport { useColorMode } from '@/components/ui/color-mode'\nimport { FaCopy } from 'react-icons/fa'\n\nexport type CodeBlockProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Root>\nexport type CodeBlockHeaderProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Header>\nexport type CodeBlockTitleProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Title>\nexport type CodeBlockContentProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Content>\nexport type CodeBlockCodeProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Code>\nexport type CodeBlockCodeTextProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CodeText>\nexport type CodeBlockControlProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Control>\nexport type CodeBlockCopyTriggerProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CopyTrigger>\nexport type CodeBlockCopyIndicatorProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CopyIndicator\n>\nexport type CodeBlockOverlayProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Overlay>\nexport type CodeBlockCollapseTriggerProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseTrigger\n>\nexport interface CodeBlockCollapseIndicatorProps extends Omit<\n ComponentPropsWithoutRef<typeof ChakraCodeBlock.CollapseIndicator>,\n 'collapsed'\n> {\n collapsedLabel?: ReactNode\n expandedLabel?: ReactNode\n}\nexport type CodeBlockCollapseTextProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseText\n>\n\nexport interface CodeBlockCopyButtonProps extends Omit<ButtonProps, 'children'> {\n copyLabel?: ReactNode\n copiedLabel?: ReactNode\n}\n\nconst headerStyles: SystemStyleObject = {\n minH: pxToRem(48),\n px: pxToRem(16),\n py: pxToRem(10),\n borderBottomWidth: '1px',\n borderColor: 'border',\n bg: 'bg.subtle',\n gap: pxToRem(12),\n}\n\nconst contentStyles: SystemStyleObject = {\n position: 'relative',\n overflowX: 'auto',\n bg: 'bg',\n}\n\nconst codeStyles: SystemStyleObject = {\n display: 'block',\n w: '100%',\n px: pxToRem(16),\n py: pxToRem(16),\n fontSize: pxToRem(16),\n lineHeight: '1.6',\n}\n\nconst CodeBlockRoot = forwardRef<ElementRef<typeof ChakraCodeBlock.Root>, CodeBlockProps>(\n function CodeBlockRoot(props, ref) {\n const { meta, ...restProps } = props\n const { colorMode } = useColorMode()\n return (\n <ChakraCodeBlock.AdapterProvider value={shikiAdapter}>\n <ClientOnly fallback={<Skeleton height=\"200px\" />}>\n {() => (\n <ChakraCodeBlock.Root\n ref={ref}\n meta={{ ...meta, colorScheme: colorMode }}\n colorPalette={'green'}\n bg=\"bg\"\n color=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"0\"\n overflow=\"hidden\"\n className=\"code-block\"\n {...restProps}\n />\n )}\n </ClientOnly>\n </ChakraCodeBlock.AdapterProvider>\n )\n }\n)\n\nconst CodeBlockHeader = forwardRef<ElementRef<typeof ChakraCodeBlock.Header>, CodeBlockHeaderProps>(\n function CodeBlockHeader(props, ref) {\n return <ChakraCodeBlock.Header ref={ref} mb={0} {...headerStyles} {...props} />\n }\n)\n\nconst CodeBlockTitle = forwardRef<ElementRef<typeof ChakraCodeBlock.Title>, CodeBlockTitleProps>(\n function CodeBlockTitle(props, ref) {\n return (\n <ChakraCodeBlock.Title\n ref={ref}\n fontSize={pxToRem(16)}\n fontWeight=\"700\"\n color=\"fg\"\n {...props}\n />\n )\n }\n)\n\nconst CodeBlockControl = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Control>,\n CodeBlockControlProps\n>(function CodeBlockControl(props, ref) {\n return <ChakraCodeBlock.Control ref={ref} gap={pxToRem(8)} {...props} />\n})\n\nconst CodeBlockContent = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Content>,\n CodeBlockContentProps\n>(function CodeBlockContent(props, ref) {\n return <ChakraCodeBlock.Content ref={ref} {...contentStyles} {...props} />\n})\n\nconst CodeBlockCode = forwardRef<ElementRef<typeof ChakraCodeBlock.Code>, CodeBlockCodeProps>(\n function CodeBlockCode(props, ref) {\n return <ChakraCodeBlock.Code ref={ref} fontFamily=\"mono\" {...codeStyles} {...props} />\n }\n)\n\nconst CodeBlockCodeText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CodeText>,\n CodeBlockCodeTextProps\n>(function CodeBlockCodeText(props, ref) {\n return <ChakraCodeBlock.CodeText ref={ref} {...props} />\n})\n\nconst CodeBlockCopyTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyTrigger>,\n CodeBlockCopyTriggerProps\n>(function CodeBlockCopyTrigger(props, ref) {\n return <ChakraCodeBlock.CopyTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCopyIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyIndicator>,\n CodeBlockCopyIndicatorProps\n>(function CodeBlockCopyIndicator(props, ref) {\n return (\n <ChakraCodeBlock.CopyIndicator ref={ref} copied={<LuCheck />} {...props}>\n <FaCopy />\n </ChakraCodeBlock.CopyIndicator>\n )\n})\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n function CodeBlockCopyButton(\n {\n copiedLabel = 'Copied',\n copyLabel = 'Copy code',\n size = 'xs',\n variant = 'secondary',\n ...props\n },\n ref\n ) {\n return (\n <CodeBlockCopyTrigger asChild>\n <Button\n ref={ref}\n size={size}\n variant={variant}\n color=\"fg\"\n h=\"auto\"\n minW=\"unset\"\n px={pxToRem(10)}\n py={pxToRem(6)}\n gap={pxToRem(6)}\n {...props}\n >\n <CodeBlockCopyIndicator />\n <ChakraCodeBlock.CopyIndicator copied={copiedLabel}>\n {copyLabel}\n </ChakraCodeBlock.CopyIndicator>\n </Button>\n </CodeBlockCopyTrigger>\n )\n }\n)\n\nconst CodeBlockOverlay = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Overlay>,\n CodeBlockOverlayProps\n>(function CodeBlockOverlay(props, ref) {\n return <ChakraCodeBlock.Overlay ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseTrigger>,\n CodeBlockCollapseTriggerProps\n>(function CodeBlockCollapseTrigger(props, ref) {\n return <ChakraCodeBlock.CollapseTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseIndicator>,\n CodeBlockCollapseIndicatorProps\n>(function CodeBlockCollapseIndicator(\n { children, collapsedLabel = 'Expand code', expandedLabel = 'Collapse code', ...props },\n ref\n) {\n const expandedContent = expandedLabel ?? children\n const collapsedComponent = () => {\n return (\n <Button variant=\"secondary\" size=\"xs\">\n {collapsedLabel}\n </Button>\n )\n }\n return (\n <ChakraCodeBlock.CollapseIndicator\n asChild\n ref={ref}\n cursor=\"pointer\"\n collapsed={collapsedComponent()}\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n minH=\"auto\"\n {...props}\n >\n <Button variant=\"secondary\" size=\"xs\">\n {expandedContent}\n </Button>\n </ChakraCodeBlock.CollapseIndicator>\n )\n})\n\nconst CodeBlockCollapseText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseText>,\n CodeBlockCollapseTextProps\n>(function CodeBlockCollapseText(props, ref) {\n return <ChakraCodeBlock.CollapseText ref={ref} {...props} />\n})\n\nexport const CodeBlock = Object.assign(CodeBlockRoot, {\n Root: CodeBlockRoot,\n Header: CodeBlockHeader,\n Title: CodeBlockTitle,\n Control: CodeBlockControl,\n Content: CodeBlockContent,\n Code: CodeBlockCode,\n CodeText: CodeBlockCodeText,\n CopyTrigger: CodeBlockCopyTrigger,\n CopyIndicator: CodeBlockCopyIndicator,\n CopyButton: CodeBlockCopyButton,\n Overlay: CodeBlockOverlay,\n CollapseTrigger: CodeBlockCollapseTrigger,\n CollapseIndicator: CodeBlockCollapseIndicator,\n CollapseText: CodeBlockCollapseText,\n})\n\nexport {\n CodeBlockRoot,\n CodeBlockHeader,\n CodeBlockTitle,\n CodeBlockControl,\n CodeBlockContent,\n CodeBlockCode,\n CodeBlockCodeText,\n CodeBlockCopyTrigger,\n CodeBlockCopyIndicator,\n CodeBlockCopyButton,\n CodeBlockOverlay,\n CodeBlockCollapseTrigger,\n CodeBlockCollapseIndicator,\n CodeBlockCollapseText,\n}\n","import {\n Box,\n ButtonGroup,\n HStack,\n IconButton,\n StackSeparator,\n useSlotRecipe,\n} from '@chakra-ui/react'\nimport type { BoxProps, StackProps } from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { EditorContent } from '@tiptap/react'\nimport {\n createContext,\n forwardRef,\n type ComponentPropsWithoutRef,\n type JSX,\n type ReactNode,\n useContext,\n useMemo,\n} from 'react'\nimport { LuBold, LuHeading1, LuHeading2, LuItalic, LuList, LuRedo, LuUndo } from 'react-icons/lu'\n\ninterface RichTextEditorContextValue {\n editor: Editor | null\n}\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue | null>(null)\n\nfunction useRichTextEditorContext(componentName: string) {\n const context = useContext(RichTextEditorContext)\n if (!context) {\n throw new Error(componentName + ' must be used within RichTextEditor.Root')\n }\n return context\n}\n\nexport interface RichTextEditorProps extends BoxProps {\n editor: Editor | null\n disabled?: boolean\n}\n\nexport const RichTextEditorRoot = forwardRef<HTMLDivElement, RichTextEditorProps>(\n function RichTextEditorRoot({ children, css, disabled, editor, ...props }, ref) {\n const value = useMemo(() => ({ editor }), [editor])\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <RichTextEditorContext.Provider value={value}>\n <Box\n ref={ref}\n data-disabled={disabled || undefined}\n css={[\n styles.root,\n {\n '& .ProseMirror': styles.content,\n },\n css,\n ]}\n {...props}\n >\n {children}\n </Box>\n </RichTextEditorContext.Provider>\n )\n }\n)\n\nexport type RichTextEditorToolbarProps = StackProps\n\nexport const RichTextEditorToolbar = forwardRef<HTMLDivElement, RichTextEditorToolbarProps>(\n function RichTextEditorToolbar(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.toolbar} separator={<StackSeparator h=\"5\" />} {...props} />\n }\n)\n\nexport const RichTextEditorFooter = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorFooter(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.footer} {...props} />\n }\n)\n\nexport const RichTextEditorControlGroup = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorControlGroup(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <ButtonGroup ref={ref} css={styles.controlGroup} size=\"sm\" variant=\"outline\" {...props} />\n )\n }\n)\n\nexport type RichTextEditorContentProps = Omit<\n ComponentPropsWithoutRef<typeof EditorContent>,\n 'editor' | 'innerRef'\n>\n\nexport const RichTextEditorContent = forwardRef<HTMLDivElement, RichTextEditorContentProps>(\n function RichTextEditorContent(props, ref) {\n const { editor } = useRichTextEditorContext('RichTextEditor.Content')\n if (!editor) return null\n return <EditorContent editor={editor} innerRef={ref} {...props} />\n }\n)\n\nfunction createControl(\n label: string,\n icon: ReactNode,\n action: (editor: Editor) => void,\n isActive?: (editor: Editor) => boolean\n): () => JSX.Element {\n return function ControlButton(): JSX.Element {\n const { editor } = useRichTextEditorContext('RichTextEditor.Control')\n const active = editor && isActive ? isActive(editor) : false\n\n return (\n <IconButton\n aria-label={label}\n variant={active ? 'subtle' : 'ghost'}\n size=\"sm\"\n onClick={() => {\n if (!editor) return\n action(editor)\n }}\n >\n {icon}\n </IconButton>\n )\n }\n}\n\nexport const Control = {\n Bold: createControl(\n 'Bold',\n <LuBold />,\n (editor) => editor.chain().focus().toggleBold().run(),\n (editor) => editor.isActive('bold')\n ),\n Italic: createControl(\n 'Italic',\n <LuItalic />,\n (editor) => editor.chain().focus().toggleItalic().run(),\n (editor) => editor.isActive('italic')\n ),\n H1: createControl(\n 'Heading 1',\n <LuHeading1 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n (editor) => editor.isActive('heading', { level: 1 })\n ),\n H2: createControl(\n 'Heading 2',\n <LuHeading2 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n (editor) => editor.isActive('heading', { level: 2 })\n ),\n BulletList: createControl(\n 'Bullet list',\n <LuList />,\n (editor) => editor.chain().focus().toggleBulletList().run(),\n (editor) => editor.isActive('bulletList')\n ),\n Undo: createControl('Undo', <LuUndo />, (editor) => editor.chain().focus().undo().run()),\n Redo: createControl('Redo', <LuRedo />, (editor) => editor.chain().focus().redo().run()),\n}\n\nexport const RichTextEditor = Object.assign(RichTextEditorRoot, {\n Root: RichTextEditorRoot,\n Toolbar: RichTextEditorToolbar,\n Content: RichTextEditorContent,\n ControlGroup: RichTextEditorControlGroup,\n Footer: RichTextEditorFooter,\n Control,\n})\n"],"x_google_ignoreList":[1],"mappings":"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"}
|
package/dist/editor.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as e } from "./px-to-rem-Bun7yTT7.mjs";
|
|
2
|
-
import { t } from "./Button-
|
|
2
|
+
import { t } from "./Button-uvb-6FRY.mjs";
|
|
3
3
|
import { M_ as n, Mp as r, Np as i, Pa as a, Qw as o, Tm as s, XE as c, mr as l, qb as u, xh as d } from "./lu-BNremfTH.mjs";
|
|
4
4
|
import { Ia as f } from "./fa-szvktay4.mjs";
|
|
5
5
|
import { Box as ee, ButtonGroup as p, ClientOnly as m, CodeBlock as h, HStack as g, IconButton as _, Skeleton as v, Span as y, StackSeparator as te, createShikiAdapter as b, useSlotRecipe as x } from "@chakra-ui/react";
|
|
@@ -123,7 +123,7 @@ C.forwardRef(function(e, t) {
|
|
|
123
123
|
color: "fg",
|
|
124
124
|
display: "contents",
|
|
125
125
|
className: "chakra-theme light",
|
|
126
|
-
colorPalette: "
|
|
126
|
+
colorPalette: "gray",
|
|
127
127
|
colorScheme: "light",
|
|
128
128
|
ref: t,
|
|
129
129
|
...e
|
|
@@ -133,7 +133,7 @@ C.forwardRef(function(e, t) {
|
|
|
133
133
|
color: "fg",
|
|
134
134
|
display: "contents",
|
|
135
135
|
className: "chakra-theme dark",
|
|
136
|
-
colorPalette: "
|
|
136
|
+
colorPalette: "gray",
|
|
137
137
|
colorScheme: "dark",
|
|
138
138
|
ref: t,
|
|
139
139
|
...e
|
package/dist/editor.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.mjs","names":[],"sources":["../src/utils/shiki-adapter.ts","../node_modules/next-themes/dist/index.mjs","../src/components/ui/color-mode.tsx","../src/components/CodeBlock/CodeBlock.tsx","../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import { createShikiAdapter } from '@chakra-ui/react'\nimport type { BundledLanguage, BundledTheme, HighlighterGeneric } from 'shiki'\n\nexport type ShikiHighlighter = HighlighterGeneric<BundledLanguage, BundledTheme>\n\nexport interface GovUkShikiAdapterOptions {\n languages?: BundledLanguage[]\n themes?: BundledTheme[]\n theme?: string | Record<string, string>\n}\n\nconst defaultShikiLanguages: BundledLanguage[] = [\n 'bash',\n 'html',\n 'javascript',\n 'json',\n 'python',\n 'tsx',\n 'typescript',\n]\nconst defaultShikiThemes: BundledTheme[] = ['github-light', 'github-dark']\nconst defaultShikiTheme = {\n light: 'github-light',\n dark: 'github-dark',\n} satisfies Record<string, string>\n\nexport const shikiLanguages = defaultShikiLanguages\nexport const shikiThemes = defaultShikiThemes\n\nexport const shikiAdapter = createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: defaultShikiLanguages,\n themes: defaultShikiThemes,\n })\n },\n theme: defaultShikiTheme,\n})\n\nexport function createGovUkShikiAdapter({\n languages = defaultShikiLanguages,\n themes = defaultShikiThemes,\n theme = defaultShikiTheme,\n}: GovUkShikiAdapterOptions = {}) {\n return createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: languages,\n themes,\n })\n },\n theme,\n })\n}\n","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client'\n\nimport type { IconButtonProps, SpanProps } from '@chakra-ui/react'\nimport { ClientOnly, IconButton, Skeleton, Span } from '@chakra-ui/react'\nimport { ThemeProvider, useTheme } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\nimport * as React from 'react'\nimport { LuMoon, LuSun } from 'react-icons/lu'\n\nexport type ColorModeProviderProps = ThemeProviderProps\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n}\n\nexport type ColorMode = 'light' | 'dark'\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode\n setColorMode: (colorMode: ColorMode) => void\n toggleColorMode: () => void\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme, forcedTheme } = useTheme()\n const fallbackTheme =\n typeof document !== 'undefined' && document.documentElement.classList.contains('dark')\n ? 'dark'\n : 'light'\n const colorMode = (forcedTheme || resolvedTheme || fallbackTheme) as ColorMode\n const toggleColorMode = () => {\n setTheme(colorMode === 'dark' ? 'light' : 'dark')\n }\n return {\n colorMode,\n setColorMode: setTheme,\n toggleColorMode,\n }\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? dark : light\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? <LuMoon /> : <LuSun />\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, 'aria-label'>\n\nexport const ColorModeButton = React.forwardRef<HTMLButtonElement, ColorModeButtonProps>(\n function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode()\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"9\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: '5',\n height: '5',\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n )\n }\n)\n\nexport const LightMode = React.forwardRef<HTMLSpanElement, SpanProps>(\n function LightMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme light\"\n colorPalette=\"grey\"\n colorScheme=\"light\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nexport const DarkMode = React.forwardRef<HTMLSpanElement, SpanProps>(function DarkMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme dark\"\n colorPalette=\"grey\"\n colorScheme=\"dark\"\n ref={ref}\n {...props}\n />\n )\n})\n","import {\n CodeBlock as ChakraCodeBlock,\n ClientOnly,\n Skeleton,\n type SystemStyleObject,\n} from '@chakra-ui/react'\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type ReactNode } from 'react'\nimport { LuCheck } from 'react-icons/lu'\n\nimport { pxToRem, shikiAdapter } from '@/utils'\nimport { Button, type ButtonProps } from '@/components/Button'\nimport { useColorMode } from '@/components/ui/color-mode'\nimport { FaCopy } from 'react-icons/fa'\n\nexport type CodeBlockProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Root>\nexport type CodeBlockHeaderProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Header>\nexport type CodeBlockTitleProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Title>\nexport type CodeBlockContentProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Content>\nexport type CodeBlockCodeProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Code>\nexport type CodeBlockCodeTextProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CodeText>\nexport type CodeBlockControlProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Control>\nexport type CodeBlockCopyTriggerProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CopyTrigger>\nexport type CodeBlockCopyIndicatorProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CopyIndicator\n>\nexport type CodeBlockOverlayProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Overlay>\nexport type CodeBlockCollapseTriggerProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseTrigger\n>\nexport interface CodeBlockCollapseIndicatorProps extends Omit<\n ComponentPropsWithoutRef<typeof ChakraCodeBlock.CollapseIndicator>,\n 'collapsed'\n> {\n collapsedLabel?: ReactNode\n expandedLabel?: ReactNode\n}\nexport type CodeBlockCollapseTextProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseText\n>\n\nexport interface CodeBlockCopyButtonProps extends Omit<ButtonProps, 'children'> {\n copyLabel?: ReactNode\n copiedLabel?: ReactNode\n}\n\nconst headerStyles: SystemStyleObject = {\n minH: pxToRem(48),\n px: pxToRem(16),\n py: pxToRem(10),\n borderBottomWidth: '1px',\n borderColor: 'border',\n bg: 'bg.subtle',\n gap: pxToRem(12),\n}\n\nconst contentStyles: SystemStyleObject = {\n position: 'relative',\n overflowX: 'auto',\n bg: 'bg',\n}\n\nconst codeStyles: SystemStyleObject = {\n display: 'block',\n w: '100%',\n px: pxToRem(16),\n py: pxToRem(16),\n fontSize: pxToRem(16),\n lineHeight: '1.6',\n}\n\nconst CodeBlockRoot = forwardRef<ElementRef<typeof ChakraCodeBlock.Root>, CodeBlockProps>(\n function CodeBlockRoot(props, ref) {\n const { meta, ...restProps } = props\n const { colorMode } = useColorMode()\n return (\n <ChakraCodeBlock.AdapterProvider value={shikiAdapter}>\n <ClientOnly fallback={<Skeleton height=\"200px\" />}>\n {() => (\n <ChakraCodeBlock.Root\n ref={ref}\n meta={{ ...meta, colorScheme: colorMode }}\n colorPalette={'green'}\n bg=\"bg\"\n color=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"0\"\n overflow=\"hidden\"\n className=\"code-block\"\n {...restProps}\n />\n )}\n </ClientOnly>\n </ChakraCodeBlock.AdapterProvider>\n )\n }\n)\n\nconst CodeBlockHeader = forwardRef<ElementRef<typeof ChakraCodeBlock.Header>, CodeBlockHeaderProps>(\n function CodeBlockHeader(props, ref) {\n return <ChakraCodeBlock.Header ref={ref} mb={0} {...headerStyles} {...props} />\n }\n)\n\nconst CodeBlockTitle = forwardRef<ElementRef<typeof ChakraCodeBlock.Title>, CodeBlockTitleProps>(\n function CodeBlockTitle(props, ref) {\n return (\n <ChakraCodeBlock.Title\n ref={ref}\n fontSize={pxToRem(16)}\n fontWeight=\"700\"\n color=\"fg\"\n {...props}\n />\n )\n }\n)\n\nconst CodeBlockControl = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Control>,\n CodeBlockControlProps\n>(function CodeBlockControl(props, ref) {\n return <ChakraCodeBlock.Control ref={ref} gap={pxToRem(8)} {...props} />\n})\n\nconst CodeBlockContent = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Content>,\n CodeBlockContentProps\n>(function CodeBlockContent(props, ref) {\n return <ChakraCodeBlock.Content ref={ref} {...contentStyles} {...props} />\n})\n\nconst CodeBlockCode = forwardRef<ElementRef<typeof ChakraCodeBlock.Code>, CodeBlockCodeProps>(\n function CodeBlockCode(props, ref) {\n return <ChakraCodeBlock.Code ref={ref} fontFamily=\"mono\" {...codeStyles} {...props} />\n }\n)\n\nconst CodeBlockCodeText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CodeText>,\n CodeBlockCodeTextProps\n>(function CodeBlockCodeText(props, ref) {\n return <ChakraCodeBlock.CodeText ref={ref} {...props} />\n})\n\nconst CodeBlockCopyTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyTrigger>,\n CodeBlockCopyTriggerProps\n>(function CodeBlockCopyTrigger(props, ref) {\n return <ChakraCodeBlock.CopyTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCopyIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyIndicator>,\n CodeBlockCopyIndicatorProps\n>(function CodeBlockCopyIndicator(props, ref) {\n return (\n <ChakraCodeBlock.CopyIndicator ref={ref} copied={<LuCheck />} {...props}>\n <FaCopy />\n </ChakraCodeBlock.CopyIndicator>\n )\n})\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n function CodeBlockCopyButton(\n {\n copiedLabel = 'Copied',\n copyLabel = 'Copy code',\n size = 'xs',\n variant = 'secondary',\n ...props\n },\n ref\n ) {\n return (\n <CodeBlockCopyTrigger asChild>\n <Button\n ref={ref}\n size={size}\n variant={variant}\n color=\"fg\"\n h=\"auto\"\n minW=\"unset\"\n px={pxToRem(10)}\n py={pxToRem(6)}\n gap={pxToRem(6)}\n {...props}\n >\n <CodeBlockCopyIndicator />\n <ChakraCodeBlock.CopyIndicator copied={copiedLabel}>\n {copyLabel}\n </ChakraCodeBlock.CopyIndicator>\n </Button>\n </CodeBlockCopyTrigger>\n )\n }\n)\n\nconst CodeBlockOverlay = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Overlay>,\n CodeBlockOverlayProps\n>(function CodeBlockOverlay(props, ref) {\n return <ChakraCodeBlock.Overlay ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseTrigger>,\n CodeBlockCollapseTriggerProps\n>(function CodeBlockCollapseTrigger(props, ref) {\n return <ChakraCodeBlock.CollapseTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseIndicator>,\n CodeBlockCollapseIndicatorProps\n>(function CodeBlockCollapseIndicator(\n { children, collapsedLabel = 'Expand code', expandedLabel = 'Collapse code', ...props },\n ref\n) {\n const expandedContent = expandedLabel ?? children\n const collapsedComponent = () => {\n return (\n <Button variant=\"secondary\" size=\"xs\">\n {collapsedLabel}\n </Button>\n )\n }\n return (\n <ChakraCodeBlock.CollapseIndicator\n asChild\n ref={ref}\n cursor=\"pointer\"\n collapsed={collapsedComponent()}\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n minH=\"auto\"\n {...props}\n >\n <Button variant=\"secondary\" size=\"xs\">\n {expandedContent}\n </Button>\n </ChakraCodeBlock.CollapseIndicator>\n )\n})\n\nconst CodeBlockCollapseText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseText>,\n CodeBlockCollapseTextProps\n>(function CodeBlockCollapseText(props, ref) {\n return <ChakraCodeBlock.CollapseText ref={ref} {...props} />\n})\n\nexport const CodeBlock = Object.assign(CodeBlockRoot, {\n Root: CodeBlockRoot,\n Header: CodeBlockHeader,\n Title: CodeBlockTitle,\n Control: CodeBlockControl,\n Content: CodeBlockContent,\n Code: CodeBlockCode,\n CodeText: CodeBlockCodeText,\n CopyTrigger: CodeBlockCopyTrigger,\n CopyIndicator: CodeBlockCopyIndicator,\n CopyButton: CodeBlockCopyButton,\n Overlay: CodeBlockOverlay,\n CollapseTrigger: CodeBlockCollapseTrigger,\n CollapseIndicator: CodeBlockCollapseIndicator,\n CollapseText: CodeBlockCollapseText,\n})\n\nexport {\n CodeBlockRoot,\n CodeBlockHeader,\n CodeBlockTitle,\n CodeBlockControl,\n CodeBlockContent,\n CodeBlockCode,\n CodeBlockCodeText,\n CodeBlockCopyTrigger,\n CodeBlockCopyIndicator,\n CodeBlockCopyButton,\n CodeBlockOverlay,\n CodeBlockCollapseTrigger,\n CodeBlockCollapseIndicator,\n CodeBlockCollapseText,\n}\n","import {\n Box,\n ButtonGroup,\n HStack,\n IconButton,\n StackSeparator,\n useSlotRecipe,\n} from '@chakra-ui/react'\nimport type { BoxProps, StackProps } from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { EditorContent } from '@tiptap/react'\nimport {\n createContext,\n forwardRef,\n type ComponentPropsWithoutRef,\n type JSX,\n type ReactNode,\n useContext,\n useMemo,\n} from 'react'\nimport { LuBold, LuHeading1, LuHeading2, LuItalic, LuList, LuRedo, LuUndo } from 'react-icons/lu'\n\ninterface RichTextEditorContextValue {\n editor: Editor | null\n}\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue | null>(null)\n\nfunction useRichTextEditorContext(componentName: string) {\n const context = useContext(RichTextEditorContext)\n if (!context) {\n throw new Error(componentName + ' must be used within RichTextEditor.Root')\n }\n return context\n}\n\nexport interface RichTextEditorProps extends BoxProps {\n editor: Editor | null\n disabled?: boolean\n}\n\nexport const RichTextEditorRoot = forwardRef<HTMLDivElement, RichTextEditorProps>(\n function RichTextEditorRoot({ children, css, disabled, editor, ...props }, ref) {\n const value = useMemo(() => ({ editor }), [editor])\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <RichTextEditorContext.Provider value={value}>\n <Box\n ref={ref}\n data-disabled={disabled || undefined}\n css={[\n styles.root,\n {\n '& .ProseMirror': styles.content,\n },\n css,\n ]}\n {...props}\n >\n {children}\n </Box>\n </RichTextEditorContext.Provider>\n )\n }\n)\n\nexport type RichTextEditorToolbarProps = StackProps\n\nexport const RichTextEditorToolbar = forwardRef<HTMLDivElement, RichTextEditorToolbarProps>(\n function RichTextEditorToolbar(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.toolbar} separator={<StackSeparator h=\"5\" />} {...props} />\n }\n)\n\nexport const RichTextEditorFooter = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorFooter(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.footer} {...props} />\n }\n)\n\nexport const RichTextEditorControlGroup = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorControlGroup(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <ButtonGroup ref={ref} css={styles.controlGroup} size=\"sm\" variant=\"outline\" {...props} />\n )\n }\n)\n\nexport type RichTextEditorContentProps = Omit<\n ComponentPropsWithoutRef<typeof EditorContent>,\n 'editor' | 'innerRef'\n>\n\nexport const RichTextEditorContent = forwardRef<HTMLDivElement, RichTextEditorContentProps>(\n function RichTextEditorContent(props, ref) {\n const { editor } = useRichTextEditorContext('RichTextEditor.Content')\n if (!editor) return null\n return <EditorContent editor={editor} innerRef={ref} {...props} />\n }\n)\n\nfunction createControl(\n label: string,\n icon: ReactNode,\n action: (editor: Editor) => void,\n isActive?: (editor: Editor) => boolean\n): () => JSX.Element {\n return function ControlButton(): JSX.Element {\n const { editor } = useRichTextEditorContext('RichTextEditor.Control')\n const active = editor && isActive ? isActive(editor) : false\n\n return (\n <IconButton\n aria-label={label}\n variant={active ? 'subtle' : 'ghost'}\n size=\"sm\"\n onClick={() => {\n if (!editor) return\n action(editor)\n }}\n >\n {icon}\n </IconButton>\n )\n }\n}\n\nexport const Control = {\n Bold: createControl(\n 'Bold',\n <LuBold />,\n (editor) => editor.chain().focus().toggleBold().run(),\n (editor) => editor.isActive('bold')\n ),\n Italic: createControl(\n 'Italic',\n <LuItalic />,\n (editor) => editor.chain().focus().toggleItalic().run(),\n (editor) => editor.isActive('italic')\n ),\n H1: createControl(\n 'Heading 1',\n <LuHeading1 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n (editor) => editor.isActive('heading', { level: 1 })\n ),\n H2: createControl(\n 'Heading 2',\n <LuHeading2 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n (editor) => editor.isActive('heading', { level: 2 })\n ),\n BulletList: createControl(\n 'Bullet list',\n <LuList />,\n (editor) => editor.chain().focus().toggleBulletList().run(),\n (editor) => editor.isActive('bulletList')\n ),\n Undo: createControl('Undo', <LuUndo />, (editor) => editor.chain().focus().undo().run()),\n Redo: createControl('Redo', <LuRedo />, (editor) => editor.chain().focus().redo().run()),\n}\n\nexport const RichTextEditor = Object.assign(RichTextEditorRoot, {\n Root: RichTextEditorRoot,\n Toolbar: RichTextEditorToolbar,\n Content: RichTextEditorContent,\n ControlGroup: RichTextEditorControlGroup,\n Footer: RichTextEditorFooter,\n Control,\n})\n"],"x_google_ignoreList":[1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.mjs","names":[],"sources":["../src/utils/shiki-adapter.ts","../node_modules/next-themes/dist/index.mjs","../src/components/ui/color-mode.tsx","../src/components/CodeBlock/CodeBlock.tsx","../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["import { createShikiAdapter } from '@chakra-ui/react'\nimport type { BundledLanguage, BundledTheme, HighlighterGeneric } from 'shiki'\n\nexport type ShikiHighlighter = HighlighterGeneric<BundledLanguage, BundledTheme>\n\nexport interface GovUkShikiAdapterOptions {\n languages?: BundledLanguage[]\n themes?: BundledTheme[]\n theme?: string | Record<string, string>\n}\n\nconst defaultShikiLanguages: BundledLanguage[] = [\n 'bash',\n 'html',\n 'javascript',\n 'json',\n 'python',\n 'tsx',\n 'typescript',\n]\nconst defaultShikiThemes: BundledTheme[] = ['github-light', 'github-dark']\nconst defaultShikiTheme = {\n light: 'github-light',\n dark: 'github-dark',\n} satisfies Record<string, string>\n\nexport const shikiLanguages = defaultShikiLanguages\nexport const shikiThemes = defaultShikiThemes\n\nexport const shikiAdapter = createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: defaultShikiLanguages,\n themes: defaultShikiThemes,\n })\n },\n theme: defaultShikiTheme,\n})\n\nexport function createGovUkShikiAdapter({\n languages = defaultShikiLanguages,\n themes = defaultShikiThemes,\n theme = defaultShikiTheme,\n}: GovUkShikiAdapterOptions = {}) {\n return createShikiAdapter<ShikiHighlighter>({\n async load() {\n const { createHighlighter } = await import('shiki')\n\n return createHighlighter({\n langs: languages,\n themes,\n })\n },\n theme,\n })\n}\n","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client'\n\nimport type { IconButtonProps, SpanProps } from '@chakra-ui/react'\nimport { ClientOnly, IconButton, Skeleton, Span } from '@chakra-ui/react'\nimport { ThemeProvider, useTheme } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\nimport * as React from 'react'\nimport { LuMoon, LuSun } from 'react-icons/lu'\n\nexport type ColorModeProviderProps = ThemeProviderProps\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n}\n\nexport type ColorMode = 'light' | 'dark'\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode\n setColorMode: (colorMode: ColorMode) => void\n toggleColorMode: () => void\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme, forcedTheme } = useTheme()\n const fallbackTheme =\n typeof document !== 'undefined' && document.documentElement.classList.contains('dark')\n ? 'dark'\n : 'light'\n const colorMode = (forcedTheme || resolvedTheme || fallbackTheme) as ColorMode\n const toggleColorMode = () => {\n setTheme(colorMode === 'dark' ? 'light' : 'dark')\n }\n return {\n colorMode,\n setColorMode: setTheme,\n toggleColorMode,\n }\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? dark : light\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode()\n return colorMode === 'dark' ? <LuMoon /> : <LuSun />\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, 'aria-label'>\n\nexport const ColorModeButton = React.forwardRef<HTMLButtonElement, ColorModeButtonProps>(\n function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode()\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"9\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: '5',\n height: '5',\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n )\n }\n)\n\nexport const LightMode = React.forwardRef<HTMLSpanElement, SpanProps>(\n function LightMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme light\"\n colorPalette=\"gray\"\n colorScheme=\"light\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nexport const DarkMode = React.forwardRef<HTMLSpanElement, SpanProps>(function DarkMode(props, ref) {\n return (\n <Span\n color=\"fg\"\n display=\"contents\"\n className=\"chakra-theme dark\"\n colorPalette=\"gray\"\n colorScheme=\"dark\"\n ref={ref}\n {...props}\n />\n )\n})\n","import {\n CodeBlock as ChakraCodeBlock,\n ClientOnly,\n Skeleton,\n type SystemStyleObject,\n} from '@chakra-ui/react'\nimport { forwardRef, type ComponentPropsWithoutRef, type ElementRef, type ReactNode } from 'react'\nimport { LuCheck } from 'react-icons/lu'\n\nimport { pxToRem, shikiAdapter } from '@/utils'\nimport { Button, type ButtonProps } from '@/components/Button'\nimport { useColorMode } from '@/components/ui/color-mode'\nimport { FaCopy } from 'react-icons/fa'\n\nexport type CodeBlockProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Root>\nexport type CodeBlockHeaderProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Header>\nexport type CodeBlockTitleProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Title>\nexport type CodeBlockContentProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Content>\nexport type CodeBlockCodeProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Code>\nexport type CodeBlockCodeTextProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CodeText>\nexport type CodeBlockControlProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Control>\nexport type CodeBlockCopyTriggerProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.CopyTrigger>\nexport type CodeBlockCopyIndicatorProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CopyIndicator\n>\nexport type CodeBlockOverlayProps = ComponentPropsWithoutRef<typeof ChakraCodeBlock.Overlay>\nexport type CodeBlockCollapseTriggerProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseTrigger\n>\nexport interface CodeBlockCollapseIndicatorProps extends Omit<\n ComponentPropsWithoutRef<typeof ChakraCodeBlock.CollapseIndicator>,\n 'collapsed'\n> {\n collapsedLabel?: ReactNode\n expandedLabel?: ReactNode\n}\nexport type CodeBlockCollapseTextProps = ComponentPropsWithoutRef<\n typeof ChakraCodeBlock.CollapseText\n>\n\nexport interface CodeBlockCopyButtonProps extends Omit<ButtonProps, 'children'> {\n copyLabel?: ReactNode\n copiedLabel?: ReactNode\n}\n\nconst headerStyles: SystemStyleObject = {\n minH: pxToRem(48),\n px: pxToRem(16),\n py: pxToRem(10),\n borderBottomWidth: '1px',\n borderColor: 'border',\n bg: 'bg.subtle',\n gap: pxToRem(12),\n}\n\nconst contentStyles: SystemStyleObject = {\n position: 'relative',\n overflowX: 'auto',\n bg: 'bg',\n}\n\nconst codeStyles: SystemStyleObject = {\n display: 'block',\n w: '100%',\n px: pxToRem(16),\n py: pxToRem(16),\n fontSize: pxToRem(16),\n lineHeight: '1.6',\n}\n\nconst CodeBlockRoot = forwardRef<ElementRef<typeof ChakraCodeBlock.Root>, CodeBlockProps>(\n function CodeBlockRoot(props, ref) {\n const { meta, ...restProps } = props\n const { colorMode } = useColorMode()\n return (\n <ChakraCodeBlock.AdapterProvider value={shikiAdapter}>\n <ClientOnly fallback={<Skeleton height=\"200px\" />}>\n {() => (\n <ChakraCodeBlock.Root\n ref={ref}\n meta={{ ...meta, colorScheme: colorMode }}\n colorPalette={'green'}\n bg=\"bg\"\n color=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"0\"\n overflow=\"hidden\"\n className=\"code-block\"\n {...restProps}\n />\n )}\n </ClientOnly>\n </ChakraCodeBlock.AdapterProvider>\n )\n }\n)\n\nconst CodeBlockHeader = forwardRef<ElementRef<typeof ChakraCodeBlock.Header>, CodeBlockHeaderProps>(\n function CodeBlockHeader(props, ref) {\n return <ChakraCodeBlock.Header ref={ref} mb={0} {...headerStyles} {...props} />\n }\n)\n\nconst CodeBlockTitle = forwardRef<ElementRef<typeof ChakraCodeBlock.Title>, CodeBlockTitleProps>(\n function CodeBlockTitle(props, ref) {\n return (\n <ChakraCodeBlock.Title\n ref={ref}\n fontSize={pxToRem(16)}\n fontWeight=\"700\"\n color=\"fg\"\n {...props}\n />\n )\n }\n)\n\nconst CodeBlockControl = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Control>,\n CodeBlockControlProps\n>(function CodeBlockControl(props, ref) {\n return <ChakraCodeBlock.Control ref={ref} gap={pxToRem(8)} {...props} />\n})\n\nconst CodeBlockContent = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Content>,\n CodeBlockContentProps\n>(function CodeBlockContent(props, ref) {\n return <ChakraCodeBlock.Content ref={ref} {...contentStyles} {...props} />\n})\n\nconst CodeBlockCode = forwardRef<ElementRef<typeof ChakraCodeBlock.Code>, CodeBlockCodeProps>(\n function CodeBlockCode(props, ref) {\n return <ChakraCodeBlock.Code ref={ref} fontFamily=\"mono\" {...codeStyles} {...props} />\n }\n)\n\nconst CodeBlockCodeText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CodeText>,\n CodeBlockCodeTextProps\n>(function CodeBlockCodeText(props, ref) {\n return <ChakraCodeBlock.CodeText ref={ref} {...props} />\n})\n\nconst CodeBlockCopyTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyTrigger>,\n CodeBlockCopyTriggerProps\n>(function CodeBlockCopyTrigger(props, ref) {\n return <ChakraCodeBlock.CopyTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCopyIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CopyIndicator>,\n CodeBlockCopyIndicatorProps\n>(function CodeBlockCopyIndicator(props, ref) {\n return (\n <ChakraCodeBlock.CopyIndicator ref={ref} copied={<LuCheck />} {...props}>\n <FaCopy />\n </ChakraCodeBlock.CopyIndicator>\n )\n})\n\nconst CodeBlockCopyButton = forwardRef<HTMLButtonElement, CodeBlockCopyButtonProps>(\n function CodeBlockCopyButton(\n {\n copiedLabel = 'Copied',\n copyLabel = 'Copy code',\n size = 'xs',\n variant = 'secondary',\n ...props\n },\n ref\n ) {\n return (\n <CodeBlockCopyTrigger asChild>\n <Button\n ref={ref}\n size={size}\n variant={variant}\n color=\"fg\"\n h=\"auto\"\n minW=\"unset\"\n px={pxToRem(10)}\n py={pxToRem(6)}\n gap={pxToRem(6)}\n {...props}\n >\n <CodeBlockCopyIndicator />\n <ChakraCodeBlock.CopyIndicator copied={copiedLabel}>\n {copyLabel}\n </ChakraCodeBlock.CopyIndicator>\n </Button>\n </CodeBlockCopyTrigger>\n )\n }\n)\n\nconst CodeBlockOverlay = forwardRef<\n ElementRef<typeof ChakraCodeBlock.Overlay>,\n CodeBlockOverlayProps\n>(function CodeBlockOverlay(props, ref) {\n return <ChakraCodeBlock.Overlay ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseTrigger = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseTrigger>,\n CodeBlockCollapseTriggerProps\n>(function CodeBlockCollapseTrigger(props, ref) {\n return <ChakraCodeBlock.CollapseTrigger ref={ref} {...props} />\n})\n\nconst CodeBlockCollapseIndicator = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseIndicator>,\n CodeBlockCollapseIndicatorProps\n>(function CodeBlockCollapseIndicator(\n { children, collapsedLabel = 'Expand code', expandedLabel = 'Collapse code', ...props },\n ref\n) {\n const expandedContent = expandedLabel ?? children\n const collapsedComponent = () => {\n return (\n <Button variant=\"secondary\" size=\"xs\">\n {collapsedLabel}\n </Button>\n )\n }\n return (\n <ChakraCodeBlock.CollapseIndicator\n asChild\n ref={ref}\n cursor=\"pointer\"\n collapsed={collapsedComponent()}\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n minH=\"auto\"\n {...props}\n >\n <Button variant=\"secondary\" size=\"xs\">\n {expandedContent}\n </Button>\n </ChakraCodeBlock.CollapseIndicator>\n )\n})\n\nconst CodeBlockCollapseText = forwardRef<\n ElementRef<typeof ChakraCodeBlock.CollapseText>,\n CodeBlockCollapseTextProps\n>(function CodeBlockCollapseText(props, ref) {\n return <ChakraCodeBlock.CollapseText ref={ref} {...props} />\n})\n\nexport const CodeBlock = Object.assign(CodeBlockRoot, {\n Root: CodeBlockRoot,\n Header: CodeBlockHeader,\n Title: CodeBlockTitle,\n Control: CodeBlockControl,\n Content: CodeBlockContent,\n Code: CodeBlockCode,\n CodeText: CodeBlockCodeText,\n CopyTrigger: CodeBlockCopyTrigger,\n CopyIndicator: CodeBlockCopyIndicator,\n CopyButton: CodeBlockCopyButton,\n Overlay: CodeBlockOverlay,\n CollapseTrigger: CodeBlockCollapseTrigger,\n CollapseIndicator: CodeBlockCollapseIndicator,\n CollapseText: CodeBlockCollapseText,\n})\n\nexport {\n CodeBlockRoot,\n CodeBlockHeader,\n CodeBlockTitle,\n CodeBlockControl,\n CodeBlockContent,\n CodeBlockCode,\n CodeBlockCodeText,\n CodeBlockCopyTrigger,\n CodeBlockCopyIndicator,\n CodeBlockCopyButton,\n CodeBlockOverlay,\n CodeBlockCollapseTrigger,\n CodeBlockCollapseIndicator,\n CodeBlockCollapseText,\n}\n","import {\n Box,\n ButtonGroup,\n HStack,\n IconButton,\n StackSeparator,\n useSlotRecipe,\n} from '@chakra-ui/react'\nimport type { BoxProps, StackProps } from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { EditorContent } from '@tiptap/react'\nimport {\n createContext,\n forwardRef,\n type ComponentPropsWithoutRef,\n type JSX,\n type ReactNode,\n useContext,\n useMemo,\n} from 'react'\nimport { LuBold, LuHeading1, LuHeading2, LuItalic, LuList, LuRedo, LuUndo } from 'react-icons/lu'\n\ninterface RichTextEditorContextValue {\n editor: Editor | null\n}\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue | null>(null)\n\nfunction useRichTextEditorContext(componentName: string) {\n const context = useContext(RichTextEditorContext)\n if (!context) {\n throw new Error(componentName + ' must be used within RichTextEditor.Root')\n }\n return context\n}\n\nexport interface RichTextEditorProps extends BoxProps {\n editor: Editor | null\n disabled?: boolean\n}\n\nexport const RichTextEditorRoot = forwardRef<HTMLDivElement, RichTextEditorProps>(\n function RichTextEditorRoot({ children, css, disabled, editor, ...props }, ref) {\n const value = useMemo(() => ({ editor }), [editor])\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <RichTextEditorContext.Provider value={value}>\n <Box\n ref={ref}\n data-disabled={disabled || undefined}\n css={[\n styles.root,\n {\n '& .ProseMirror': styles.content,\n },\n css,\n ]}\n {...props}\n >\n {children}\n </Box>\n </RichTextEditorContext.Provider>\n )\n }\n)\n\nexport type RichTextEditorToolbarProps = StackProps\n\nexport const RichTextEditorToolbar = forwardRef<HTMLDivElement, RichTextEditorToolbarProps>(\n function RichTextEditorToolbar(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.toolbar} separator={<StackSeparator h=\"5\" />} {...props} />\n }\n)\n\nexport const RichTextEditorFooter = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorFooter(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return <HStack ref={ref} css={styles.footer} {...props} />\n }\n)\n\nexport const RichTextEditorControlGroup = forwardRef<HTMLDivElement, StackProps>(\n function RichTextEditorControlGroup(props, ref) {\n const recipe = useSlotRecipe({ key: 'richTextEditor' })\n const styles = recipe()\n\n return (\n <ButtonGroup ref={ref} css={styles.controlGroup} size=\"sm\" variant=\"outline\" {...props} />\n )\n }\n)\n\nexport type RichTextEditorContentProps = Omit<\n ComponentPropsWithoutRef<typeof EditorContent>,\n 'editor' | 'innerRef'\n>\n\nexport const RichTextEditorContent = forwardRef<HTMLDivElement, RichTextEditorContentProps>(\n function RichTextEditorContent(props, ref) {\n const { editor } = useRichTextEditorContext('RichTextEditor.Content')\n if (!editor) return null\n return <EditorContent editor={editor} innerRef={ref} {...props} />\n }\n)\n\nfunction createControl(\n label: string,\n icon: ReactNode,\n action: (editor: Editor) => void,\n isActive?: (editor: Editor) => boolean\n): () => JSX.Element {\n return function ControlButton(): JSX.Element {\n const { editor } = useRichTextEditorContext('RichTextEditor.Control')\n const active = editor && isActive ? isActive(editor) : false\n\n return (\n <IconButton\n aria-label={label}\n variant={active ? 'subtle' : 'ghost'}\n size=\"sm\"\n onClick={() => {\n if (!editor) return\n action(editor)\n }}\n >\n {icon}\n </IconButton>\n )\n }\n}\n\nexport const Control = {\n Bold: createControl(\n 'Bold',\n <LuBold />,\n (editor) => editor.chain().focus().toggleBold().run(),\n (editor) => editor.isActive('bold')\n ),\n Italic: createControl(\n 'Italic',\n <LuItalic />,\n (editor) => editor.chain().focus().toggleItalic().run(),\n (editor) => editor.isActive('italic')\n ),\n H1: createControl(\n 'Heading 1',\n <LuHeading1 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n (editor) => editor.isActive('heading', { level: 1 })\n ),\n H2: createControl(\n 'Heading 2',\n <LuHeading2 />,\n (editor) => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n (editor) => editor.isActive('heading', { level: 2 })\n ),\n BulletList: createControl(\n 'Bullet list',\n <LuList />,\n (editor) => editor.chain().focus().toggleBulletList().run(),\n (editor) => editor.isActive('bulletList')\n ),\n Undo: createControl('Undo', <LuUndo />, (editor) => editor.chain().focus().undo().run()),\n Redo: createControl('Redo', <LuRedo />, (editor) => editor.chain().focus().redo().run()),\n}\n\nexport const RichTextEditor = Object.assign(RichTextEditorRoot, {\n Root: RichTextEditorRoot,\n Toolbar: RichTextEditorToolbar,\n Content: RichTextEditorContent,\n ControlGroup: RichTextEditorControlGroup,\n Footer: RichTextEditorFooter,\n Control,\n})\n"],"x_google_ignoreList":[1],"mappings":"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"}
|