@swan-io/shared-business 13.7.9 → 13.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swan-io/shared-business",
3
- "version": "13.7.9",
3
+ "version": "13.7.11",
4
4
  "engines": {
5
5
  "node": ">22.12.0"
6
6
  },
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "license": "MIT",
27
27
  "peerDependencies": {
28
- "@swan-io/lake": "13.7.9"
28
+ "@swan-io/lake": "13.7.11"
29
29
  },
30
30
  "dependencies": {
31
31
  "@formatjs/intl": "^4.1.2",
@@ -50,6 +50,6 @@
50
50
  "@types/react-dom": "^19.2.3",
51
51
  "@types/react-native": "^0.72.8",
52
52
  "type-fest": "^5.4.3",
53
- "@swan-io/lake": "13.7.9"
53
+ "@swan-io/lake": "13.7.11"
54
54
  }
55
55
  }
@@ -25,7 +25,7 @@ const styles = StyleSheet.create({
25
25
  closingBalanceRow: {
26
26
  ...getTextStyle("sans", 12),
27
27
  backgroundColor: colors.gray[50],
28
- width: "50%",
28
+ width: "55%",
29
29
  },
30
30
  flexGrow: {
31
31
  flexGrow: 1,
@@ -68,5 +68,5 @@ const styles = StyleSheet.create({
68
68
  });
69
69
  export const AccountStatementAnnualFees = ({ annualFeeStatement, language, }) => {
70
70
  const t = useTranslation(language);
71
- return (_jsxs(Box, { style: styles.container, children: [_jsx(Box, { style: styles.flexGrow, children: _jsx(Text, { style: styles.feeStatementTitle, children: t("accountStatement.feeStatement") }) }), _jsx(Space, { height: 24 }), _jsx(Box, { style: styles.dateContainer, children: _jsxs(Text, { style: styles.dateText, children: [t("accountStatement.from"), " ", _jsx(Text, { style: styles.dateBold, children: annualFeeStatement.openingDate }), " ", t("accountStatement.to"), " ", _jsx(Text, { style: styles.dateBold, children: annualFeeStatement.closingDate })] }) }), _jsx(Space, { height: 8 }), _jsxs(Box, { style: styles.headerRow, direction: "row", justifyContent: "spaceBetween", children: [_jsx(Text, { style: [styles.headerText, { width: "60%" }], children: t("accountStatement.feeType") }), _jsx(Text, { style: styles.headerText, children: t("accountStatement.operationCount") }), _jsx(Text, { style: styles.headerText, children: t("accountStatement.total") })] }), _jsx(Space, { height: 4 }), annualFeeStatement.feeOperations.map((feeOperation, index) => (_jsxs(Box, { direction: "row", children: [_jsx(Text, { style: [styles.operationText, { width: "68%" }], children: feeOperation.label }), _jsx(Text, { style: [styles.operationText, { width: "20%" }], children: feeOperation.count }), _jsx(Text, { style: styles.operationText, children: feeOperation.total.value })] }, index))), _jsx(Space, { height: 32 }), _jsx(Box, { children: _jsx(Box, { direction: "row", justifyContent: "end", children: _jsxs(Box, { direction: "row", alignItems: "center", justifyContent: "spaceBetween", style: styles.closingBalanceRow, children: [_jsx(Text, { style: [styles.row, { width: "22%" }], children: t("accountStatement.total") }), _jsx(Text, { style: styles.totalAmount, children: annualFeeStatement.operationCount }), _jsx(Box, { style: styles.row }), _jsx(Text, { style: styles.totalAmount, children: annualFeeStatement.total.value })] }) }) })] }));
71
+ return (_jsxs(Box, { style: styles.container, children: [_jsx(Box, { style: styles.flexGrow, children: _jsx(Text, { style: styles.feeStatementTitle, children: t("accountStatement.feeStatement") }) }), _jsx(Space, { height: 24 }), _jsx(Box, { style: styles.dateContainer, children: _jsxs(Text, { style: styles.dateText, children: [t("accountStatement.from"), " ", _jsx(Text, { style: styles.dateBold, children: annualFeeStatement.openingDate }), " ", t("accountStatement.to"), " ", _jsx(Text, { style: styles.dateBold, children: annualFeeStatement.closingDate })] }) }), _jsx(Space, { height: 8 }), _jsxs(Box, { style: styles.headerRow, direction: "row", justifyContent: "spaceBetween", children: [_jsx(Text, { style: [styles.headerText, { width: "60%" }], children: t("accountStatement.feeType") }), _jsx(Text, { style: styles.headerText, children: t("accountStatement.operationCount") }), _jsx(Text, { style: styles.headerText, children: t("accountStatement.total") })] }), _jsx(Space, { height: 4 }), annualFeeStatement.feeOperations.map((feeOperation, index) => (_jsxs(Box, { direction: "row", children: [_jsx(Text, { style: [styles.operationText, { width: "68%" }], children: feeOperation.label }), _jsx(Text, { style: [styles.operationText, { width: "20%" }], children: feeOperation.count }), _jsx(Text, { style: styles.operationText, children: feeOperation.total.value })] }, index))), _jsx(Space, { height: 32 }), _jsx(Box, { children: _jsx(Box, { direction: "row", justifyContent: "end", children: _jsxs(Box, { direction: "row", alignItems: "center", justifyContent: "spaceBetween", style: styles.closingBalanceRow, children: [_jsx(Text, { style: [styles.row, { width: "30%" }], children: t("accountStatement.total") }), _jsx(Text, { style: styles.totalAmount, children: annualFeeStatement.operationCount }), _jsx(Box, { style: styles.row }), _jsx(Text, { style: styles.totalAmount, children: annualFeeStatement.total.value })] }) }) })] }));
72
72
  };
@@ -40,7 +40,7 @@ type Props<Purpose extends string> = {
40
40
  label: string;
41
41
  description: string;
42
42
  purposeDetails?: string;
43
- }>;
43
+ } | undefined>;
44
44
  uploadFile?: (config: UploadFileInput<UploadOutput>) => Future<Result<Response<string>, NetworkError | TimeoutError>>;
45
45
  onChange?: (documents: Document<Purpose>[]) => void;
46
46
  onRemoveFile?: (file: SwanFile) => Future<Result<unknown, unknown>>;
@@ -50,5 +50,7 @@ type Props<Purpose extends string> = {
50
50
  getPurposeMetadata?: (purose: Purpose) => PurposeMetadata | undefined;
51
51
  readonlyDocumentPurposes?: Purpose[];
52
52
  };
53
+ export declare const getSupportingDocumentPurposeLabel: (purpose: string) => string;
54
+ export declare const getSupportingDocumentPurposeDescriptionLabel: (purpose: string) => string;
53
55
  export declare const SupportingDocumentCollection: <Purpose extends string>({ ref, documents, generateUpload, uploadFile, requiredDocumentPurposes, templateLanguage, status, onChange, onRemoveFile, showIds, readOnly, getPurposeMetadata, readonlyDocumentPurposes, }: Props<Purpose>) => import("react/jsx-runtime").JSX.Element;
54
56
  export {};
@@ -15,7 +15,7 @@ import { badStatusToError, Request } from "@swan-io/request";
15
15
  import { Fragment, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
16
16
  import { StyleSheet } from "react-native";
17
17
  import { match } from "ts-pattern";
18
- import { locale, t } from "../utils/i18n";
18
+ import { isTranslationKey, locale, t } from "../utils/i18n";
19
19
  import { FilesUploader } from "./FilesUploader";
20
20
  import { LakeModal } from "./LakeModal";
21
21
  const ACCEPTED_FORMATS = ["application/pdf", "image/png", "image/jpeg", "image/heic"];
@@ -42,6 +42,14 @@ const getSupportLink = (language) => match(language)
42
42
  .with("es", () => "https://support.swan.io/hc/en-150/articles/22544703221021--Proof-of-registration-for-Spanish-companies")
43
43
  .with("nl", () => "https://support.swan.io/hc/en-150/articles/22543228421277--Proof-of-registration-for-Dutch-companies")
44
44
  .otherwise(() => "https://support.swan.io/hc/en-150/articles/22620756787869-Proof-of-company-registration");
45
+ export const getSupportingDocumentPurposeLabel = (purpose) => {
46
+ const key = `supportingDocuments.purpose.${purpose}`;
47
+ return isTranslationKey(key) ? t(key) : purpose;
48
+ };
49
+ export const getSupportingDocumentPurposeDescriptionLabel = (purpose) => {
50
+ const key = `supportingDocuments.purpose.${purpose}.description`;
51
+ return isTranslationKey(key) ? t(key) : "";
52
+ };
45
53
  export const SupportingDocumentCollection = ({ ref, documents, generateUpload, uploadFile, requiredDocumentPurposes, templateLanguage = locale.language, status, onChange, onRemoveFile, showIds = false, readOnly = false, getPurposeMetadata, readonlyDocumentPurposes = [], }) => {
46
54
  const [showPowerOfAttorneyModal, setShowPowerOfAttorneyModal] = useState(false);
47
55
  const [showSwornStatementModal, setShowSwornStatementModal] = useState(false);
@@ -121,9 +129,9 @@ export const SupportingDocumentCollection = ({ ref, documents, generateUpload, u
121
129
  return true;
122
130
  });
123
131
  return (_jsxs(Form, { children: [showableDocumentPurposes.map(({ purpose, files, areAllDocumentsValidated, isRequired }) => {
124
- var _a;
132
+ var _a, _b, _c, _d, _e, _f;
125
133
  const metadata = getPurposeMetadata === null || getPurposeMetadata === void 0 ? void 0 : getPurposeMetadata(purpose);
126
- return (_jsxs(Fragment, { children: [_jsx(LakeLabel, { label: requiredDocumentPurposes[purpose].label, description: (_a = requiredDocumentPurposes[purpose].purposeDetails) !== null && _a !== void 0 ? _a : requiredDocumentPurposes[purpose].description, render: () => (_jsxs(_Fragment, { children: [_jsxs(Box, { direction: "row", children: [_jsx(Box, { direction: "row", children: isNotNullish(metadata) ? (purpose === "CompanyRegistration" ? (_jsxs(_Fragment, { children: [_jsx(LakeButton, { size: "small", mode: "secondary", icon: "question-circle-regular", onPress: () => window.open(getSupportLink(locale.language)), ariaLabel: t("supportingDocuments.help.howToSendAGoodDocument"), children: t("supportingDocuments.help.howToSendAGoodDocument") }), _jsx(Space, { width: 8 })] })) : (_jsxs(_Fragment, { children: [_jsx(Help, { type: "button", label: metadata.title, onPress: () => setCurrentMetadata(metadata) }), _jsx(Space, { width: 8 })] }))) : (match(purpose)
134
+ return (_jsxs(Fragment, { children: [_jsx(LakeLabel, { label: (_b = (_a = requiredDocumentPurposes[purpose]) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : getSupportingDocumentPurposeLabel(purpose), description: (_f = (_d = (_c = requiredDocumentPurposes[purpose]) === null || _c === void 0 ? void 0 : _c.purposeDetails) !== null && _d !== void 0 ? _d : (_e = requiredDocumentPurposes[purpose]) === null || _e === void 0 ? void 0 : _e.description) !== null && _f !== void 0 ? _f : getSupportingDocumentPurposeDescriptionLabel(purpose), render: () => (_jsxs(_Fragment, { children: [_jsxs(Box, { direction: "row", children: [_jsx(Box, { direction: "row", children: isNotNullish(metadata) ? (purpose === "CompanyRegistration" ? (_jsxs(_Fragment, { children: [_jsx(LakeButton, { size: "small", mode: "secondary", icon: "question-circle-regular", onPress: () => window.open(getSupportLink(locale.language)), ariaLabel: t("supportingDocuments.help.howToSendAGoodDocument"), children: t("supportingDocuments.help.howToSendAGoodDocument") }), _jsx(Space, { width: 8 })] })) : (_jsxs(_Fragment, { children: [_jsx(Help, { type: "button", label: metadata.title, onPress: () => setCurrentMetadata(metadata) }), _jsx(Space, { width: 8 })] }))) : (match(purpose)
127
135
  .with("CompanyRegistration", () => (_jsx(LakeButton, { size: "small", mode: "secondary", icon: "question-circle-regular", onPress: () => window.open(getSupportLink(locale.language)), ariaLabel: t("supportingDocuments.help.howToSendAGoodDocument"), children: t("supportingDocuments.help.howToSendAGoodDocument") })))
128
136
  .otherwise(() => null)) }), match(purpose)
129
137
  .with("PowerOfAttorney", () => (_jsx(Help, { type: "button", icon: "arrow-down-filled", label: t("supportingDocuments.help.downloadTemplate"), onPress: () => setShowPowerOfAttorneyModal(true) })))