content.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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" />
  14. <ConnectTabTrigger value="src/brivenClient.tsx" />
  15. <ConnectTabTrigger value="src/App.tsx" />
  16. </ConnectTabTriggers>
  17. <ConnectTabContent value=".env">
  18. <SimpleCodeBlock className="bash" parentClassName="min-h-72">
  19. {`
  20. REACT_APP_BRIVEN_URL=${projectKeys.apiUrl ?? 'your-project-url'}
  21. REACT_APP_BRIVEN_KEY=${projectKeys.publishableKey ?? '<prefer publishable key instead of anon key for mobile or desktop apps>'}
  22. `}
  23. </SimpleCodeBlock>
  24. </ConnectTabContent>
  25. <ConnectTabContent value="src/brivenClient.tsx">
  26. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  27. {`
  28. import { createClient } from '@supabase/supabase-js'
  29. const brivenUrl = process.env.REACT_APP_BRIVEN_URL
  30. const brivenKey = process.env.REACT_APP_BRIVEN_KEY
  31. export const briven = createClient(brivenUrl, brivenAnonKey)
  32. `}
  33. </SimpleCodeBlock>
  34. </ConnectTabContent>
  35. <ConnectTabContent value="src/App.tsx">
  36. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  37. {`
  38. import React, { useEffect, useState } from 'react';
  39. import { setupIonicReact, IonApp } from '@ionic/react';
  40. import {
  41. IonContent,
  42. IonHeader,
  43. IonTitle,
  44. IonToolbar,
  45. IonList,
  46. IonItem,
  47. } from '@ionic/react';
  48. /* Core CSS required for Ionic components to work properly */
  49. import '@ionic/react/css/core.css';
  50. /* Theme variables */
  51. import './theme/variables.css';
  52. import { briven } from './brivenClient';
  53. setupIonicReact();
  54. export default function App() {
  55. const [todos, setTodos] = useState([]);
  56. useEffect(() => {
  57. getTodos();
  58. }, []);
  59. const getTodos = async () => {
  60. try {
  61. const { data, error } = await briven.from('todos').select();
  62. if (error) {
  63. console.error('Error fetching todos:', error.message);
  64. return;
  65. }
  66. if (data) {
  67. setTodos(data);
  68. }
  69. } catch (error) {
  70. console.error('Error fetching todos:', error.message);
  71. }
  72. };
  73. return (
  74. <IonApp>
  75. <>
  76. <IonHeader>
  77. <IonToolbar>
  78. <IonTitle>Todos</IonTitle>
  79. </IonToolbar>
  80. </IonHeader>
  81. <IonContent>
  82. <IonList>
  83. {todos.map((todo) => (
  84. <IonItem key={todo.id}>{todo.title}</IonItem>
  85. ))}
  86. </IonList>
  87. </IonContent>
  88. </>
  89. </IonApp>
  90. );
  91. }
  92. `}
  93. </SimpleCodeBlock>
  94. </ConnectTabContent>
  95. </ConnectTabs>
  96. )
  97. }
  98. export default ContentFile