@layerfi/components 0.1.3 → 0.1.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerfi/components",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Layer React Components",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/dist/index.css DELETED
@@ -1,106 +0,0 @@
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 */
@@ -1,7 +0,0 @@
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
- }
@@ -1,106 +0,0 @@
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 */
@@ -1,7 +0,0 @@
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.esm.js DELETED
@@ -1,252 +0,0 @@
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
@@ -1,7 +0,0 @@
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
- }