content.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { MultipleCodeBlock } from 'ui-patterns/MultipleCodeBlock'
  2. import type { StepContentProps } from '@/components/interfaces/ConnectSheet/Connect.types'
  3. const ContentFile = ({ projectKeys }: StepContentProps) => {
  4. const files = [
  5. {
  6. name: '.env',
  7. language: 'bash',
  8. code: `
  9. REACT_APP_BRIVEN_URL=${projectKeys.apiUrl ?? 'your-project-url'}
  10. REACT_APP_BRIVEN_KEY=${projectKeys.publishableKey ?? '<prefer publishable key instead of anon key for mobile or desktop apps>'}
  11. `,
  12. },
  13. {
  14. name: 'src/brivenClient.tsx',
  15. language: 'ts',
  16. code: `
  17. import { createClient } from '@supabase/supabase-js'
  18. const brivenUrl = process.env.REACT_APP_BRIVEN_URL
  19. const brivenAnonKey = process.env.REACT_APP_BRIVEN_KEY
  20. export const briven = createClient(brivenUrl, brivenAnonKey)
  21. `,
  22. },
  23. {
  24. name: 'src/App.tsx',
  25. language: 'ts',
  26. code: `
  27. import React, { useEffect, useState } from 'react';
  28. import { setupIonicReact, IonApp } from '@ionic/react';
  29. import {
  30. IonContent,
  31. IonHeader,
  32. IonTitle,
  33. IonToolbar,
  34. IonList,
  35. IonItem,
  36. } from '@ionic/react';
  37. /* Core CSS required for Ionic components to work properly */
  38. import '@ionic/react/css/core.css';
  39. /* Theme variables */
  40. import './theme/variables.css';
  41. import { briven } from './brivenClient';
  42. setupIonicReact();
  43. export default function App() {
  44. const [todos, setTodos] = useState([]);
  45. useEffect(() => {
  46. getTodos();
  47. }, []);
  48. const getTodos = async () => {
  49. try {
  50. const { data, error } = await briven.from('todos').select();
  51. if (error) {
  52. console.error('Error fetching todos:', error.message);
  53. return;
  54. }
  55. if (data) {
  56. setTodos(data);
  57. }
  58. } catch (error) {
  59. console.error('Error fetching todos:', error.message);
  60. }
  61. };
  62. return (
  63. <IonApp>
  64. <>
  65. <IonHeader>
  66. <IonToolbar>
  67. <IonTitle>Todos</IonTitle>
  68. </IonToolbar>
  69. </IonHeader>
  70. <IonContent>
  71. <IonList>
  72. {todos.map((todo) => (
  73. <IonItem key={todo.id}>{todo.name}</IonItem>
  74. ))}
  75. </IonList>
  76. </IonContent>
  77. </>
  78. </IonApp>
  79. );
  80. }
  81. `,
  82. },
  83. ]
  84. return <MultipleCodeBlock files={files} />
  85. }
  86. export default ContentFile