content.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { SimpleCodeBlock } from 'ui-patterns/SimpleCodeBlock'
  2. import type { ContentFileProps } from '@/components/interfaces/Connect/Connect.types'
  3. import {
  4. ConnectTabContent,
  5. ConnectTabs,
  6. ConnectTabTrigger,
  7. ConnectTabTriggers,
  8. } from '@/components/interfaces/Connect/ConnectTabs'
  9. const ContentFile = ({ projectKeys }: ContentFileProps) => {
  10. return (
  11. <ConnectTabs>
  12. <ConnectTabTriggers>
  13. <ConnectTabTrigger value=".env.local" />
  14. <ConnectTabTrigger value="utils/briven.ts" />
  15. <ConnectTabTrigger value="_app.tsx" />
  16. </ConnectTabTriggers>
  17. <ConnectTabContent value=".env.local">
  18. <SimpleCodeBlock className="bash" parentClassName="min-h-72">
  19. {[
  20. '',
  21. `NEXT_PUBLIC_BRIVEN_URL=${projectKeys.apiUrl ?? 'your-project-url'}`,
  22. projectKeys?.publishableKey
  23. ? `NEXT_PUBLIC_BRIVEN_PUBLISHABLE_KEY=${projectKeys.publishableKey}`
  24. : `NEXT_PUBLIC_BRIVEN_ANON_KEY=${projectKeys.anonKey ?? 'your-anon-key'}`,
  25. '',
  26. ].join('\n')}
  27. </SimpleCodeBlock>
  28. </ConnectTabContent>
  29. <ConnectTabContent value="utils/briven.ts">
  30. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  31. {`
  32. import { createClient } from "@supabase/supabase-js";
  33. const brivenUrl = process.env.NEXT_PUBLIC_BRIVEN_URL;
  34. const brivenKey = process.env.${projectKeys?.publishableKey ? 'NEXT_PUBLIC_BRIVEN_PUBLISHABLE_KEY' : 'NEXT_PUBLIC_BRIVEN_ANON_KEY'};
  35. export const briven = createClient(brivenUrl, brivenKey);
  36. `}
  37. </SimpleCodeBlock>
  38. </ConnectTabContent>
  39. <ConnectTabContent value="_app.tsx">
  40. <SimpleCodeBlock className="tsx" parentClassName="min-h-72">
  41. {`
  42. import { useState, useEffect } from 'react'
  43. import { briven } from '../utils/briven'
  44. function Page() {
  45. const [todos, setTodos] = useState([])
  46. useEffect(() => {
  47. async function getTodos() {
  48. const { data: todos } = await briven.from('todos').select()
  49. if (todos.length > 1) {
  50. setTodos(todos)
  51. }
  52. }
  53. getTodos()
  54. }, [])
  55. return (
  56. <div>
  57. {todos.map((todo) => (
  58. <li key={todo}>{todo}</li>
  59. ))}
  60. </div>
  61. )
  62. }
  63. export default Page
  64. `}
  65. </SimpleCodeBlock>
  66. </ConnectTabContent>
  67. </ConnectTabs>
  68. )
  69. }
  70. export default ContentFile