@layerfi/components 0.1.11 → 0.1.12

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.d.ts CHANGED
@@ -92,12 +92,19 @@ declare module '@layerfi/components/api/layer/categories' {
92
92
 
93
93
  }
94
94
  declare module '@layerfi/components/api/layer/chart_of_accounts' {
95
- import { Account, ChartOfAccounts, NewAccount, EditAccount, LedgerAccounts, LedgerAccountsEntry } from '@layerfi/components/types';
95
+ import { Account, ChartOfAccounts, NewAccount, EditAccount, LedgerAccountsEntry } from '@layerfi/components/types';
96
+ import { ChartWithBalances } from '@layerfi/components/types/chart_of_accounts';
97
+ import { LedgerAccountLineItems } from '@layerfi/components/types/ledger_accounts';
96
98
  export const getChartOfAccounts: (baseUrl: string, accessToken: string | undefined, options?: {
97
99
  params?: Record<string, string | undefined> | undefined;
98
100
  } | undefined) => () => Promise<{
99
101
  data: ChartOfAccounts;
100
102
  }>;
103
+ export const getLedgerAccountBalances: (baseUrl: string, accessToken: string | undefined, options?: {
104
+ params?: Record<string, string | undefined> | undefined;
105
+ } | undefined) => () => Promise<{
106
+ data: ChartWithBalances;
107
+ }>;
101
108
  export const createAccount: (baseUrl: string, accessToken: string | undefined, options?: {
102
109
  params?: Record<string, string | undefined> | undefined;
103
110
  body?: NewAccount | undefined;
@@ -113,7 +120,7 @@ declare module '@layerfi/components/api/layer/chart_of_accounts' {
113
120
  export const getLedgerAccountsLines: (baseUrl: string, accessToken: string | undefined, options?: {
114
121
  params?: Record<string, string | undefined> | undefined;
115
122
  } | undefined) => () => Promise<{
116
- data: LedgerAccounts;
123
+ data: LedgerAccountLineItems;
117
124
  }>;
118
125
  export const getLedgerAccountsEntry: (baseUrl: string, accessToken: string | undefined, options?: {
119
126
  params?: Record<string, string | undefined> | undefined;
@@ -227,6 +234,11 @@ declare module '@layerfi/components/api/layer' {
227
234
  } | undefined) => () => Promise<{
228
235
  data: import("@layerfi/components/types").ChartOfAccounts;
229
236
  }>;
237
+ getLedgerAccountBalances: (baseUrl: string, accessToken: string | undefined, options?: {
238
+ params?: Record<string, string | undefined> | undefined;
239
+ } | undefined) => () => Promise<{
240
+ data: import("@layerfi/components/types/chart_of_accounts").ChartWithBalances;
241
+ }>;
230
242
  getLedgerAccountsLines: (baseUrl: string, accessToken: string | undefined, options?: {
231
243
  params?: Record<string, string | undefined> | undefined;
232
244
  } | undefined) => () => Promise<{
@@ -584,7 +596,7 @@ declare module '@layerfi/components/components/ChartOfAccounts/ChartOfAccounts'
584
596
  }
585
597
  export type ChartOfAccountsContextType = ReturnType<typeof useChartOfAccounts>;
586
598
  export const ChartOfAccountsContext: React.Context<{
587
- data: import("@layerfi/components/types").ChartOfAccounts | undefined;
599
+ data: import("@layerfi/components/types/chart_of_accounts").ChartWithBalances | undefined;
588
600
  isLoading?: boolean | undefined;
589
601
  isValidating?: boolean | undefined;
590
602
  error?: unknown;
@@ -638,17 +650,17 @@ declare module '@layerfi/components/components/ChartOfAccountsForm/index' {
638
650
 
639
651
  }
640
652
  declare module '@layerfi/components/components/ChartOfAccountsForm/useParentOptions' {
641
- import { ChartOfAccounts } from '@layerfi/components/types';
653
+ import { ChartWithBalances } from '@layerfi/components/types/chart_of_accounts';
642
654
  import { BaseSelectOption } from '@layerfi/components/types/general';
643
- export const useParentOptions: (data?: ChartOfAccounts) => BaseSelectOption[];
655
+ export const useParentOptions: (data?: ChartWithBalances) => BaseSelectOption[];
644
656
 
645
657
  }
646
658
  declare module '@layerfi/components/components/ChartOfAccountsRow/ChartOfAccountsRow' {
647
659
  import React from 'react';
648
- import { Account } from '@layerfi/components/types';
660
+ import { LedgerAccountBalance } from '@layerfi/components/types/chart_of_accounts';
649
661
  import { View } from '@layerfi/components/components/ChartOfAccounts/ChartOfAccounts';
650
662
  type ChartOfAccountsRowProps = {
651
- account: Account;
663
+ account: LedgerAccountBalance;
652
664
  depth?: number;
653
665
  index: number;
654
666
  cumulativeIndex?: number;
@@ -913,10 +925,10 @@ declare module '@layerfi/components/components/LedgerAccount/LedgerAccountIndex'
913
925
  }
914
926
  declare module '@layerfi/components/components/LedgerAccount/LedgerAccountRow' {
915
927
  import React from 'react';
916
- import { LedgerAccountsLine } from '@layerfi/components/types';
928
+ import { LedgerAccountLineItem } from '@layerfi/components/types';
917
929
  import { View } from '@layerfi/components/components/ChartOfAccounts/ChartOfAccounts';
918
930
  export interface LedgerAccountRowProps {
919
- row: LedgerAccountsLine;
931
+ row: LedgerAccountLineItem;
920
932
  index: number;
921
933
  initialLoad?: boolean;
922
934
  view: View;
@@ -1675,7 +1687,8 @@ declare module '@layerfi/components/hooks/useChartOfAccounts/index' {
1675
1687
 
1676
1688
  }
1677
1689
  declare module '@layerfi/components/hooks/useChartOfAccounts/useChartOfAccounts' {
1678
- import { Account, ChartOfAccounts, NewAccount } from '@layerfi/components/types';
1690
+ import { NewAccount } from '@layerfi/components/types';
1691
+ import { ChartWithBalances, LedgerAccountBalance } from '@layerfi/components/types/chart_of_accounts';
1679
1692
  import { BaseSelectOption } from '@layerfi/components/types/general';
1680
1693
  interface FormError {
1681
1694
  field: string;
@@ -1687,14 +1700,13 @@ declare module '@layerfi/components/hooks/useChartOfAccounts/useChartOfAccounts'
1687
1700
  data: {
1688
1701
  parent?: BaseSelectOption;
1689
1702
  name?: string;
1690
- type?: BaseSelectOption;
1703
+ type: BaseSelectOption;
1691
1704
  subType?: BaseSelectOption;
1692
- category?: BaseSelectOption;
1693
1705
  };
1694
1706
  errors?: FormError[];
1695
1707
  }
1696
1708
  type UseChartOfAccounts = () => {
1697
- data: ChartOfAccounts | undefined;
1709
+ data: ChartWithBalances | undefined;
1698
1710
  isLoading?: boolean;
1699
1711
  isValidating?: boolean;
1700
1712
  error?: unknown;
@@ -1709,7 +1721,7 @@ declare module '@layerfi/components/hooks/useChartOfAccounts/useChartOfAccounts'
1709
1721
  changeFormData: (name: string, value: string | BaseSelectOption | undefined) => void;
1710
1722
  submitForm: () => void;
1711
1723
  };
1712
- export const flattenAccounts: (accounts: Account[]) => Account[];
1724
+ export const flattenAccounts: (accounts: LedgerAccountBalance[]) => LedgerAccountBalance[];
1713
1725
  export const useChartOfAccounts: UseChartOfAccounts;
1714
1726
  export {};
1715
1727
 
@@ -2292,6 +2304,23 @@ declare module '@layerfi/components/types/chart_of_accounts' {
2292
2304
  selfOnlyBalance: number;
2293
2305
  entries?: AccountEntry[];
2294
2306
  }
2307
+ export type ChartWithBalances = {
2308
+ accounts: LedgerAccountBalance[];
2309
+ };
2310
+ export type ApiAccountType = {
2311
+ value: string;
2312
+ display_name: string;
2313
+ };
2314
+ export type LedgerAccountBalance = {
2315
+ id: string;
2316
+ name: string;
2317
+ stable_name: string;
2318
+ account_type: ApiAccountType;
2319
+ account_subtype?: ApiAccountType;
2320
+ normality: Direction;
2321
+ balance: number;
2322
+ sub_accounts: LedgerAccountBalance[];
2323
+ };
2295
2324
  export type NewAccount = {
2296
2325
  name: string;
2297
2326
  normality: Direction;
@@ -2299,17 +2328,20 @@ declare module '@layerfi/components/types/chart_of_accounts' {
2299
2328
  type: 'AccountId';
2300
2329
  id: string;
2301
2330
  };
2302
- description: string;
2331
+ account_type: string;
2332
+ account_subtype?: string;
2303
2333
  };
2304
2334
  export type EditAccount = {
2305
- name: string;
2306
2335
  stable_name: string;
2336
+ name: string;
2307
2337
  normality: Direction;
2308
2338
  parent_id?: {
2309
2339
  type: 'AccountId';
2310
2340
  id: string;
2311
2341
  };
2312
- description: string;
2342
+ account_type: string;
2343
+ account_subtype?: string;
2344
+ always_show_in_pnl: boolean;
2313
2345
  };
2314
2346
 
2315
2347
  }
@@ -2400,7 +2432,7 @@ declare module '@layerfi/components/types/layer_context' {
2400
2432
  }
2401
2433
  declare module '@layerfi/components/types/ledger_accounts' {
2402
2434
  import { BankTransaction, Direction } from '@layerfi/components/types/bank_transactions';
2403
- export type LedgerAccounts = LedgerAccountsLine[];
2435
+ export type LedgerAccountLineItems = LedgerAccountLineItem[];
2404
2436
  export interface LedgerAccountsEntry {
2405
2437
  agent?: string;
2406
2438
  business_id: string;
@@ -2416,17 +2448,7 @@ declare module '@layerfi/components/types/ledger_accounts' {
2416
2448
  reversal_of_id?: string;
2417
2449
  type: string;
2418
2450
  transaction?: BankTransaction;
2419
- }
2420
- export interface LedgerAccountsLine {
2421
- type: string;
2422
- id: string;
2423
- entry_id: string;
2424
- account: LedgerAccountsAccount;
2425
- amount: number;
2426
- direction: Direction;
2427
- date: string;
2428
- transaction?: BankTransaction;
2429
- invoice: string | null;
2451
+ source?: LedgerEntrySource;
2430
2452
  }
2431
2453
  export interface LedgerAccountsAccount {
2432
2454
  always_show_in_pnl?: boolean;
@@ -2437,13 +2459,62 @@ declare module '@layerfi/components/types/ledger_accounts' {
2437
2459
  stable_name: string;
2438
2460
  }
2439
2461
  export interface LedgerAccountLineItem {
2440
- account?: LedgerAccountsAccount;
2462
+ id: string;
2463
+ entry_id: string;
2464
+ account: LedgerAccountsAccount;
2441
2465
  amount: number;
2442
- createdAt: string;
2443
2466
  direction: Direction;
2444
- entry_at: string;
2445
- entry_id: string;
2446
- id: string;
2467
+ date: string;
2468
+ source?: LedgerEntrySource;
2469
+ running_balance: number;
2470
+ }
2471
+ export interface LedgerEntrySource {
2472
+ display_description: string;
2473
+ type: string;
2474
+ }
2475
+ export interface TransactionLedgerEntrySource extends LedgerEntrySource {
2476
+ transaction_id: string;
2477
+ external_id: string;
2478
+ account_name: string;
2479
+ date: string;
2480
+ amount: number;
2481
+ direction: Direction;
2482
+ counterparty?: string;
2483
+ }
2484
+ export interface InvoiceLedgerEntrySource extends LedgerEntrySource {
2485
+ invoice_id: string;
2486
+ external_id: string;
2487
+ invoice_number: string;
2488
+ recipient_name: string;
2489
+ date: string;
2490
+ amount: number;
2491
+ }
2492
+ export interface ManualLedgerEntrySource extends LedgerEntrySource {
2493
+ manual_entry_id: string;
2494
+ memo: string;
2495
+ created_by: string;
2496
+ }
2497
+ export interface InvoicePaymentLedgerEntrySource extends LedgerEntrySource {
2498
+ external_id: string;
2499
+ invoice_id: string;
2500
+ invoice_number: string;
2501
+ amount: number;
2502
+ }
2503
+ export interface RefundPaymentLedgerEntrySource extends LedgerEntrySource {
2504
+ external_id: string;
2505
+ refund_id: string;
2506
+ refunded_to_customer_amount: number;
2507
+ recipient_name: string;
2508
+ }
2509
+ export interface OpeningBalanceLedgerEntrySource extends LedgerEntrySource {
2510
+ account_name: string;
2511
+ }
2512
+ export interface PayoutLedgerEntrySource extends LedgerEntrySource {
2513
+ payout_id: string;
2514
+ external_id: string;
2515
+ paid_out_amount: number;
2516
+ processor: string;
2517
+ completed_at: string;
2447
2518
  }
2448
2519
 
2449
2520
  }
@@ -2488,6 +2559,8 @@ declare module '@layerfi/components/types/linked_accounts' {
2488
2559
  name: string;
2489
2560
  logo: string;
2490
2561
  };
2562
+ mask?: string;
2563
+ logo_base64?: string;
2491
2564
  }
2492
2565
  export type PublicToken = {
2493
2566
  public_token: string;
@@ -2525,7 +2598,7 @@ declare module '@layerfi/components/types' {
2525
2598
  export { Direction, BankTransaction } from '@layerfi/components/types/bank_transactions';
2526
2599
  export { CategorizationStatus, Category, CategorizationType, AutoCategorization, SuggestedCategorization, SingleCategoryUpdate, SplitCategoryUpdate, CategoryUpdate, } from '@layerfi/components/types/categories';
2527
2600
  export { ChartOfAccounts, Account, NewAccount, EditAccount, } from '@layerfi/components/types/chart_of_accounts';
2528
- export { LedgerAccounts, LedgerAccountsLine, LedgerAccountsAccount, LedgerAccountsEntry, } from '@layerfi/components/types/ledger_accounts';
2601
+ export { LedgerAccountLineItems as LedgerAccounts, LedgerAccountLineItem, LedgerAccountsAccount, LedgerAccountsEntry, } from '@layerfi/components/types/ledger_accounts';
2529
2602
  export { SortDirection } from '@layerfi/components/types/general';
2530
2603
  export type DateRange<T = Date> = {
2531
2604
  startDate: T;
package/dist/index.js CHANGED
@@ -313,6 +313,9 @@ var getCategories = get(({ businessId }) => `/v1/businesses/${businessId}/catego
313
313
  var getChartOfAccounts = get(
314
314
  ({ businessId }) => `/v1/businesses/${businessId}/ledger/accounts`
315
315
  );
316
+ var getLedgerAccountBalances = get(
317
+ ({ businessId }) => `/v1/businesses/${businessId}/ledger/balances`
318
+ );
316
319
  var createAccount = post(
317
320
  ({ businessId }) => `/v1/businesses/${businessId}/ledger/accounts`
318
321
  );
@@ -355,6 +358,7 @@ var Layer = {
355
358
  getBankTransactions,
356
359
  getCategories,
357
360
  getChartOfAccounts,
361
+ getLedgerAccountBalances,
358
362
  getLedgerAccountsLines,
359
363
  getLedgerAccountsEntry,
360
364
  getProfitAndLoss,
@@ -3065,7 +3069,15 @@ var extractDescriptionForSplit = (category) => {
3065
3069
  return category.entries.map((c) => c.category.display_name).join(", ");
3066
3070
  };
3067
3071
  var getDefaultSelectedCategory = (bankTransaction) => {
3068
- return hasSuggestions(bankTransaction.categorization_flow) ? mapCategoryToOption(bankTransaction.categorization_flow.suggestions[0]) : bankTransaction.suggested_matches?.length === 1 ? mapSuggestedMatchToOption(bankTransaction.suggested_matches[0]) : void 0;
3072
+ if (bankTransaction.suggested_matches?.[0]) {
3073
+ return mapSuggestedMatchToOption(bankTransaction.suggested_matches?.[0]);
3074
+ }
3075
+ if (hasSuggestions(bankTransaction.categorization_flow)) {
3076
+ return mapCategoryToOption(
3077
+ bankTransaction.categorization_flow.suggestions[0]
3078
+ );
3079
+ }
3080
+ return void 0;
3069
3081
  };
3070
3082
  var clickTimer = Date.now();
3071
3083
  var BankTransactionRow = ({
@@ -4845,7 +4857,7 @@ var InstitutionIcon_default = InstitutionIcon;
4845
4857
 
4846
4858
  // src/components/LinkedAccountThumb/LinkedAccountThumb.tsx
4847
4859
  var import_classnames24 = __toESM(require("classnames"));
4848
- var AccountNumber = ({ accountNumber }) => /* @__PURE__ */ import_react49.default.createElement("div", { className: "account-number" }, /* @__PURE__ */ import_react49.default.createElement(Text, { size: "sm" }, "\u2022\u2022\u2022", accountNumber));
4860
+ var AccountNumber = ({ accountNumber }) => /* @__PURE__ */ import_react49.default.createElement("div", { className: "account-number" }, /* @__PURE__ */ import_react49.default.createElement(Text, { size: "sm" }, "\u2022\u2022\u2022 ", accountNumber));
4849
4861
  var LinkedAccountThumb = ({
4850
4862
  account,
4851
4863
  asWidget
@@ -4854,12 +4866,7 @@ var LinkedAccountThumb = ({
4854
4866
  "Layer__linked-account-thumb",
4855
4867
  asWidget && "--as-widget"
4856
4868
  );
4857
- return /* @__PURE__ */ import_react49.default.createElement("div", { className: linkedAccountThumbClassName }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar-details" }, /* @__PURE__ */ import_react49.default.createElement(Text, { as: "span", className: "account-name" }, account.external_account_name), !asWidget && /* @__PURE__ */ import_react49.default.createElement(
4858
- AccountNumber,
4859
- {
4860
- accountNumber: "TODO"
4861
- }
4862
- ), /* @__PURE__ */ import_react49.default.createElement(
4869
+ return /* @__PURE__ */ import_react49.default.createElement("div", { className: linkedAccountThumbClassName }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar-details" }, /* @__PURE__ */ import_react49.default.createElement(Text, { as: "span", className: "account-name" }, account.external_account_name), !asWidget && account.mask && /* @__PURE__ */ import_react49.default.createElement(AccountNumber, { accountNumber: account.mask }), /* @__PURE__ */ import_react49.default.createElement(
4863
4870
  Text,
4864
4871
  {
4865
4872
  as: "span",
@@ -4867,7 +4874,15 @@ var LinkedAccountThumb = ({
4867
4874
  size: "sm"
4868
4875
  },
4869
4876
  account.institution?.name
4870
- )), /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar-logo" }, !account.institution?.logo && /* @__PURE__ */ import_react49.default.createElement(InstitutionIcon_default, null))), !asWidget && /* @__PURE__ */ import_react49.default.createElement("div", { className: "middlebar" }, /* @__PURE__ */ import_react49.default.createElement(
4877
+ )), /* @__PURE__ */ import_react49.default.createElement("div", { className: "topbar-logo" }, account.logo_base64 != void 0 ? /* @__PURE__ */ import_react49.default.createElement(
4878
+ "img",
4879
+ {
4880
+ width: 28,
4881
+ height: 28,
4882
+ src: `data:image/png;base64,${account.logo_base64}`,
4883
+ alt: account.institution?.name
4884
+ }
4885
+ ) : /* @__PURE__ */ import_react49.default.createElement(InstitutionIcon_default, null))), !asWidget && /* @__PURE__ */ import_react49.default.createElement("div", { className: "middlebar" }, /* @__PURE__ */ import_react49.default.createElement(
4871
4886
  Text,
4872
4887
  {
4873
4888
  as: "span",
@@ -4887,7 +4902,7 @@ var LinkedAccountThumb = ({
4887
4902
  className: "account-balance-text",
4888
4903
  size: "sm"
4889
4904
  },
4890
- "General ledger balance"
4905
+ "Ledger balance"
4891
4906
  ), /* @__PURE__ */ import_react49.default.createElement(Text, { as: "span", className: "account-balance" }, "$", centsToDollars(account.current_ledger_balance))));
4892
4907
  };
4893
4908
 
@@ -6875,12 +6890,13 @@ var validate = (formData) => {
6875
6890
  };
6876
6891
  var revalidateField = (fieldName, formData) => {
6877
6892
  switch (fieldName) {
6878
- case "name":
6893
+ case "name": {
6879
6894
  const nameError = validateName(formData);
6880
6895
  if (nameError) {
6881
6896
  return (formData?.errors || []).filter((x) => x.field !== fieldName).concat([nameError]);
6882
6897
  }
6883
6898
  return (formData?.errors || []).filter((x) => x.field !== fieldName);
6899
+ }
6884
6900
  default:
6885
6901
  return formData?.errors;
6886
6902
  }
@@ -6902,7 +6918,7 @@ var useChartOfAccounts = () => {
6902
6918
  const [apiError, setApiError] = (0, import_react67.useState)(void 0);
6903
6919
  const { data, isLoading, isValidating, error, mutate } = (0, import_swr6.default)(
6904
6920
  businessId && auth?.access_token && `chart-of-accounts-${businessId}`,
6905
- Layer.getChartOfAccounts(apiUrl, auth?.access_token, {
6921
+ Layer.getLedgerAccountBalances(apiUrl, auth?.access_token, {
6906
6922
  params: { businessId }
6907
6923
  })
6908
6924
  );
@@ -6966,7 +6982,8 @@ var useChartOfAccounts = () => {
6966
6982
  type: "AccountId",
6967
6983
  id: form.data.parent.value
6968
6984
  } : void 0,
6969
- description: form.data.type?.value.toString() ?? ""
6985
+ account_type: form.data.type.value.toString(),
6986
+ account_subtype: form.data.subType?.value.toString()
6970
6987
  };
6971
6988
  if (form.action === "new") {
6972
6989
  create(data2);
@@ -6984,11 +7001,10 @@ var useChartOfAccounts = () => {
6984
7001
  parent: void 0,
6985
7002
  name: void 0,
6986
7003
  type: {
6987
- value: "assets",
7004
+ value: "ASSETS",
6988
7005
  label: "Assets"
6989
7006
  },
6990
- subType: void 0,
6991
- category: void 0
7007
+ subType: void 0
6992
7008
  }
6993
7009
  });
6994
7010
  const editAccount = (id) => {
@@ -7010,11 +7026,10 @@ var useChartOfAccounts = () => {
7010
7026
  } : void 0,
7011
7027
  name: found.name,
7012
7028
  type: {
7013
- value: "assets",
7029
+ value: "ASSETS",
7014
7030
  label: "Assets"
7015
7031
  },
7016
- subType: void 0,
7017
- category: void 0
7032
+ subType: void 0
7018
7033
  }
7019
7034
  });
7020
7035
  };
@@ -7236,7 +7251,7 @@ var ChartOfAccountsRow = ({
7236
7251
  className: "Layer__table-cell-content Layer__mobile--hidden",
7237
7252
  style
7238
7253
  },
7239
- account.normality
7254
+ account.account_type?.display_name
7240
7255
  ), /* @__PURE__ */ import_react69.default.createElement(
7241
7256
  "span",
7242
7257
  {
@@ -7251,9 +7266,9 @@ var ChartOfAccountsRow = ({
7251
7266
  },
7252
7267
  account.normality
7253
7268
  ),
7254
- /* @__PURE__ */ import_react69.default.createElement(Text, { className: "Layer__coa__subtype--mobile" }, "Sub-Type")
7269
+ /* @__PURE__ */ import_react69.default.createElement(Text, { className: "Layer__coa__subtype--mobile" }, account.account_subtype?.display_name)
7255
7270
  )),
7256
- /* @__PURE__ */ import_react69.default.createElement("td", { className: "Layer__table-cell Layer__coa__subtype Layer__mobile--hidden" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "Layer__table-cell-content", style }, "Sub-Type")),
7271
+ /* @__PURE__ */ import_react69.default.createElement("td", { className: "Layer__table-cell Layer__coa__subtype Layer__mobile--hidden" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "Layer__table-cell-content", style }, account.account_subtype?.display_name)),
7257
7272
  /* @__PURE__ */ import_react69.default.createElement("td", { className: "Layer__table-cell Layer__coa__balance" }, /* @__PURE__ */ import_react69.default.createElement(
7258
7273
  "span",
7259
7274
  {
@@ -7483,14 +7498,6 @@ var ChartOfAccountsForm = () => {
7483
7498
  onChange: (sel) => changeFormData("subType", sel),
7484
7499
  disabled: sendingForm
7485
7500
  }
7486
- )), /* @__PURE__ */ import_react71.default.createElement(InputGroup, { name: "category", label: "Category", inline: true }, /* @__PURE__ */ import_react71.default.createElement(
7487
- Select2,
7488
- {
7489
- options: [],
7490
- value: form?.data.category,
7491
- onChange: (sel) => changeFormData("category", sel),
7492
- disabled: sendingForm
7493
- }
7494
7501
  )))
7495
7502
  );
7496
7503
  };
@@ -7648,6 +7655,40 @@ var DetailsListItem = ({
7648
7655
  };
7649
7656
 
7650
7657
  // src/components/LedgerAccountEntryDetails/LedgerAccountEntryDetails.tsx
7658
+ var SourceDetailView = ({ source }) => {
7659
+ switch (source.type) {
7660
+ case "Transaction_Ledger_Entry_Source": {
7661
+ const transactionSource = source;
7662
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Account name" }, transactionSource.account_name), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Date" }, /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: transactionSource.date })), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(transactionSource.amount)}`), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Direction" }, transactionSource.direction), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Counterparty" }, transactionSource.counterparty));
7663
+ }
7664
+ case "Invoice_Ledger_Entry_Source": {
7665
+ const invoiceSource = source;
7666
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Invoice number" }, invoiceSource.invoice_number), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Recipient name" }, invoiceSource.recipient_name), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Date" }, /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: invoiceSource.date })), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(invoiceSource.amount)}`));
7667
+ }
7668
+ case "Manual_Ledger_Entry_Source": {
7669
+ const manualSource = source;
7670
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Memo" }, manualSource.memo), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Created by" }, manualSource.created_by));
7671
+ }
7672
+ case "Invoice_Payment_Ledger_Entry_Source": {
7673
+ const invoicePaymentSource = source;
7674
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Invoice number" }, invoicePaymentSource.invoice_number), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(invoicePaymentSource.amount)}`));
7675
+ }
7676
+ case "Refund_Ledger_Entry_Source": {
7677
+ const refundSource = source;
7678
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(refundSource.refunded_to_customer_amount)}`), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Recipient name" }, refundSource.recipient_name));
7679
+ }
7680
+ case "Opening_Balance_Ledger_Entry_Source": {
7681
+ const openingBalanceSource = source;
7682
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Account name" }, openingBalanceSource.account_name));
7683
+ }
7684
+ case "Payout_Ledger_Entry_Source": {
7685
+ const payoutSource = source;
7686
+ return /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(payoutSource.paid_out_amount)}`), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Processor" }, payoutSource.processor));
7687
+ }
7688
+ default:
7689
+ return null;
7690
+ }
7691
+ };
7651
7692
  var LedgerAccountEntryDetails = () => {
7652
7693
  const { entryData, isLoadingEntry, closeSelectedEntry, errorEntry } = (0, import_react78.useContext)(LedgerAccountsContext);
7653
7694
  const { totalDebit, totalCredit } = (0, import_react78.useMemo)(() => {
@@ -7675,11 +7716,19 @@ var LedgerAccountEntryDetails = () => {
7675
7716
  }
7676
7717
  )
7677
7718
  },
7678
- /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Source", isLoading: isLoadingEntry }, /* @__PURE__ */ import_react78.default.createElement(Badge, null, "Invoice")),
7679
- /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Number", isLoading: isLoadingEntry }, "1234"),
7680
- /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Date", isLoading: isLoadingEntry }, "May 5, 2023"),
7681
- /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Account", isLoading: isLoadingEntry }, "89 8888 7656 6666 0000 6765")
7682
- ), /* @__PURE__ */ import_react78.default.createElement(DetailsList, { title: "Journal Entry #123", className: "Layer__border-top" }, /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Entry type", isLoading: isLoadingEntry }, humanizeEnum(entryData?.entry_type ?? "")), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Date", isLoading: isLoadingEntry }, entryData?.entry_at && /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: entryData?.entry_at })), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Creation date", isLoading: isLoadingEntry }, entryData?.date && /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: entryData?.date })), /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Reversal", isLoading: isLoadingEntry }, "Journal Entry #79 TBD")), !isLoadingEntry && !errorEntry ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "Layer__ledger-account__entry-details__line-items" }, /* @__PURE__ */ import_react78.default.createElement(Card, null, /* @__PURE__ */ import_react78.default.createElement("table", { className: "Layer__table Layer__ledger-account__entry-details__table" }, /* @__PURE__ */ import_react78.default.createElement("thead", null, /* @__PURE__ */ import_react78.default.createElement("tr", null, /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header" }, "Line items"), /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Debit"), /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Credit"))), /* @__PURE__ */ import_react78.default.createElement("tbody", null, entryData?.line_items?.map((item) => /* @__PURE__ */ import_react78.default.createElement("tr", { key: `ledger-line-item-${item.id}` }, /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell" }, item.account?.name || ""), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, item.direction === "DEBIT" /* DEBIT */ && /* @__PURE__ */ import_react78.default.createElement(Badge, { variant: "warning" /* WARNING */ }, "$", centsToDollars(item.amount || 0))), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, item.direction === "CREDIT" /* CREDIT */ && /* @__PURE__ */ import_react78.default.createElement(Badge, { variant: "success" /* SUCCESS */ }, "$", centsToDollars(item.amount || 0))))), /* @__PURE__ */ import_react78.default.createElement("tr", { className: "Layer__table Layer__ledger-account__entry-details__table__total-row" }, /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell" }, "Total"), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, "$", centsToDollars(totalDebit || 0)), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, "$", centsToDollars(totalCredit || 0))))))) : null);
7719
+ /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Source", isLoading: isLoadingEntry }, /* @__PURE__ */ import_react78.default.createElement(Badge, null, entryData?.source?.type)),
7720
+ entryData?.source?.display_description && /* @__PURE__ */ import_react78.default.createElement(SourceDetailView, { source: entryData?.source })
7721
+ ), /* @__PURE__ */ import_react78.default.createElement(
7722
+ DetailsList,
7723
+ {
7724
+ title: `Journal Entry ${entryData?.id.substring(0, 5)}`,
7725
+ className: "Layer__border-top"
7726
+ },
7727
+ /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Entry type", isLoading: isLoadingEntry }, humanizeEnum(entryData?.entry_type ?? "")),
7728
+ /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Date", isLoading: isLoadingEntry }, entryData?.entry_at && /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: entryData?.entry_at })),
7729
+ /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Creation date", isLoading: isLoadingEntry }, entryData?.date && /* @__PURE__ */ import_react78.default.createElement(DateTime, { value: entryData?.date })),
7730
+ entryData?.reversal_id && /* @__PURE__ */ import_react78.default.createElement(DetailsListItem, { label: "Reversal", isLoading: isLoadingEntry }, entryData?.reversal_id.substring(0, 5))
7731
+ ), !isLoadingEntry && !errorEntry ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "Layer__ledger-account__entry-details__line-items" }, /* @__PURE__ */ import_react78.default.createElement(Card, null, /* @__PURE__ */ import_react78.default.createElement("table", { className: "Layer__table Layer__ledger-account__entry-details__table" }, /* @__PURE__ */ import_react78.default.createElement("thead", null, /* @__PURE__ */ import_react78.default.createElement("tr", null, /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header" }, "Line items"), /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Debit"), /* @__PURE__ */ import_react78.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Credit"))), /* @__PURE__ */ import_react78.default.createElement("tbody", null, entryData?.line_items?.map((item) => /* @__PURE__ */ import_react78.default.createElement("tr", { key: `ledger-line-item-${item.id}` }, /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell" }, item.account?.name || ""), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, item.direction === "DEBIT" /* DEBIT */ && /* @__PURE__ */ import_react78.default.createElement(Badge, { variant: "warning" /* WARNING */ }, "$", centsToDollars(item.amount || 0))), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, item.direction === "CREDIT" /* CREDIT */ && /* @__PURE__ */ import_react78.default.createElement(Badge, { variant: "success" /* SUCCESS */ }, "$", centsToDollars(item.amount || 0))))), /* @__PURE__ */ import_react78.default.createElement("tr", { className: "Layer__table Layer__ledger-account__entry-details__table__total-row" }, /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell" }, "Total"), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, "$", centsToDollars(totalDebit || 0)), /* @__PURE__ */ import_react78.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--amount" }, "$", centsToDollars(totalCredit || 0))))))) : null);
7683
7732
  };
7684
7733
 
7685
7734
  // src/components/LedgerAccount/LedgerAccountRow.tsx
@@ -7727,14 +7776,14 @@ var LedgerAccountRow = ({
7727
7776
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__ledger-account-table__tablet-main-col" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger-account-table__tablet-main-col__date" }, /* @__PURE__ */ import_react79.default.createElement(Text, null, row.date && (0, import_date_fns16.format)((0, import_date_fns16.parseISO)(row.date), DATE_FORMAT)), /* @__PURE__ */ import_react79.default.createElement(
7728
7777
  Text,
7729
7778
  {
7730
- weight: "bold" /* bold */,
7779
+ weight: "normal" /* normal */,
7731
7780
  className: "Layer__ledger_account-table__journal-id"
7732
7781
  },
7733
- "#123"
7734
- )), /* @__PURE__ */ import_react79.default.createElement(Text, null, "Invoice (TBD null)"))),
7782
+ row.entry_id.substring(0, 5)
7783
+ )), /* @__PURE__ */ import_react79.default.createElement(Text, null, row.source?.display_description ?? ""))),
7735
7784
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, row.direction === "DEBIT" /* DEBIT */ && `$${centsToDollars(row?.amount || 0)}`)),
7736
7785
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, row.direction === "CREDIT" /* CREDIT */ && `$${centsToDollars(row?.amount || 0)}`)),
7737
- /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, "$X,XXX.XX"))
7786
+ /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, `$${centsToDollars(row.running_balance)}`))
7738
7787
  );
7739
7788
  }
7740
7789
  if (view === "mobile") {
@@ -7760,11 +7809,11 @@ var LedgerAccountRow = ({
7760
7809
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__ledger-account-table__tablet-main-col" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger-account-table__tablet-main-col__date" }, /* @__PURE__ */ import_react79.default.createElement(Text, null, row.date && (0, import_date_fns16.format)((0, import_date_fns16.parseISO)(row.date), DATE_FORMAT)), /* @__PURE__ */ import_react79.default.createElement(
7761
7810
  Text,
7762
7811
  {
7763
- weight: "bold" /* bold */,
7812
+ weight: "normal" /* normal */,
7764
7813
  className: "Layer__ledger_account-table__journal-id"
7765
7814
  },
7766
- "#123"
7767
- )), /* @__PURE__ */ import_react79.default.createElement(Text, null, "Invoice (TBD null)"), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balances-mobile" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Debit"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, " ", row.direction === "DEBIT" /* DEBIT */ && `$${centsToDollars(row?.amount || 0)}`)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Credit"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, row.direction === "CREDIT" /* CREDIT */ && `$${centsToDollars(row?.amount || 0)}`)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Running balance"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, "$X,XXX.XX")))))
7815
+ row.entry_id.substring(0, 5)
7816
+ )), /* @__PURE__ */ import_react79.default.createElement(Text, null, row.source?.display_description ?? ""), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balances-mobile" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Debit"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, " ", row.direction === "DEBIT" /* DEBIT */ && `$${centsToDollars(row?.amount || 0)}`)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Credit"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, row.direction === "CREDIT" /* CREDIT */ && `$${centsToDollars(row?.amount || 0)}`)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "Layer__ledger_account-table__balance-item" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__label" }, "Running balance"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__ledger_account-table__balances-mobile__value" }, `$${centsToDollars(row.running_balance)}`)))))
7768
7817
  );
7769
7818
  }
7770
7819
  return /* @__PURE__ */ import_react79.default.createElement(
@@ -7787,11 +7836,11 @@ var LedgerAccountRow = ({
7787
7836
  }
7788
7837
  },
7789
7838
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, row.date && (0, import_date_fns16.format)((0, import_date_fns16.parseISO)(row.date), DATE_FORMAT))),
7790
- /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, "#123")),
7791
- /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, "Invoice (TBD null)")),
7839
+ /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, row.entry_id.substring(0, 5))),
7840
+ /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content" }, row.source?.display_description ?? "")),
7792
7841
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, row.direction === "DEBIT" /* DEBIT */ && `$${centsToDollars(row?.amount || 0)}`)),
7793
7842
  /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, row.direction === "CREDIT" /* CREDIT */ && `$${centsToDollars(row?.amount || 0)}`)),
7794
- /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, "$X,XXX.XX"))
7843
+ /* @__PURE__ */ import_react79.default.createElement("td", { className: "Layer__table-cell Layer__table-cell--primary" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "Layer__table-cell-content Layer__table-cell--amount" }, `$${centsToDollars(row.running_balance)}`))
7795
7844
  );
7796
7845
  };
7797
7846