content.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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="environments/environment.ts" />
  14. <ConnectTabTrigger value="src/app/briven.service.ts" />
  15. <ConnectTabTrigger value="src/app/app.component.ts" />
  16. <ConnectTabTrigger value="src/app/app.component.html" />
  17. <ConnectTabTrigger value="src/app/app.module.ts" />
  18. </ConnectTabTriggers>
  19. <ConnectTabContent value="environments/environment.ts">
  20. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  21. {`
  22. export const environment = {
  23. brivenUrl: '${projectKeys.apiUrl ?? 'your-project-url'}',
  24. brivenKey: '${projectKeys.publishableKey ?? '<prefer publishable key instead of anon key for mobile apps>'}',
  25. };
  26. `}
  27. </SimpleCodeBlock>
  28. </ConnectTabContent>
  29. <ConnectTabContent value="src/app/briven.service.ts">
  30. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  31. {`
  32. import { Injectable } from '@angular/core';
  33. import { createClient, BrivenClient } from '@supabase/supabase-js';
  34. import { environment } from '../environments/environment';
  35. @Injectable({
  36. providedIn: 'root',
  37. })
  38. export class BrivenService {
  39. private briven: BrivenClient;
  40. constructor() {
  41. this.briven = createClient(
  42. environment.brivenUrl,
  43. environment.brivenKey
  44. );
  45. }
  46. getTodos() {
  47. return this.briven.from('todos').select('*');
  48. }
  49. }
  50. `}
  51. </SimpleCodeBlock>
  52. </ConnectTabContent>
  53. <ConnectTabContent value="src/app/app.component.ts">
  54. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  55. {`
  56. import { Component, OnInit } from '@angular/core';
  57. import { BrivenService } from './briven.service';
  58. @Component({
  59. selector: 'app-root',
  60. templateUrl: 'app.component.html',
  61. styleUrls: ['app.component.scss'],
  62. })
  63. export class AppComponent implements OnInit {
  64. todos: any[] = [];
  65. constructor(private brivenService: BrivenService) {}
  66. async ngOnInit() {
  67. await this.loadTodos();
  68. }
  69. async loadTodos() {
  70. const { data, error } = await this.brivenService.getTodos();
  71. if (error) {
  72. console.error('Error fetching todos:', error);
  73. } else {
  74. this.todos = data;
  75. }
  76. }
  77. }
  78. `}
  79. </SimpleCodeBlock>
  80. </ConnectTabContent>
  81. <ConnectTabContent value="src/app/app.component.html">
  82. <SimpleCodeBlock className="html" parentClassName="min-h-72">
  83. {`
  84. <ion-header>
  85. <ion-toolbar>
  86. <ion-title>Todo List</ion-title>
  87. </ion-toolbar>
  88. </ion-header>
  89. <ion-content>
  90. <ion-list>
  91. <ion-item *ngFor="let todo of todos">
  92. <ion-label>{{ todo.title }}</ion-label>
  93. </ion-item>
  94. </ion-list>
  95. </ion-content>
  96. `}
  97. </SimpleCodeBlock>
  98. </ConnectTabContent>
  99. <ConnectTabContent value="src/app/app.module.ts">
  100. <SimpleCodeBlock className="ts" parentClassName="min-h-72">
  101. {`
  102. import { NgModule } from '@angular/core';
  103. import { FormsModule } from '@angular/forms';
  104. import { BrowserModule } from '@angular/platform-browser';
  105. import { RouterModule } from '@angular/router';
  106. import { IonicModule } from '@ionic/angular';
  107. import { AppComponent } from './app.component';
  108. import { BrivenService } from './briven.service';
  109. @NgModule({
  110. imports: [
  111. BrowserModule,
  112. FormsModule,
  113. RouterModule.forRoot([]),
  114. IonicModule.forRoot({ mode: 'ios' }),
  115. ],
  116. declarations: [AppComponent],
  117. providers: [BrivenService],
  118. bootstrap: [AppComponent],
  119. })
  120. export class AppModule {}
  121. `}
  122. </SimpleCodeBlock>
  123. </ConnectTabContent>
  124. </ConnectTabs>
  125. )
  126. }
  127. export default ContentFile