index.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { isEmpty, noop } from 'lodash'
  2. import { useState } from 'react'
  3. import { Button } from 'ui'
  4. import { PolicyTemplate } from './PolicyTemplates.constants'
  5. import TemplatePreview from './TemplatePreview'
  6. import TemplatesList from './TemplatesList'
  7. interface PolicyTemplatesProps {
  8. templates?: PolicyTemplate[]
  9. templatesNote?: string
  10. onUseTemplate?: (template: PolicyTemplate) => void
  11. }
  12. const PolicyTemplates = ({
  13. templates = [],
  14. templatesNote = '',
  15. onUseTemplate = noop,
  16. }: PolicyTemplatesProps) => {
  17. const [selectedTemplate, setSelectedTemplate] = useState<PolicyTemplate>(templates[0])
  18. return (
  19. <div>
  20. <div className="flex flex-col md:flex-row justify-between border-t border-default">
  21. <TemplatesList
  22. templatesNote={templatesNote}
  23. templates={templates}
  24. selectedTemplate={selectedTemplate}
  25. setSelectedTemplate={setSelectedTemplate}
  26. />
  27. <TemplatePreview selectedTemplate={selectedTemplate} />
  28. </div>
  29. <div className="flex w-full items-center justify-end gap-3 border-t px-6 py-4 border-default">
  30. <span className="text-sm text-foreground-lighter">
  31. This will override any existing code you've written
  32. </span>
  33. <Button
  34. type="primary"
  35. disabled={isEmpty(selectedTemplate)}
  36. onClick={() => onUseTemplate(selectedTemplate)}
  37. >
  38. Use this template
  39. </Button>
  40. </div>
  41. </div>
  42. )
  43. }
  44. export default PolicyTemplates