govuk-chakra 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/dist/{Button-DBeoyc1e.js → Button-Bzp4VO4J.js} +2 -2
  3. package/dist/{Button-DBeoyc1e.js.map → Button-Bzp4VO4J.js.map} +1 -1
  4. package/dist/{Button-D2zPYhfj.mjs → Button-uvb-6FRY.mjs} +13 -13
  5. package/dist/{Button-D2zPYhfj.mjs.map → Button-uvb-6FRY.mjs.map} +1 -1
  6. package/dist/chakra.cjs +1 -1
  7. package/dist/chakra.mjs +3 -3
  8. package/dist/editor.cjs +1 -1
  9. package/dist/editor.cjs.map +1 -1
  10. package/dist/editor.mjs +3 -3
  11. package/dist/editor.mjs.map +1 -1
  12. package/dist/{fieldFocusStyles-SnxM1ENz.js → fieldFocusStyles-CPu63vW8.js} +2 -2
  13. package/dist/{fieldFocusStyles-SnxM1ENz.js.map → fieldFocusStyles-CPu63vW8.js.map} +1 -1
  14. package/dist/{fieldFocusStyles-i7bGS_ct.mjs → fieldFocusStyles-DtS-106W.mjs} +11 -11
  15. package/dist/{fieldFocusStyles-i7bGS_ct.mjs.map → fieldFocusStyles-DtS-106W.mjs.map} +1 -1
  16. package/dist/{govUKTheme-B6N8jc4i.js → govUKTheme-ZxJEKEJS.js} +2 -2
  17. package/dist/{govUKTheme-B6N8jc4i.js.map → govUKTheme-ZxJEKEJS.js.map} +1 -1
  18. package/dist/{govUKTheme-CDTBLgqV.mjs → govUKTheme-fklX-_tG.mjs} +28 -28
  19. package/dist/{govUKTheme-CDTBLgqV.mjs.map → govUKTheme-fklX-_tG.mjs.map} +1 -1
  20. package/dist/{govuk-chakra-G-0BpNPi.mjs → govuk-chakra-C2vgby05.mjs} +64 -42
  21. package/dist/govuk-chakra-C2vgby05.mjs.map +1 -0
  22. package/dist/{govuk-chakra-DIQtEMpV.js → govuk-chakra-Cz2Acq66.js} +2 -2
  23. package/dist/govuk-chakra-Cz2Acq66.js.map +1 -0
  24. package/dist/index.cjs +1 -1
  25. package/dist/index.mjs +3 -3
  26. package/dist/provider.cjs +1 -1
  27. package/dist/provider.mjs +1 -1
  28. package/dist/theme.cjs +1 -1
  29. package/dist/theme.mjs +1 -1
  30. package/dist/types/components/Listbox/Listbox.recipe.d.ts +1 -1
  31. package/dist/types/components/Tag/Tag.d.ts +1 -1
  32. package/dist/types/theme/colors.d.ts +2 -2
  33. package/dist/types/theme/govUKTheme.d.ts +3 -3
  34. package/dist/utils.cjs +1 -1
  35. package/dist/utils.mjs +1 -1
  36. package/package.json +1 -1
  37. package/dist/govuk-chakra-DIQtEMpV.js.map +0 -1
  38. 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://gov-uk-gds-react-chakra.vercel.app 'Live demo')
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:`grey.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:`grey.900`,bgColor:`grey.50`,_dark:{color:`grey.50`,bgColor:`grey.600`,_hover:{bgColor:`grey.600`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},boxShadow:`0 2px 0 {colors.grey.200}`,_hover:{bgColor:`grey.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:`grey.50`,bgColor:`grey.800`,_focus:i,_focusVisible:i},_focus:i,_focusVisible:i},_hover:{color:`grey.700`,bgColor:`grey.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-DBeoyc1e.js.map
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-DBeoyc1e.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: 'grey.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: 'grey.900',\n bgColor: 'grey.50',\n _dark: {\n color: 'grey.50',\n bgColor: 'grey.600',\n _hover: {\n bgColor: 'grey.600',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n boxShadow: '0 2px 0 {colors.grey.200}',\n _hover: {\n bgColor: 'grey.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: 'grey.50',\n bgColor: 'grey.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'grey.700',\n bgColor: 'grey.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"}
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: "grey.950"
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: "grey.900",
26
- bgColor: "grey.50",
25
+ color: "gray.900",
26
+ bgColor: "gray.50",
27
27
  _dark: {
28
- color: "grey.50",
29
- bgColor: "grey.600",
28
+ color: "gray.50",
29
+ bgColor: "gray.600",
30
30
  _hover: {
31
- bgColor: "grey.600",
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.grey.200}",
38
+ boxShadow: "0 2px 0 {colors.gray.200}",
39
39
  _hover: {
40
- bgColor: "grey.100",
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: "grey.50",
90
- bgColor: "grey.800",
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: "grey.700",
99
- bgColor: "grey.100",
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-D2zPYhfj.mjs.map
149
+ //# sourceMappingURL=Button-uvb-6FRY.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-D2zPYhfj.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: 'grey.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: 'grey.900',\n bgColor: 'grey.50',\n _dark: {\n color: 'grey.50',\n bgColor: 'grey.600',\n _hover: {\n bgColor: 'grey.600',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n boxShadow: '0 2px 0 {colors.grey.200}',\n _hover: {\n bgColor: 'grey.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: 'grey.50',\n bgColor: 'grey.800',\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _focus: buttonFocusStyles,\n _focusVisible: buttonFocusStyles,\n },\n _hover: {\n color: 'grey.700',\n bgColor: 'grey.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"}
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-B6N8jc4i.js`),n=require(`./govuk-chakra-DIQtEMpV.js`),r=require(`./DonutChart-D3Sq34se.js`),i=require(`./Button-DBeoyc1e.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]}})});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./provider-BSZ9Md7O.js`),t=require(`./govUKTheme-ZxJEKEJS.js`),n=require(`./govuk-chakra-Cz2Acq66.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-G-0BpNPi.mjs";
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-C2vgby05.mjs";
2
2
  import { t as we } from "./provider-BiK0vyjw.mjs";
3
- import { n as Te, t as Ee } from "./govUKTheme-CDTBLgqV.mjs";
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-D2zPYhfj.mjs";
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-DBeoyc1e.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:`grey`,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:`grey`,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;
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
@@ -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-D2zPYhfj.mjs";
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: "grey",
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: "grey",
136
+ colorPalette: "gray",
137
137
  colorScheme: "dark",
138
138
  ref: t,
139
139
  ...e
@@ -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":";;;;;;;;;;AAWA,IAAM,IAA2C;CAC/C;CACA;CACA;CACA;CACA;CACA;CACA;CACD,EACK,IAAqC,CAAC,gBAAgB,cAAc,EACpE,IAAoB;CACxB,OAAO;CACP,MAAM;CACP,EAEY,KAAiB,GACjB,KAAc,GAEd,IAAe,EAAqC;CAC/D,MAAM,OAAO;EACX,IAAM,EAAE,yBAAsB,MAAM,OAAO;AAE3C,SAAO,EAAkB;GACvB,OAAO;GACP,QAAQ;GACT,CAAC;;CAEJ,OAAO;CACR,CAAC;AAEF,SAAgB,GAAwB,EACtC,eAAY,GACZ,YAAS,GACT,WAAQ,MACoB,EAAE,EAAE;AAChC,QAAO,EAAqC;EAC1C,MAAM,OAAO;GACX,IAAM,EAAE,yBAAsB,MAAM,OAAO;AAE3C,UAAO,EAAkB;IACvB,OAAO;IACP;IACD,CAAC;;EAEJ;EACD,CAAC;;;;ACxDiC,IAAI,MAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAE,SAAS,iBAAgB,IAAE,CAAC,SAAQ,OAAO;CAAC,SAAS,EAAE,GAAE;AAAC,GAAC,MAAM,QAAQ,EAAE,GAAC,IAAE,CAAC,EAAE,EAAE,SAAQ,MAAG;GAAC,IAAI,IAAE,MAAI,SAAQ,IAAE,KAAG,IAAE,EAAE,KAAI,MAAG,EAAE,MAAI,EAAE,GAAC;AAAE,QAAG,EAAE,UAAU,OAAO,GAAG,EAAE,EAAC,EAAE,UAAU,IAAI,KAAG,EAAE,KAAG,EAAE,KAAG,EAAE,IAAE,EAAE,aAAa,GAAE,EAAE;IAAE,EAAC,EAAE,EAAE;;CAAC,SAAS,EAAE,GAAE;AAAC,OAAG,EAAE,SAAS,EAAE,KAAG,EAAE,MAAM,cAAY;;CAAG,SAAS,IAAG;AAAC,SAAO,OAAO,WAAW,+BAA+B,CAAC,UAAQ,SAAO;;AAAQ,KAAG,EAAE,GAAE,EAAE;KAAM,KAAG;EAAC,IAAI,IAAE,aAAa,QAAQ,EAAE,IAAE;AAA0B,IAAtB,KAAG,MAAI,WAAS,GAAG,GAAC,EAAM;SAAS;GAAyF,KAAE,EAAE,cAAc,KAAK,EAAE,EAAC,KAAE;CAAC,WAAS,MAAG;CAAG,QAAO,EAAE;CAAC,EAAC,WAAsB,EAAE,WAAW,GAAE,IAAU;AAAioD,EAAE,MAAM,EAAC,aAAY,GAAE,YAAW,GAAE,WAAU,GAAE,cAAa,GAAE,mBAAkB,GAAE,cAAa,GAAE,OAAM,GAAE,QAAO,GAAE,OAAM,GAAE,aAAY,QAAK;CAAC,IAAI,IAAE,KAAK,UAAU;EAAC;EAAE;EAAE;EAAE;EAAE;EAAE;EAAE;EAAE;EAAE,CAAC,CAAC,MAAM,GAAE,GAAG;AAAC,QAAO,EAAE,cAAc,UAAS;EAAC,GAAG;EAAE,0BAAyB,CAAC;EAAE,OAAM,OAAO,SAAQ,MAAY,IAAE;EAAG,yBAAwB,EAAC,QAAO,IAAI,GAAE,UAAU,CAAC,IAAI,EAAE,IAAG;EAAC,CAAC;EAAE;;;ACuB9rF,SAAgB,IAAmC;CACjD,IAAM,EAAE,kBAAe,aAAU,mBAAgB,IAAU,EACrD,IACJ,OAAO,WAAa,OAAe,SAAS,gBAAgB,UAAU,SAAS,OAAO,GAClF,SACA,SACA,IAAa,KAAe,KAAiB;AAInD,QAAO;EACL;EACA,cAAc;EACd,uBAN4B;AAC5B,KAAS,MAAc,SAAS,UAAU,OAAO;;EAMlD;;AAQH,SAAgB,KAAgB;CAC9B,IAAM,EAAE,iBAAc,GAAc;AACpC,QAA8B,EAAvB,MAAc,SAAU,IAAa,GAAd,EAAU,CAAY;;AAKvB,EAAM,WACnC,SAAyB,GAAO,GAAK;CACnC,IAAM,EAAE,uBAAoB,GAAc;AAC1C,QACE,kBAAC,GAAD;EAAY,UAAU,kBAAC,GAAD,EAAU,SAAQ,KAAM,CAAA;YAC5C,kBAAC,GAAD;GACE,SAAS;GACT,SAAQ;GACR,cAAW;GACX,MAAK;GACA;GACL,GAAI;GACJ,KAAK,EACH,OAAO;IACL,OAAO;IACP,QAAQ;IACT,EACF;aAED,kBAAC,IAAD,EAAiB,CAAA;GACN,CAAA;EACF,CAAA;EAGlB,EAEwB,EAAM,WAC7B,SAAmB,GAAO,GAAK;AAC7B,QACE,kBAAC,GAAD;EACE,OAAM;EACN,SAAQ;EACR,WAAU;EACV,cAAa;EACb,aAAY;EACP;EACL,GAAI;EACJ,CAAA;EAGP,EAEuB,EAAM,WAAuC,SAAkB,GAAO,GAAK;AACjG,QACE,kBAAC,GAAD;EACE,OAAM;EACN,SAAQ;EACR,WAAU;EACV,cAAa;EACb,aAAY;EACP;EACL,GAAI;EACJ,CAAA;EAEJ;;;AC7DF,IAAM,KAAkC;CACtC,MAAM,EAAQ,GAAG;CACjB,IAAI,EAAQ,GAAG;CACf,IAAI,EAAQ,GAAG;CACf,mBAAmB;CACnB,aAAa;CACb,IAAI;CACJ,KAAK,EAAQ,GAAG;CACjB,EAEK,KAAmC;CACvC,UAAU;CACV,WAAW;CACX,IAAI;CACL,EAEK,KAAgC;CACpC,SAAS;CACT,GAAG;CACH,IAAI,EAAQ,GAAG;CACf,IAAI,EAAQ,GAAG;CACf,UAAU,EAAQ,GAAG;CACrB,YAAY;CACb,EAEK,IAAgB,EACpB,SAAuB,GAAO,GAAK;CACjC,IAAM,EAAE,SAAM,GAAG,MAAc,GACzB,EAAE,iBAAc,GAAc;AACpC,QACE,kBAAC,EAAgB,iBAAjB;EAAiC,OAAO;YACtC,kBAAC,GAAD;GAAY,UAAU,kBAAC,GAAD,EAAU,QAAO,SAAU,CAAA;mBAE7C,kBAAC,EAAgB,MAAjB;IACO;IACL,MAAM;KAAE,GAAG;KAAM,aAAa;KAAW;IACzC,cAAc;IACd,IAAG;IACH,OAAM;IACN,aAAY;IACZ,aAAY;IACZ,cAAa;IACb,UAAS;IACT,WAAU;IACV,GAAI;IACJ,CAAA;GAEO,CAAA;EACmB,CAAA;EAGvC,EAEK,IAAkB,EACtB,SAAyB,GAAO,GAAK;AACnC,QAAO,kBAAC,EAAgB,QAAjB;EAA6B;EAAK,IAAI;EAAG,GAAI;EAAc,GAAI;EAAS,CAAA;EAElF,EAEK,IAAiB,EACrB,SAAwB,GAAO,GAAK;AAClC,QACE,kBAAC,EAAgB,OAAjB;EACO;EACL,UAAU,EAAQ,GAAG;EACrB,YAAW;EACX,OAAM;EACN,GAAI;EACJ,CAAA;EAGP,EAEK,IAAmB,EAGvB,SAA0B,GAAO,GAAK;AACtC,QAAO,kBAAC,EAAgB,SAAjB;EAA8B;EAAK,KAAK,EAAQ,EAAE;EAAE,GAAI;EAAS,CAAA;EACxE,EAEI,IAAmB,EAGvB,SAA0B,GAAO,GAAK;AACtC,QAAO,kBAAC,EAAgB,SAAjB;EAA8B;EAAK,GAAI;EAAe,GAAI;EAAS,CAAA;EAC1E,EAEI,IAAgB,EACpB,SAAuB,GAAO,GAAK;AACjC,QAAO,kBAAC,EAAgB,MAAjB;EAA2B;EAAK,YAAW;EAAO,GAAI;EAAY,GAAI;EAAS,CAAA;EAEzF,EAEK,IAAoB,EAGxB,SAA2B,GAAO,GAAK;AACvC,QAAO,kBAAC,EAAgB,UAAjB;EAA+B;EAAK,GAAI;EAAS,CAAA;EACxD,EAEI,IAAuB,EAG3B,SAA8B,GAAO,GAAK;AAC1C,QAAO,kBAAC,EAAgB,aAAjB;EAAkC;EAAK,GAAI;EAAS,CAAA;EAC3D,EAEI,IAAyB,EAG7B,SAAgC,GAAO,GAAK;AAC5C,QACE,kBAAC,EAAgB,eAAjB;EAAoC;EAAK,QAAQ,kBAAC,GAAD,EAAW,CAAA;EAAE,GAAI;YAChE,kBAAC,GAAD,EAAU,CAAA;EACoB,CAAA;EAElC,EAEI,IAAsB,EAC1B,SACE,EACE,iBAAc,UACd,eAAY,aACZ,UAAO,MACP,aAAU,aACV,GAAG,KAEL,GACA;AACA,QACE,kBAAC,GAAD;EAAsB,SAAA;YACpB,mBAAC,GAAD;GACO;GACC;GACG;GACT,OAAM;GACN,GAAE;GACF,MAAK;GACL,IAAI,EAAQ,GAAG;GACf,IAAI,EAAQ,EAAE;GACd,KAAK,EAAQ,EAAE;GACf,GAAI;aAVN,CAYE,kBAAC,GAAD,EAA0B,CAAA,EAC1B,kBAAC,EAAgB,eAAjB;IAA+B,QAAQ;cACpC;IAC6B,CAAA,CACzB;;EACY,CAAA;EAG5B,EAEK,IAAmB,EAGvB,SAA0B,GAAO,GAAK;AACtC,QAAO,kBAAC,EAAgB,SAAjB;EAA8B;EAAK,GAAI;EAAS,CAAA;EACvD,EAEI,IAA2B,EAG/B,SAAkC,GAAO,GAAK;AAC9C,QAAO,kBAAC,EAAgB,iBAAjB;EAAsC;EAAK,GAAI;EAAS,CAAA;EAC/D,EAEI,IAA6B,EAGjC,SACA,EAAE,aAAU,oBAAiB,eAAe,mBAAgB,iBAAiB,GAAG,KAChF,GACA;CACA,IAAM,IAAkB,KAAiB;AAQzC,QACE,kBAAC,EAAgB,mBAAjB;EACE,SAAA;EACK;EACL,QAAO;EACP,WAVA,kBAAC,GAAD;GAAQ,SAAQ;GAAY,MAAK;aAC9B;GACM,CAAA;EAST,SAAQ;EACR,YAAW;EACX,gBAAe;EACf,MAAK;EACL,GAAI;YAEJ,kBAAC,GAAD;GAAQ,SAAQ;GAAY,MAAK;aAC9B;GACM,CAAA;EACyB,CAAA;EAEtC,EAEI,IAAwB,EAG5B,SAA+B,GAAO,GAAK;AAC3C,QAAO,kBAAC,EAAgB,cAAjB;EAAmC;EAAK,GAAI;EAAS,CAAA;EAC5D,EAEW,KAAY,OAAO,OAAO,GAAe;CACpD,MAAM;CACN,QAAQ;CACR,OAAO;CACP,SAAS;CACT,SAAS;CACT,MAAM;CACN,UAAU;CACV,aAAa;CACb,eAAe;CACf,YAAY;CACZ,SAAS;CACT,iBAAiB;CACjB,mBAAmB;CACnB,cAAc;CACf,CAAC,EClPI,IAAwB,GAAiD,KAAK;AAEpF,SAAS,EAAyB,GAAuB;CACvD,IAAM,IAAU,GAAW,EAAsB;AACjD,KAAI,CAAC,EACH,OAAU,MAAM,IAAgB,2CAA2C;AAE7E,QAAO;;AAQT,IAAa,IAAqB,EAChC,SAA4B,EAAE,aAAU,QAAK,aAAU,WAAQ,GAAG,KAAS,GAAK;CAC9E,IAAM,IAAQ,UAAe,EAAE,WAAQ,GAAG,CAAC,EAAO,CAAC,EAE7C,IADS,EAAc,EAAE,KAAK,kBAAkB,CAAC,EAChC;AAEvB,QACE,kBAAC,EAAsB,UAAvB;EAAuC;YACrC,kBAAC,IAAD;GACO;GACL,iBAAe,KAAY,KAAA;GAC3B,KAAK;IACH,EAAO;IACP,EACE,kBAAkB,EAAO,SAC1B;IACD;IACD;GACD,GAAI;GAEH;GACG,CAAA;EACyB,CAAA;EAGtC,EAIY,IAAwB,EACnC,SAA+B,GAAO,GAAK;AAIzC,QAAO,kBAAC,GAAD;EAAa;EAAK,KAHV,EAAc,EAAE,KAAK,kBAAkB,CAAC,EAChC,CAEc;EAAS,WAAW,kBAAC,IAAD,EAAgB,GAAE,KAAM,CAAA;EAAE,GAAI;EAAS,CAAA;EAEnG,EAEY,IAAuB,EAClC,SAA8B,GAAO,GAAK;AAIxC,QAAO,kBAAC,GAAD;EAAa;EAAK,KAHV,EAAc,EAAE,KAAK,kBAAkB,CAAC,EAChC,CAEc;EAAQ,GAAI;EAAS,CAAA;EAE7D,EAEY,IAA6B,EACxC,SAAoC,GAAO,GAAK;AAI9C,QACE,kBAAC,GAAD;EAAkB;EAAK,KAJV,EAAc,EAAE,KAAK,kBAAkB,CAAC,EAChC,CAGc;EAAc,MAAK;EAAK,SAAQ;EAAU,GAAI;EAAS,CAAA;EAG/F,EAOY,IAAwB,EACnC,SAA+B,GAAO,GAAK;CACzC,IAAM,EAAE,cAAW,EAAyB,yBAAyB;AAErE,QADK,IACE,kBAAC,GAAD;EAAuB;EAAQ,UAAU;EAAK,GAAI;EAAS,CAAA,GAD9C;EAGvB;AAED,SAAS,EACP,GACA,GACA,GACA,GACmB;AACnB,QAAO,WAAsC;EAC3C,IAAM,EAAE,cAAW,EAAyB,yBAAyB,EAC/D,IAAS,KAAU,IAAW,EAAS,EAAO,GAAG;AAEvD,SACE,kBAAC,GAAD;GACE,cAAY;GACZ,SAAS,IAAS,WAAW;GAC7B,MAAK;GACL,eAAe;AACR,SACL,EAAO,EAAO;;aAGf;GACU,CAAA;;;AAKnB,IAAa,IAAU;CACrB,MAAM,EACJ,QACA,kBAAC,GAAD,EAAU,CAAA,GACT,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GACpD,MAAW,EAAO,SAAS,OAAO,CACpC;CACD,QAAQ,EACN,UACA,kBAAC,GAAD,EAAY,CAAA,GACX,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,GACtD,MAAW,EAAO,SAAS,SAAS,CACtC;CACD,IAAI,EACF,aACA,kBAAC,GAAD,EAAc,CAAA,GACb,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,GACnE,MAAW,EAAO,SAAS,WAAW,EAAE,OAAO,GAAG,CAAC,CACrD;CACD,IAAI,EACF,aACA,kBAAC,GAAD,EAAc,CAAA,GACb,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,GACnE,MAAW,EAAO,SAAS,WAAW,EAAE,OAAO,GAAG,CAAC,CACrD;CACD,YAAY,EACV,eACA,kBAAC,GAAD,EAAU,CAAA,GACT,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,GAC1D,MAAW,EAAO,SAAS,aAAa,CAC1C;CACD,MAAM,EAAc,QAAQ,kBAAC,GAAD,EAAU,CAAA,GAAG,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CACxF,MAAM,EAAc,QAAQ,kBAAC,GAAD,EAAU,CAAA,GAAG,MAAW,EAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CACzF,EAEY,KAAiB,OAAO,OAAO,GAAoB;CAC9D,MAAM;CACN,SAAS;CACT,SAAS;CACT,cAAc;CACd,QAAQ;CACR;CACD,CAAC"}