@layerfi/components 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css ADDED
@@ -0,0 +1,106 @@
1
+ /* src/components/Hello/Hello.css */
2
+ .hello {
3
+ color: red;
4
+ }
5
+
6
+ /* src/components/Transactions/Transactions.css */
7
+ .transactions {
8
+ --transaction-buttons-border-color: #D0D5DD;
9
+ --transaction-buttons-selected-background-color: #E0E9FF;
10
+ --transaction-table-background-color: white;
11
+ --transaction-table-border-color: #EAECF0;
12
+ --transaction-table-text-color: #101828;
13
+ }
14
+ .transactions {
15
+ margin: 3rem;
16
+ border-radius: 0.6rem;
17
+ border: 1px solid var(--transaction-table-border-color);
18
+ background-color: var(--transaction-table-background-color);
19
+ overflow: hidden;
20
+ }
21
+ .transactions header {
22
+ display: flex;
23
+ padding: 1rem;
24
+ }
25
+ .transactions header h1 {
26
+ display: flex;
27
+ align-items: center;
28
+ flex: 1;
29
+ justify-content: flex-start;
30
+ font-size: 1.5rem;
31
+ font-style: normal;
32
+ font-weight: 600;
33
+ line-height: 2rem;
34
+ margin: 0;
35
+ }
36
+ .transactions header div {
37
+ display: flex;
38
+ font-size: 1rem;
39
+ align-items: center;
40
+ flex: 1;
41
+ justify-content: flex-end;
42
+ }
43
+ .transactions .transaction-table {
44
+ display: grid;
45
+ grid-template-columns: auto repeat(4, 1fr) repeat(3, auto);
46
+ gap: 1px 0px;
47
+ background-color: var(--transaction-table-border-color);
48
+ border-top: 1px solid var(--transaction-table-border-color);
49
+ border-radius: 0.6rem;
50
+ }
51
+ .transactions .transaction-table div {
52
+ padding: 1rem;
53
+ background-color: white;
54
+ overflow: clip;
55
+ color: var(--transaction-table-text-color);
56
+ font-family: sans-serif;
57
+ font-size: 16px;
58
+ font-style: normal;
59
+ font-weight: 500;
60
+ line-height: 20px;
61
+ display: flex;
62
+ flex-direction: row;
63
+ align-items: center;
64
+ }
65
+ .transactions .transaction-table div select {
66
+ border: 2px solid var(--transaction-table-border-color);
67
+ border-radius: 0.6rem;
68
+ background-color: var(--transaction-table-background-color);
69
+ padding: 0.6rem 0.8rem;
70
+ }
71
+ .transactions .transaction-table div.header {
72
+ font-weight: bold;
73
+ }
74
+ .transactions .transaction-table div.expand-area {
75
+ grid-column: 1 / -1;
76
+ margin-top: -1px;
77
+ }
78
+ .transactions .transaction-table div.expand-content {
79
+ padding: 1rem;
80
+ text-align: center;
81
+ }
82
+ .transactions .radio-group {
83
+ }
84
+ .transactions .radio-group input {
85
+ position: absolute;
86
+ opacity: 0;
87
+ }
88
+ .transactions .radio-group div {
89
+ padding: 0.6rem 1rem;
90
+ border: 1px solid var(--transaction-buttons-border-color);
91
+ border-right: 0;
92
+ border-radius: 0;
93
+ }
94
+ .transactions .radio-group label:first-of-type div {
95
+ border-start-start-radius: 0.6rem;
96
+ border-end-start-radius: 0.6rem;
97
+ }
98
+ .transactions .radio-group label:last-of-type div {
99
+ border-right: 1px solid var(--transaction-buttons-border-color);
100
+ border-start-end-radius: 0.6rem;
101
+ border-end-end-radius: 0.6rem;
102
+ }
103
+ .transactions .radio-group input:checked + div {
104
+ background: var(--transaction-buttons-selected-background-color);
105
+ }
106
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/Hello/Hello.css", "../src/components/Transactions/Transactions.css"],
4
+ "sourcesContent": [".hello {\n color: red;\n}\n", ".transactions {\n --transaction-buttons-border-color: #D0D5DD;\n --transaction-buttons-selected-background-color: #E0E9FF;\n --transaction-table-background-color: white;\n --transaction-table-border-color: #EAECF0;\n --transaction-table-text-color: #101828;\n}\n\n.transactions {\n margin: 3rem;\n border-radius: 0.6rem;\n border: 1px solid var(--transaction-table-border-color);\n background-color: var(--transaction-table-background-color);\n overflow: hidden;\n}\n\n.transactions header {\n display: flex;\n padding: 1rem;\n}\n\n.transactions header h1 {\n display: flex;\n align-items: center;\n flex: 1;\n justify-content: flex-start;\n font-size: 1.5rem;\n font-style: normal;\n font-weight: 600;\n line-height: 2rem;\n margin: 0;\n}\n\n.transactions header div {\n display: flex;\n font-size: 1rem;\n align-items: center;\n flex: 1;\n justify-content: flex-end;\n}\n\n.transactions .transaction-table {\n display: grid;\n grid-template-columns: auto repeat(4, 1fr) repeat(3, auto);\n gap: 1px 0px;\n background-color: var(--transaction-table-border-color);\n border-top: 1px solid var(--transaction-table-border-color);\n border-radius: 0.6rem;\n}\n\n.transactions .transaction-table div {\n padding: 1rem;\n background-color: white;\n overflow: clip;\n color: var(--transaction-table-text-color);\n font-family: sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.transactions .transaction-table div select {\n border: 2px solid var(--transaction-table-border-color);\n border-radius: 0.6rem;\n background-color: var(--transaction-table-background-color);\n padding: 0.6rem 0.8rem;\n}\n\n.transactions .transaction-table div.header {\n font-weight: bold;\n}\n\n.transactions .transaction-table div.expand-area {\n grid-column: 1 / -1;\n margin-top: -1px;\n}\n\n.transactions .transaction-table div.expand-content {\n padding: 1rem;\n text-align: center;\n}\n\n.transactions .radio-group {\n}\n\n.transactions .radio-group input {\n position: absolute;\n opacity: 0;\n}\n\n.transactions .radio-group div {\n padding: 0.6rem 1rem;\n border: 1px solid var(--transaction-buttons-border-color);\n border-right: 0;\n border-radius: 0;\n}\n\n.transactions .radio-group label:first-of-type div {\n border-start-start-radius: 0.6rem;\n border-end-start-radius: 0.6rem;\n}\n\n.transactions .radio-group label:last-of-type div {\n border-right: 1px solid var(--transaction-buttons-border-color);\n border-start-end-radius: 0.6rem;\n border-end-end-radius: 0.6rem;\n}\n\n.transactions .radio-group input:checked + div {\n background: var(--transaction-buttons-selected-background-color);\n}\n"],
5
+ "mappings": ";AAAA,CAAC;AACC,SAAO;AACT;;;ACFA,CAAC;AACC,sCAAoC;AACpC,mDAAiD;AACjD,wCAAsC;AACtC,oCAAkC;AAClC,kCAAgC;AAClC;AAEA,CARC;AASC,UAAQ;AACR,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,IAAI;AACtB,YAAU;AACZ;AAEA,CAhBC,aAgBa;AACZ,WAAS;AACT,WAAS;AACX;AAEA,CArBC,aAqBa,OAAO;AACnB,WAAS;AACT,eAAa;AACb,QAAM;AACN,mBAAiB;AACjB,aAAW;AACX,cAAY;AACZ,eAAa;AACb,eAAa;AACb,UAAQ;AACV;AAEA,CAjCC,aAiCa,OAAO;AACnB,WAAS;AACT,aAAW;AACX,eAAa;AACb,QAAM;AACN,mBAAiB;AACnB;AAEA,CAzCC,aAyCa,CAAC;AACb,WAAS;AACT,yBAAuB,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;AACrD,OAAK,IAAI;AACT,oBAAkB,IAAI;AACtB,cAAY,IAAI,MAAM,IAAI;AAC1B,iBAAe;AACjB;AAEA,CAlDC,aAkDa,CATC,kBASkB;AAC/B,WAAS;AACT,oBAAkB;AAClB,YAAU;AACV,SAAO,IAAI;AACX,eAAa;AACb,aAAW;AACX,cAAY;AACZ,eAAa;AACb,eAAa;AACb,WAAS;AACT,kBAAgB;AAChB,eAAa;AACf;AAEA,CAjEC,aAiEa,CAxBC,kBAwBkB,IAAI;AACnC,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,oBAAkB,IAAI;AACtB,WAAS,OAAO;AAClB;AAEA,CAxEC,aAwEa,CA/BC,kBA+BkB,GAAG,CAAC;AACnC,eAAa;AACf;AAEA,CA5EC,aA4Ea,CAnCC,kBAmCkB,GAAG,CAAC;AACnC,eAAa,EAAE,EAAE;AACjB,cAAY;AACd;AAEA,CAjFC,aAiFa,CAxCC,kBAwCkB,GAAG,CAAC;AACnC,WAAS;AACT,cAAY;AACd;AAEA,CAtFC,aAsFa,CAAC;AACf;AAEA,CAzFC,aAyFa,CAHC,YAGY;AACzB,YAAU;AACV,WAAS;AACX;AAEA,CA9FC,aA8Fa,CARC,YAQY;AACzB,WAAS,OAAO;AAChB,UAAQ,IAAI,MAAM,IAAI;AACtB,gBAAc;AACd,iBAAe;AACjB;AAEA,CArGC,aAqGa,CAfC,YAeY,KAAK,eAAe;AAC7C,6BAA2B;AAC3B,2BAAyB;AAC3B;AAEA,CA1GC,aA0Ga,CApBC,YAoBY,KAAK,cAAc;AAC5C,gBAAc,IAAI,MAAM,IAAI;AAC5B,2BAAyB;AACzB,yBAAuB;AACzB;AAEA,CAhHC,aAgHa,CA1BC,YA0BY,KAAK,SAAS,EAAE;AACzC,cAAY,IAAI;AAClB;",
6
+ "names": []
7
+ }
package/dist/index.d.ts CHANGED
@@ -233,7 +233,10 @@ declare module '@layerfi/components/components/BankTransactionRow/index' {
233
233
  }
234
234
  declare module '@layerfi/components/components/BankTransactions/BankTransactions' {
235
235
  import React from 'react';
236
- export const BankTransactions: () => React.JSX.Element;
236
+ export interface BankTransactionsProps {
237
+ asWidget?: boolean;
238
+ }
239
+ export const BankTransactions: ({ asWidget, }: BankTransactionsProps) => React.JSX.Element;
237
240
 
238
241
  }
239
242
  declare module '@layerfi/components/components/BankTransactions/index' {
@@ -329,9 +332,10 @@ declare module '@layerfi/components/components/Container/Container' {
329
332
  export interface ContainerProps {
330
333
  name: string;
331
334
  className?: string;
335
+ asWidget?: boolean;
332
336
  children: ReactNode;
333
337
  }
334
- export const Container: ({ name, className, children }: ContainerProps) => React.JSX.Element;
338
+ export const Container: ({ name, className, children, asWidget, }: ContainerProps) => React.JSX.Element;
335
339
 
336
340
  }
337
341
  declare module '@layerfi/components/components/Container/Header' {
@@ -348,6 +352,26 @@ declare module '@layerfi/components/components/Container/index' {
348
352
  export { Container } from '@layerfi/components/components/Container/Container';
349
353
  export { Header } from '@layerfi/components/components/Container/Header';
350
354
 
355
+ }
356
+ declare module '@layerfi/components/components/DataState/DataState' {
357
+ import React from 'react';
358
+ export enum DataStateStatus {
359
+ allDone = "allDone",
360
+ failed = "failed"
361
+ }
362
+ export interface DataStateProps {
363
+ status: DataStateStatus;
364
+ title?: string;
365
+ description?: string;
366
+ onRefresh?: () => void;
367
+ isLoading?: boolean;
368
+ }
369
+ export const DataState: ({ status, title, description, onRefresh, isLoading, }: DataStateProps) => React.JSX.Element;
370
+
371
+ }
372
+ declare module '@layerfi/components/components/DataState/index' {
373
+ export { DataState, DataStateStatus } from '@layerfi/components/components/DataState/DataState';
374
+
351
375
  }
352
376
  declare module '@layerfi/components/components/ExpandedBankTransactionRow/ExpandedBankTransactionRow' {
353
377
  import React from 'react';
@@ -357,7 +381,7 @@ declare module '@layerfi/components/components/ExpandedBankTransactionRow/Expand
357
381
  close?: () => void;
358
382
  isOpen?: boolean;
359
383
  asListItem?: boolean;
360
- showSubmitButton?: boolean;
384
+ submitBtnText?: string;
361
385
  };
362
386
  export type SaveHandle = {
363
387
  save: () => void;
@@ -727,6 +751,7 @@ declare module '@layerfi/components/components/Typography/Heading' {
727
751
  declare module '@layerfi/components/components/Typography/Text' {
728
752
  import React, { ReactNode } from 'react';
729
753
  export enum TextSize {
754
+ lg = "lg",
730
755
  md = "md",
731
756
  sm = "sm"
732
757
  }
@@ -799,12 +824,14 @@ declare module '@layerfi/components/hooks/useBankTransactions/index' {
799
824
  declare module '@layerfi/components/hooks/useBankTransactions/useBankTransactions' {
800
825
  import { BankTransaction, CategoryUpdate, Metadata } from '@layerfi/components/types';
801
826
  type UseBankTransactions = () => {
802
- data: BankTransaction[];
827
+ data?: BankTransaction[];
803
828
  metadata: Metadata;
804
829
  isLoading: boolean;
830
+ isValidating: boolean;
805
831
  error: unknown;
806
832
  categorize: (id: BankTransaction['id'], newCategory: CategoryUpdate) => Promise<void>;
807
833
  updateOneLocal: (bankTransaction: BankTransaction) => void;
834
+ refetch: () => void;
808
835
  };
809
836
  export const useBankTransactions: UseBankTransactions;
810
837
  export {};
@@ -872,6 +899,13 @@ declare module '@layerfi/components/icons/AlertCircle' {
872
899
  const AlertCircle: ({ size, ...props }: IconSvgProps) => React.JSX.Element;
873
900
  export default AlertCircle;
874
901
 
902
+ }
903
+ declare module '@layerfi/components/icons/AlertOctagon' {
904
+ import * as React from 'react';
905
+ import { IconSvgProps } from '@layerfi/components/icons/types';
906
+ const AlertOctagon: ({ size, ...props }: IconSvgProps) => React.JSX.Element;
907
+ export default AlertOctagon;
908
+
875
909
  }
876
910
  declare module '@layerfi/components/icons/Calendar' {
877
911
  import * as React from 'react';
@@ -957,11 +991,11 @@ declare module '@layerfi/components/icons/RefreshCcw' {
957
991
  export default RefreshCcw;
958
992
 
959
993
  }
960
- declare module '@layerfi/components/icons/ScissorsFullOpen' {
994
+ declare module '@layerfi/components/icons/Scissors' {
961
995
  import * as React from 'react';
962
996
  import { IconSvgProps } from '@layerfi/components/icons/types';
963
- const ScissorsFullOpen: ({ size, ...props }: IconSvgProps) => React.JSX.Element;
964
- export default ScissorsFullOpen;
997
+ const Scissors: ({ size, ...props }: IconSvgProps) => React.JSX.Element;
998
+ export default Scissors;
965
999
 
966
1000
  }
967
1001
  declare module '@layerfi/components/icons/UploadCloud' {
@@ -0,0 +1,106 @@
1
+ /* src/components/Hello/Hello.css */
2
+ .hello {
3
+ color: red;
4
+ }
5
+
6
+ /* src/components/Transactions/Transactions.css */
7
+ .transactions {
8
+ --transaction-buttons-border-color: #D0D5DD;
9
+ --transaction-buttons-selected-background-color: #E0E9FF;
10
+ --transaction-table-background-color: white;
11
+ --transaction-table-border-color: #EAECF0;
12
+ --transaction-table-text-color: #101828;
13
+ }
14
+ .transactions {
15
+ margin: 3rem;
16
+ border-radius: 0.6rem;
17
+ border: 1px solid var(--transaction-table-border-color);
18
+ background-color: var(--transaction-table-background-color);
19
+ overflow: hidden;
20
+ }
21
+ .transactions header {
22
+ display: flex;
23
+ padding: 1rem;
24
+ }
25
+ .transactions header h1 {
26
+ display: flex;
27
+ align-items: center;
28
+ flex: 1;
29
+ justify-content: flex-start;
30
+ font-size: 1.5rem;
31
+ font-style: normal;
32
+ font-weight: 600;
33
+ line-height: 2rem;
34
+ margin: 0;
35
+ }
36
+ .transactions header div {
37
+ display: flex;
38
+ font-size: 1rem;
39
+ align-items: center;
40
+ flex: 1;
41
+ justify-content: flex-end;
42
+ }
43
+ .transactions .transaction-table {
44
+ display: grid;
45
+ grid-template-columns: auto repeat(4, 1fr) repeat(3, auto);
46
+ gap: 1px 0px;
47
+ background-color: var(--transaction-table-border-color);
48
+ border-top: 1px solid var(--transaction-table-border-color);
49
+ border-radius: 0.6rem;
50
+ }
51
+ .transactions .transaction-table div {
52
+ padding: 1rem;
53
+ background-color: white;
54
+ overflow: clip;
55
+ color: var(--transaction-table-text-color);
56
+ font-family: sans-serif;
57
+ font-size: 16px;
58
+ font-style: normal;
59
+ font-weight: 500;
60
+ line-height: 20px;
61
+ display: flex;
62
+ flex-direction: row;
63
+ align-items: center;
64
+ }
65
+ .transactions .transaction-table div select {
66
+ border: 2px solid var(--transaction-table-border-color);
67
+ border-radius: 0.6rem;
68
+ background-color: var(--transaction-table-background-color);
69
+ padding: 0.6rem 0.8rem;
70
+ }
71
+ .transactions .transaction-table div.header {
72
+ font-weight: bold;
73
+ }
74
+ .transactions .transaction-table div.expand-area {
75
+ grid-column: 1 / -1;
76
+ margin-top: -1px;
77
+ }
78
+ .transactions .transaction-table div.expand-content {
79
+ padding: 1rem;
80
+ text-align: center;
81
+ }
82
+ .transactions .radio-group {
83
+ }
84
+ .transactions .radio-group input {
85
+ position: absolute;
86
+ opacity: 0;
87
+ }
88
+ .transactions .radio-group div {
89
+ padding: 0.6rem 1rem;
90
+ border: 1px solid var(--transaction-buttons-border-color);
91
+ border-right: 0;
92
+ border-radius: 0;
93
+ }
94
+ .transactions .radio-group label:first-of-type div {
95
+ border-start-start-radius: 0.6rem;
96
+ border-end-start-radius: 0.6rem;
97
+ }
98
+ .transactions .radio-group label:last-of-type div {
99
+ border-right: 1px solid var(--transaction-buttons-border-color);
100
+ border-start-end-radius: 0.6rem;
101
+ border-end-end-radius: 0.6rem;
102
+ }
103
+ .transactions .radio-group input:checked + div {
104
+ background: var(--transaction-buttons-selected-background-color);
105
+ }
106
+ /*# sourceMappingURL=index.esm.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/Hello/Hello.css", "../src/components/Transactions/Transactions.css"],
4
+ "sourcesContent": [".hello {\n color: red;\n}\n", ".transactions {\n --transaction-buttons-border-color: #D0D5DD;\n --transaction-buttons-selected-background-color: #E0E9FF;\n --transaction-table-background-color: white;\n --transaction-table-border-color: #EAECF0;\n --transaction-table-text-color: #101828;\n}\n\n.transactions {\n margin: 3rem;\n border-radius: 0.6rem;\n border: 1px solid var(--transaction-table-border-color);\n background-color: var(--transaction-table-background-color);\n overflow: hidden;\n}\n\n.transactions header {\n display: flex;\n padding: 1rem;\n}\n\n.transactions header h1 {\n display: flex;\n align-items: center;\n flex: 1;\n justify-content: flex-start;\n font-size: 1.5rem;\n font-style: normal;\n font-weight: 600;\n line-height: 2rem;\n margin: 0;\n}\n\n.transactions header div {\n display: flex;\n font-size: 1rem;\n align-items: center;\n flex: 1;\n justify-content: flex-end;\n}\n\n.transactions .transaction-table {\n display: grid;\n grid-template-columns: auto repeat(4, 1fr) repeat(3, auto);\n gap: 1px 0px;\n background-color: var(--transaction-table-border-color);\n border-top: 1px solid var(--transaction-table-border-color);\n border-radius: 0.6rem;\n}\n\n.transactions .transaction-table div {\n padding: 1rem;\n background-color: white;\n overflow: clip;\n color: var(--transaction-table-text-color);\n font-family: sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.transactions .transaction-table div select {\n border: 2px solid var(--transaction-table-border-color);\n border-radius: 0.6rem;\n background-color: var(--transaction-table-background-color);\n padding: 0.6rem 0.8rem;\n}\n\n.transactions .transaction-table div.header {\n font-weight: bold;\n}\n\n.transactions .transaction-table div.expand-area {\n grid-column: 1 / -1;\n margin-top: -1px;\n}\n\n.transactions .transaction-table div.expand-content {\n padding: 1rem;\n text-align: center;\n}\n\n.transactions .radio-group {\n}\n\n.transactions .radio-group input {\n position: absolute;\n opacity: 0;\n}\n\n.transactions .radio-group div {\n padding: 0.6rem 1rem;\n border: 1px solid var(--transaction-buttons-border-color);\n border-right: 0;\n border-radius: 0;\n}\n\n.transactions .radio-group label:first-of-type div {\n border-start-start-radius: 0.6rem;\n border-end-start-radius: 0.6rem;\n}\n\n.transactions .radio-group label:last-of-type div {\n border-right: 1px solid var(--transaction-buttons-border-color);\n border-start-end-radius: 0.6rem;\n border-end-end-radius: 0.6rem;\n}\n\n.transactions .radio-group input:checked + div {\n background: var(--transaction-buttons-selected-background-color);\n}\n"],
5
+ "mappings": ";AAAA,CAAC;AACC,SAAO;AACT;;;ACFA,CAAC;AACC,sCAAoC;AACpC,mDAAiD;AACjD,wCAAsC;AACtC,oCAAkC;AAClC,kCAAgC;AAClC;AAEA,CARC;AASC,UAAQ;AACR,iBAAe;AACf,UAAQ,IAAI,MAAM,IAAI;AACtB,oBAAkB,IAAI;AACtB,YAAU;AACZ;AAEA,CAhBC,aAgBa;AACZ,WAAS;AACT,WAAS;AACX;AAEA,CArBC,aAqBa,OAAO;AACnB,WAAS;AACT,eAAa;AACb,QAAM;AACN,mBAAiB;AACjB,aAAW;AACX,cAAY;AACZ,eAAa;AACb,eAAa;AACb,UAAQ;AACV;AAEA,CAjCC,aAiCa,OAAO;AACnB,WAAS;AACT,aAAW;AACX,eAAa;AACb,QAAM;AACN,mBAAiB;AACnB;AAEA,CAzCC,aAyCa,CAAC;AACb,WAAS;AACT,yBAAuB,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;AACrD,OAAK,IAAI;AACT,oBAAkB,IAAI;AACtB,cAAY,IAAI,MAAM,IAAI;AAC1B,iBAAe;AACjB;AAEA,CAlDC,aAkDa,CATC,kBASkB;AAC/B,WAAS;AACT,oBAAkB;AAClB,YAAU;AACV,SAAO,IAAI;AACX,eAAa;AACb,aAAW;AACX,cAAY;AACZ,eAAa;AACb,eAAa;AACb,WAAS;AACT,kBAAgB;AAChB,eAAa;AACf;AAEA,CAjEC,aAiEa,CAxBC,kBAwBkB,IAAI;AACnC,UAAQ,IAAI,MAAM,IAAI;AACtB,iBAAe;AACf,oBAAkB,IAAI;AACtB,WAAS,OAAO;AAClB;AAEA,CAxEC,aAwEa,CA/BC,kBA+BkB,GAAG,CAAC;AACnC,eAAa;AACf;AAEA,CA5EC,aA4Ea,CAnCC,kBAmCkB,GAAG,CAAC;AACnC,eAAa,EAAE,EAAE;AACjB,cAAY;AACd;AAEA,CAjFC,aAiFa,CAxCC,kBAwCkB,GAAG,CAAC;AACnC,WAAS;AACT,cAAY;AACd;AAEA,CAtFC,aAsFa,CAAC;AACf;AAEA,CAzFC,aAyFa,CAHC,YAGY;AACzB,YAAU;AACV,WAAS;AACX;AAEA,CA9FC,aA8Fa,CARC,YAQY;AACzB,WAAS,OAAO;AAChB,UAAQ,IAAI,MAAM,IAAI;AACtB,gBAAc;AACd,iBAAe;AACjB;AAEA,CArGC,aAqGa,CAfC,YAeY,KAAK,eAAe;AAC7C,6BAA2B;AAC3B,2BAAyB;AAC3B;AAEA,CA1GC,aA0Ga,CApBC,YAoBY,KAAK,cAAc;AAC5C,gBAAc,IAAI,MAAM,IAAI;AAC5B,2BAAyB;AACzB,yBAAuB;AACzB;AAEA,CAhHC,aAgHa,CA1BC,YA0BY,KAAK,SAAS,EAAE;AACzC,cAAY,IAAI;AAClB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,252 @@
1
+ // src/components/Hello/Hello.tsx
2
+ import React from "react";
3
+ import useSWR from "swr";
4
+ var fetcher = (url) => fetch(url).then((res) => res.json());
5
+ var Hello = ({ user }) => {
6
+ const { data, isLoading } = useSWR(
7
+ `https://api.github.com/users/${user || "jyurek"}`,
8
+ fetcher
9
+ );
10
+ const name = (isLoading ? "..." : data?.name) || "User";
11
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "hello" }, "Hello, ", name, "!"));
12
+ };
13
+
14
+ // src/components/Transactions/Transactions.tsx
15
+ import React7, { useState as useState2, useContext as useContext3 } from "react";
16
+
17
+ // src/contexts/LayerContext/LayerContext.tsx
18
+ import { createContext } from "react";
19
+ var LayerContext = createContext({
20
+ auth: void 0,
21
+ businessId: "",
22
+ categories: []
23
+ });
24
+
25
+ // src/components/RadioButtonGroup/RadioButtonGroup.tsx
26
+ import React3 from "react";
27
+
28
+ // src/components/RadioButtonGroup/RadioButton.tsx
29
+ import React2 from "react";
30
+ var RadioButton = ({
31
+ checked,
32
+ label,
33
+ name,
34
+ onChange,
35
+ value
36
+ }) => {
37
+ return /* @__PURE__ */ React2.createElement("label", null, /* @__PURE__ */ React2.createElement(
38
+ "input",
39
+ {
40
+ type: "radio",
41
+ checked,
42
+ name,
43
+ onChange,
44
+ value
45
+ }
46
+ ), /* @__PURE__ */ React2.createElement("div", null, label));
47
+ };
48
+
49
+ // src/components/RadioButtonGroup/RadioButtonGroup.tsx
50
+ var RadioButtonGroup = ({
51
+ name,
52
+ buttons,
53
+ onChange,
54
+ selected
55
+ }) => {
56
+ const selectedValue = selected || buttons[0].value;
57
+ return /* @__PURE__ */ React3.createElement("div", { className: "radio-group" }, buttons.map((button) => /* @__PURE__ */ React3.createElement(
58
+ RadioButton,
59
+ {
60
+ ...button,
61
+ key: button.value,
62
+ name,
63
+ checked: selectedValue === button.value,
64
+ onChange
65
+ }
66
+ )));
67
+ };
68
+
69
+ // src/components/Transactions/TransactionRow.tsx
70
+ import React6 from "react";
71
+
72
+ // src/models/Money.ts
73
+ var format = ({ amount, direction }) => (direction === "CREDIT" ? "+" : "-") + Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(
74
+ amount / 100
75
+ );
76
+ var Money = {
77
+ format
78
+ };
79
+
80
+ // src/components/CategoryMenu/CategoryMenu.tsx
81
+ import React5, { useContext as useContext2 } from "react";
82
+
83
+ // src/components/CategoryMenu/CategoryMenuItem.tsx
84
+ import React4 from "react";
85
+ var CategoryMenuItem = ({
86
+ selectedCategory,
87
+ category,
88
+ maxDepth = 1
89
+ }) => {
90
+ if (category.hasOwnProperty("subCategories") && maxDepth > 0) {
91
+ return /* @__PURE__ */ React4.createElement("optgroup", { label: category.display_name }, category.subCategories.map((category2) => /* @__PURE__ */ React4.createElement(
92
+ CategoryMenuItem,
93
+ {
94
+ category: category2,
95
+ selectedCategory,
96
+ maxDepth: maxDepth - 1
97
+ }
98
+ )));
99
+ } else {
100
+ return /* @__PURE__ */ React4.createElement(
101
+ "option",
102
+ {
103
+ key: category.category,
104
+ value: category.category,
105
+ selected: selectedCategory === category.category
106
+ },
107
+ category.display_name
108
+ );
109
+ }
110
+ };
111
+
112
+ // src/components/CategoryMenu/CategoryMenu.tsx
113
+ var CategoryMenu = ({ selectedCategory }) => {
114
+ const { categories } = useContext2(LayerContext);
115
+ return /* @__PURE__ */ React5.createElement("select", null, categories.map((category) => /* @__PURE__ */ React5.createElement(
116
+ CategoryMenuItem,
117
+ {
118
+ category,
119
+ selectedCategory
120
+ }
121
+ )));
122
+ };
123
+
124
+ // src/components/Transactions/TransactionRow.tsx
125
+ import { parseISO, format as formatTime } from "date-fns";
126
+ var TransactionRow = ({
127
+ dateFormat: dateFormat2,
128
+ transaction,
129
+ isOpen,
130
+ toggleOpen
131
+ }) => /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement("div", null, /* @__PURE__ */ React6.createElement("input", { type: "checkbox" })), /* @__PURE__ */ React6.createElement("div", null, formatTime(parseISO(transaction.date), dateFormat2)), /* @__PURE__ */ React6.createElement("div", null, Money.format(transaction)), /* @__PURE__ */ React6.createElement("div", null, "Business Checking"), /* @__PURE__ */ React6.createElement("div", null, transaction.counterparty_name), /* @__PURE__ */ React6.createElement("div", { "data-selected": transaction?.category?.category }, /* @__PURE__ */ React6.createElement(CategoryMenu, { selectedCategory: transaction?.category?.category })), /* @__PURE__ */ React6.createElement("div", null), /* @__PURE__ */ React6.createElement(
132
+ "div",
133
+ {
134
+ onClick: () => toggleOpen(transaction.id),
135
+ style: { cursor: "pointer" }
136
+ },
137
+ "\u{1F3AF}"
138
+ ), isOpen && /* @__PURE__ */ React6.createElement("div", { className: "expand-area" }, /* @__PURE__ */ React6.createElement("div", { className: "expand-content" }, "Hello!")));
139
+
140
+ // src/components/Transactions/Transactions.tsx
141
+ import useSWR2 from "swr";
142
+ var dateFormat = "MM/dd/yyyy";
143
+ var fetchTransactions = (accessToken) => (url) => fetch(url, {
144
+ headers: {
145
+ Authorization: "Bearer " + accessToken,
146
+ "Content-Type": "application/json"
147
+ },
148
+ method: "GET"
149
+ }).then((res) => res.json());
150
+ var filterVisibility = (display) => (transaction) => {
151
+ const categorized = [
152
+ "CATEGORIZED" /* CATEGORIZED */,
153
+ "JOURNALING" /* JOURNALING */,
154
+ "SPLIT" /* SPLIT */
155
+ ].includes(transaction.categorization_status);
156
+ const inReview = [
157
+ "READY_FOR_INPUT" /* READY_FOR_INPUT */,
158
+ "LAYER_REVIEW" /* LAYER_REVIEW */
159
+ ].includes(transaction.categorization_status);
160
+ return display === "review" && inReview || display === "categorized" && categorized;
161
+ };
162
+ var Transactions = (props) => {
163
+ const { auth, businessId } = useContext3(LayerContext);
164
+ const [display, setDisplay] = useState2("review");
165
+ const { data, isLoading } = useSWR2(
166
+ auth?.access_token && `https://sandbox.layerfi.com/v1/businesses/${businessId}/bank-transactions`,
167
+ fetchTransactions(auth?.access_token)
168
+ );
169
+ const transactions = (!isLoading && data?.data || []).filter(
170
+ filterVisibility(display)
171
+ );
172
+ const onCategorizationDisplayChange = (event) => setDisplay(event.target.value);
173
+ const [openRows, setOpenRows] = useState2({});
174
+ const toggleOpen = (id) => setOpenRows({ ...openRows, [id]: !openRows[id] });
175
+ return /* @__PURE__ */ React7.createElement("div", { className: "transactions", "data-display": display }, /* @__PURE__ */ React7.createElement("header", null, /* @__PURE__ */ React7.createElement("h1", null, "Transactions"), /* @__PURE__ */ React7.createElement(
176
+ RadioButtonGroup,
177
+ {
178
+ name: "transaction-display",
179
+ buttons: [
180
+ { label: "To Review", value: "review" },
181
+ { label: "Categorized", value: "categorized" }
182
+ ],
183
+ selected: display,
184
+ onChange: onCategorizationDisplayChange
185
+ }
186
+ )), /* @__PURE__ */ React7.createElement("div", { className: "transaction-table" }, /* @__PURE__ */ React7.createElement("div", { className: "header" }, /* @__PURE__ */ React7.createElement("input", { type: "checkbox" })), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Date"), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Transaction"), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Account"), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Amount"), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Category"), /* @__PURE__ */ React7.createElement("div", { className: "header" }, "Action"), /* @__PURE__ */ React7.createElement("div", { className: "header" }), transactions.map((transaction) => /* @__PURE__ */ React7.createElement(
187
+ TransactionRow,
188
+ {
189
+ key: transaction.id,
190
+ dateFormat,
191
+ transaction,
192
+ isOpen: openRows[transaction.id],
193
+ toggleOpen
194
+ }
195
+ ))));
196
+ };
197
+
198
+ // src/providers/LayerProvider/LayerProvider.tsx
199
+ import React8 from "react";
200
+ import useSWR3 from "swr";
201
+ var appId = "1pskub33qd9qt19406hi4d1j6f";
202
+ var appSecret = "1k7up1ia2m0ino8el6md2l1isq3t7fdj1eq6firmkui8757lk6r6";
203
+ async function getAccessToken() {
204
+ var details = {
205
+ grant_type: "client_credentials",
206
+ scope: "https://sandbox.layerfi.com/sandbox",
207
+ client_id: "canaryAppId"
208
+ };
209
+ const formBody = Object.entries(details).map((key) => encodeURIComponent(key[0]) + "=" + encodeURIComponent(key[1])).join("&");
210
+ const authRequest = fetch("https://auth.layerfi.com/oauth2/token", {
211
+ method: "POST",
212
+ headers: {
213
+ Authorization: "Basic " + btoa(appId + ":" + appSecret),
214
+ "Content-Type": "application/x-www-form-urlencoded"
215
+ },
216
+ body: formBody
217
+ });
218
+ return await (await authRequest).json();
219
+ }
220
+ var getCategories = (accessToken) => (url) => fetch(url, {
221
+ headers: {
222
+ Authorization: "Bearer " + accessToken,
223
+ "Content-Type": "application/json"
224
+ },
225
+ method: "GET"
226
+ }).then((res) => res.json());
227
+ var LayerProvider = ({
228
+ businessId,
229
+ children
230
+ }) => {
231
+ const { data: auth } = useSWR3(
232
+ "https://auth.layerfi.com/oauth2/token",
233
+ getAccessToken
234
+ );
235
+ const { data: categories } = useSWR3(
236
+ businessId && auth?.access_token && `https://sandbox.layerfi.com/v1/businesses/${businessId}/categories`,
237
+ getCategories(auth?.access_token)
238
+ );
239
+ const value = {
240
+ auth,
241
+ businessId,
242
+ categories: categories?.data?.categories || []
243
+ };
244
+ return /* @__PURE__ */ React8.createElement(LayerContext.Provider, { value }, children);
245
+ };
246
+ export {
247
+ Hello,
248
+ LayerContext,
249
+ LayerProvider,
250
+ Transactions
251
+ };
252
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/Hello/Hello.tsx", "../src/components/Transactions/Transactions.tsx", "../src/contexts/LayerContext/LayerContext.tsx", "../src/components/RadioButtonGroup/RadioButtonGroup.tsx", "../src/components/RadioButtonGroup/RadioButton.tsx", "../src/components/Transactions/TransactionRow.tsx", "../src/models/Money.ts", "../src/components/CategoryMenu/CategoryMenu.tsx", "../src/components/CategoryMenu/CategoryMenuItem.tsx", "../src/providers/LayerProvider/LayerProvider.tsx"],
4
+ "sourcesContent": ["import React from 'react'\nimport './Hello.css'\nimport useSWR from 'swr'\n\ntype Props = {\n user?: string | undefined\n}\n\nconst fetcher = url => fetch(url).then(res => res.json())\n\nexport const Hello = ({ user }: Props) => {\n const { data, isLoading } = useSWR(\n `https://api.github.com/users/${user || 'jyurek'}`,\n fetcher,\n )\n const name = (isLoading ? '...' : data?.name) || 'User'\n return (\n <>\n <div className=\"hello\">Hello, {name}!</div>\n </>\n )\n}\n", "import React, { useState, useContext } from 'react'\nimport { LayerContext } from '../../contexts/LayerContext'\nimport { Transaction, CategorizationStatus } from '../../types'\nimport { RadioButtonGroup } from '../RadioButtonGroup'\nimport { TransactionRow } from './TransactionRow'\nimport './Transactions.css'\nimport useSWR from 'swr'\n\nconst dateFormat = 'MM/dd/yyyy'\n\nconst fetchTransactions = (accessToken: string) => (url: string) =>\n fetch(url, {\n headers: {\n Authorization: 'Bearer ' + accessToken,\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n }).then(res => res.json())\n\nconst filterVisibility = (display: Display) => (transaction: Transaction) => {\n const categorized = [\n CategorizationStatus.CATEGORIZED,\n CategorizationStatus.JOURNALING,\n CategorizationStatus.SPLIT,\n ].includes(transaction.categorization_status)\n const inReview = [\n CategorizationStatus.READY_FOR_INPUT,\n CategorizationStatus.LAYER_REVIEW,\n ].includes(transaction.categorization_status)\n return (\n (display === 'review' && inReview) ||\n (display === 'categorized' && categorized)\n )\n}\n\ntype Props = {}\n\nexport const Transactions = (props: Props) => {\n const { auth, businessId } = useContext(LayerContext)\n const [display, setDisplay] = useState<'review' | 'categorized'>('review')\n const { data, isLoading } = useSWR(\n auth?.access_token &&\n `https://sandbox.layerfi.com/v1/businesses/${businessId}/bank-transactions`,\n fetchTransactions(auth?.access_token),\n )\n const transactions = ((!isLoading && data?.data) || []).filter(\n filterVisibility(display),\n )\n const onCategorizationDisplayChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => setDisplay(event.target.value)\n const [openRows, setOpenRows] = useState<Record<string, boolean>>({})\n const toggleOpen = (id: string) =>\n setOpenRows({ ...openRows, [id]: !openRows[id] })\n return (\n <div className=\"transactions\" data-display={display}>\n <header>\n <h1>Transactions</h1>\n <RadioButtonGroup\n name=\"transaction-display\"\n buttons={[\n { label: 'To Review', value: 'review' },\n { label: 'Categorized', value: 'categorized' },\n ]}\n selected={display}\n onChange={onCategorizationDisplayChange}\n />\n </header>\n <div className=\"transaction-table\">\n <div className=\"header\">\n <input type=\"checkbox\" />\n </div>\n <div className=\"header\">Date</div>\n <div className=\"header\">Transaction</div>\n <div className=\"header\">Account</div>\n <div className=\"header\">Amount</div>\n <div className=\"header\">Category</div>\n <div className=\"header\">Action</div>\n <div className=\"header\"></div>\n {transactions.map(transaction => (\n <TransactionRow\n key={transaction.id}\n dateFormat={dateFormat}\n transaction={transaction}\n isOpen={openRows[transaction.id]}\n toggleOpen={toggleOpen}\n />\n ))}\n </div>\n </div>\n )\n}\n", "import { createContext } from 'react'\nimport { LayerExecutionContext } from '../../types'\n\nexport const LayerContext = createContext<LayerExecutionContext>({\n auth: undefined,\n businessId: '',\n categories: [],\n})\n", "import React, { useState } from 'react'\nimport { RadioButton } from './RadioButton'\n\nexport type RadioButtonLabel = {\n label: string\n value: string\n}\n\ntype Props = {\n name: string\n buttons: RadioButtonLabel[]\n selected?: Pick<RadioButtonLabel, 'value'>\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport const RadioButtonGroup = ({\n name,\n buttons,\n onChange,\n selected,\n}: Props) => {\n const selectedValue = selected || buttons[0].value\n return (\n <div className=\"radio-group\">\n {buttons.map(button => (\n <RadioButton\n {...button}\n key={button.value}\n name={name}\n checked={selectedValue === button.value}\n onChange={onChange}\n />\n ))}\n </div>\n )\n}\n", "import React from 'react'\n\ntype Props = {\n checked: boolean\n label: string\n name: string\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void\n value: string\n}\n\nexport const RadioButton = ({\n checked,\n label,\n name,\n onChange,\n value,\n}: Props) => {\n return (\n <label>\n <input\n type=\"radio\"\n checked={checked}\n name={name}\n onChange={onChange}\n value={value}\n />\n <div>{label}</div>\n </label>\n )\n}\n", "import React from 'react'\nimport { Money } from '../../models/Money'\nimport { Transaction } from '../../types'\nimport { CategoryMenu } from '../CategoryMenu'\nimport { parseISO, format as formatTime } from 'date-fns'\n\ntype Props = {\n dateFormat: string\n transaction: Transaction\n isOpen: boolean\n toggleOpen: (id: string) => void\n}\n\nexport const TransactionRow = ({\n dateFormat,\n transaction,\n isOpen,\n toggleOpen,\n}: Props) => (\n <>\n <div>\n <input type=\"checkbox\" />\n </div>\n <div>{formatTime(parseISO(transaction.date), dateFormat)}</div>\n <div>{Money.format(transaction)}</div>\n <div>Business Checking</div>\n <div>{transaction.counterparty_name}</div>\n <div data-selected={transaction?.category?.category}>\n <CategoryMenu selectedCategory={transaction?.category?.category} />\n </div>\n <div></div>\n <div\n onClick={() => toggleOpen(transaction.id)}\n style={{ cursor: 'pointer' }}\n >\n &#x1F3AF;\n </div>\n {isOpen && (\n <div className=\"expand-area\">\n <div className=\"expand-content\">Hello!</div>\n </div>\n )}\n </>\n)\n", "import { Transaction } from '../types'\n\ntype FormatParameters = Pick<Transaction, 'amount'> &\n Pick<Partial<Transaction>, 'direction'>\nconst format = ({ amount, direction }: FormatParameters) =>\n (direction === 'CREDIT' ? '+' : '-') +\n Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(\n amount / 100,\n )\n\nexport const Money = {\n format,\n}\n", "import React, { useContext } from 'react'\nimport { LayerContext } from '../../contexts/LayerContext'\nimport { CategoryMenuItem } from './CategoryMenuItem'\n\ntype Props = {\n selectedCategory: string\n}\n\nexport const CategoryMenu = ({ selectedCategory }: Props) => {\n const { categories } = useContext(LayerContext)\n return (\n <select>\n {categories.map(category => (\n <CategoryMenuItem\n category={category}\n selectedCategory={selectedCategory}\n />\n ))}\n </select>\n )\n}\n", "import React, { useContext } from 'react'\nimport { Category } from '../../types'\n\ntype Props = {\n selectedCategory: string\n category: Category\n maxDepth?: number\n}\n\nexport const CategoryMenuItem = ({\n selectedCategory,\n category,\n maxDepth = 1,\n}: Props) => {\n if (category.hasOwnProperty('subCategories') && maxDepth > 0) {\n return (\n <optgroup label={category.display_name}>\n {category.subCategories.map(category => (\n <CategoryMenuItem\n category={category}\n selectedCategory={selectedCategory}\n maxDepth={maxDepth - 1}\n />\n ))}\n </optgroup>\n )\n } else {\n return (\n <option\n key={category.category}\n value={category.category}\n selected={selectedCategory === category.category}\n >\n {category.display_name}\n </option>\n )\n }\n}\n", "import React, { PropsWithChildren } from 'react'\nimport { LayerContext } from '../../contexts/LayerContext'\nimport { LayerExecutionContext } from '../../types'\nimport useSWR from 'swr'\n\nconst appId = '1pskub33qd9qt19406hi4d1j6f'\nconst appSecret = '1k7up1ia2m0ino8el6md2l1isq3t7fdj1eq6firmkui8757lk6r6'\n\nexport async function getAccessToken(): Promise<OAuthResponse> {\n var details = {\n grant_type: 'client_credentials',\n scope: 'https://sandbox.layerfi.com/sandbox',\n client_id: 'canaryAppId',\n }\n\n const formBody = Object.entries(details)\n .map(key => encodeURIComponent(key[0]) + '=' + encodeURIComponent(key[1]))\n .join('&')\n const authRequest = fetch('https://auth.layerfi.com/oauth2/token', {\n method: 'POST',\n headers: {\n Authorization: 'Basic ' + btoa(appId + ':' + appSecret),\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: formBody,\n })\n return (await (await authRequest).json()) as OAuthResponse\n}\n\nconst getCategories = (accessToken: string) => (url: string) =>\n fetch(url, {\n headers: {\n Authorization: 'Bearer ' + accessToken,\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n }).then(res => res.json())\n\ntype Props = {\n businessId: string\n}\n\nexport const LayerProvider = ({\n businessId,\n children,\n}: PropsWithChildren<Props>) => {\n const { data: auth } = useSWR(\n 'https://auth.layerfi.com/oauth2/token',\n getAccessToken,\n )\n const { data: categories } = useSWR(\n businessId &&\n auth?.access_token &&\n `https://sandbox.layerfi.com/v1/businesses/${businessId}/categories`,\n getCategories(auth?.access_token),\n )\n const value: LayerExecutionContext = {\n auth,\n businessId,\n categories: categories?.data?.categories || [],\n }\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useState", "useContext", "React", "React", "React", "React", "React", "useContext", "React", "category", "useContext", "React", "dateFormat", "React", "useSWR", "useContext", "useState", "React", "React", "useSWR", "React"]
7
+ }