@layerfi/components 0.1.39 → 0.1.41

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.js CHANGED
@@ -4203,7 +4203,8 @@ var LinkedAccountsComponent = ({
4203
4203
  elevated,
4204
4204
  showLedgerBalance = true,
4205
4205
  showUnlinkItem = false,
4206
- showBreakConnection = false
4206
+ showBreakConnection = false,
4207
+ stringOverrides
4207
4208
  }) => {
4208
4209
  const { isLoading, error, isValidating, refetchAccounts } = (0, import_react49.useContext)(
4209
4210
  LinkedAccountsContext
@@ -4214,7 +4215,7 @@ var LinkedAccountsComponent = ({
4214
4215
  className: "Layer__linked-accounts__title",
4215
4216
  size: "secondary" /* secondary */
4216
4217
  },
4217
- "Linked Accounts"
4218
+ stringOverrides?.title || "Linked Accounts"
4218
4219
  )), isLoading && /* @__PURE__ */ import_react49.default.createElement("div", { className: "Layer__linked-accounts__loader-container" }, /* @__PURE__ */ import_react49.default.createElement(Loader2, null)), error && !isLoading ? /* @__PURE__ */ import_react49.default.createElement(
4219
4220
  DataState,
4220
4221
  {
@@ -4284,6 +4285,147 @@ var import_react72 = __toESM(require("react"));
4284
4285
  // src/components/BankTransactionList/BankTransactionListItem.tsx
4285
4286
  var import_react71 = __toESM(require("react"));
4286
4287
 
4288
+ // src/hooks/useProfitAndLoss/useProfitAndLossLTM.tsx
4289
+ var import_react51 = require("react");
4290
+ var import_date_fns4 = require("date-fns");
4291
+ var import_swr3 = __toESM(require("swr"));
4292
+ var buildDates = ({ currentDate }) => {
4293
+ return {
4294
+ startYear: (0, import_date_fns4.startOfMonth)(currentDate).getFullYear() - 1,
4295
+ startMonth: (0, import_date_fns4.startOfMonth)(currentDate).getMonth() + 1,
4296
+ endYear: (0, import_date_fns4.startOfMonth)(currentDate).getFullYear(),
4297
+ endMonth: (0, import_date_fns4.startOfMonth)(currentDate).getMonth() + 1
4298
+ };
4299
+ };
4300
+ var buildMonthsArray = (startDate, endDate) => {
4301
+ if (startDate >= endDate) {
4302
+ return [];
4303
+ }
4304
+ var dates = [];
4305
+ for (var d = startDate; d <= endDate; d.setMonth(d.getMonth() + 1)) {
4306
+ dates.push(new Date(d));
4307
+ }
4308
+ return dates;
4309
+ };
4310
+ var useProfitAndLossLTM = ({ currentDate, tagFilter, reportingBasis } = {
4311
+ currentDate: /* @__PURE__ */ new Date()
4312
+ }) => {
4313
+ const { businessId, auth, apiUrl, syncTimestamps, read, hasBeenTouched } = useLayerContext();
4314
+ const [date, setDate] = (0, import_react51.useState)(currentDate);
4315
+ const [loaded, setLoaded] = (0, import_react51.useState)("initial");
4316
+ const [data, setData] = (0, import_react51.useState)([]);
4317
+ const { startYear, startMonth, endYear, endMonth } = (0, import_react51.useMemo)(() => {
4318
+ return buildDates({ currentDate: date });
4319
+ }, [date, businessId, tagFilter, reportingBasis]);
4320
+ const {
4321
+ data: rawData,
4322
+ isLoading,
4323
+ isValidating,
4324
+ error,
4325
+ mutate
4326
+ } = (0, import_swr3.default)(
4327
+ businessId && Boolean(startYear) && Boolean(startMonth) && Boolean(endYear) && Boolean(endMonth) && auth?.access_token && `profit-and-loss-summaries-${businessId}-${startYear.toString()}-${startMonth.toString()}-${tagFilter?.key}-${tagFilter?.values?.join(
4328
+ ","
4329
+ )}-${reportingBasis}`,
4330
+ Layer.getProfitAndLossSummaries(apiUrl, auth?.access_token, {
4331
+ params: {
4332
+ businessId,
4333
+ startYear: startYear.toString(),
4334
+ startMonth: startMonth.toString(),
4335
+ endYear: endYear.toString(),
4336
+ endMonth: endMonth.toString(),
4337
+ tagKey: tagFilter?.key,
4338
+ tagValues: tagFilter?.values?.join(","),
4339
+ reportingBasis
4340
+ }
4341
+ })
4342
+ );
4343
+ (0, import_react51.useEffect)(() => {
4344
+ const newData = data.slice();
4345
+ const newPeriod = buildMonthsArray((0, import_date_fns4.sub)(date, { years: 1 }), date);
4346
+ if (newData && newPeriod) {
4347
+ newPeriod.forEach((x) => {
4348
+ if (!newData?.find(
4349
+ (n) => x.getMonth() + 1 === n.month && x.getFullYear() === n.year
4350
+ )) {
4351
+ newData.push({
4352
+ year: x.getFullYear(),
4353
+ month: x.getMonth() + 1,
4354
+ income: 0,
4355
+ costOfGoodsSold: 0,
4356
+ grossProfit: 0,
4357
+ operatingExpenses: 0,
4358
+ profitBeforeTaxes: 0,
4359
+ taxes: 0,
4360
+ netProfit: 0,
4361
+ fullyCategorized: false,
4362
+ totalExpenses: 0,
4363
+ uncategorizedInflows: 0,
4364
+ uncategorizedOutflows: 0,
4365
+ uncategorized_transactions: 0,
4366
+ isLoading: true
4367
+ });
4368
+ }
4369
+ });
4370
+ }
4371
+ if (newData) {
4372
+ setData(
4373
+ newData.sort(
4374
+ (a, b) => Number(new Date(a.year, a.month, 1)) - Number(new Date(b.year, b.month, 1))
4375
+ )
4376
+ );
4377
+ }
4378
+ }, [startYear, startMonth]);
4379
+ (0, import_react51.useEffect)(() => {
4380
+ const newData = rawData?.data?.months?.slice();
4381
+ if (data && newData) {
4382
+ data.forEach((x) => {
4383
+ if (!newData?.find((n) => x.month === n.month && x.year === n.year)) {
4384
+ newData.push({ ...x });
4385
+ }
4386
+ });
4387
+ }
4388
+ if (newData) {
4389
+ setData(
4390
+ newData.sort(
4391
+ (a, b) => Number(new Date(a.year, a.month, 1)) - Number(new Date(b.year, b.month, 1))
4392
+ )
4393
+ );
4394
+ }
4395
+ }, [rawData]);
4396
+ (0, import_react51.useEffect)(() => {
4397
+ if (isLoading && loaded === "initial") {
4398
+ setLoaded("loading");
4399
+ return;
4400
+ }
4401
+ if (!isLoading && rawData) {
4402
+ setLoaded("complete");
4403
+ }
4404
+ }, [data, isLoading]);
4405
+ const pullData = (date2) => setDate(date2);
4406
+ (0, import_react51.useEffect)(() => {
4407
+ if (isLoading || isValidating) {
4408
+ read("PROFIT_AND_LOSS" /* PROFIT_AND_LOSS */);
4409
+ }
4410
+ }, [isLoading, isValidating]);
4411
+ (0, import_react51.useEffect)(() => {
4412
+ if (hasBeenTouched("PROFIT_AND_LOSS" /* PROFIT_AND_LOSS */)) {
4413
+ mutate();
4414
+ }
4415
+ }, [syncTimestamps]);
4416
+ const refetch = () => {
4417
+ mutate();
4418
+ };
4419
+ return {
4420
+ data,
4421
+ isLoading,
4422
+ loaded,
4423
+ error,
4424
+ pullData,
4425
+ refetch
4426
+ };
4427
+ };
4428
+
4287
4429
  // src/icons/ChevronDownFill.tsx
4288
4430
  var React57 = __toESM(require("react"));
4289
4431
  var ChevronDownFill = ({ size = 18, ...props }) => /* @__PURE__ */ React57.createElement(
@@ -4443,7 +4585,7 @@ var Scissors = ({ size = 11, ...props }) => /* @__PURE__ */ React58.createElemen
4443
4585
  var Scissors_default = Scissors;
4444
4586
 
4445
4587
  // src/components/CategorySelect/CategorySelect.tsx
4446
- var import_react54 = __toESM(require("react"));
4588
+ var import_react55 = __toESM(require("react"));
4447
4589
  var import_react_select = __toESM(require("react-select"));
4448
4590
 
4449
4591
  // src/icons/Check.tsx
@@ -4546,20 +4688,20 @@ var MinimizeTwo = ({ size = 18, ...props }) => /* @__PURE__ */ React61.createEle
4546
4688
  var MinimizeTwo_default = MinimizeTwo;
4547
4689
 
4548
4690
  // src/components/CategorySelect/CategorySelectDrawer.tsx
4549
- var import_react53 = __toESM(require("react"));
4691
+ var import_react54 = __toESM(require("react"));
4550
4692
 
4551
4693
  // src/components/BankTransactionMobileList/BusinessCategories.tsx
4552
- var import_react52 = __toESM(require("react"));
4694
+ var import_react53 = __toESM(require("react"));
4553
4695
 
4554
4696
  // src/components/ActionableList/ActionableList.tsx
4555
- var import_react51 = __toESM(require("react"));
4697
+ var import_react52 = __toESM(require("react"));
4556
4698
  var import_classnames21 = __toESM(require("classnames"));
4557
4699
  var ActionableList = ({
4558
4700
  options,
4559
4701
  onClick,
4560
4702
  selected
4561
4703
  }) => {
4562
- return /* @__PURE__ */ import_react51.default.createElement("ul", { className: "Layer__actionable-list" }, options.map((x, idx) => /* @__PURE__ */ import_react51.default.createElement(
4704
+ return /* @__PURE__ */ import_react52.default.createElement("ul", { className: "Layer__actionable-list" }, options.map((x, idx) => /* @__PURE__ */ import_react52.default.createElement(
4563
4705
  "li",
4564
4706
  {
4565
4707
  role: "button",
@@ -4570,15 +4712,15 @@ var ActionableList = ({
4570
4712
  x.asLink && "Layer__actionable-list-item--as-link"
4571
4713
  )
4572
4714
  },
4573
- /* @__PURE__ */ import_react51.default.createElement(Text, null, x.label),
4574
- !x.asLink && selected && selected.id === x.id ? /* @__PURE__ */ import_react51.default.createElement(
4715
+ /* @__PURE__ */ import_react52.default.createElement(Text, null, x.label),
4716
+ !x.asLink && selected && selected.id === x.id ? /* @__PURE__ */ import_react52.default.createElement(
4575
4717
  Check_default,
4576
4718
  {
4577
4719
  size: 16,
4578
4720
  className: "Layer__actionable-list__selected-icon"
4579
4721
  }
4580
4722
  ) : null,
4581
- x.asLink && /* @__PURE__ */ import_react51.default.createElement(
4723
+ x.asLink && /* @__PURE__ */ import_react52.default.createElement(
4582
4724
  ChevronRight_default,
4583
4725
  {
4584
4726
  size: 16,
@@ -4645,8 +4787,8 @@ var getAssignedValue = (bankTransaction) => {
4645
4787
  var BusinessCategories = ({ select }) => {
4646
4788
  const { categories } = useLayerContext();
4647
4789
  const categoryOptions = flattenCategories(categories);
4648
- const [optionsToShow, setOptionsToShow] = (0, import_react52.useState)(categoryOptions);
4649
- const [selectedGroup, setSelectedGroup] = (0, import_react52.useState)();
4790
+ const [optionsToShow, setOptionsToShow] = (0, import_react53.useState)(categoryOptions);
4791
+ const [selectedGroup, setSelectedGroup] = (0, import_react53.useState)();
4650
4792
  const onCategorySelect = (v) => {
4651
4793
  if (v.value.type === "GROUP" && v.value.items) {
4652
4794
  setOptionsToShow(v.value.items);
@@ -4655,14 +4797,14 @@ var BusinessCategories = ({ select }) => {
4655
4797
  }
4656
4798
  select(v);
4657
4799
  };
4658
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "Layer__bank-transaction-mobile-list-item__categories_list-container" }, /* @__PURE__ */ import_react52.default.createElement(
4800
+ return /* @__PURE__ */ import_react53.default.createElement("div", { className: "Layer__bank-transaction-mobile-list-item__categories_list-container" }, /* @__PURE__ */ import_react53.default.createElement(
4659
4801
  Text,
4660
4802
  {
4661
4803
  weight: "bold" /* bold */,
4662
4804
  className: "Layer__bank-transaction-mobile-list-item__categories_list-title"
4663
4805
  },
4664
4806
  selectedGroup ?? "Select category"
4665
- ), /* @__PURE__ */ import_react52.default.createElement(
4807
+ ), /* @__PURE__ */ import_react53.default.createElement(
4666
4808
  ActionableList,
4667
4809
  {
4668
4810
  options: optionsToShow,
@@ -4677,12 +4819,12 @@ var CategorySelectDrawer = ({
4677
4819
  onSelect,
4678
4820
  selected
4679
4821
  }) => {
4680
- const { setContent, close } = (0, import_react53.useContext)(DrawerContext);
4822
+ const { setContent, close } = (0, import_react54.useContext)(DrawerContext);
4681
4823
  const onDrawerCategorySelect = (value) => {
4682
4824
  close();
4683
4825
  onSelect(value);
4684
4826
  };
4685
- return /* @__PURE__ */ import_react53.default.createElement(
4827
+ return /* @__PURE__ */ import_react54.default.createElement(
4686
4828
  "button",
4687
4829
  {
4688
4830
  "aria-label": "Select category",
@@ -4691,11 +4833,11 @@ var CategorySelectDrawer = ({
4691
4833
  selected && "Layer__category-menu__drawer-btn--selected"
4692
4834
  ),
4693
4835
  onClick: () => setContent(
4694
- /* @__PURE__ */ import_react53.default.createElement(CategorySelectDrawerContent, { onSelect: onDrawerCategorySelect })
4836
+ /* @__PURE__ */ import_react54.default.createElement(CategorySelectDrawerContent, { onSelect: onDrawerCategorySelect })
4695
4837
  )
4696
4838
  },
4697
4839
  selected?.payload?.display_name ?? "Select...",
4698
- /* @__PURE__ */ import_react53.default.createElement(
4840
+ /* @__PURE__ */ import_react54.default.createElement(
4699
4841
  ChevronDown_default,
4700
4842
  {
4701
4843
  size: 16,
@@ -4706,7 +4848,7 @@ var CategorySelectDrawer = ({
4706
4848
  };
4707
4849
  var CategorySelectDrawerContent = ({
4708
4850
  onSelect
4709
- }) => /* @__PURE__ */ import_react53.default.createElement(
4851
+ }) => /* @__PURE__ */ import_react54.default.createElement(
4710
4852
  BusinessCategories,
4711
4853
  {
4712
4854
  select: (option) => {
@@ -4722,7 +4864,7 @@ var CategorySelectDrawerContent = ({
4722
4864
 
4723
4865
  // src/components/CategorySelect/CategorySelect.tsx
4724
4866
  var import_classnames23 = __toESM(require("classnames"));
4725
- var import_date_fns4 = require("date-fns");
4867
+ var import_date_fns5 = require("date-fns");
4726
4868
  var mapCategoryToOption2 = (category) => {
4727
4869
  return {
4728
4870
  type: "category" /* CATEGORY */,
@@ -4749,10 +4891,10 @@ var mapSuggestedMatchToOption = (record) => {
4749
4891
  };
4750
4892
  };
4751
4893
  var DropdownIndicator = (props) => {
4752
- return /* @__PURE__ */ import_react54.default.createElement(import_react_select.components.DropdownIndicator, { ...props }, /* @__PURE__ */ import_react54.default.createElement(ChevronDown_default, null));
4894
+ return /* @__PURE__ */ import_react55.default.createElement(import_react_select.components.DropdownIndicator, { ...props }, /* @__PURE__ */ import_react55.default.createElement(ChevronDown_default, null));
4753
4895
  };
4754
4896
  var GroupHeading = (props) => {
4755
- return /* @__PURE__ */ import_react54.default.createElement(
4897
+ return /* @__PURE__ */ import_react55.default.createElement(
4756
4898
  import_react_select.components.GroupHeading,
4757
4899
  {
4758
4900
  className: (0, import_classnames23.default)(
@@ -4768,24 +4910,24 @@ var Option2 = (props) => {
4768
4910
  return;
4769
4911
  }
4770
4912
  if (props.data.type === "match") {
4771
- return /* @__PURE__ */ import_react54.default.createElement(
4913
+ return /* @__PURE__ */ import_react55.default.createElement(
4772
4914
  import_react_select.components.Option,
4773
4915
  {
4774
4916
  ...props,
4775
4917
  className: `${props.className} Layer__select__option-content__match`
4776
4918
  },
4777
- /* @__PURE__ */ import_react54.default.createElement("div", { className: "Layer__select__option-content__match__main-row" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: "Layer__select__option-content__match__date" }, props.data.payload.date && (0, import_date_fns4.format)((0, import_date_fns4.parseISO)(props.data.payload.date), DATE_FORMAT)), /* @__PURE__ */ import_react54.default.createElement("span", { className: "Layer__select__option-content__match__description" }, props.data.payload.display_name)),
4778
- /* @__PURE__ */ import_react54.default.createElement("div", { className: "Layer__select__option-content__match__amount-row" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: "Layer__select__option-content__match__amount" }, "$", centsToDollars(props.data.payload.amount)))
4919
+ /* @__PURE__ */ import_react55.default.createElement("div", { className: "Layer__select__option-content__match__main-row" }, /* @__PURE__ */ import_react55.default.createElement("span", { className: "Layer__select__option-content__match__date" }, props.data.payload.date && (0, import_date_fns5.format)((0, import_date_fns5.parseISO)(props.data.payload.date), DATE_FORMAT)), /* @__PURE__ */ import_react55.default.createElement("span", { className: "Layer__select__option-content__match__description" }, props.data.payload.display_name)),
4920
+ /* @__PURE__ */ import_react55.default.createElement("div", { className: "Layer__select__option-content__match__amount-row" }, /* @__PURE__ */ import_react55.default.createElement("span", { className: "Layer__select__option-content__match__amount" }, "$", centsToDollars(props.data.payload.amount)))
4779
4921
  );
4780
4922
  }
4781
- return /* @__PURE__ */ import_react54.default.createElement(
4923
+ return /* @__PURE__ */ import_react55.default.createElement(
4782
4924
  import_react_select.components.Option,
4783
4925
  {
4784
4926
  ...props,
4785
4927
  className: `Layer__select__option-menu-content ${props.className}`
4786
4928
  },
4787
- /* @__PURE__ */ import_react54.default.createElement("div", null, props.data.payload.display_name),
4788
- props.isSelected ? /* @__PURE__ */ import_react54.default.createElement("span", { className: "Layer__select__option-menu-content-check" }, /* @__PURE__ */ import_react54.default.createElement(Check_default, { size: 16 })) : null
4929
+ /* @__PURE__ */ import_react55.default.createElement("div", null, props.data.payload.display_name),
4930
+ props.isSelected ? /* @__PURE__ */ import_react55.default.createElement("span", { className: "Layer__select__option-menu-content-check" }, /* @__PURE__ */ import_react55.default.createElement(Check_default, { size: 16 })) : null
4789
4931
  );
4790
4932
  };
4791
4933
  var allCategoriesDivider = [
@@ -4871,9 +5013,9 @@ var CategorySelect = ({
4871
5013
  const selected = value ? value : !excludeMatches && matchOptions?.length === 1 && matchOptions[0].options.length === 1 ? matchOptions[0].options[0] : void 0;
4872
5014
  const placeholder = matchOptions?.length === 1 && matchOptions[0].options.length > 1 ? `${matchOptions[0].options.length} possible matches...` : "Categorize or match...";
4873
5015
  if (asDrawer) {
4874
- return /* @__PURE__ */ import_react54.default.createElement(CategorySelectDrawer, { onSelect: onChange, selected: value });
5016
+ return /* @__PURE__ */ import_react55.default.createElement(CategorySelectDrawer, { onSelect: onChange, selected: value });
4875
5017
  }
4876
- return /* @__PURE__ */ import_react54.default.createElement(
5018
+ return /* @__PURE__ */ import_react55.default.createElement(
4877
5019
  import_react_select.default,
4878
5020
  {
4879
5021
  name,
@@ -4886,7 +5028,7 @@ var CategorySelect = ({
4886
5028
  isSearchable: true,
4887
5029
  placeholder,
4888
5030
  defaultValue: selected,
4889
- formatOptionLabel: (props) => /* @__PURE__ */ import_react54.default.createElement("div", { className: "Layer__select__option-label" }, props.type === "match" && /* @__PURE__ */ import_react54.default.createElement(Badge, { size: "small" /* SMALL */, icon: /* @__PURE__ */ import_react54.default.createElement(MinimizeTwo_default, { size: 11 }) }, "Match"), /* @__PURE__ */ import_react54.default.createElement("span", null, props.payload.display_name)),
5031
+ formatOptionLabel: (props) => /* @__PURE__ */ import_react55.default.createElement("div", { className: "Layer__select__option-label" }, props.type === "match" && /* @__PURE__ */ import_react55.default.createElement(Badge, { size: "small" /* SMALL */, icon: /* @__PURE__ */ import_react55.default.createElement(MinimizeTwo_default, { size: 11 }) }, "Match"), /* @__PURE__ */ import_react55.default.createElement("span", null, props.payload.display_name)),
4890
5032
  value,
4891
5033
  onChange: (newValue) => newValue && onChange(newValue),
4892
5034
  getOptionLabel: (category) => category.payload.display_name,
@@ -5018,7 +5160,7 @@ var Trash = ({ size = 18, ...props }) => /* @__PURE__ */ React67.createElement(
5018
5160
  var Trash_default = Trash;
5019
5161
 
5020
5162
  // src/components/Input/Input.tsx
5021
- var import_react55 = __toESM(require("react"));
5163
+ var import_react56 = __toESM(require("react"));
5022
5164
  var import_classnames24 = __toESM(require("classnames"));
5023
5165
  var Input = ({
5024
5166
  className,
@@ -5033,11 +5175,11 @@ var Input = ({
5033
5175
  leftText ? "Layer__input--with-left-text" : "",
5034
5176
  className
5035
5177
  );
5036
- return /* @__PURE__ */ import_react55.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react55.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react55.default.createElement("input", { ...props, className: baseClassName }), leftText && /* @__PURE__ */ import_react55.default.createElement("span", { className: "Layer__input-left-text" }, leftText)), /* @__PURE__ */ import_react55.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5178
+ return /* @__PURE__ */ import_react56.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react56.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react56.default.createElement("input", { ...props, className: baseClassName }), leftText && /* @__PURE__ */ import_react56.default.createElement("span", { className: "Layer__input-left-text" }, leftText)), /* @__PURE__ */ import_react56.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5037
5179
  };
5038
5180
 
5039
5181
  // src/components/Input/InputGroup.tsx
5040
- var import_react56 = __toESM(require("react"));
5182
+ var import_react57 = __toESM(require("react"));
5041
5183
  var import_classnames25 = __toESM(require("classnames"));
5042
5184
  var InputGroup = ({
5043
5185
  label,
@@ -5051,7 +5193,7 @@ var InputGroup = ({
5051
5193
  className,
5052
5194
  inline && "Layer__input-group--inline"
5053
5195
  );
5054
- return /* @__PURE__ */ import_react56.default.createElement("div", { className: baseClassName }, label && /* @__PURE__ */ import_react56.default.createElement(
5196
+ return /* @__PURE__ */ import_react57.default.createElement("div", { className: baseClassName }, label && /* @__PURE__ */ import_react57.default.createElement(
5055
5197
  Text,
5056
5198
  {
5057
5199
  as: "label",
@@ -5064,7 +5206,7 @@ var InputGroup = ({
5064
5206
  };
5065
5207
 
5066
5208
  // src/components/Input/FileInput.tsx
5067
- var import_react57 = __toESM(require("react"));
5209
+ var import_react58 = __toESM(require("react"));
5068
5210
 
5069
5211
  // src/icons/UploadCloud.tsx
5070
5212
  var React70 = __toESM(require("react"));
@@ -5119,7 +5261,7 @@ var UploadCloud_default = UploadCloud;
5119
5261
 
5120
5262
  // src/components/Input/FileInput.tsx
5121
5263
  var FileInput = ({ text = "Upload", onUpload }) => {
5122
- const hiddenFileInput = (0, import_react57.useRef)(null);
5264
+ const hiddenFileInput = (0, import_react58.useRef)(null);
5123
5265
  const onClick = () => {
5124
5266
  if (hiddenFileInput.current) {
5125
5267
  hiddenFileInput.current.click();
@@ -5131,15 +5273,15 @@ var FileInput = ({ text = "Upload", onUpload }) => {
5131
5273
  onUpload(fileUploaded);
5132
5274
  }
5133
5275
  };
5134
- return /* @__PURE__ */ import_react57.default.createElement(import_react57.default.Fragment, null, /* @__PURE__ */ import_react57.default.createElement(
5276
+ return /* @__PURE__ */ import_react58.default.createElement(import_react58.default.Fragment, null, /* @__PURE__ */ import_react58.default.createElement(
5135
5277
  Button,
5136
5278
  {
5137
5279
  onClick,
5138
5280
  variant: "secondary" /* secondary */,
5139
- rightIcon: /* @__PURE__ */ import_react57.default.createElement(UploadCloud_default, null)
5281
+ rightIcon: /* @__PURE__ */ import_react58.default.createElement(UploadCloud_default, null)
5140
5282
  },
5141
5283
  text
5142
- ), /* @__PURE__ */ import_react57.default.createElement(
5284
+ ), /* @__PURE__ */ import_react58.default.createElement(
5143
5285
  "input",
5144
5286
  {
5145
5287
  type: "file",
@@ -5151,11 +5293,11 @@ var FileInput = ({ text = "Upload", onUpload }) => {
5151
5293
  };
5152
5294
 
5153
5295
  // src/components/Input/Select.tsx
5154
- var import_react58 = __toESM(require("react"));
5296
+ var import_react59 = __toESM(require("react"));
5155
5297
  var import_react_select2 = __toESM(require("react-select"));
5156
5298
  var import_classnames26 = __toESM(require("classnames"));
5157
5299
  var DropdownIndicator2 = (props) => {
5158
- return /* @__PURE__ */ import_react58.default.createElement(import_react_select2.components.DropdownIndicator, { ...props }, /* @__PURE__ */ import_react58.default.createElement(ChevronDownFill_default, null));
5300
+ return /* @__PURE__ */ import_react59.default.createElement(import_react_select2.components.DropdownIndicator, { ...props }, /* @__PURE__ */ import_react59.default.createElement(ChevronDownFill_default, null));
5159
5301
  };
5160
5302
  var Select2 = ({
5161
5303
  name,
@@ -5174,7 +5316,7 @@ var Select2 = ({
5174
5316
  isInvalid ? "Layer__select--error" : "",
5175
5317
  className
5176
5318
  );
5177
- return /* @__PURE__ */ import_react58.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react58.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react58.default.createElement(
5319
+ return /* @__PURE__ */ import_react59.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react59.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react59.default.createElement(
5178
5320
  import_react_select2.default,
5179
5321
  {
5180
5322
  name,
@@ -5189,11 +5331,11 @@ var Select2 = ({
5189
5331
  components: { DropdownIndicator: DropdownIndicator2 },
5190
5332
  isDisabled: disabled
5191
5333
  }
5192
- )), /* @__PURE__ */ import_react58.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5334
+ )), /* @__PURE__ */ import_react59.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5193
5335
  };
5194
5336
 
5195
5337
  // src/components/Input/InputWithBadge.tsx
5196
- var import_react59 = __toESM(require("react"));
5338
+ var import_react60 = __toESM(require("react"));
5197
5339
  var import_classnames27 = __toESM(require("classnames"));
5198
5340
  var InputWithBadge = ({
5199
5341
  className,
@@ -5210,15 +5352,15 @@ var InputWithBadge = ({
5210
5352
  leftText ? "Layer__input--with-left-text" : "",
5211
5353
  className
5212
5354
  );
5213
- return /* @__PURE__ */ import_react59.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react59.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "Layer__input-with-badge" }, /* @__PURE__ */ import_react59.default.createElement("input", { ...props, className: baseClassName }), badge && /* @__PURE__ */ import_react59.default.createElement(Badge, { variant }, badge)), leftText && /* @__PURE__ */ import_react59.default.createElement("span", { className: "Layer__input-left-text" }, leftText)), /* @__PURE__ */ import_react59.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5355
+ return /* @__PURE__ */ import_react60.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react60.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "Layer__input-with-badge" }, /* @__PURE__ */ import_react60.default.createElement("input", { ...props, className: baseClassName }), badge && /* @__PURE__ */ import_react60.default.createElement(Badge, { variant }, badge)), leftText && /* @__PURE__ */ import_react60.default.createElement("span", { className: "Layer__input-left-text" }, leftText)), /* @__PURE__ */ import_react60.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5214
5356
  };
5215
5357
 
5216
5358
  // src/components/MatchForm/MatchForm.tsx
5217
- var import_react61 = __toESM(require("react"));
5359
+ var import_react62 = __toESM(require("react"));
5218
5360
 
5219
5361
  // src/components/BankTransactionRow/MatchBadge.tsx
5220
- var import_react60 = __toESM(require("react"));
5221
- var import_date_fns5 = require("date-fns");
5362
+ var import_react61 = __toESM(require("react"));
5363
+ var import_date_fns6 = require("date-fns");
5222
5364
  var MatchBadge = ({
5223
5365
  bankTransaction,
5224
5366
  classNamePrefix,
@@ -5227,11 +5369,11 @@ var MatchBadge = ({
5227
5369
  }) => {
5228
5370
  if (bankTransaction.categorization_status === "MATCHED" /* MATCHED */ && bankTransaction.match) {
5229
5371
  const { date, amount } = bankTransaction.match.bank_transaction;
5230
- return /* @__PURE__ */ import_react60.default.createElement(
5372
+ return /* @__PURE__ */ import_react61.default.createElement(
5231
5373
  Badge,
5232
5374
  {
5233
- icon: /* @__PURE__ */ import_react60.default.createElement(MinimizeTwo_default, { size: 11 }),
5234
- tooltip: /* @__PURE__ */ import_react60.default.createElement("span", { className: `${classNamePrefix}__match-tooltip` }, /* @__PURE__ */ import_react60.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__date` }, (0, import_date_fns5.format)((0, import_date_fns5.parseISO)(date), dateFormat)), /* @__PURE__ */ import_react60.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__description` }, bankTransaction.match?.details?.description ?? ""), /* @__PURE__ */ import_react60.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__amount` }, "$", centsToDollars(amount)))
5375
+ icon: /* @__PURE__ */ import_react61.default.createElement(MinimizeTwo_default, { size: 11 }),
5376
+ tooltip: /* @__PURE__ */ import_react61.default.createElement("span", { className: `${classNamePrefix}__match-tooltip` }, /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__date` }, (0, import_date_fns6.format)((0, import_date_fns6.parseISO)(date), dateFormat)), /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__description` }, bankTransaction.match?.details?.description ?? ""), /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-tooltip__amount` }, "$", centsToDollars(amount)))
5235
5377
  },
5236
5378
  text
5237
5379
  );
@@ -5241,7 +5383,7 @@ var MatchBadge = ({
5241
5383
 
5242
5384
  // src/components/MatchForm/MatchForm.tsx
5243
5385
  var import_classnames28 = __toESM(require("classnames"));
5244
- var import_date_fns6 = require("date-fns");
5386
+ var import_date_fns7 = require("date-fns");
5245
5387
  var MatchForm = ({
5246
5388
  classNamePrefix,
5247
5389
  bankTransaction,
@@ -5249,13 +5391,13 @@ var MatchForm = ({
5249
5391
  setSelectedMatchId,
5250
5392
  matchFormError
5251
5393
  }) => {
5252
- return /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table` }, /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__header` }, /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__date` }, "Date"), /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__desc` }, "Description"), /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__amount` }, "Amount"), /* @__PURE__ */ import_react61.default.createElement(
5394
+ return /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table` }, /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__header` }, /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__date` }, "Date"), /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__desc` }, "Description"), /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__amount` }, "Amount"), /* @__PURE__ */ import_react62.default.createElement(
5253
5395
  "div",
5254
5396
  {
5255
5397
  className: `${classNamePrefix}__match-table__status ${bankTransaction.match ? "" : "no-match"}`
5256
5398
  }
5257
5399
  )), bankTransaction.suggested_matches?.map((match, idx) => {
5258
- return /* @__PURE__ */ import_react61.default.createElement(
5400
+ return /* @__PURE__ */ import_react62.default.createElement(
5259
5401
  "div",
5260
5402
  {
5261
5403
  key: idx,
@@ -5271,15 +5413,15 @@ var MatchForm = ({
5271
5413
  setSelectedMatchId(match.id);
5272
5414
  }
5273
5415
  },
5274
- /* @__PURE__ */ import_react61.default.createElement(
5416
+ /* @__PURE__ */ import_react62.default.createElement(
5275
5417
  "div",
5276
5418
  {
5277
5419
  className: `Layer__nowrap ${classNamePrefix}__match-table__date`
5278
5420
  },
5279
- /* @__PURE__ */ import_react61.default.createElement("span", null, (0, import_date_fns6.format)((0, import_date_fns6.parseISO)(match.details.date), DATE_FORMAT)),
5280
- /* @__PURE__ */ import_react61.default.createElement("span", { className: "amount-next-to-date" }, "$", centsToDollars(match.details.amount))
5421
+ /* @__PURE__ */ import_react62.default.createElement("span", null, (0, import_date_fns7.format)((0, import_date_fns7.parseISO)(match.details.date), DATE_FORMAT)),
5422
+ /* @__PURE__ */ import_react62.default.createElement("span", { className: "amount-next-to-date" }, "$", centsToDollars(match.details.amount))
5281
5423
  ),
5282
- /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__desc` }, /* @__PURE__ */ import_react61.default.createElement(
5424
+ /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__desc` }, /* @__PURE__ */ import_react62.default.createElement(
5283
5425
  Text,
5284
5426
  {
5285
5427
  className: `${classNamePrefix}__match-table__desc-tooltip`,
@@ -5287,7 +5429,7 @@ var MatchForm = ({
5287
5429
  as: "span"
5288
5430
  },
5289
5431
  match.details.description
5290
- ), match.details.id === bankTransaction.match?.details.id && /* @__PURE__ */ import_react61.default.createElement("span", { className: "match-badge" }, /* @__PURE__ */ import_react61.default.createElement(
5432
+ ), match.details.id === bankTransaction.match?.details.id && /* @__PURE__ */ import_react62.default.createElement("span", { className: "match-badge" }, /* @__PURE__ */ import_react62.default.createElement(
5291
5433
  MatchBadge,
5292
5434
  {
5293
5435
  classNamePrefix,
@@ -5296,13 +5438,13 @@ var MatchForm = ({
5296
5438
  text: "Matched"
5297
5439
  }
5298
5440
  ))),
5299
- /* @__PURE__ */ import_react61.default.createElement("div", { className: `${classNamePrefix}__match-table__amount` }, "$", centsToDollars(match.details.amount)),
5300
- /* @__PURE__ */ import_react61.default.createElement(
5441
+ /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-table__amount` }, "$", centsToDollars(match.details.amount)),
5442
+ /* @__PURE__ */ import_react62.default.createElement(
5301
5443
  "div",
5302
5444
  {
5303
5445
  className: `${classNamePrefix}__match-table__status ${bankTransaction.match ? "" : "no-match"}`
5304
5446
  },
5305
- match.details.id === bankTransaction.match?.details.id && /* @__PURE__ */ import_react61.default.createElement(
5447
+ match.details.id === bankTransaction.match?.details.id && /* @__PURE__ */ import_react62.default.createElement(
5306
5448
  MatchBadge,
5307
5449
  {
5308
5450
  classNamePrefix,
@@ -5313,13 +5455,13 @@ var MatchForm = ({
5313
5455
  )
5314
5456
  )
5315
5457
  );
5316
- }), matchFormError && /* @__PURE__ */ import_react61.default.createElement(ErrorText, null, matchFormError));
5458
+ }), matchFormError && /* @__PURE__ */ import_react62.default.createElement(ErrorText, null, matchFormError));
5317
5459
  };
5318
5460
 
5319
5461
  // src/components/MatchForm/MatchFormMobile.tsx
5320
- var import_react62 = __toESM(require("react"));
5462
+ var import_react63 = __toESM(require("react"));
5321
5463
  var import_classnames29 = __toESM(require("classnames"));
5322
- var import_date_fns7 = require("date-fns");
5464
+ var import_date_fns8 = require("date-fns");
5323
5465
  var MatchFormMobile = ({
5324
5466
  classNamePrefix,
5325
5467
  bankTransaction,
@@ -5327,8 +5469,8 @@ var MatchFormMobile = ({
5327
5469
  setSelectedMatchId,
5328
5470
  matchFormError
5329
5471
  }) => {
5330
- return /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-list` }, bankTransaction.suggested_matches?.map((match, idx) => {
5331
- return /* @__PURE__ */ import_react62.default.createElement(
5472
+ return /* @__PURE__ */ import_react63.default.createElement("div", { className: `${classNamePrefix}__match-list` }, bankTransaction.suggested_matches?.map((match, idx) => {
5473
+ return /* @__PURE__ */ import_react63.default.createElement(
5332
5474
  "div",
5333
5475
  {
5334
5476
  key: idx,
@@ -5344,14 +5486,14 @@ var MatchFormMobile = ({
5344
5486
  setSelectedMatchId(match.id);
5345
5487
  }
5346
5488
  },
5347
- /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-item__col-details` }, /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-item__heading` }, /* @__PURE__ */ import_react62.default.createElement(
5489
+ /* @__PURE__ */ import_react63.default.createElement("div", { className: `${classNamePrefix}__match-item__col-details` }, /* @__PURE__ */ import_react63.default.createElement("div", { className: `${classNamePrefix}__match-item__heading` }, /* @__PURE__ */ import_react63.default.createElement(
5348
5490
  Text,
5349
5491
  {
5350
5492
  className: `${classNamePrefix}__match-item__name`,
5351
5493
  as: "span"
5352
5494
  },
5353
5495
  match.details.description
5354
- ), /* @__PURE__ */ import_react62.default.createElement(
5496
+ ), /* @__PURE__ */ import_react63.default.createElement(
5355
5497
  Text,
5356
5498
  {
5357
5499
  className: `${classNamePrefix}__match-item__amount`,
@@ -5359,16 +5501,16 @@ var MatchFormMobile = ({
5359
5501
  },
5360
5502
  "$",
5361
5503
  centsToDollars(match.details.amount)
5362
- )), /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-item__details` }, /* @__PURE__ */ import_react62.default.createElement(
5504
+ )), /* @__PURE__ */ import_react63.default.createElement("div", { className: `${classNamePrefix}__match-item__details` }, /* @__PURE__ */ import_react63.default.createElement(
5363
5505
  Text,
5364
5506
  {
5365
5507
  className: `${classNamePrefix}__match-item__date`,
5366
5508
  size: "sm" /* sm */,
5367
5509
  as: "span"
5368
5510
  },
5369
- (0, import_date_fns7.format)((0, import_date_fns7.parseISO)(match.details.date), MONTH_DAY_FORMAT)
5511
+ (0, import_date_fns8.format)((0, import_date_fns8.parseISO)(match.details.date), MONTH_DAY_FORMAT)
5370
5512
  ))),
5371
- /* @__PURE__ */ import_react62.default.createElement("div", { className: `${classNamePrefix}__match-item__col-status` }, selectedMatchId && selectedMatchId === match.id ? /* @__PURE__ */ import_react62.default.createElement(
5513
+ /* @__PURE__ */ import_react63.default.createElement("div", { className: `${classNamePrefix}__match-item__col-status` }, selectedMatchId && selectedMatchId === match.id ? /* @__PURE__ */ import_react63.default.createElement(
5372
5514
  Check_default,
5373
5515
  {
5374
5516
  size: 16,
@@ -5376,11 +5518,11 @@ var MatchFormMobile = ({
5376
5518
  }
5377
5519
  ) : null)
5378
5520
  );
5379
- }), matchFormError && /* @__PURE__ */ import_react62.default.createElement(ErrorText, null, matchFormError));
5521
+ }), matchFormError && /* @__PURE__ */ import_react63.default.createElement(ErrorText, null, matchFormError));
5380
5522
  };
5381
5523
 
5382
5524
  // src/components/Textarea/Textarea.tsx
5383
- var import_react63 = __toESM(require("react"));
5525
+ var import_react64 = __toESM(require("react"));
5384
5526
  var import_classnames30 = __toESM(require("classnames"));
5385
5527
  var Textarea = ({
5386
5528
  className,
@@ -5393,11 +5535,11 @@ var Textarea = ({
5393
5535
  isInvalid ? "Layer__textarea--error" : "",
5394
5536
  className
5395
5537
  );
5396
- return /* @__PURE__ */ import_react63.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react63.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react63.default.createElement("textarea", { ...props, className: baseClassName })), /* @__PURE__ */ import_react63.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5538
+ return /* @__PURE__ */ import_react64.default.createElement(Tooltip, { disabled: !isInvalid || !errorMessage }, /* @__PURE__ */ import_react64.default.createElement(TooltipTrigger, { className: "Layer__input-tooltip" }, /* @__PURE__ */ import_react64.default.createElement("textarea", { ...props, className: baseClassName })), /* @__PURE__ */ import_react64.default.createElement(TooltipContent, { className: "Layer__tooltip" }, errorMessage));
5397
5539
  };
5398
5540
 
5399
5541
  // src/components/Toggle/Toggle.tsx
5400
- var import_react64 = __toESM(require("react"));
5542
+ var import_react65 = __toESM(require("react"));
5401
5543
  var import_classnames31 = __toESM(require("classnames"));
5402
5544
  var Toggle = ({
5403
5545
  name,
@@ -5406,9 +5548,9 @@ var Toggle = ({
5406
5548
  onChange,
5407
5549
  size = "medium" /* medium */
5408
5550
  }) => {
5409
- const [currentWidth, setCurrentWidth] = (0, import_react64.useState)(0);
5410
- const [thumbPos, setThumbPos] = (0, import_react64.useState)({ left: 0, width: 0 });
5411
- const [initialized, setInitialized] = (0, import_react64.useState)(false);
5551
+ const [currentWidth, setCurrentWidth] = (0, import_react65.useState)(0);
5552
+ const [thumbPos, setThumbPos] = (0, import_react65.useState)({ left: 0, width: 0 });
5553
+ const [initialized, setInitialized] = (0, import_react65.useState)(false);
5412
5554
  const toggleRef = useElementSize((a, b, c) => {
5413
5555
  if (c.width && c?.width !== currentWidth) {
5414
5556
  setCurrentWidth(c.width);
@@ -5443,14 +5585,14 @@ var Toggle = ({
5443
5585
  shift2 = shift2 + (size === "medium" /* medium */ ? 2 : 1.5);
5444
5586
  setThumbPos({ left: shift2, width });
5445
5587
  };
5446
- (0, import_react64.useEffect)(() => {
5588
+ (0, import_react65.useEffect)(() => {
5447
5589
  const selectedIndex = getSelectedIndex();
5448
5590
  updateThumbPosition(selectedIndex);
5449
5591
  setTimeout(() => {
5450
5592
  setInitialized(true);
5451
5593
  }, 400);
5452
5594
  }, []);
5453
- (0, import_react64.useEffect)(() => {
5595
+ (0, import_react65.useEffect)(() => {
5454
5596
  const selectedIndex = getSelectedIndex();
5455
5597
  updateThumbPosition(selectedIndex);
5456
5598
  }, [currentWidth]);
@@ -5463,7 +5605,7 @@ var Toggle = ({
5463
5605
  }
5464
5606
  return selectedIndex;
5465
5607
  };
5466
- return /* @__PURE__ */ import_react64.default.createElement("div", { className: baseClassName, ref: toggleRef }, options.map((option, index) => /* @__PURE__ */ import_react64.default.createElement(
5608
+ return /* @__PURE__ */ import_react65.default.createElement("div", { className: baseClassName, ref: toggleRef }, options.map((option, index) => /* @__PURE__ */ import_react65.default.createElement(
5467
5609
  ToggleOption,
5468
5610
  {
5469
5611
  ...option,
@@ -5476,7 +5618,7 @@ var Toggle = ({
5476
5618
  disabledMessage: option.disabledMessage,
5477
5619
  index
5478
5620
  }
5479
- )), /* @__PURE__ */ import_react64.default.createElement("span", { className: "Layer__toggle__thumb", style: { ...thumbPos } }));
5621
+ )), /* @__PURE__ */ import_react65.default.createElement("span", { className: "Layer__toggle__thumb", style: { ...thumbPos } }));
5480
5622
  };
5481
5623
  var ToggleOption = ({
5482
5624
  checked,
@@ -5492,14 +5634,14 @@ var ToggleOption = ({
5492
5634
  index
5493
5635
  }) => {
5494
5636
  if (disabled) {
5495
- return /* @__PURE__ */ import_react64.default.createElement(Tooltip, null, /* @__PURE__ */ import_react64.default.createElement(TooltipTrigger, null, /* @__PURE__ */ import_react64.default.createElement(
5637
+ return /* @__PURE__ */ import_react65.default.createElement(Tooltip, null, /* @__PURE__ */ import_react65.default.createElement(TooltipTrigger, null, /* @__PURE__ */ import_react65.default.createElement(
5496
5638
  "label",
5497
5639
  {
5498
5640
  className: `Layer__toggle-option`,
5499
5641
  "data-checked": checked,
5500
5642
  style
5501
5643
  },
5502
- /* @__PURE__ */ import_react64.default.createElement(
5644
+ /* @__PURE__ */ import_react65.default.createElement(
5503
5645
  "input",
5504
5646
  {
5505
5647
  type: "radio",
@@ -5511,17 +5653,17 @@ var ToggleOption = ({
5511
5653
  "data-idx": index
5512
5654
  }
5513
5655
  ),
5514
- /* @__PURE__ */ import_react64.default.createElement("span", { className: "Layer__toggle-option-content" }, leftIcon && /* @__PURE__ */ import_react64.default.createElement("span", { className: "Layer__toggle-option__icon" }, leftIcon), /* @__PURE__ */ import_react64.default.createElement("span", null, label))
5515
- )), /* @__PURE__ */ import_react64.default.createElement(TooltipContent, { className: "Layer__tooltip" }, disabledMessage));
5656
+ /* @__PURE__ */ import_react65.default.createElement("span", { className: "Layer__toggle-option-content" }, leftIcon && /* @__PURE__ */ import_react65.default.createElement("span", { className: "Layer__toggle-option__icon" }, leftIcon), /* @__PURE__ */ import_react65.default.createElement("span", null, label))
5657
+ )), /* @__PURE__ */ import_react65.default.createElement(TooltipContent, { className: "Layer__tooltip" }, disabledMessage));
5516
5658
  }
5517
- return /* @__PURE__ */ import_react64.default.createElement(
5659
+ return /* @__PURE__ */ import_react65.default.createElement(
5518
5660
  "label",
5519
5661
  {
5520
5662
  className: `Layer__toggle-option`,
5521
5663
  "data-checked": checked,
5522
5664
  style
5523
5665
  },
5524
- /* @__PURE__ */ import_react64.default.createElement(
5666
+ /* @__PURE__ */ import_react65.default.createElement(
5525
5667
  "input",
5526
5668
  {
5527
5669
  type: "radio",
@@ -5533,12 +5675,12 @@ var ToggleOption = ({
5533
5675
  "data-idx": index
5534
5676
  }
5535
5677
  ),
5536
- /* @__PURE__ */ import_react64.default.createElement("span", { className: "Layer__toggle-option-content" }, leftIcon && /* @__PURE__ */ import_react64.default.createElement("span", { className: "Layer__toggle-option__icon" }, leftIcon), /* @__PURE__ */ import_react64.default.createElement("span", null, label))
5678
+ /* @__PURE__ */ import_react65.default.createElement("span", { className: "Layer__toggle-option-content" }, leftIcon && /* @__PURE__ */ import_react65.default.createElement("span", { className: "Layer__toggle-option__icon" }, leftIcon), /* @__PURE__ */ import_react65.default.createElement("span", null, label))
5537
5679
  );
5538
5680
  };
5539
5681
 
5540
5682
  // src/components/ExpandedBankTransactionRow/APIErrorNotifications.tsx
5541
- var import_react65 = __toESM(require("react"));
5683
+ var import_react66 = __toESM(require("react"));
5542
5684
  var ERROR_TITLE = "Approval Failed";
5543
5685
  var ERROR_MESSAGE = "Something went wrong, try again later";
5544
5686
  var NOTIFICATION_TIME = 4e3;
@@ -5548,7 +5690,7 @@ var APIErrorNotifications = ({
5548
5690
  bankTransaction,
5549
5691
  containerWidth
5550
5692
  }) => {
5551
- const [notifications, setNotifications] = (0, import_react65.useState)([]);
5693
+ const [notifications, setNotifications] = (0, import_react66.useState)([]);
5552
5694
  const pushNotification = (title, message) => {
5553
5695
  const timestamp = (/* @__PURE__ */ new Date()).valueOf();
5554
5696
  if (notificationsCache.find(
@@ -5577,18 +5719,18 @@ var APIErrorNotifications = ({
5577
5719
  );
5578
5720
  setNotifications(notificationsCache.concat());
5579
5721
  };
5580
- (0, import_react65.useEffect)(() => {
5722
+ (0, import_react66.useEffect)(() => {
5581
5723
  if (bankTransaction.error) {
5582
5724
  pushNotification(ERROR_TITLE, ERROR_MESSAGE);
5583
5725
  }
5584
5726
  }, [bankTransaction.error]);
5585
- return /* @__PURE__ */ import_react65.default.createElement(
5727
+ return /* @__PURE__ */ import_react66.default.createElement(
5586
5728
  "div",
5587
5729
  {
5588
5730
  className: "Layer__bank-transactions__notifications",
5589
5731
  style: containerWidth ? { left: containerWidth - 324 } : {}
5590
5732
  },
5591
- notifications.filter((n) => n.bankTransactionId === bankTransaction.id).map((notification) => /* @__PURE__ */ import_react65.default.createElement(
5733
+ notifications.filter((n) => n.bankTransactionId === bankTransaction.id).map((notification) => /* @__PURE__ */ import_react66.default.createElement(
5592
5734
  Notification,
5593
5735
  {
5594
5736
  key: notification.timestamp,
@@ -5602,8 +5744,8 @@ var Notification = ({
5602
5744
  notification,
5603
5745
  deleteNotification
5604
5746
  }) => {
5605
- const [visible, setVisible] = (0, import_react65.useState)(false);
5606
- (0, import_react65.useEffect)(() => {
5747
+ const [visible, setVisible] = (0, import_react66.useState)(false);
5748
+ (0, import_react66.useEffect)(() => {
5607
5749
  setVisible(true);
5608
5750
  const timer = setTimeout(() => {
5609
5751
  hideNotification();
@@ -5616,20 +5758,20 @@ var Notification = ({
5616
5758
  deleteNotification(notification.timestamp);
5617
5759
  }, FADE_OUT_TIME_WAIT);
5618
5760
  };
5619
- return /* @__PURE__ */ import_react65.default.createElement(
5761
+ return /* @__PURE__ */ import_react66.default.createElement(
5620
5762
  "div",
5621
5763
  {
5622
5764
  className: `Layer__bank-transactions__notification ${visible ? "notification-enter" : "notification-exit"}`,
5623
5765
  onClick: hideNotification
5624
5766
  },
5625
- /* @__PURE__ */ import_react65.default.createElement("div", { className: "Layer__bank-transactions__notification-content" }, /* @__PURE__ */ import_react65.default.createElement("div", { className: "Layer__bank-transactions__notification-icon" }, /* @__PURE__ */ import_react65.default.createElement(AlertOctagon_default, { size: 14 })), /* @__PURE__ */ import_react65.default.createElement("div", { className: "Layer__bank-transactions__notification-text" }, /* @__PURE__ */ import_react65.default.createElement(
5767
+ /* @__PURE__ */ import_react66.default.createElement("div", { className: "Layer__bank-transactions__notification-content" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "Layer__bank-transactions__notification-icon" }, /* @__PURE__ */ import_react66.default.createElement(AlertOctagon_default, { size: 14 })), /* @__PURE__ */ import_react66.default.createElement("div", { className: "Layer__bank-transactions__notification-text" }, /* @__PURE__ */ import_react66.default.createElement(
5626
5768
  Text,
5627
5769
  {
5628
5770
  as: "span",
5629
5771
  className: "Layer__bank-transactions__notification-title"
5630
5772
  },
5631
5773
  notification.title
5632
- ), /* @__PURE__ */ import_react65.default.createElement(
5774
+ ), /* @__PURE__ */ import_react66.default.createElement(
5633
5775
  Text,
5634
5776
  {
5635
5777
  as: "span",
@@ -5642,149 +5784,6 @@ var Notification = ({
5642
5784
 
5643
5785
  // src/components/ExpandedBankTransactionRow/ExpandedBankTransactionRow.tsx
5644
5786
  var import_classnames32 = __toESM(require("classnames"));
5645
-
5646
- // src/hooks/useProfitAndLoss/useProfitAndLossLTM.tsx
5647
- var import_react66 = require("react");
5648
- var import_date_fns8 = require("date-fns");
5649
- var import_swr3 = __toESM(require("swr"));
5650
- var buildDates = ({ currentDate }) => {
5651
- return {
5652
- startYear: (0, import_date_fns8.startOfMonth)(currentDate).getFullYear() - 1,
5653
- startMonth: (0, import_date_fns8.startOfMonth)(currentDate).getMonth() + 1,
5654
- endYear: (0, import_date_fns8.startOfMonth)(currentDate).getFullYear(),
5655
- endMonth: (0, import_date_fns8.startOfMonth)(currentDate).getMonth() + 1
5656
- };
5657
- };
5658
- var buildMonthsArray = (startDate, endDate) => {
5659
- if (startDate >= endDate) {
5660
- return [];
5661
- }
5662
- var dates = [];
5663
- for (var d = startDate; d <= endDate; d.setMonth(d.getMonth() + 1)) {
5664
- dates.push(new Date(d));
5665
- }
5666
- return dates;
5667
- };
5668
- var useProfitAndLossLTM = ({ currentDate, tagFilter, reportingBasis } = {
5669
- currentDate: /* @__PURE__ */ new Date()
5670
- }) => {
5671
- const { businessId, auth, apiUrl, syncTimestamps, read, hasBeenTouched } = useLayerContext();
5672
- const [date, setDate] = (0, import_react66.useState)(currentDate);
5673
- const [loaded, setLoaded] = (0, import_react66.useState)("initial");
5674
- const [data, setData] = (0, import_react66.useState)([]);
5675
- const { startYear, startMonth, endYear, endMonth } = (0, import_react66.useMemo)(() => {
5676
- return buildDates({ currentDate: date });
5677
- }, [date, businessId, tagFilter, reportingBasis]);
5678
- const {
5679
- data: rawData,
5680
- isLoading,
5681
- isValidating,
5682
- error,
5683
- mutate
5684
- } = (0, import_swr3.default)(
5685
- businessId && Boolean(startYear) && Boolean(startMonth) && Boolean(endYear) && Boolean(endMonth) && auth?.access_token && `profit-and-loss-summaries-${businessId}-${startYear.toString()}-${startMonth.toString()}-${tagFilter?.key}-${tagFilter?.values?.join(
5686
- ","
5687
- )}-${reportingBasis}`,
5688
- Layer.getProfitAndLossSummaries(apiUrl, auth?.access_token, {
5689
- params: {
5690
- businessId,
5691
- startYear: startYear.toString(),
5692
- startMonth: startMonth.toString(),
5693
- endYear: endYear.toString(),
5694
- endMonth: endMonth.toString(),
5695
- tagKey: tagFilter?.key,
5696
- tagValues: tagFilter?.values?.join(","),
5697
- reportingBasis
5698
- }
5699
- })
5700
- );
5701
- (0, import_react66.useEffect)(() => {
5702
- const newData = data.slice();
5703
- const newPeriod = buildMonthsArray((0, import_date_fns8.sub)(date, { years: 1 }), date);
5704
- if (newData && newPeriod) {
5705
- newPeriod.forEach((x) => {
5706
- if (!newData?.find(
5707
- (n) => x.getMonth() + 1 === n.month && x.getFullYear() === n.year
5708
- )) {
5709
- newData.push({
5710
- year: x.getFullYear(),
5711
- month: x.getMonth() + 1,
5712
- income: 0,
5713
- costOfGoodsSold: 0,
5714
- grossProfit: 0,
5715
- operatingExpenses: 0,
5716
- profitBeforeTaxes: 0,
5717
- taxes: 0,
5718
- netProfit: 0,
5719
- fullyCategorized: false,
5720
- totalExpenses: 0,
5721
- uncategorizedInflows: 0,
5722
- uncategorizedOutflows: 0,
5723
- uncategorized_transactions: 0,
5724
- isLoading: true
5725
- });
5726
- }
5727
- });
5728
- }
5729
- if (newData) {
5730
- setData(
5731
- newData.sort(
5732
- (a, b) => Number(new Date(a.year, a.month, 1)) - Number(new Date(b.year, b.month, 1))
5733
- )
5734
- );
5735
- }
5736
- }, [startYear, startMonth]);
5737
- (0, import_react66.useEffect)(() => {
5738
- const newData = rawData?.data?.months?.slice();
5739
- if (data && newData) {
5740
- data.forEach((x) => {
5741
- if (!newData?.find((n) => x.month === n.month && x.year === n.year)) {
5742
- newData.push({ ...x });
5743
- }
5744
- });
5745
- }
5746
- if (newData) {
5747
- setData(
5748
- newData.sort(
5749
- (a, b) => Number(new Date(a.year, a.month, 1)) - Number(new Date(b.year, b.month, 1))
5750
- )
5751
- );
5752
- }
5753
- }, [rawData]);
5754
- (0, import_react66.useEffect)(() => {
5755
- if (isLoading && loaded === "initial") {
5756
- setLoaded("loading");
5757
- return;
5758
- }
5759
- if (!isLoading && rawData) {
5760
- setLoaded("complete");
5761
- }
5762
- }, [data, isLoading]);
5763
- const pullData = (date2) => setDate(date2);
5764
- (0, import_react66.useEffect)(() => {
5765
- if (isLoading || isValidating) {
5766
- read("PROFIT_AND_LOSS" /* PROFIT_AND_LOSS */);
5767
- }
5768
- }, [isLoading, isValidating]);
5769
- (0, import_react66.useEffect)(() => {
5770
- if (hasBeenTouched("PROFIT_AND_LOSS" /* PROFIT_AND_LOSS */)) {
5771
- mutate();
5772
- }
5773
- }, [syncTimestamps]);
5774
- const refetch = () => {
5775
- mutate();
5776
- };
5777
- return {
5778
- data,
5779
- isLoading,
5780
- loaded,
5781
- error,
5782
- pullData,
5783
- refetch
5784
- };
5785
- };
5786
-
5787
- // src/components/ExpandedBankTransactionRow/ExpandedBankTransactionRow.tsx
5788
5787
  var isAlreadyMatched2 = (bankTransaction) => {
5789
5788
  if (bankTransaction?.match) {
5790
5789
  const foundMatch = bankTransaction.suggested_matches?.find(
@@ -6336,7 +6335,8 @@ var BankTransactionRow = ({
6336
6335
  initialLoad,
6337
6336
  showDescriptions,
6338
6337
  showReceiptUploads,
6339
- hardRefreshPnlOnCategorize
6338
+ hardRefreshPnlOnCategorize,
6339
+ stringOverrides
6340
6340
  }) => {
6341
6341
  const expandedRowRef = (0, import_react69.useRef)(null);
6342
6342
  const [showRetry, setShowRetry] = (0, import_react69.useState)(false);
@@ -6562,7 +6562,7 @@ var BankTransactionRow = ({
6562
6562
  active: open,
6563
6563
  action: categorized ? "save" /* SAVE */ : "update" /* UPDATE */
6564
6564
  },
6565
- categorized ? "Update" : "Approve"
6565
+ categorized ? stringOverrides?.updateButtonText || "Update" : stringOverrides?.approveButtonText || "Approve"
6566
6566
  ) : null,
6567
6567
  /* @__PURE__ */ import_react69.default.createElement(
6568
6568
  IconButton,
@@ -6644,7 +6644,8 @@ var BankTransactionListItem = ({
6644
6644
  showReceiptUploads,
6645
6645
  hardRefreshPnlOnCategorize,
6646
6646
  containerWidth,
6647
- removeTransaction
6647
+ removeTransaction,
6648
+ stringOverrides
6648
6649
  }) => {
6649
6650
  const expandedRowRef = (0, import_react71.useRef)(null);
6650
6651
  const [showRetry, setShowRetry] = (0, import_react71.useState)(false);
@@ -6737,7 +6738,7 @@ var BankTransactionListItem = ({
6737
6738
  close: () => setOpen(false),
6738
6739
  categorized,
6739
6740
  asListItem: true,
6740
- submitBtnText: categorized ? "Update" : "Approve",
6741
+ submitBtnText: categorized ? stringOverrides?.updateButtonText || "Update" : stringOverrides?.approveButtonText || "Approve",
6741
6742
  containerWidth,
6742
6743
  showDescriptions,
6743
6744
  showReceiptUploads,
@@ -6767,7 +6768,7 @@ var BankTransactionListItem = ({
6767
6768
  processing: bankTransaction.processing,
6768
6769
  action: !categorized ? "save" /* SAVE */ : "update" /* UPDATE */
6769
6770
  },
6770
- !categorized ? "Approve" : "Update"
6771
+ !categorized ? stringOverrides?.approveButtonText || "Approve" : stringOverrides?.updateButtonText || "Update"
6771
6772
  ) : null, !categorized && showRetry ? /* @__PURE__ */ import_react71.default.createElement(
6772
6773
  RetryButton,
6773
6774
  {
@@ -6792,7 +6793,8 @@ var BankTransactionList = ({
6792
6793
  containerWidth,
6793
6794
  showDescriptions = false,
6794
6795
  showReceiptUploads = false,
6795
- hardRefreshPnlOnCategorize = false
6796
+ hardRefreshPnlOnCategorize = false,
6797
+ stringOverrides
6796
6798
  }) => {
6797
6799
  return /* @__PURE__ */ import_react72.default.createElement("ul", { className: "Layer__bank-transactions__list" }, bankTransactions?.map(
6798
6800
  (bankTransaction, index) => /* @__PURE__ */ import_react72.default.createElement(
@@ -6807,7 +6809,8 @@ var BankTransactionList = ({
6807
6809
  containerWidth,
6808
6810
  showDescriptions,
6809
6811
  showReceiptUploads,
6810
- hardRefreshPnlOnCategorize
6812
+ hardRefreshPnlOnCategorize,
6813
+ stringOverrides
6811
6814
  }
6812
6815
  )
6813
6816
  ));
@@ -7626,6 +7629,7 @@ var BankTransactionsTable = ({
7626
7629
  showDescriptions = false,
7627
7630
  showReceiptUploads = false,
7628
7631
  hardRefreshPnlOnCategorize = false,
7632
+ stringOverrides,
7629
7633
  isSyncing = false,
7630
7634
  page,
7631
7635
  lastPage,
@@ -7637,7 +7641,7 @@ var BankTransactionsTable = ({
7637
7641
  width: "100%",
7638
7642
  className: "Layer__table Layer__bank-transactions__table with-cell-separators"
7639
7643
  },
7640
- /* @__PURE__ */ import_react86.default.createElement("thead", null, /* @__PURE__ */ import_react86.default.createElement("tr", null, /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__date-col" }, "Date"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__tx-col" }, "Transaction"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__account-col" }, "Account"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount Layer__table-cell__amount-col" }, "Amount"), categorizeView && editable ? /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-header--primary Layer__table-cell__category-col" }, "Categorize") : /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-cell__category-col" }, "Category"))),
7644
+ /* @__PURE__ */ import_react86.default.createElement("thead", null, /* @__PURE__ */ import_react86.default.createElement("tr", null, /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__date-col" }, stringOverrides?.transactionsTable?.dateColumnHeaderText || "Date"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__tx-col" }, stringOverrides?.transactionsTable?.transactionColumnHeaderText || "Transaction"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__bank-transactions__account-col" }, stringOverrides?.transactionsTable?.accountColumnHeaderText || "Account"), /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount Layer__table-cell__amount-col" }, stringOverrides?.transactionsTable?.amountColumnHeaderText || "Amount"), categorizeView && editable ? /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-header--primary Layer__table-cell__category-col" }, stringOverrides?.transactionsTable?.categorizeColumnHeaderText || "Categorize") : /* @__PURE__ */ import_react86.default.createElement("th", { className: "Layer__table-header Layer__table-cell__category-col" }, stringOverrides?.transactionsTable?.categoryColumnHeaderText || "Category"))),
7641
7645
  isLoading && page && page === 1 ? /* @__PURE__ */ import_react86.default.createElement(BankTransactionsLoader, { isLoading: true }) : null,
7642
7646
  !isLoading && isSyncing && page && page === 1 ? /* @__PURE__ */ import_react86.default.createElement(BankTransactionsLoader, { isLoading: false }) : null,
7643
7647
  /* @__PURE__ */ import_react86.default.createElement("tbody", null, !isLoading && bankTransactions?.map(
@@ -7654,7 +7658,8 @@ var BankTransactionsTable = ({
7654
7658
  containerWidth,
7655
7659
  showDescriptions,
7656
7660
  showReceiptUploads,
7657
- hardRefreshPnlOnCategorize
7661
+ hardRefreshPnlOnCategorize,
7662
+ stringOverrides: stringOverrides?.bankTransactionCTAs
7658
7663
  }
7659
7664
  )
7660
7665
  ), isSyncing && (lastPage || (!bankTransactions || bankTransactions.length === 0) && page === 1) ? /* @__PURE__ */ import_react86.default.createElement("tr", null, /* @__PURE__ */ import_react86.default.createElement("td", { colSpan: 3 }, /* @__PURE__ */ import_react86.default.createElement(
@@ -8429,7 +8434,9 @@ var Tabs = ({ name, options, selected, onChange }) => {
8429
8434
  // src/components/BankTransactions/BankTransactionsHeader.tsx
8430
8435
  var import_classnames42 = __toESM(require("classnames"));
8431
8436
  var import_date_fns15 = require("date-fns");
8432
- var DownloadButton = () => {
8437
+ var DownloadButton = ({
8438
+ downloadButtonTextOverride
8439
+ }) => {
8433
8440
  const { auth, businessId, apiUrl } = useLayerContext();
8434
8441
  const [requestFailed, setRequestFailed] = (0, import_react95.useState)(false);
8435
8442
  const handleClick = async () => {
@@ -8471,7 +8478,7 @@ var DownloadButton = () => {
8471
8478
  rightIcon: /* @__PURE__ */ import_react95.default.createElement(DownloadCloud_default, { size: 12 }),
8472
8479
  onClick: handleClick
8473
8480
  },
8474
- "Download"
8481
+ downloadButtonTextOverride || "Download"
8475
8482
  );
8476
8483
  };
8477
8484
  var BankTransactionsHeader = ({
@@ -8486,6 +8493,7 @@ var BankTransactionsHeader = ({
8486
8493
  listView,
8487
8494
  dateRange,
8488
8495
  setDateRange,
8496
+ stringOverrides,
8489
8497
  isSyncing
8490
8498
  }) => {
8491
8499
  const { business } = useLayerContext();
@@ -8505,7 +8513,7 @@ var BankTransactionsHeader = ({
8505
8513
  className: "Layer__bank-transactions__title",
8506
8514
  size: asWidget ? "secondary" /* secondary */ : "secondary" /* secondary */
8507
8515
  },
8508
- "Transactions"
8516
+ stringOverrides?.header || "Transactions"
8509
8517
  ), isSyncing && /* @__PURE__ */ import_react95.default.createElement(
8510
8518
  SyncingComponent,
8511
8519
  {
@@ -8529,7 +8537,12 @@ var BankTransactionsHeader = ({
8529
8537
  minDate: getEarliestDateToBrowse(business)
8530
8538
  }
8531
8539
  ) : null),
8532
- /* @__PURE__ */ import_react95.default.createElement("div", { className: "Layer__header__actions-wrapper" }, !categorizedOnly && !(mobileComponent == "mobileList" && listView) && categorizeView && /* @__PURE__ */ import_react95.default.createElement("div", { className: "Layer__header__actions" }, /* @__PURE__ */ import_react95.default.createElement(DownloadButton, null), /* @__PURE__ */ import_react95.default.createElement(
8540
+ /* @__PURE__ */ import_react95.default.createElement("div", { className: "Layer__header__actions-wrapper" }, !categorizedOnly && !(mobileComponent == "mobileList" && listView) && categorizeView && /* @__PURE__ */ import_react95.default.createElement("div", { className: "Layer__header__actions" }, /* @__PURE__ */ import_react95.default.createElement(
8541
+ DownloadButton,
8542
+ {
8543
+ downloadButtonTextOverride: stringOverrides?.downloadButton
8544
+ }
8545
+ ), /* @__PURE__ */ import_react95.default.createElement(
8533
8546
  Toggle,
8534
8547
  {
8535
8548
  name: "bank-transaction-display",
@@ -8647,7 +8660,8 @@ var BankTransactionsContent = ({
8647
8660
  monthlyView = false,
8648
8661
  mobileComponent,
8649
8662
  filters: inputFilters,
8650
- hideHeader = false
8663
+ hideHeader = false,
8664
+ stringOverrides
8651
8665
  }) => {
8652
8666
  const [currentPage, setCurrentPage] = (0, import_react97.useState)(1);
8653
8667
  const [initialLoad, setInitialLoad] = (0, import_react97.useState)(true);
@@ -8804,6 +8818,7 @@ var BankTransactionsContent = ({
8804
8818
  listView,
8805
8819
  dateRange,
8806
8820
  setDateRange: (v) => setDateRange(v),
8821
+ stringOverrides: stringOverrides?.bankTransactionsHeader,
8807
8822
  isDataLoading: isLoading,
8808
8823
  isSyncing
8809
8824
  }
@@ -8823,6 +8838,7 @@ var BankTransactionsContent = ({
8823
8838
  showReceiptUploads,
8824
8839
  page: currentPage,
8825
8840
  hardRefreshPnlOnCategorize,
8841
+ stringOverrides,
8826
8842
  lastPage: isLastPage,
8827
8843
  onRefresh: refetch
8828
8844
  }
@@ -8834,7 +8850,8 @@ var BankTransactionsContent = ({
8834
8850
  editable,
8835
8851
  removeTransaction,
8836
8852
  containerWidth,
8837
- hardRefreshPnlOnCategorize
8853
+ hardRefreshPnlOnCategorize,
8854
+ stringOverrides: stringOverrides?.bankTransactionCTAs
8838
8855
  }
8839
8856
  ) : null,
8840
8857
  !isLoading && listView && mobileComponent === "mobileList" ? /* @__PURE__ */ import_react97.default.createElement(
@@ -10045,9 +10062,6 @@ var convertCurrencyToNumber = (amount) => {
10045
10062
  return parseFloat(inputValue);
10046
10063
  };
10047
10064
 
10048
- // src/components/ProfitAndLossDetailedCharts/DetailedChart.tsx
10049
- var import_recharts2 = require("recharts");
10050
-
10051
10065
  // src/components/ProfitAndLossDetailedCharts/DetailedTable.tsx
10052
10066
  var import_react105 = __toESM(require("react"));
10053
10067
 
@@ -10066,7 +10080,7 @@ var DEFAULT_CHART_COLOR_TYPE = [
10066
10080
  "#6A52CC",
10067
10081
  "#71CC56"
10068
10082
  ];
10069
- var DEFAULT_CHART_COLORS = [
10083
+ var DEFAULT_MINICHART_COLORS = [
10070
10084
  {
10071
10085
  color: "#7417B3",
10072
10086
  opacity: 1
@@ -10208,14 +10222,14 @@ var SortArrows_default = SortArrows;
10208
10222
 
10209
10223
  // src/components/ProfitAndLossDetailedCharts/DetailedTable.tsx
10210
10224
  var import_classnames44 = __toESM(require("classnames"));
10211
- var mapColorsToTypes = (data) => {
10225
+ var mapTypesToColors = (data, colorList = DEFAULT_CHART_COLOR_TYPE) => {
10212
10226
  const typeToColor = {};
10213
10227
  const typeToLastOpacity = {};
10214
10228
  let colorIndex = 0;
10215
10229
  return data.map((obj) => {
10216
10230
  const type = obj.type;
10217
10231
  if (!typeToColor[type]) {
10218
- typeToColor[type] = DEFAULT_CHART_COLOR_TYPE[colorIndex % DEFAULT_CHART_COLOR_TYPE.length];
10232
+ typeToColor[type] = colorList[colorIndex % colorList.length];
10219
10233
  colorIndex++;
10220
10234
  typeToLastOpacity[type] = 1;
10221
10235
  } else {
@@ -10234,7 +10248,9 @@ var DetailedTable = ({
10234
10248
  filters,
10235
10249
  sortBy,
10236
10250
  hoveredItem,
10237
- setHoveredItem
10251
+ setHoveredItem,
10252
+ chartColorsList,
10253
+ stringOverrides
10238
10254
  }) => {
10239
10255
  const buildColClass = (column) => {
10240
10256
  return (0, import_classnames44.default)(
@@ -10242,15 +10258,16 @@ var DetailedTable = ({
10242
10258
  sidebarScope && filters[sidebarScope]?.sortBy === column ? `sort--${(sidebarScope && filters[sidebarScope]?.sortDirection) ?? "desc"}` : ""
10243
10259
  );
10244
10260
  };
10245
- const typeColorMapping = mapColorsToTypes(filteredData);
10246
- let colorIndex = 0;
10261
+ const typeColorMapping = mapTypesToColors(filteredData, chartColorsList);
10262
+ const colorIndex = 0;
10247
10263
  return /* @__PURE__ */ import_react105.default.createElement("div", { className: "details-container" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "table" }, /* @__PURE__ */ import_react105.default.createElement("table", null, /* @__PURE__ */ import_react105.default.createElement("thead", null, /* @__PURE__ */ import_react105.default.createElement("tr", null, /* @__PURE__ */ import_react105.default.createElement(
10248
10264
  "th",
10249
10265
  {
10250
10266
  className: buildColClass("category"),
10251
10267
  onClick: () => sortBy(sidebarScope ?? "expenses", "category")
10252
10268
  },
10253
- "Category ",
10269
+ stringOverrides?.categoryColumnHeader || "Category",
10270
+ " ",
10254
10271
  /* @__PURE__ */ import_react105.default.createElement(SortArrows_default, { className: "Layer__sort-arrows" })
10255
10272
  ), /* @__PURE__ */ import_react105.default.createElement(
10256
10273
  "th",
@@ -10258,7 +10275,8 @@ var DetailedTable = ({
10258
10275
  className: buildColClass("type"),
10259
10276
  onClick: () => sortBy(sidebarScope ?? "expenses", "type")
10260
10277
  },
10261
- "Type ",
10278
+ stringOverrides?.typeColumnHeader || "Type",
10279
+ " ",
10262
10280
  /* @__PURE__ */ import_react105.default.createElement(SortArrows_default, { className: "Layer__sort-arrows" })
10263
10281
  ), /* @__PURE__ */ import_react105.default.createElement("th", null), /* @__PURE__ */ import_react105.default.createElement(
10264
10282
  "th",
@@ -10266,7 +10284,8 @@ var DetailedTable = ({
10266
10284
  className: buildColClass("value"),
10267
10285
  onClick: () => sortBy(sidebarScope ?? "expenses", "value")
10268
10286
  },
10269
- "Value ",
10287
+ stringOverrides?.valueColumnHeader || "Value",
10288
+ " ",
10270
10289
  /* @__PURE__ */ import_react105.default.createElement(SortArrows_default, { className: "Layer__sort-arrows" })
10271
10290
  ))), /* @__PURE__ */ import_react105.default.createElement("tbody", null, filteredData.filter((x) => !x.hidden).map((item, idx) => {
10272
10291
  return /* @__PURE__ */ import_react105.default.createElement(
@@ -10298,6 +10317,7 @@ var DetailedTable = ({
10298
10317
  };
10299
10318
 
10300
10319
  // src/components/ProfitAndLossDetailedCharts/DetailedChart.tsx
10320
+ var import_recharts2 = require("recharts");
10301
10321
  var DetailedChart = ({
10302
10322
  filteredData,
10303
10323
  filteredTotal,
@@ -10305,6 +10325,7 @@ var DetailedChart = ({
10305
10325
  setHoveredItem,
10306
10326
  sidebarScope,
10307
10327
  date,
10328
+ chartColorsList,
10308
10329
  isLoading,
10309
10330
  showDatePicker = true
10310
10331
  }) => {
@@ -10328,7 +10349,7 @@ var DetailedChart = ({
10328
10349
  });
10329
10350
  }, [filteredData, isLoading]);
10330
10351
  const noValue = chartData.length === 0 || !chartData.find((x) => x.value !== 0);
10331
- const typeColorMapping = mapColorsToTypes(chartData);
10352
+ const typeColorMapping = mapTypesToColors(chartData, chartColorsList);
10332
10353
  return /* @__PURE__ */ import_react106.default.createElement("div", { className: "chart-field" }, /* @__PURE__ */ import_react106.default.createElement("div", { className: "header--tablet" }, showDatePicker && /* @__PURE__ */ import_react106.default.createElement(ProfitAndLossDatePicker, null)), /* @__PURE__ */ import_react106.default.createElement("div", { className: "chart-container" }, /* @__PURE__ */ import_react106.default.createElement(import_recharts2.ResponsiveContainer, null, /* @__PURE__ */ import_react106.default.createElement(import_recharts2.PieChart, null, !isLoading && !noValue ? /* @__PURE__ */ import_react106.default.createElement(
10333
10354
  import_recharts2.Pie,
10334
10355
  {
@@ -10607,7 +10628,9 @@ var import_date_fns21 = require("date-fns");
10607
10628
  var ProfitAndLossDetailedCharts = ({
10608
10629
  scope,
10609
10630
  hideClose = false,
10610
- showDatePicker = false
10631
+ showDatePicker = false,
10632
+ chartColorsList,
10633
+ stringOverrides
10611
10634
  }) => {
10612
10635
  const {
10613
10636
  filteredDataRevenue,
@@ -10644,6 +10667,7 @@ var ProfitAndLossDetailedCharts = ({
10644
10667
  sidebarScope: theScope,
10645
10668
  date: dateRange.startDate,
10646
10669
  isLoading,
10670
+ chartColorsList,
10647
10671
  showDatePicker
10648
10672
  }
10649
10673
  ), /* @__PURE__ */ import_react108.default.createElement("div", { className: "Layer__profit-and-loss-detailed-charts__table-wrapper" }, /* @__PURE__ */ import_react108.default.createElement(
@@ -10662,7 +10686,9 @@ var ProfitAndLossDetailedCharts = ({
10662
10686
  filters,
10663
10687
  sortBy,
10664
10688
  hoveredItem,
10665
- setHoveredItem
10689
+ setHoveredItem,
10690
+ chartColorsList,
10691
+ stringOverrides: stringOverrides?.detailedTableStringOverrides
10666
10692
  }
10667
10693
  ))));
10668
10694
  };
@@ -10692,7 +10718,7 @@ var MiniChart = ({ data }) => {
10692
10718
  animationEasing: "ease-in-out"
10693
10719
  },
10694
10720
  data.map((entry, index) => {
10695
- const colorConfig = DEFAULT_CHART_COLORS[index % DEFAULT_CHART_COLORS.length];
10721
+ const colorConfig = DEFAULT_MINICHART_COLORS[index % DEFAULT_MINICHART_COLORS.length];
10696
10722
  return /* @__PURE__ */ import_react109.default.createElement(
10697
10723
  import_recharts3.Cell,
10698
10724
  {
@@ -10736,8 +10762,10 @@ var buildMiniChartData = (scope, data) => {
10736
10762
  };
10737
10763
  var ProfitAndLossSummaries = ({
10738
10764
  vertical,
10739
- revenueLabel = "Revenue",
10740
- actionable = false
10765
+ actionable = false,
10766
+ revenueLabel,
10767
+ // deprecated
10768
+ stringOverrides
10741
10769
  }) => {
10742
10770
  const {
10743
10771
  data: storedData,
@@ -10784,7 +10812,7 @@ var ProfitAndLossSummaries = ({
10784
10812
  }
10785
10813
  },
10786
10814
  /* @__PURE__ */ import_react110.default.createElement(MiniChart, { data: revenueChartData }),
10787
- /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, revenueLabel), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, null)) : /* @__PURE__ */ import_react110.default.createElement(
10815
+ /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, stringOverrides?.revenueLabel || revenueLabel || "Revenue"), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, null)) : /* @__PURE__ */ import_react110.default.createElement(
10788
10816
  "span",
10789
10817
  {
10790
10818
  className: `Layer__profit-and-loss-summaries__amount ${incomeDirectionClass}`
@@ -10806,7 +10834,7 @@ var ProfitAndLossSummaries = ({
10806
10834
  }
10807
10835
  },
10808
10836
  /* @__PURE__ */ import_react110.default.createElement(MiniChart, { data: expensesChartData }),
10809
- /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, "Expenses"), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, { className: "Layer__profit-and-loss-summaries__loader" })) : /* @__PURE__ */ import_react110.default.createElement(
10837
+ /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, stringOverrides?.expensesLabel || "Expenses"), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, { className: "Layer__profit-and-loss-summaries__loader" })) : /* @__PURE__ */ import_react110.default.createElement(
10810
10838
  "span",
10811
10839
  {
10812
10840
  className: `Layer__profit-and-loss-summaries__amount ${expensesDirectionClass}`
@@ -10824,7 +10852,7 @@ var ProfitAndLossSummaries = ({
10824
10852
  actionable && "Layer__actionable"
10825
10853
  )
10826
10854
  },
10827
- /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, "Net Profit"), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, { className: "Layer__profit-and-loss-summaries__loader" })) : /* @__PURE__ */ import_react110.default.createElement(
10855
+ /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__text" }, /* @__PURE__ */ import_react110.default.createElement("span", { className: "Layer__profit-and-loss-summaries__title" }, stringOverrides?.netProfitLabel || "Net Profit"), isLoading || storedData === void 0 ? /* @__PURE__ */ import_react110.default.createElement("div", { className: "Layer__profit-and-loss-summaries__loader" }, /* @__PURE__ */ import_react110.default.createElement(SkeletonLoader, { className: "Layer__profit-and-loss-summaries__loader" })) : /* @__PURE__ */ import_react110.default.createElement(
10828
10856
  "span",
10829
10857
  {
10830
10858
  className: `Layer__profit-and-loss-summaries__amount ${netProfitDirectionClass}`
@@ -11011,7 +11039,7 @@ var empty_profit_and_loss_report_default = {
11011
11039
 
11012
11040
  // src/components/ProfitAndLossTable/ProfitAndLossTable.tsx
11013
11041
  var import_classnames46 = __toESM(require("classnames"));
11014
- var ProfitAndLossTable = ({ lockExpanded, asContainer }) => {
11042
+ var ProfitAndLossTable = ({ lockExpanded, asContainer, stringOverrides }) => {
11015
11043
  const {
11016
11044
  data: actualData,
11017
11045
  isLoading,
@@ -11064,7 +11092,7 @@ var ProfitAndLossTable = ({ lockExpanded, asContainer }) => {
11064
11092
  {
11065
11093
  lineItem: {
11066
11094
  value: data.gross_profit,
11067
- display_name: "Gross Profit"
11095
+ display_name: stringOverrides?.grossProfitLabel || "Gross Profit"
11068
11096
  },
11069
11097
  variant: "summation",
11070
11098
  direction: "CREDIT" /* CREDIT */,
@@ -11088,7 +11116,7 @@ var ProfitAndLossTable = ({ lockExpanded, asContainer }) => {
11088
11116
  {
11089
11117
  lineItem: {
11090
11118
  value: data.profit_before_taxes,
11091
- display_name: "Profit Before Taxes"
11119
+ display_name: stringOverrides?.profitBeforeTaxesLabel || "Profit Before Taxes"
11092
11120
  },
11093
11121
  variant: "summation",
11094
11122
  direction: "CREDIT" /* CREDIT */,
@@ -11112,7 +11140,7 @@ var ProfitAndLossTable = ({ lockExpanded, asContainer }) => {
11112
11140
  {
11113
11141
  lineItem: {
11114
11142
  value: data.net_profit,
11115
- display_name: "Net Profit"
11143
+ display_name: stringOverrides?.netProfitLabel || "Net Profit"
11116
11144
  },
11117
11145
  variant: "summation",
11118
11146
  direction: "CREDIT" /* CREDIT */,
@@ -11462,7 +11490,8 @@ var Table = ({
11462
11490
  // src/components/BalanceSheetTable/BalanceSheetTable.tsx
11463
11491
  var BalanceSheetTable = ({
11464
11492
  data,
11465
- config
11493
+ config,
11494
+ stringOverrides
11466
11495
  }) => {
11467
11496
  const { isOpen, setIsOpen, expandedAllRows } = useTableExpandRow();
11468
11497
  const allRowKeys = [];
@@ -11518,7 +11547,7 @@ var BalanceSheetTable = ({
11518
11547
  /* @__PURE__ */ import_react125.default.createElement(TableCell, { primary: true, isCurrency: true }, lineItem.value)
11519
11548
  ));
11520
11549
  };
11521
- return /* @__PURE__ */ import_react125.default.createElement(Table, { borderCollapse: "collapse" }, /* @__PURE__ */ import_react125.default.createElement(TableHead, null, /* @__PURE__ */ import_react125.default.createElement(TableRow, { isHeadRow: true, rowKey: "balance-sheet-head-row" }, /* @__PURE__ */ import_react125.default.createElement(TableCell, { isHeaderCell: true }, "Type"), /* @__PURE__ */ import_react125.default.createElement(TableCell, { isHeaderCell: true }, "Total"))), /* @__PURE__ */ import_react125.default.createElement(TableBody, null, config.map((row, idx) => /* @__PURE__ */ import_react125.default.createElement(import_react125.default.Fragment, { key: row.lineItem }, data[row.lineItem] && renderLineItem(
11550
+ return /* @__PURE__ */ import_react125.default.createElement(Table, { borderCollapse: "collapse" }, /* @__PURE__ */ import_react125.default.createElement(TableHead, null, /* @__PURE__ */ import_react125.default.createElement(TableRow, { isHeadRow: true, rowKey: "balance-sheet-head-row" }, /* @__PURE__ */ import_react125.default.createElement(TableCell, { isHeaderCell: true }, stringOverrides?.typeColumnHeader || "Type"), /* @__PURE__ */ import_react125.default.createElement(TableCell, { isHeaderCell: true }, stringOverrides?.totalColumnHeader || "Total"))), /* @__PURE__ */ import_react125.default.createElement(TableBody, null, config.map((row, idx) => /* @__PURE__ */ import_react125.default.createElement(import_react125.default.Fragment, { key: row.lineItem }, data[row.lineItem] && renderLineItem(
11522
11551
  data[row.lineItem],
11523
11552
  0,
11524
11553
  row.lineItem,
@@ -11620,11 +11649,12 @@ var import_date_fns24 = require("date-fns");
11620
11649
  var COMPONENT_NAME3 = "balance-sheet";
11621
11650
  var BalanceSheet = (props) => {
11622
11651
  const balanceSheetContextData = useBalanceSheet(props.effectiveDate);
11623
- return /* @__PURE__ */ import_react129.default.createElement(BalanceSheetContext.Provider, { value: balanceSheetContextData }, /* @__PURE__ */ import_react129.default.createElement(BalanceSheetView, { asWidget: props.asWidget, ...props }));
11652
+ return /* @__PURE__ */ import_react129.default.createElement(BalanceSheetContext.Provider, { value: balanceSheetContextData }, /* @__PURE__ */ import_react129.default.createElement(BalanceSheetView, { asWidget: props.asWidget, stringOverrides: props.stringOverrides, ...props }));
11624
11653
  };
11625
11654
  var BalanceSheetView = ({
11626
11655
  withExpandAllButton = true,
11627
- asWidget = false
11656
+ asWidget = false,
11657
+ stringOverrides
11628
11658
  }) => {
11629
11659
  const [effectiveDate, setEffectiveDate] = (0, import_react129.useState)((0, import_date_fns24.startOfDay)(/* @__PURE__ */ new Date()));
11630
11660
  const { data, isLoading, refetch } = useBalanceSheet(effectiveDate);
@@ -11653,7 +11683,7 @@ var BalanceSheetView = ({
11653
11683
  }
11654
11684
  ), withExpandAllButton && /* @__PURE__ */ import_react129.default.createElement(BalanceSheetExpandAllButton, null))
11655
11685
  },
11656
- !data || isLoading ? /* @__PURE__ */ import_react129.default.createElement("div", { className: `Layer__${COMPONENT_NAME3}__loader-container` }, /* @__PURE__ */ import_react129.default.createElement(Loader2, null)) : /* @__PURE__ */ import_react129.default.createElement(BalanceSheetTable, { data, config: BALANCE_SHEET_ROWS })
11686
+ !data || isLoading ? /* @__PURE__ */ import_react129.default.createElement("div", { className: `Layer__${COMPONENT_NAME3}__loader-container` }, /* @__PURE__ */ import_react129.default.createElement(Loader2, null)) : /* @__PURE__ */ import_react129.default.createElement(BalanceSheetTable, { data, config: BALANCE_SHEET_ROWS, stringOverrides: stringOverrides?.balanceSheetTable })
11657
11687
  )));
11658
11688
  }
11659
11689
  return /* @__PURE__ */ import_react129.default.createElement(TableProvider, null, /* @__PURE__ */ import_react129.default.createElement(
@@ -11668,7 +11698,7 @@ var BalanceSheetView = ({
11668
11698
  }
11669
11699
  ), withExpandAllButton && /* @__PURE__ */ import_react129.default.createElement(BalanceSheetExpandAllButton, null))
11670
11700
  },
11671
- !data || isLoading ? /* @__PURE__ */ import_react129.default.createElement("div", { className: `Layer__${COMPONENT_NAME3}__loader-container` }, /* @__PURE__ */ import_react129.default.createElement(Loader2, null)) : /* @__PURE__ */ import_react129.default.createElement(BalanceSheetTable, { data, config: BALANCE_SHEET_ROWS })
11701
+ !data || isLoading ? /* @__PURE__ */ import_react129.default.createElement("div", { className: `Layer__${COMPONENT_NAME3}__loader-container` }, /* @__PURE__ */ import_react129.default.createElement(Loader2, null)) : /* @__PURE__ */ import_react129.default.createElement(BalanceSheetTable, { data, config: BALANCE_SHEET_ROWS, stringOverrides: stringOverrides?.balanceSheetTable })
11672
11702
  ));
11673
11703
  };
11674
11704
 
@@ -11726,7 +11756,8 @@ var useStatementOfCashFlow = (startDate = /* @__PURE__ */ new Date(), endDate =
11726
11756
  var import_react132 = __toESM(require("react"));
11727
11757
  var StatementOfCashFlowTable = ({
11728
11758
  data,
11729
- config
11759
+ config,
11760
+ stringOverrides
11730
11761
  }) => {
11731
11762
  const { isOpen, setIsOpen } = useTableExpandRow();
11732
11763
  const renderLineItem = (lineItem, depth = 0, rowKey, rowIndex) => {
@@ -11768,7 +11799,7 @@ var StatementOfCashFlowTable = ({
11768
11799
  /* @__PURE__ */ import_react132.default.createElement(TableCell, { primary: true, isCurrency: true }, lineItem.value)
11769
11800
  ));
11770
11801
  };
11771
- return /* @__PURE__ */ import_react132.default.createElement(Table, { borderCollapse: "collapse" }, /* @__PURE__ */ import_react132.default.createElement(TableHead, null, /* @__PURE__ */ import_react132.default.createElement(TableRow, { rowKey: "soc-flow-head-row", isHeadRow: true }, /* @__PURE__ */ import_react132.default.createElement(TableCell, { isHeaderCell: true }, "Type"), /* @__PURE__ */ import_react132.default.createElement(TableCell, { isHeaderCell: true }, "Total"))), /* @__PURE__ */ import_react132.default.createElement(TableBody, null, config.map((row, idx) => {
11802
+ return /* @__PURE__ */ import_react132.default.createElement(Table, { borderCollapse: "collapse" }, /* @__PURE__ */ import_react132.default.createElement(TableHead, null, /* @__PURE__ */ import_react132.default.createElement(TableRow, { rowKey: "soc-flow-head-row", isHeadRow: true }, /* @__PURE__ */ import_react132.default.createElement(TableCell, { isHeaderCell: true }, stringOverrides?.typeColumnHeader || "Type"), /* @__PURE__ */ import_react132.default.createElement(TableCell, { isHeaderCell: true }, stringOverrides?.totalColumnHeader || "Total"))), /* @__PURE__ */ import_react132.default.createElement(TableBody, null, config.map((row, idx) => {
11772
11803
  if (row.type === "line_item") {
11773
11804
  return /* @__PURE__ */ import_react132.default.createElement(import_react132.default.Fragment, { key: row.lineItem }, data[row.lineItem] && renderLineItem(
11774
11805
  data[row.lineItem],
@@ -11824,11 +11855,11 @@ var STATEMENT_OF_CASH_FLOW_ROWS = [
11824
11855
  // src/components/StatementOfCashFlow/StatementOfCashFlow.tsx
11825
11856
  var import_date_fns26 = require("date-fns");
11826
11857
  var COMPONENT_NAME4 = "statement-of-cash-flow";
11827
- var StatementOfCashFlow = () => {
11858
+ var StatementOfCashFlow = ({ stringOverrides }) => {
11828
11859
  const cashContextData = useStatementOfCashFlow();
11829
- return /* @__PURE__ */ import_react133.default.createElement(StatementOfCashFlowContext.Provider, { value: cashContextData }, /* @__PURE__ */ import_react133.default.createElement(StatementOfCashFlowView, null));
11860
+ return /* @__PURE__ */ import_react133.default.createElement(StatementOfCashFlowContext.Provider, { value: cashContextData }, /* @__PURE__ */ import_react133.default.createElement(StatementOfCashFlowView, { stringOverrides }));
11830
11861
  };
11831
- var StatementOfCashFlowView = () => {
11862
+ var StatementOfCashFlowView = ({ stringOverrides }) => {
11832
11863
  const [startDate, setStartDate] = (0, import_react133.useState)(
11833
11864
  (0, import_date_fns26.startOfDay)((0, import_date_fns26.subWeeks)(/* @__PURE__ */ new Date(), 4))
11834
11865
  );
@@ -11866,7 +11897,8 @@ var StatementOfCashFlowView = () => {
11866
11897
  StatementOfCashFlowTable,
11867
11898
  {
11868
11899
  data,
11869
- config: STATEMENT_OF_CASH_FLOW_ROWS
11900
+ config: STATEMENT_OF_CASH_FLOW_ROWS,
11901
+ stringOverrides: stringOverrides?.statementOfCashFlowTable
11870
11902
  }
11871
11903
  )
11872
11904
  ));
@@ -12797,7 +12829,7 @@ var useParentOptions = (data) => (0, import_react140.useMemo)(
12797
12829
  );
12798
12830
 
12799
12831
  // src/components/ChartOfAccountsForm/ChartOfAccountsForm.tsx
12800
- var ChartOfAccountsForm = () => {
12832
+ var ChartOfAccountsForm = ({ stringOverrides }) => {
12801
12833
  const {
12802
12834
  form,
12803
12835
  data,
@@ -12828,7 +12860,7 @@ var ChartOfAccountsForm = () => {
12828
12860
  submitForm();
12829
12861
  }
12830
12862
  },
12831
- /* @__PURE__ */ import_react141.default.createElement("div", { className: "Layer__chart-of-accounts__sidebar__header" }, /* @__PURE__ */ import_react141.default.createElement(Text, { size: "lg" /* lg */, weight: "bold" /* bold */, className: "title" }, form?.action === "edit" ? "Edit" : "Add New", " Account"), /* @__PURE__ */ import_react141.default.createElement("div", { className: "actions" }, /* @__PURE__ */ import_react141.default.createElement(
12863
+ /* @__PURE__ */ import_react141.default.createElement("div", { className: "Layer__chart-of-accounts__sidebar__header" }, /* @__PURE__ */ import_react141.default.createElement(Text, { size: "lg" /* lg */, weight: "bold" /* bold */, className: "title" }, form?.action === "edit" ? stringOverrides?.editModeHeader || "Edit Account" : stringOverrides?.createModeHeader || "Add New Account"), /* @__PURE__ */ import_react141.default.createElement("div", { className: "actions" }, /* @__PURE__ */ import_react141.default.createElement(
12832
12864
  Button,
12833
12865
  {
12834
12866
  type: "button",
@@ -12836,7 +12868,7 @@ var ChartOfAccountsForm = () => {
12836
12868
  variant: "secondary" /* secondary */,
12837
12869
  disabled: sendingForm
12838
12870
  },
12839
- "Cancel"
12871
+ stringOverrides?.cancelButton || "Cancel"
12840
12872
  ), apiError && /* @__PURE__ */ import_react141.default.createElement(
12841
12873
  RetryButton,
12842
12874
  {
@@ -12845,7 +12877,7 @@ var ChartOfAccountsForm = () => {
12845
12877
  error: "Check connection and retry in few seconds.",
12846
12878
  disabled: sendingForm
12847
12879
  },
12848
- "Retry"
12880
+ stringOverrides?.retryButton || "Retry"
12849
12881
  ), !apiError && /* @__PURE__ */ import_react141.default.createElement(
12850
12882
  SubmitButton,
12851
12883
  {
@@ -12854,7 +12886,7 @@ var ChartOfAccountsForm = () => {
12854
12886
  active: true,
12855
12887
  disabled: sendingForm
12856
12888
  },
12857
- "Save"
12889
+ stringOverrides?.saveButton || "Save"
12858
12890
  ))),
12859
12891
  apiError && /* @__PURE__ */ import_react141.default.createElement(
12860
12892
  Text,
@@ -12865,7 +12897,7 @@ var ChartOfAccountsForm = () => {
12865
12897
  apiError
12866
12898
  ),
12867
12899
  entry && /* @__PURE__ */ import_react141.default.createElement("div", { className: "Layer__chart-of-accounts__form-edit-entry" }, /* @__PURE__ */ import_react141.default.createElement(Text, { weight: "bold" /* bold */ }, entry.name), /* @__PURE__ */ import_react141.default.createElement(Text, { weight: "bold" /* bold */ }, "$", centsToDollars(entry.balance || 0))),
12868
- /* @__PURE__ */ import_react141.default.createElement("div", { className: "Layer__chart-of-accounts__form" }, /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "parent", label: "Parent", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12900
+ /* @__PURE__ */ import_react141.default.createElement("div", { className: "Layer__chart-of-accounts__form" }, /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "parent", label: stringOverrides?.parentLabel || "Parent", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12869
12901
  Select2,
12870
12902
  {
12871
12903
  options: parentOptions,
@@ -12873,7 +12905,7 @@ var ChartOfAccountsForm = () => {
12873
12905
  onChange: (sel) => changeFormData("parent", sel),
12874
12906
  disabled: sendingForm
12875
12907
  }
12876
- )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "name", label: "Name", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12908
+ )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "name", label: stringOverrides?.nameLabel || "Name", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12877
12909
  Input,
12878
12910
  {
12879
12911
  name: "name",
@@ -12884,7 +12916,7 @@ var ChartOfAccountsForm = () => {
12884
12916
  disabled: sendingForm,
12885
12917
  onChange: (e) => changeFormData("name", e.target.value)
12886
12918
  }
12887
- )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "type", label: "Type", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12919
+ )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "type", label: stringOverrides?.typeLabel || "Type", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12888
12920
  Select2,
12889
12921
  {
12890
12922
  options: LEDGER_ACCOUNT_TYPES,
@@ -12894,7 +12926,7 @@ var ChartOfAccountsForm = () => {
12894
12926
  errorMessage: form?.errors?.find((x) => x.field === "type")?.message,
12895
12927
  disabled: sendingForm || form.action === "edit" || form.data.parent !== void 0
12896
12928
  }
12897
- )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "subType", label: "Sub-Type", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12929
+ )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "subType", label: stringOverrides?.subTypeLabel || "Sub-Type", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12898
12930
  Select2,
12899
12931
  {
12900
12932
  options: form?.data.type?.value !== void 0 ? LEDGER_ACCOUNT_SUBTYPES_FOR_TYPE[form?.data.type?.value] : LEDGER_ACCOUNT_SUBTYPES,
@@ -12902,7 +12934,7 @@ var ChartOfAccountsForm = () => {
12902
12934
  onChange: (sel) => changeFormData("subType", sel),
12903
12935
  disabled: sendingForm
12904
12936
  }
12905
- )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "normality", label: "Normality", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12937
+ )), /* @__PURE__ */ import_react141.default.createElement(InputGroup, { name: "normality", label: stringOverrides?.normalityLabel || "Normality", inline: true }, /* @__PURE__ */ import_react141.default.createElement(
12906
12938
  Select2,
12907
12939
  {
12908
12940
  options: NORMALITY_OPTIONS,
@@ -12922,7 +12954,7 @@ var ChartOfAccountsForm = () => {
12922
12954
  variant: "secondary" /* secondary */,
12923
12955
  disabled: sendingForm
12924
12956
  },
12925
- "Cancel"
12957
+ stringOverrides?.cancelButton || "Cancel"
12926
12958
  ), apiError && /* @__PURE__ */ import_react141.default.createElement(
12927
12959
  RetryButton,
12928
12960
  {
@@ -12931,7 +12963,7 @@ var ChartOfAccountsForm = () => {
12931
12963
  error: "Check connection and retry in few seconds.",
12932
12964
  disabled: sendingForm
12933
12965
  },
12934
- "Retry"
12966
+ stringOverrides?.retryButton || "Retry"
12935
12967
  ), !apiError && /* @__PURE__ */ import_react141.default.createElement(
12936
12968
  SubmitButton,
12937
12969
  {
@@ -12940,16 +12972,17 @@ var ChartOfAccountsForm = () => {
12940
12972
  active: true,
12941
12973
  disabled: sendingForm
12942
12974
  },
12943
- "Save"
12975
+ stringOverrides?.saveButton || "Save"
12944
12976
  )))
12945
12977
  );
12946
12978
  };
12947
12979
 
12948
12980
  // src/components/ChartOfAccountsSidebar/ChartOfAccountsSidebar.tsx
12949
12981
  var ChartOfAccountsSidebar = ({
12950
- parentRef: _parentRef
12982
+ parentRef: _parentRef,
12983
+ stringOverrides
12951
12984
  }) => {
12952
- return /* @__PURE__ */ import_react142.default.createElement(ChartOfAccountsForm, null);
12985
+ return /* @__PURE__ */ import_react142.default.createElement(ChartOfAccountsForm, { stringOverrides });
12953
12986
  };
12954
12987
 
12955
12988
  // src/components/ChartOfAccountsTable/ChartOfAccountsTable.tsx
@@ -12959,7 +12992,8 @@ var ChartOfAccountsTable = ({
12959
12992
  containerRef,
12960
12993
  asWidget = false,
12961
12994
  withDateControl = false,
12962
- withExpandAllButton = false
12995
+ withExpandAllButton = false,
12996
+ stringOverrides
12963
12997
  }) => {
12964
12998
  const { data, isLoading, addAccount, error, isValidating, refetch, form } = (0, import_react143.useContext)(ChartOfAccountsContext);
12965
12999
  const [expandAll, setExpandAll] = (0, import_react143.useState)();
@@ -12968,7 +13002,13 @@ var ChartOfAccountsTable = ({
12968
13002
  return /* @__PURE__ */ import_react143.default.createElement(
12969
13003
  Panel,
12970
13004
  {
12971
- sidebar: /* @__PURE__ */ import_react143.default.createElement(ChartOfAccountsSidebar, { parentRef: containerRef }),
13005
+ sidebar: /* @__PURE__ */ import_react143.default.createElement(
13006
+ ChartOfAccountsSidebar,
13007
+ {
13008
+ parentRef: containerRef,
13009
+ stringOverrides: stringOverrides?.chartOfAccountsForm
13010
+ }
13011
+ ),
12972
13012
  sidebarIsOpen: Boolean(form),
12973
13013
  parentRef: containerRef
12974
13014
  },
@@ -12984,7 +13024,7 @@ var ChartOfAccountsTable = ({
12984
13024
  className: `Layer__${COMPONENT_NAME5}__title`,
12985
13025
  size: asWidget ? "secondary" /* secondary */ : "primary" /* primary */
12986
13026
  },
12987
- "Chart of Accounts"
13027
+ stringOverrides?.headerText || "Chart of Accounts"
12988
13028
  ),
12989
13029
  /* @__PURE__ */ import_react143.default.createElement(
12990
13030
  "div",
@@ -13001,10 +13041,10 @@ var ChartOfAccountsTable = ({
13001
13041
  },
13002
13042
  !expandAll || expandAll === "collapsed" ? "Expand all rows" : "Collapse all rows"
13003
13043
  )) : null,
13004
- /* @__PURE__ */ import_react143.default.createElement("div", { className: "Layer__header__actions-col" }, /* @__PURE__ */ import_react143.default.createElement(Button, { onClick: () => addAccount(), disabled: isLoading }, "Add Account"))
13044
+ /* @__PURE__ */ import_react143.default.createElement("div", { className: "Layer__header__actions-col" }, /* @__PURE__ */ import_react143.default.createElement(Button, { onClick: () => addAccount(), disabled: isLoading }, stringOverrides?.addAccountButtonText || "Add Account"))
13005
13045
  )
13006
13046
  ),
13007
- /* @__PURE__ */ import_react143.default.createElement("table", { className: "Layer__chart-of-accounts__table" }, /* @__PURE__ */ import_react143.default.createElement("thead", null, /* @__PURE__ */ import_react143.default.createElement("tr", { className: "Layer__table-row--header" }, /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__name" }, "Name"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__type" }, "Type"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__subtype Layer__mobile--hidden" }, "Sub-Type"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__balance" }, "Balance"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__actions" }))), /* @__PURE__ */ import_react143.default.createElement("tbody", null, !error && data?.accounts.map((account, idx) => {
13047
+ /* @__PURE__ */ import_react143.default.createElement("table", { className: "Layer__chart-of-accounts__table" }, /* @__PURE__ */ import_react143.default.createElement("thead", null, /* @__PURE__ */ import_react143.default.createElement("tr", { className: "Layer__table-row--header" }, /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__name" }, stringOverrides?.nameColumnHeader || "Name"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__type" }, stringOverrides?.typeColumnHeader || "Type"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__subtype Layer__mobile--hidden" }, stringOverrides?.subtypeColumnHeader || "Sub-Type"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__balance" }, stringOverrides?.balanceColumnHeader || "Balance"), /* @__PURE__ */ import_react143.default.createElement("th", { className: "Layer__table-header Layer__coa__actions" }))), /* @__PURE__ */ import_react143.default.createElement("tbody", null, !error && data?.accounts.map((account, idx) => {
13008
13048
  const currentCumulativeIndex = cumulativeIndex;
13009
13049
  cumulativeIndex = (account.sub_accounts?.length || 0) + cumulativeIndex + 1;
13010
13050
  return /* @__PURE__ */ import_react143.default.createElement(
@@ -13126,41 +13166,41 @@ var DetailsListItem = ({
13126
13166
  };
13127
13167
 
13128
13168
  // src/components/LedgerAccountEntryDetails/LedgerAccountEntryDetails.tsx
13129
- var SourceDetailView = ({ source }) => {
13169
+ var SourceDetailView = ({ source, stringOverrides }) => {
13130
13170
  switch (source.type) {
13131
13171
  case "Transaction_Ledger_Entry_Source": {
13132
13172
  const transactionSource = source;
13133
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Account name" }, transactionSource.account_name), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Date" }, /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: transactionSource.date })), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(transactionSource.amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Direction" }, transactionSource.direction), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Counterparty" }, transactionSource.counterparty));
13173
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.accountNameLabel || "Account name" }, transactionSource.account_name), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.dateLabel || "Date" }, /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: transactionSource.date })), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.amountLabel || "Amount" }, `$${centsToDollars(transactionSource.amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.directionLabel || "Direction" }, transactionSource.direction), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.counterpartyLabel || "Counterparty" }, transactionSource.counterparty));
13134
13174
  }
13135
13175
  case "Invoice_Ledger_Entry_Source": {
13136
13176
  const invoiceSource = source;
13137
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Invoice number" }, invoiceSource.invoice_number), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Recipient name" }, invoiceSource.recipient_name), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Date" }, /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: invoiceSource.date })), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(invoiceSource.amount)}`));
13177
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.invoiceNumberLabel || "Invoice number" }, invoiceSource.invoice_number), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.recipientNameLabel || "Recipient name" }, invoiceSource.recipient_name), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.dateLabel || "Date" }, /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: invoiceSource.date })), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.amountLabel || "Amount" }, `$${centsToDollars(invoiceSource.amount)}`));
13138
13178
  }
13139
13179
  case "Manual_Ledger_Entry_Source": {
13140
13180
  const manualSource = source;
13141
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Memo" }, manualSource.memo), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Created by" }, manualSource.created_by));
13181
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.memoLabel || "Memo" }, manualSource.memo), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.createdByLabel || "Created by" }, manualSource.created_by));
13142
13182
  }
13143
13183
  case "Invoice_Payment_Ledger_Entry_Source": {
13144
13184
  const invoicePaymentSource = source;
13145
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Invoice number" }, invoicePaymentSource.invoice_number), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(invoicePaymentSource.amount)}`));
13185
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.invoiceNumberLabel || "Invoice number" }, invoicePaymentSource.invoice_number), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.amountLabel || "Amount" }, `$${centsToDollars(invoicePaymentSource.amount)}`));
13146
13186
  }
13147
13187
  case "Refund_Ledger_Entry_Source": {
13148
13188
  const refundSource = source;
13149
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(refundSource.refunded_to_customer_amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Recipient name" }, refundSource.recipient_name));
13189
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.amountLabel || "Amount" }, `$${centsToDollars(refundSource.refunded_to_customer_amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.recipientNameLabel || "Recipient name" }, refundSource.recipient_name));
13150
13190
  }
13151
13191
  case "Opening_Balance_Ledger_Entry_Source": {
13152
13192
  const openingBalanceSource = source;
13153
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Account name" }, openingBalanceSource.account_name));
13193
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.accountNameLabel || "Account name" }, openingBalanceSource.account_name));
13154
13194
  }
13155
13195
  case "Payout_Ledger_Entry_Source": {
13156
13196
  const payoutSource = source;
13157
- return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Amount" }, `$${centsToDollars(payoutSource.paid_out_amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Processor" }, payoutSource.processor));
13197
+ return /* @__PURE__ */ import_react148.default.createElement(import_react148.default.Fragment, null, /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.amountLabel || "Amount" }, `$${centsToDollars(payoutSource.paid_out_amount)}`), /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.processorLabel || "Processor" }, payoutSource.processor));
13158
13198
  }
13159
13199
  default:
13160
13200
  return null;
13161
13201
  }
13162
13202
  };
13163
- var LedgerAccountEntryDetails = () => {
13203
+ var LedgerAccountEntryDetails = ({ stringOverrides }) => {
13164
13204
  const { entryData, isLoadingEntry, closeSelectedEntry, errorEntry } = (0, import_react148.useContext)(LedgerAccountsContext);
13165
13205
  const { totalDebit, totalCredit } = (0, import_react148.useMemo)(() => {
13166
13206
  let totalDebit2 = 0;
@@ -13174,10 +13214,10 @@ var LedgerAccountEntryDetails = () => {
13174
13214
  });
13175
13215
  return { totalDebit: totalDebit2, totalCredit: totalCredit2 };
13176
13216
  }, [entryData]);
13177
- return /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details" }, /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details__back-btn" }, /* @__PURE__ */ import_react148.default.createElement(BackButton, { onClick: () => closeSelectedEntry() }), /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details__title-container" }, /* @__PURE__ */ import_react148.default.createElement(Text, { weight: "bold" /* bold */ }, "Transaction details"))), /* @__PURE__ */ import_react148.default.createElement(
13217
+ return /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details" }, /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details__back-btn" }, /* @__PURE__ */ import_react148.default.createElement(BackButton, { onClick: () => closeSelectedEntry() }), /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details__title-container" }, /* @__PURE__ */ import_react148.default.createElement(Text, { weight: "bold" /* bold */ }, stringOverrides?.title || "Transaction details"))), /* @__PURE__ */ import_react148.default.createElement(
13178
13218
  DetailsList,
13179
13219
  {
13180
- title: "Transaction source",
13220
+ title: stringOverrides?.transactionSource?.header || "Transaction source",
13181
13221
  actions: /* @__PURE__ */ import_react148.default.createElement(
13182
13222
  Button,
13183
13223
  {
@@ -13189,25 +13229,32 @@ var LedgerAccountEntryDetails = () => {
13189
13229
  }
13190
13230
  )
13191
13231
  },
13192
- /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Source", isLoading: isLoadingEntry }, /* @__PURE__ */ import_react148.default.createElement(Badge, null, entryData?.source?.entity_name)),
13232
+ /* @__PURE__ */ import_react148.default.createElement(
13233
+ DetailsListItem,
13234
+ {
13235
+ label: stringOverrides?.transactionSource?.details?.sourceLabel || "Source",
13236
+ isLoading: isLoadingEntry
13237
+ },
13238
+ /* @__PURE__ */ import_react148.default.createElement(Badge, null, entryData?.source?.entity_name)
13239
+ ),
13193
13240
  entryData?.source?.display_description && /* @__PURE__ */ import_react148.default.createElement(SourceDetailView, { source: entryData?.source })
13194
13241
  ), /* @__PURE__ */ import_react148.default.createElement(
13195
13242
  DetailsList,
13196
13243
  {
13197
- title: `Journal Entry ${entryData?.id.substring(0, 5)}`,
13244
+ title: stringOverrides?.journalEntry?.header ? stringOverrides?.journalEntry?.header(entryData?.id.substring(0, 5)) : `Journal Entry ${entryData?.id.substring(0, 5)}`,
13198
13245
  className: "Layer__border-top"
13199
13246
  },
13200
- /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Entry type", isLoading: isLoadingEntry }, humanizeEnum(entryData?.entry_type ?? "")),
13201
- /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Date", isLoading: isLoadingEntry }, entryData?.entry_at && /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: entryData?.entry_at })),
13202
- /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Creation date", isLoading: isLoadingEntry }, entryData?.date && /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: entryData?.date })),
13203
- entryData?.reversal_id && /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: "Reversal", isLoading: isLoadingEntry }, entryData?.reversal_id.substring(0, 5))
13247
+ /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.journalEntry?.details?.entryTypeLabel || "Entry type", isLoading: isLoadingEntry }, humanizeEnum(entryData?.entry_type ?? "")),
13248
+ /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.journalEntry?.details?.dateLabel || "Date", isLoading: isLoadingEntry }, entryData?.entry_at && /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: entryData?.entry_at })),
13249
+ /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.journalEntry?.details?.creationDateLabel || "Creation date", isLoading: isLoadingEntry }, entryData?.date && /* @__PURE__ */ import_react148.default.createElement(DateTime, { value: entryData?.date })),
13250
+ entryData?.reversal_id && /* @__PURE__ */ import_react148.default.createElement(DetailsListItem, { label: stringOverrides?.journalEntry?.details?.reversalLabel || "Reversal", isLoading: isLoadingEntry }, entryData?.reversal_id.substring(0, 5))
13204
13251
  ), !isLoadingEntry && !errorEntry ? /* @__PURE__ */ import_react148.default.createElement("div", { className: "Layer__ledger-account__entry-details__line-items" }, /* @__PURE__ */ import_react148.default.createElement(Card, null, /* @__PURE__ */ import_react148.default.createElement(
13205
13252
  Table,
13206
13253
  {
13207
13254
  componentName: "ledger-account__entry-details",
13208
13255
  borderCollapse: "collapse"
13209
13256
  },
13210
- /* @__PURE__ */ import_react148.default.createElement(TableHead, null, /* @__PURE__ */ import_react148.default.createElement(TableRow, { rowKey: "soc-flow-head-row", isHeadRow: true }, /* @__PURE__ */ import_react148.default.createElement(TableCell, null, "Line items"), /* @__PURE__ */ import_react148.default.createElement(TableCell, null, "Debit"), /* @__PURE__ */ import_react148.default.createElement(TableCell, null, "Credit"))),
13257
+ /* @__PURE__ */ import_react148.default.createElement(TableHead, null, /* @__PURE__ */ import_react148.default.createElement(TableRow, { rowKey: "soc-flow-head-row", isHeadRow: true }, /* @__PURE__ */ import_react148.default.createElement(TableCell, null, stringOverrides?.lineItemsTable?.lineItemsColumnHeader || "Line items"), /* @__PURE__ */ import_react148.default.createElement(TableCell, null, stringOverrides?.lineItemsTable?.debitColumnHeader || "Debit"), /* @__PURE__ */ import_react148.default.createElement(TableCell, null, stringOverrides?.lineItemsTable?.creditColumnHeader || "Credit"))),
13211
13258
  /* @__PURE__ */ import_react148.default.createElement(TableBody, null, entryData?.line_items?.map((item, index) => /* @__PURE__ */ import_react148.default.createElement(
13212
13259
  TableRow,
13213
13260
  {
@@ -13223,7 +13270,7 @@ var LedgerAccountEntryDetails = () => {
13223
13270
  rowKey: "ledger-line-item-summation",
13224
13271
  variant: "summation"
13225
13272
  },
13226
- /* @__PURE__ */ import_react148.default.createElement(TableCell, { primary: true }, "Total"),
13273
+ /* @__PURE__ */ import_react148.default.createElement(TableCell, { primary: true }, stringOverrides?.lineItemsTable?.totalRowHeader || "Total"),
13227
13274
  /* @__PURE__ */ import_react148.default.createElement(TableCell, { isCurrency: true, primary: true }, totalDebit || 0),
13228
13275
  /* @__PURE__ */ import_react148.default.createElement(TableCell, { isCurrency: true, primary: true }, totalCredit || 0)
13229
13276
  ))
@@ -13348,7 +13395,8 @@ var import_classnames56 = __toESM(require("classnames"));
13348
13395
  var LedgerAccount = ({
13349
13396
  containerRef,
13350
13397
  pageSize = 15,
13351
- view
13398
+ view,
13399
+ stringOverrides
13352
13400
  }) => {
13353
13401
  const [currentPage, setCurrentPage] = (0, import_react150.useState)(1);
13354
13402
  const [initialLoad, setInitialLoad] = (0, import_react150.useState)(true);
@@ -13393,7 +13441,12 @@ var LedgerAccount = ({
13393
13441
  return /* @__PURE__ */ import_react150.default.createElement(
13394
13442
  Panel,
13395
13443
  {
13396
- sidebar: /* @__PURE__ */ import_react150.default.createElement(LedgerAccountEntryDetails, null),
13444
+ sidebar: /* @__PURE__ */ import_react150.default.createElement(
13445
+ LedgerAccountEntryDetails,
13446
+ {
13447
+ stringOverrides: stringOverrides?.ledgerEntryDetail
13448
+ }
13449
+ ),
13397
13450
  sidebarIsOpen: Boolean(selectedEntryId),
13398
13451
  parentRef: containerRef,
13399
13452
  className: "Layer__ledger-account__panel"
@@ -13420,7 +13473,7 @@ var LedgerAccount = ({
13420
13473
  },
13421
13474
  "$",
13422
13475
  centsToDollars(entry?.balance || 0)
13423
- )))), /* @__PURE__ */ import_react150.default.createElement("table", { className: "Layer__table Layer__table--hover-effect Layer__ledger-account-table" }, /* @__PURE__ */ import_react150.default.createElement("thead", null, /* @__PURE__ */ import_react150.default.createElement("tr", null, view !== "desktop" && /* @__PURE__ */ import_react150.default.createElement("th", null), view === "desktop" && /* @__PURE__ */ import_react150.default.createElement(import_react150.default.Fragment, null, /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, "Date"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, "Journal id #"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, "Source")), view !== "mobile" && /* @__PURE__ */ import_react150.default.createElement(import_react150.default.Fragment, null, /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Debit"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Credit"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Running balance")))), /* @__PURE__ */ import_react150.default.createElement("tbody", null, data?.map((x, index) => /* @__PURE__ */ import_react150.default.createElement(
13476
+ )))), /* @__PURE__ */ import_react150.default.createElement("table", { className: "Layer__table Layer__table--hover-effect Layer__ledger-account-table" }, /* @__PURE__ */ import_react150.default.createElement("thead", null, /* @__PURE__ */ import_react150.default.createElement("tr", null, view !== "desktop" && /* @__PURE__ */ import_react150.default.createElement("th", null), view === "desktop" && /* @__PURE__ */ import_react150.default.createElement(import_react150.default.Fragment, null, /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.ledgerEntriesTable?.dateColumnHeader || "Date"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.ledgerEntriesTable?.journalIdColumnHeader || "Journal id #"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.ledgerEntriesTable?.sourceColumnHeader || "Source")), view !== "mobile" && /* @__PURE__ */ import_react150.default.createElement(import_react150.default.Fragment, null, /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, stringOverrides?.ledgerEntriesTable?.debitColumnHeader || "Debit"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, stringOverrides?.ledgerEntriesTable?.creditColumnHeader || "Credit"), /* @__PURE__ */ import_react150.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, stringOverrides?.ledgerEntriesTable?.runningBalanceColumnHeader || "Running balance")))), /* @__PURE__ */ import_react150.default.createElement("tbody", null, data?.map((x, index) => /* @__PURE__ */ import_react150.default.createElement(
13424
13477
  LedgerAccountRow,
13425
13478
  {
13426
13479
  key: x.id,
@@ -13469,7 +13522,8 @@ var ChartOfAccounts = (props) => {
13469
13522
  var ChartOfAccountsContent = ({
13470
13523
  asWidget,
13471
13524
  withDateControl,
13472
- withExpandAllButton
13525
+ withExpandAllButton,
13526
+ stringOverrides
13473
13527
  }) => {
13474
13528
  const { accountId } = (0, import_react151.useContext)(LedgerAccountsContext);
13475
13529
  const [view, setView] = (0, import_react151.useState)("desktop");
@@ -13484,14 +13538,15 @@ var ChartOfAccountsContent = ({
13484
13538
  }
13485
13539
  }
13486
13540
  });
13487
- return /* @__PURE__ */ import_react151.default.createElement(Container, { name: "chart-of-accounts", ref: containerRef, asWidget }, accountId ? /* @__PURE__ */ import_react151.default.createElement(LedgerAccount, { view, containerRef }) : /* @__PURE__ */ import_react151.default.createElement(
13541
+ return /* @__PURE__ */ import_react151.default.createElement(Container, { name: "chart-of-accounts", ref: containerRef, asWidget }, accountId ? /* @__PURE__ */ import_react151.default.createElement(LedgerAccount, { view, containerRef, stringOverrides: stringOverrides?.ledgerAccount }) : /* @__PURE__ */ import_react151.default.createElement(
13488
13542
  ChartOfAccountsTable,
13489
13543
  {
13490
13544
  asWidget,
13491
13545
  withDateControl,
13492
13546
  withExpandAllButton,
13493
13547
  view,
13494
- containerRef
13548
+ containerRef,
13549
+ stringOverrides: stringOverrides?.chartOfAccountsTable
13495
13550
  }
13496
13551
  ));
13497
13552
  };
@@ -14209,7 +14264,7 @@ var JournalFormEntryLines = ({
14209
14264
  };
14210
14265
 
14211
14266
  // src/components/JournalForm/JournalForm.tsx
14212
- var JournalForm = ({ config }) => {
14267
+ var JournalForm = ({ config, stringOverrides }) => {
14213
14268
  const {
14214
14269
  form,
14215
14270
  cancelForm,
@@ -14229,7 +14284,7 @@ var JournalForm = ({ config }) => {
14229
14284
  submitForm();
14230
14285
  }
14231
14286
  },
14232
- /* @__PURE__ */ import_react157.default.createElement("div", { className: "Layer__journal__sidebar__header" }, /* @__PURE__ */ import_react157.default.createElement(Text, { size: "lg" /* lg */, weight: "bold" /* bold */, className: "title" }, "Add New Entry"), /* @__PURE__ */ import_react157.default.createElement("div", { className: "actions" }, /* @__PURE__ */ import_react157.default.createElement(
14287
+ /* @__PURE__ */ import_react157.default.createElement("div", { className: "Layer__journal__sidebar__header" }, /* @__PURE__ */ import_react157.default.createElement(Text, { size: "lg" /* lg */, weight: "bold" /* bold */, className: "title" }, stringOverrides?.header && "Add New Entry"), /* @__PURE__ */ import_react157.default.createElement("div", { className: "actions" }, /* @__PURE__ */ import_react157.default.createElement(
14233
14288
  Button,
14234
14289
  {
14235
14290
  type: "button",
@@ -14237,7 +14292,7 @@ var JournalForm = ({ config }) => {
14237
14292
  variant: "secondary" /* secondary */,
14238
14293
  disabled: sendingForm
14239
14294
  },
14240
- "Cancel"
14295
+ stringOverrides?.cancelButton || "Cancel"
14241
14296
  ), apiError && /* @__PURE__ */ import_react157.default.createElement(
14242
14297
  RetryButton,
14243
14298
  {
@@ -14246,7 +14301,7 @@ var JournalForm = ({ config }) => {
14246
14301
  error: "Check connection and retry in few seconds.",
14247
14302
  disabled: sendingForm
14248
14303
  },
14249
- "Retry"
14304
+ stringOverrides?.retryButton || "Retry"
14250
14305
  ), !apiError && /* @__PURE__ */ import_react157.default.createElement(
14251
14306
  SubmitButton,
14252
14307
  {
@@ -14255,7 +14310,7 @@ var JournalForm = ({ config }) => {
14255
14310
  active: true,
14256
14311
  disabled: sendingForm
14257
14312
  },
14258
- "Save"
14313
+ stringOverrides?.saveButton || "Save"
14259
14314
  ))),
14260
14315
  apiError && /* @__PURE__ */ import_react157.default.createElement(
14261
14316
  Text,
@@ -14321,7 +14376,7 @@ var JournalForm = ({ config }) => {
14321
14376
  variant: "secondary" /* secondary */,
14322
14377
  disabled: sendingForm
14323
14378
  },
14324
- "Cancel"
14379
+ stringOverrides?.cancelButton || "Cancel"
14325
14380
  ), apiError && /* @__PURE__ */ import_react157.default.createElement(
14326
14381
  RetryButton,
14327
14382
  {
@@ -14330,7 +14385,7 @@ var JournalForm = ({ config }) => {
14330
14385
  error: "Check connection and retry in few seconds.",
14331
14386
  disabled: sendingForm
14332
14387
  },
14333
- "Retry"
14388
+ stringOverrides?.retryButton || "Retry"
14334
14389
  ), !apiError && /* @__PURE__ */ import_react157.default.createElement(
14335
14390
  SubmitButton,
14336
14391
  {
@@ -14339,7 +14394,7 @@ var JournalForm = ({ config }) => {
14339
14394
  active: true,
14340
14395
  disabled: sendingForm
14341
14396
  },
14342
- "Save"
14397
+ stringOverrides?.saveButton || "Save"
14343
14398
  ))
14344
14399
  );
14345
14400
  };
@@ -14347,13 +14402,14 @@ var JournalForm = ({ config }) => {
14347
14402
  // src/components/JournalSidebar/JournalSidebar.tsx
14348
14403
  var JournalSidebar = ({
14349
14404
  parentRef: _parentRef,
14350
- config
14405
+ config,
14406
+ stringOverrides
14351
14407
  }) => {
14352
14408
  const { selectedEntryId } = (0, import_react158.useContext)(JournalContext);
14353
14409
  if (selectedEntryId !== "new") {
14354
14410
  return /* @__PURE__ */ import_react158.default.createElement(JournalEntryDetails, null);
14355
14411
  }
14356
- return /* @__PURE__ */ import_react158.default.createElement(JournalForm, { config });
14412
+ return /* @__PURE__ */ import_react158.default.createElement(JournalForm, { config, stringOverrides });
14357
14413
  };
14358
14414
 
14359
14415
  // src/components/JournalTable/JournalTable.tsx
@@ -14362,7 +14418,8 @@ var JournalTable = ({
14362
14418
  view,
14363
14419
  containerRef,
14364
14420
  pageSize = 15,
14365
- config
14421
+ config,
14422
+ stringOverrides
14366
14423
  }) => {
14367
14424
  const [currentPage, setCurrentPage] = (0, import_react159.useState)(1);
14368
14425
  const {
@@ -14382,12 +14439,12 @@ var JournalTable = ({
14382
14439
  return /* @__PURE__ */ import_react159.default.createElement(
14383
14440
  Panel,
14384
14441
  {
14385
- sidebar: /* @__PURE__ */ import_react159.default.createElement(JournalSidebar, { parentRef: containerRef, config }),
14442
+ sidebar: /* @__PURE__ */ import_react159.default.createElement(JournalSidebar, { parentRef: containerRef, config, stringOverrides: stringOverrides?.journalForm }),
14386
14443
  sidebarIsOpen: Boolean(selectedEntryId),
14387
14444
  parentRef: containerRef
14388
14445
  },
14389
- /* @__PURE__ */ import_react159.default.createElement(Header, { className: `Layer__${COMPONENT_NAME6}__header` }, /* @__PURE__ */ import_react159.default.createElement(Heading, { className: `Layer__${COMPONENT_NAME6}__title` }, "Journal"), /* @__PURE__ */ import_react159.default.createElement("div", { className: `Layer__${COMPONENT_NAME6}__actions` }, /* @__PURE__ */ import_react159.default.createElement(Button, { onClick: () => addEntry(), disabled: isLoading }, "Add Entry"))),
14390
- /* @__PURE__ */ import_react159.default.createElement("table", { className: "Layer__table Layer__table--hover-effect Layer__journal__table" }, /* @__PURE__ */ import_react159.default.createElement("thead", null, /* @__PURE__ */ import_react159.default.createElement("tr", null, /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, "Id"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, "Date"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, "Transaction"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, "Account"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Debit"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, "Credit"))), /* @__PURE__ */ import_react159.default.createElement("tbody", null, !error && data?.map((entry, idx) => {
14446
+ /* @__PURE__ */ import_react159.default.createElement(Header, { className: `Layer__${COMPONENT_NAME6}__header` }, /* @__PURE__ */ import_react159.default.createElement(Heading, { className: `Layer__${COMPONENT_NAME6}__title` }, stringOverrides?.componentTitle || "Journal"), /* @__PURE__ */ import_react159.default.createElement("div", { className: `Layer__${COMPONENT_NAME6}__actions` }, /* @__PURE__ */ import_react159.default.createElement(Button, { onClick: () => addEntry(), disabled: isLoading }, stringOverrides?.addEntryButton || "Add Entry"))),
14447
+ /* @__PURE__ */ import_react159.default.createElement("table", { className: "Layer__table Layer__table--hover-effect Layer__journal__table" }, /* @__PURE__ */ import_react159.default.createElement("thead", null, /* @__PURE__ */ import_react159.default.createElement("tr", null, /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.idColumnHeader || "Id"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.dateColumnHeader || "Date"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.transactionColumnHeader || "Transaction"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header" }, stringOverrides?.accountColumnHeader || "Account"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, stringOverrides?.debitColumnHeader || "Debit"), /* @__PURE__ */ import_react159.default.createElement("th", { className: "Layer__table-header Layer__table-cell--amount" }, stringOverrides?.creditColumnHeader || "Credit"))), /* @__PURE__ */ import_react159.default.createElement("tbody", null, !error && data?.map((entry, idx) => {
14391
14448
  return /* @__PURE__ */ import_react159.default.createElement(
14392
14449
  JournalRow,
14393
14450
  {
@@ -14434,7 +14491,8 @@ var Journal = (props) => {
14434
14491
  };
14435
14492
  var JournalContent = ({
14436
14493
  asWidget,
14437
- config = JOURNAL_CONFIG
14494
+ config = JOURNAL_CONFIG,
14495
+ stringOverrides
14438
14496
  }) => {
14439
14497
  const [view, setView] = (0, import_react160.useState)("desktop");
14440
14498
  const containerRef = useElementSize((_a, _b, { width }) => {
@@ -14448,7 +14506,15 @@ var JournalContent = ({
14448
14506
  }
14449
14507
  }
14450
14508
  });
14451
- return /* @__PURE__ */ import_react160.default.createElement(Container, { name: "journal", ref: containerRef, asWidget }, /* @__PURE__ */ import_react160.default.createElement(JournalTable, { view, containerRef, config }));
14509
+ return /* @__PURE__ */ import_react160.default.createElement(Container, { name: "journal", ref: containerRef, asWidget }, /* @__PURE__ */ import_react160.default.createElement(
14510
+ JournalTable,
14511
+ {
14512
+ view,
14513
+ containerRef,
14514
+ config,
14515
+ stringOverrides: stringOverrides?.journalTable
14516
+ }
14517
+ ));
14452
14518
  };
14453
14519
 
14454
14520
  // src/components/Tasks/Tasks.tsx
@@ -14896,18 +14962,21 @@ var UseTasksContext = (0, import_react167.createContext)({
14896
14962
  }
14897
14963
  });
14898
14964
  var Tasks = ({
14899
- tasksHeader,
14900
14965
  collapsable = false,
14901
14966
  defaultCollapsed = false,
14902
- collapsedWhenComplete
14967
+ collapsedWhenComplete,
14968
+ tasksHeader,
14969
+ // deprecated
14970
+ stringOverrides
14903
14971
  }) => {
14904
14972
  return /* @__PURE__ */ import_react167.default.createElement(TasksProvider, null, /* @__PURE__ */ import_react167.default.createElement(
14905
14973
  TasksComponent,
14906
14974
  {
14907
- tasksHeader,
14908
14975
  collapsable,
14909
14976
  defaultCollapsed,
14910
- collapsedWhenComplete
14977
+ collapsedWhenComplete,
14978
+ tasksHeader,
14979
+ stringOverrides
14911
14980
  }
14912
14981
  ));
14913
14982
  };
@@ -14916,10 +14985,12 @@ var TasksProvider = ({ children }) => {
14916
14985
  return /* @__PURE__ */ import_react167.default.createElement(TasksContext.Provider, { value: contextData }, children);
14917
14986
  };
14918
14987
  var TasksComponent = ({
14919
- tasksHeader,
14920
14988
  collapsable = false,
14921
14989
  defaultCollapsed = false,
14922
- collapsedWhenComplete
14990
+ collapsedWhenComplete,
14991
+ tasksHeader,
14992
+ // deprecated
14993
+ stringOverrides
14923
14994
  }) => {
14924
14995
  const { isLoading, loadedStatus, data } = (0, import_react167.useContext)(TasksContext);
14925
14996
  const allComplete = (0, import_react167.useMemo)(() => {
@@ -14942,7 +15013,7 @@ var TasksComponent = ({
14942
15013
  return /* @__PURE__ */ import_react167.default.createElement("div", { className: "Layer__tasks-component" }, /* @__PURE__ */ import_react167.default.createElement(
14943
15014
  TasksHeader,
14944
15015
  {
14945
- tasksHeader,
15016
+ tasksHeader: stringOverrides?.header || tasksHeader,
14946
15017
  collapsable,
14947
15018
  open,
14948
15019
  toggleContent: () => setOpen(!open)
@@ -15052,7 +15123,9 @@ var BookkeepingUpsellBar = ({
15052
15123
  var import_react170 = __toESM(require("react"));
15053
15124
  var import_classnames61 = __toESM(require("classnames"));
15054
15125
  var BookkeepingOverview = ({
15055
- title = "Bookkeeping overview"
15126
+ title,
15127
+ // deprecated
15128
+ stringOverrides
15056
15129
  }) => {
15057
15130
  const [pnlToggle, setPnlToggle] = (0, import_react170.useState)("revenue");
15058
15131
  const [width] = useWindowSize();
@@ -15060,16 +15133,16 @@ var BookkeepingOverview = ({
15060
15133
  View,
15061
15134
  {
15062
15135
  viewClassName: "Layer__bookkeeping-overview--view",
15063
- title,
15136
+ title: stringOverrides?.title || title || "Bookkeeping overview",
15064
15137
  withSidebar: width > 1100,
15065
- sidebar: /* @__PURE__ */ import_react170.default.createElement(TasksComponent, { tasksHeader: "Bookkeeeping Tasks" })
15138
+ sidebar: /* @__PURE__ */ import_react170.default.createElement(TasksComponent, { stringOverrides: stringOverrides?.tasks })
15066
15139
  },
15067
15140
  width <= 1100 && /* @__PURE__ */ import_react170.default.createElement(
15068
15141
  TasksComponent,
15069
15142
  {
15070
- tasksHeader: "Bookkeeeping Tasks",
15071
15143
  collapsable: true,
15072
- collapsedWhenComplete: true
15144
+ collapsedWhenComplete: true,
15145
+ stringOverrides: stringOverrides?.tasks
15073
15146
  }
15074
15147
  ),
15075
15148
  /* @__PURE__ */ import_react170.default.createElement(
@@ -15079,8 +15152,13 @@ var BookkeepingOverview = ({
15079
15152
  asWidget: true,
15080
15153
  elevated: true
15081
15154
  },
15082
- /* @__PURE__ */ import_react170.default.createElement(Header, null, /* @__PURE__ */ import_react170.default.createElement(Heading, { size: "secondary" /* secondary */ }, "Profit & Loss"), /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.DatePicker, null)),
15083
- /* @__PURE__ */ import_react170.default.createElement("div", { className: "Layer__bookkeeping-overview__summaries-row" }, /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.Summaries, null)),
15155
+ /* @__PURE__ */ import_react170.default.createElement(Header, null, /* @__PURE__ */ import_react170.default.createElement(Heading, { size: "secondary" /* secondary */ }, stringOverrides?.profitAndLoss?.header || "Profit & Loss"), /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.DatePicker, null)),
15156
+ /* @__PURE__ */ import_react170.default.createElement("div", { className: "Layer__bookkeeping-overview__summaries-row" }, /* @__PURE__ */ import_react170.default.createElement(
15157
+ ProfitAndLoss.Summaries,
15158
+ {
15159
+ stringOverrides: stringOverrides?.profitAndLoss?.summaries
15160
+ }
15161
+ )),
15084
15162
  /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.Chart, null)
15085
15163
  ),
15086
15164
  /* @__PURE__ */ import_react170.default.createElement("div", { className: "Layer__bookkeeping-overview-profit-and-loss-charts" }, /* @__PURE__ */ import_react170.default.createElement(
@@ -15108,7 +15186,14 @@ var BookkeepingOverview = ({
15108
15186
  pnlToggle !== "revenue" && "bookkeeping-overview-profit-and-loss-chart--hidden"
15109
15187
  )
15110
15188
  },
15111
- /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.DetailedCharts, { scope: "revenue", hideClose: true })
15189
+ /* @__PURE__ */ import_react170.default.createElement(
15190
+ ProfitAndLoss.DetailedCharts,
15191
+ {
15192
+ scope: "revenue",
15193
+ hideClose: true,
15194
+ stringOverrides: stringOverrides?.profitAndLoss?.detailedCharts
15195
+ }
15196
+ )
15112
15197
  ), /* @__PURE__ */ import_react170.default.createElement(
15113
15198
  Container,
15114
15199
  {
@@ -15117,7 +15202,14 @@ var BookkeepingOverview = ({
15117
15202
  pnlToggle !== "expenses" && "bookkeeping-overview-profit-and-loss-chart--hidden"
15118
15203
  )
15119
15204
  },
15120
- /* @__PURE__ */ import_react170.default.createElement(ProfitAndLoss.DetailedCharts, { scope: "expenses", hideClose: true })
15205
+ /* @__PURE__ */ import_react170.default.createElement(
15206
+ ProfitAndLoss.DetailedCharts,
15207
+ {
15208
+ scope: "expenses",
15209
+ hideClose: true,
15210
+ stringOverrides: stringOverrides?.profitAndLoss?.detailedCharts
15211
+ }
15212
+ )
15121
15213
  ))
15122
15214
  )));
15123
15215
  };
@@ -15226,7 +15318,9 @@ var AccountingOverview = ({
15226
15318
  title = "Accounting overview",
15227
15319
  enableOnboarding = false,
15228
15320
  onTransactionsToReviewClick,
15229
- middleBanner
15321
+ middleBanner,
15322
+ chartColorsList,
15323
+ stringOverrides
15230
15324
  }) => {
15231
15325
  const [pnlToggle, setPnlToggle] = (0, import_react174.useState)("revenue");
15232
15326
  return /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss, { asContainer: false }, /* @__PURE__ */ import_react174.default.createElement(View, { title, headerControls: /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss.DatePicker, null) }, enableOnboarding && /* @__PURE__ */ import_react174.default.createElement(
@@ -15234,7 +15328,12 @@ var AccountingOverview = ({
15234
15328
  {
15235
15329
  onTransactionsToReviewClick
15236
15330
  }
15237
- ), /* @__PURE__ */ import_react174.default.createElement("div", { className: "Layer__accounting-overview__summaries-row" }, /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss.Summaries, null), /* @__PURE__ */ import_react174.default.createElement(
15331
+ ), /* @__PURE__ */ import_react174.default.createElement("div", { className: "Layer__accounting-overview__summaries-row" }, /* @__PURE__ */ import_react174.default.createElement(
15332
+ ProfitAndLoss.Summaries,
15333
+ {
15334
+ stringOverrides: stringOverrides?.profitAndLoss?.summaries
15335
+ }
15336
+ ), /* @__PURE__ */ import_react174.default.createElement(
15238
15337
  TransactionToReviewCard,
15239
15338
  {
15240
15339
  usePnlDateRange: true,
@@ -15247,7 +15346,7 @@ var AccountingOverview = ({
15247
15346
  asWidget: true,
15248
15347
  elevated: true
15249
15348
  },
15250
- /* @__PURE__ */ import_react174.default.createElement(Header, null, /* @__PURE__ */ import_react174.default.createElement(Heading, { size: "secondary" /* secondary */ }, "Profit & Loss")),
15349
+ /* @__PURE__ */ import_react174.default.createElement(Header, null, /* @__PURE__ */ import_react174.default.createElement(Heading, { size: "secondary" /* secondary */ }, stringOverrides?.header || "Profit & Loss")),
15251
15350
  /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss.Chart, null)
15252
15351
  ), middleBanner && /* @__PURE__ */ import_react174.default.createElement(Container, { name: "accounting-overview-middle-banner" }, middleBanner), /* @__PURE__ */ import_react174.default.createElement("div", { className: "Layer__accounting-overview-profit-and-loss-charts" }, /* @__PURE__ */ import_react174.default.createElement(
15253
15352
  Toggle,
@@ -15274,7 +15373,15 @@ var AccountingOverview = ({
15274
15373
  pnlToggle !== "revenue" && "accounting-overview-profit-and-loss-chart--hidden"
15275
15374
  )
15276
15375
  },
15277
- /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss.DetailedCharts, { scope: "revenue", hideClose: true })
15376
+ /* @__PURE__ */ import_react174.default.createElement(
15377
+ ProfitAndLoss.DetailedCharts,
15378
+ {
15379
+ scope: "revenue",
15380
+ hideClose: true,
15381
+ stringOverrides: stringOverrides?.profitAndLoss?.detailedCharts,
15382
+ chartColorsList
15383
+ }
15384
+ )
15278
15385
  ), /* @__PURE__ */ import_react174.default.createElement(
15279
15386
  Container,
15280
15387
  {
@@ -15283,14 +15390,23 @@ var AccountingOverview = ({
15283
15390
  pnlToggle !== "expenses" && "accounting-overview-profit-and-loss-chart--hidden"
15284
15391
  )
15285
15392
  },
15286
- /* @__PURE__ */ import_react174.default.createElement(ProfitAndLoss.DetailedCharts, { scope: "expenses", hideClose: true })
15393
+ /* @__PURE__ */ import_react174.default.createElement(
15394
+ ProfitAndLoss.DetailedCharts,
15395
+ {
15396
+ scope: "expenses",
15397
+ hideClose: true,
15398
+ stringOverrides: stringOverrides?.profitAndLoss?.detailedCharts,
15399
+ chartColorsList
15400
+ }
15401
+ )
15287
15402
  ))));
15288
15403
  };
15289
15404
 
15290
15405
  // src/views/BankTransactionsWithLinkedAccounts/BankTransactionsWithLinkedAccounts.tsx
15291
15406
  var import_react175 = __toESM(require("react"));
15292
15407
  var BankTransactionsWithLinkedAccounts = ({
15293
- title = "Bank transactions",
15408
+ title,
15409
+ // deprecated
15294
15410
  elevatedLinkedAccounts = true,
15295
15411
  showLedgerBalance = true,
15296
15412
  showUnlinkItem = false,
@@ -15299,15 +15415,17 @@ var BankTransactionsWithLinkedAccounts = ({
15299
15415
  hardRefreshPnlOnCategorize = false,
15300
15416
  showDescriptions,
15301
15417
  showReceiptUploads,
15302
- mobileComponent
15418
+ mobileComponent,
15419
+ stringOverrides
15303
15420
  }) => {
15304
- return /* @__PURE__ */ import_react175.default.createElement(View, { title }, /* @__PURE__ */ import_react175.default.createElement(
15421
+ return /* @__PURE__ */ import_react175.default.createElement(View, { title: stringOverrides?.title || title || "Bank transactions" }, /* @__PURE__ */ import_react175.default.createElement(
15305
15422
  LinkedAccounts,
15306
15423
  {
15307
15424
  elevated: elevatedLinkedAccounts,
15308
15425
  showLedgerBalance,
15309
15426
  showUnlinkItem,
15310
- showBreakConnection
15427
+ showBreakConnection,
15428
+ stringOverrides: stringOverrides?.linkedAccounts
15311
15429
  }
15312
15430
  ), /* @__PURE__ */ import_react175.default.createElement(
15313
15431
  BankTransactions,
@@ -15317,7 +15435,8 @@ var BankTransactionsWithLinkedAccounts = ({
15317
15435
  showReceiptUploads,
15318
15436
  mobileComponent,
15319
15437
  categorizedOnly,
15320
- hardRefreshPnlOnCategorize
15438
+ hardRefreshPnlOnCategorize,
15439
+ stringOverrides: stringOverrides?.bankTransactions
15321
15440
  }
15322
15441
  ));
15323
15442
  };
@@ -15325,32 +15444,41 @@ var BankTransactionsWithLinkedAccounts = ({
15325
15444
  // src/views/GeneralLedger/GeneralLedger.tsx
15326
15445
  var import_react176 = __toESM(require("react"));
15327
15446
  var GeneralLedgerView = ({
15328
- title = "General Ledger"
15447
+ title,
15448
+ // deprecated
15449
+ stringOverrides
15329
15450
  }) => {
15330
15451
  const [activeTab, setActiveTab] = (0, import_react176.useState)("chartOfAccounts");
15331
- return /* @__PURE__ */ import_react176.default.createElement(ProfitAndLoss, { asContainer: false }, /* @__PURE__ */ import_react176.default.createElement(View, { title }, /* @__PURE__ */ import_react176.default.createElement(
15452
+ return /* @__PURE__ */ import_react176.default.createElement(ProfitAndLoss, { asContainer: false }, /* @__PURE__ */ import_react176.default.createElement(View, { title: stringOverrides?.title || title || "General Ledger" }, /* @__PURE__ */ import_react176.default.createElement(
15332
15453
  Toggle,
15333
15454
  {
15334
15455
  name: "general-ledger-tabs",
15335
15456
  options: [
15336
15457
  {
15337
15458
  value: "chartOfAccounts",
15338
- label: "Chart of accounts"
15459
+ label: stringOverrides?.chartOfAccountsToggleOption || "Chart of accounts"
15339
15460
  },
15340
15461
  {
15341
15462
  value: "journal",
15342
- label: "Journal"
15463
+ label: stringOverrides?.journalToggleOption || "Journal"
15343
15464
  }
15344
15465
  ],
15345
15466
  selected: activeTab,
15346
15467
  onChange: (opt) => setActiveTab(opt.target.value)
15347
15468
  }
15348
- ), /* @__PURE__ */ import_react176.default.createElement(Container, { name: "generalLedger" }, activeTab === "chartOfAccounts" ? /* @__PURE__ */ import_react176.default.createElement(ChartOfAccounts, { asWidget: true, withExpandAllButton: true }) : /* @__PURE__ */ import_react176.default.createElement(Journal, null))));
15469
+ ), /* @__PURE__ */ import_react176.default.createElement(Container, { name: "generalLedger" }, activeTab === "chartOfAccounts" ? /* @__PURE__ */ import_react176.default.createElement(
15470
+ ChartOfAccounts,
15471
+ {
15472
+ asWidget: true,
15473
+ withExpandAllButton: true,
15474
+ stringOverrides: stringOverrides?.chartOfAccounts
15475
+ }
15476
+ ) : /* @__PURE__ */ import_react176.default.createElement(Journal, { stringOverrides: stringOverrides?.journal }))));
15349
15477
  };
15350
15478
 
15351
15479
  // src/views/Reports/Reports.tsx
15352
15480
  var import_react177 = __toESM(require("react"));
15353
- var DownloadButton2 = () => {
15481
+ var DownloadButton2 = ({ stringOverrides }) => {
15354
15482
  const { dateRange } = (0, import_react177.useContext)(ProfitAndLoss.Context);
15355
15483
  const { auth, businessId, apiUrl } = useLayerContext();
15356
15484
  const [requestFailed, setRequestFailed] = (0, import_react177.useState)(false);
@@ -15387,7 +15515,7 @@ var DownloadButton2 = () => {
15387
15515
  className: "Layer__download-retry-btn",
15388
15516
  error: "Approval failed. Check connection and retry in few seconds."
15389
15517
  },
15390
- "Retry"
15518
+ stringOverrides?.retryButtonText || "Retry"
15391
15519
  ) : /* @__PURE__ */ import_react177.default.createElement(
15392
15520
  Button,
15393
15521
  {
@@ -15395,13 +15523,13 @@ var DownloadButton2 = () => {
15395
15523
  rightIcon: /* @__PURE__ */ import_react177.default.createElement(DownloadCloud_default, { size: 12 }),
15396
15524
  onClick: handleClick
15397
15525
  },
15398
- "Download"
15526
+ stringOverrides?.downloadButtonText || "Download"
15399
15527
  );
15400
15528
  };
15401
- var Reports = ({ title = "Reports" }) => {
15529
+ var Reports = ({ title, stringOverrides }) => {
15402
15530
  const containerRef = (0, import_react177.useRef)(null);
15403
15531
  const [activeTab, setActiveTab] = (0, import_react177.useState)("profitAndLoss");
15404
- return /* @__PURE__ */ import_react177.default.createElement(View, { title }, /* @__PURE__ */ import_react177.default.createElement("div", { className: "Layer__component Layer__header__actions" }, /* @__PURE__ */ import_react177.default.createElement(
15532
+ return /* @__PURE__ */ import_react177.default.createElement(View, { title: stringOverrides?.title || title || "Reports" }, /* @__PURE__ */ import_react177.default.createElement("div", { className: "Layer__component Layer__header__actions" }, /* @__PURE__ */ import_react177.default.createElement(
15405
15533
  Toggle,
15406
15534
  {
15407
15535
  name: "reports-tabs",
@@ -15416,26 +15544,38 @@ var Reports = ({ title = "Reports" }) => {
15416
15544
  selected: activeTab,
15417
15545
  onChange: (opt) => setActiveTab(opt.target.value)
15418
15546
  }
15419
- )), /* @__PURE__ */ import_react177.default.createElement(Container, { name: "reports", ref: containerRef }, /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss, { asContainer: false }, /* @__PURE__ */ import_react177.default.createElement(ReportsPanel, { containerRef, openReport: activeTab }))));
15547
+ )), /* @__PURE__ */ import_react177.default.createElement(Container, { name: "reports", ref: containerRef }, /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss, { asContainer: false }, /* @__PURE__ */ import_react177.default.createElement(ReportsPanel, { containerRef, openReport: activeTab, stringOverrides }))));
15420
15548
  };
15421
- var ReportsPanel = ({ containerRef, openReport }) => {
15549
+ var ReportsPanel = ({ containerRef, openReport, stringOverrides }) => {
15422
15550
  const { sidebarScope } = (0, import_react177.useContext)(ProfitAndLoss.Context);
15423
15551
  return /* @__PURE__ */ import_react177.default.createElement(import_react177.default.Fragment, null, openReport === "profitAndLoss" && /* @__PURE__ */ import_react177.default.createElement(
15424
15552
  View,
15425
15553
  {
15426
15554
  type: "panel",
15427
- headerControls: /* @__PURE__ */ import_react177.default.createElement(import_react177.default.Fragment, null, /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss.DatePicker, null), /* @__PURE__ */ import_react177.default.createElement(DownloadButton2, null))
15555
+ headerControls: /* @__PURE__ */ import_react177.default.createElement(import_react177.default.Fragment, null, /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss.DatePicker, null), /* @__PURE__ */ import_react177.default.createElement(DownloadButton2, { stringOverrides: stringOverrides?.downloadButton }))
15428
15556
  },
15429
15557
  /* @__PURE__ */ import_react177.default.createElement(
15430
15558
  Panel,
15431
15559
  {
15432
- sidebar: /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss.DetailedCharts, { showDatePicker: false }),
15560
+ sidebar: /* @__PURE__ */ import_react177.default.createElement(
15561
+ ProfitAndLoss.DetailedCharts,
15562
+ {
15563
+ showDatePicker: false,
15564
+ stringOverrides: stringOverrides?.profitAndLoss?.detailedCharts
15565
+ }
15566
+ ),
15433
15567
  sidebarIsOpen: Boolean(sidebarScope),
15434
15568
  parentRef: containerRef
15435
15569
  },
15436
- /* @__PURE__ */ import_react177.default.createElement(ProfitAndLoss.Table, { asContainer: false })
15570
+ /* @__PURE__ */ import_react177.default.createElement(
15571
+ ProfitAndLoss.Table,
15572
+ {
15573
+ asContainer: false,
15574
+ stringOverrides: stringOverrides?.profitAndLoss?.table
15575
+ }
15576
+ )
15437
15577
  )
15438
- ), openReport === "balanceSheet" && /* @__PURE__ */ import_react177.default.createElement(BalanceSheet, null), openReport === "statementOfCashFlow" && /* @__PURE__ */ import_react177.default.createElement(StatementOfCashFlow, null));
15578
+ ), openReport === "balanceSheet" && /* @__PURE__ */ import_react177.default.createElement(BalanceSheet, { stringOverrides: stringOverrides?.balanceSheet }), openReport === "statementOfCashFlow" && /* @__PURE__ */ import_react177.default.createElement(StatementOfCashFlow, { stringOverrides: stringOverrides?.statementOfCashflow }));
15439
15579
  };
15440
15580
 
15441
15581
  // src/components/ProfitAndLossView/ProfitAndLossView.tsx
@@ -15447,23 +15587,30 @@ var ProfitAndLossView = (props) => {
15447
15587
  };
15448
15588
  var ProfitAndLossPanel = ({
15449
15589
  containerRef,
15590
+ stringOverrides,
15450
15591
  ...props
15451
15592
  }) => {
15452
15593
  const { sidebarScope } = (0, import_react178.useContext)(ProfitAndLoss.Context);
15453
15594
  return /* @__PURE__ */ import_react178.default.createElement(
15454
15595
  Panel,
15455
15596
  {
15456
- sidebar: /* @__PURE__ */ import_react178.default.createElement(ProfitAndLossDetailedCharts, null),
15597
+ sidebar: /* @__PURE__ */ import_react178.default.createElement(
15598
+ ProfitAndLossDetailedCharts,
15599
+ {
15600
+ stringOverrides: stringOverrides?.profitAndLossDetailedCharts
15601
+ }
15602
+ ),
15457
15603
  sidebarIsOpen: Boolean(sidebarScope),
15458
15604
  parentRef: containerRef
15459
15605
  },
15460
- /* @__PURE__ */ import_react178.default.createElement(Header, { className: `Layer__${COMPONENT_NAME7}__header` }, /* @__PURE__ */ import_react178.default.createElement(Heading, { className: "Layer__profit-and-loss__title" }, "Profit & Loss")),
15461
- /* @__PURE__ */ import_react178.default.createElement(Components, { ...props })
15606
+ /* @__PURE__ */ import_react178.default.createElement(Header, { className: `Layer__${COMPONENT_NAME7}__header` }, /* @__PURE__ */ import_react178.default.createElement(Heading, { className: "Layer__profit-and-loss__title" }, stringOverrides?.header || "Profit & Loss")),
15607
+ /* @__PURE__ */ import_react178.default.createElement(Components, { stringOverrides, ...props })
15462
15608
  );
15463
15609
  };
15464
15610
  var Components = ({
15465
15611
  hideChart = false,
15466
- hideTable = false
15612
+ hideTable = false,
15613
+ stringOverrides
15467
15614
  }) => {
15468
15615
  const { error, isLoading, isValidating, refetch } = (0, import_react178.useContext)(
15469
15616
  ProfitAndLoss.Context
@@ -15486,14 +15633,26 @@ var Components = ({
15486
15633
  className: `Layer__${COMPONENT_NAME7}__chart_with_summaries__summary-col`
15487
15634
  },
15488
15635
  /* @__PURE__ */ import_react178.default.createElement(ProfitAndLoss.DatePicker, null),
15489
- /* @__PURE__ */ import_react178.default.createElement(ProfitAndLoss.Summaries, { vertical: true, actionable: true })
15636
+ /* @__PURE__ */ import_react178.default.createElement(
15637
+ ProfitAndLoss.Summaries,
15638
+ {
15639
+ vertical: true,
15640
+ actionable: true,
15641
+ stringOverrides: stringOverrides?.profitAndLossSummaries
15642
+ }
15643
+ )
15490
15644
  ), /* @__PURE__ */ import_react178.default.createElement(
15491
15645
  "div",
15492
15646
  {
15493
15647
  className: `Layer__${COMPONENT_NAME7}__chart_with_summaries__chart-col`
15494
15648
  },
15495
15649
  /* @__PURE__ */ import_react178.default.createElement(ProfitAndLoss.Chart, null)
15496
- )), !hideTable && /* @__PURE__ */ import_react178.default.createElement(ProfitAndLoss.Table, null));
15650
+ )), !hideTable && /* @__PURE__ */ import_react178.default.createElement(
15651
+ ProfitAndLoss.Table,
15652
+ {
15653
+ stringOverrides: stringOverrides?.profitAndLossTable
15654
+ }
15655
+ ));
15497
15656
  };
15498
15657
  // Annotate the CommonJS export names for ESM import in node:
15499
15658
  0 && (module.exports = {