@powerhousedao/design-system 1.7.2 → 1.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"useFormInputs.js","sources":["../../../src/rwa/hooks/useFormInputs.tsx"],"sourcesContent":["import { DateTimeLocalInput } from \"@/connect\";\nimport {\n Account,\n allGroupTransactionTypes,\n assetGroupTransactions,\n feesTransactions,\n FeeTransactionsTable,\n formatDateForDisplay,\n FormInputsByTableName,\n groupTransactionTypeLabels,\n handleTableDatum,\n makeFixedIncomeOptionLabel,\n Operation,\n RWANumberInput,\n RWATableSelect,\n RWATableTextInput,\n TableItemType,\n TableName,\n tableNames,\n TransactionReference,\n UnitPrice,\n useEditorContext,\n useModal,\n} from \"@/rwa\";\nimport { ReactElement, useCallback, useMemo } from \"react\";\nimport {\n Control,\n FormState,\n UseFormRegister,\n UseFormWatch,\n} from \"react-hook-form\";\nimport { CashBalanceChange } from \"../components/table/transactions/cash-balance-change\";\n\ntype Input = {\n label: string;\n Input: () => string | React.JSX.Element;\n inputLabel?: string | null;\n};\n\ntype Props = {\n tableName: TableName;\n tableItem: TableItemType<TableName> | undefined | null;\n operation: Operation;\n formState: FormState<FormInputsByTableName[TableName]>;\n register: UseFormRegister<FormInputsByTableName[TableName]>;\n watch: UseFormWatch<FormInputsByTableName[TableName]>;\n control: Control<FormInputsByTableName[TableName]>;\n};\nexport function useFormInputs(props: Props): {\n inputs: Input[];\n additionalInputs?: ReactElement;\n} {\n const {\n tableName,\n operation,\n formState: _formState,\n tableItem: _tableItem,\n register: _register,\n watch: _watch,\n control: _control,\n } = props;\n const {\n fixedIncomeTypes,\n spvs,\n serviceProviderFeeTypes,\n accounts,\n fixedIncomes,\n } = useEditorContext();\n const { showModal } = useModal();\n\n const showCreateItemModal = useCallback(\n (tableName: TableName) => () => {\n showModal(\"createItem\", { tableName });\n },\n [showModal],\n );\n\n return useMemo(() => {\n switch (tableName) {\n case tableNames.ASSET: {\n const tableItem = _tableItem as TableItemType<\"ASSET\"> | null;\n type Payload = FormInputsByTableName[\"ASSET\"];\n const register = _register as UseFormRegister<Payload>;\n const watch = _watch as UseFormWatch<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n const control = _control as Control<Payload>;\n const derivedInputsToDisplay =\n operation !== \"create\" && !!tableItem\n ? [\n {\n label: \"Notional\",\n Input: () => <>{handleTableDatum(tableItem.notional)}</>,\n },\n {\n label: \"Purchase Date\",\n Input: () => <>{handleTableDatum(tableItem.purchaseDate)}</>,\n },\n {\n label: \"Purchase Price\",\n Input: () => (\n <>{handleTableDatum(tableItem.purchasePrice, 6)}</>\n ),\n },\n {\n label: \"Purchase Proceeds\",\n Input: () => (\n <>{handleTableDatum(tableItem.purchaseProceeds)}</>\n ),\n },\n ]\n : [];\n\n const maturityInputValue =\n operation === \"view\" && tableItem\n ? tableItem.maturity\n : watch(\"maturity\") || tableItem?.maturity;\n\n const inputs = [\n {\n label: \"Asset Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Asset name is required\",\n })}\n aria-invalid={errors.name ? \"true\" : \"false\"}\n errorMessage={errors.name?.message}\n inputClassName=\"text-left\"\n placeholder=\"E.g. My Asset\"\n />\n ),\n },\n {\n label: \"CUSIP\",\n Input: () =>\n operation === \"view\" ? (\n (tableItem?.CUSIP ?? \"Not available\")\n ) : (\n <RWATableTextInput\n {...register(\"CUSIP\", {\n maxLength: {\n value: 9,\n message: \"CUSIP cannot be longer than 9 characters\",\n },\n minLength: {\n value: 9,\n message: \"CUSIP cannot be shorter than 9 characters\",\n },\n pattern: {\n value: /^[a-zA-Z0-9]*$/,\n message: \"CUSIP must be alphanumeric\",\n },\n })}\n aria-invalid={errors.CUSIP ? \"true\" : \"false\"}\n errorMessage={errors.CUSIP?.message}\n placeholder=\"E.g. A2345B789\"\n />\n ),\n },\n {\n label: \"ISIN\",\n Input: () =>\n operation === \"view\" ? (\n (tableItem?.ISIN ?? \"Not available\")\n ) : (\n <RWATableTextInput\n {...register(\"ISIN\", {\n maxLength: {\n value: 12,\n message: \"ISIN cannot be longer than 12 characters\",\n },\n minLength: {\n value: 12,\n message: \"ISIN cannot be shorter than 12 characters\",\n },\n pattern: {\n value: /^[a-zA-Z0-9]*$/,\n message: \"ISIN must be alphanumeric\",\n },\n })}\n aria-invalid={errors.ISIN ? \"true\" : \"false\"}\n errorMessage={errors.ISIN?.message}\n placeholder=\"E.g. 123456789ABC\"\n />\n ),\n },\n {\n label: \"Maturity\",\n Input: () => (\n <DateTimeLocalInput\n {...register(\"maturity\", {\n disabled: operation === \"view\",\n setValueAs: (value) => {\n if (value === \"\") return null;\n return value as string;\n },\n })}\n inputType=\"date\"\n name=\"maturity\"\n />\n ),\n inputLabel: maturityInputValue\n ? formatDateForDisplay(maturityInputValue, true)\n : null,\n },\n {\n label: \"Asset Type\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ASSET\"),\n label: \"Create Fixed Income Type\",\n }}\n aria-invalid={errors.fixedIncomeTypeId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.fixedIncomeTypeId?.message}\n name=\"fixedIncomeTypeId\"\n options={fixedIncomeTypes.map((t) => ({\n ...t,\n value: t.id,\n label: t.name,\n }))}\n rules={{ required: \"Asset type is required\" }}\n />\n ),\n },\n {\n label: \"SPV\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"SPV\"),\n label: \"Create SPV\",\n }}\n aria-invalid={errors.spvId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.spvId?.message}\n name=\"spvId\"\n options={spvs.map((t) => ({\n ...t,\n value: t.id,\n label: t.name,\n }))}\n rules={{ required: \"SPV is required\" }}\n />\n ),\n },\n ...derivedInputsToDisplay,\n ];\n\n return { inputs };\n }\n case tableNames.TRANSACTION: {\n type Payload = FormInputsByTableName[\"TRANSACTION\"];\n const register = _register as UseFormRegister<Payload>;\n const watch = _watch as UseFormWatch<Payload>;\n const { errors } = _formState as FormState<Payload>;\n const control = _control as Control<Payload>;\n const type = watch(\"type\");\n const entryTimeInputValue =\n watch(\"entryTime\") ?? new Date().toISOString();\n const isFeesTransaction = !!type && feesTransactions.includes(type);\n const isAssetTransaction =\n !!type && assetGroupTransactions.includes(type);\n const canHaveTransactionFees = !isFeesTransaction;\n const transactionTypeOptions = allGroupTransactionTypes.map((type) => ({\n label: groupTransactionTypeLabels[type],\n value: type,\n }));\n const fixedIncomeOptions = fixedIncomes.map((fixedIncome) => ({\n label: makeFixedIncomeOptionLabel(fixedIncome),\n value: fixedIncome.id,\n }));\n const serviceProviderFeeTypeOptions = serviceProviderFeeTypes.map(\n (spft) => ({\n label: `${spft.name} — ${spft.feeType} — ${accounts.find((account) => account.id === spft.accountId)?.reference}`,\n value: spft.id,\n }),\n );\n\n const inputs = [\n {\n label: \"Transaction Type\",\n Input: () => (\n <RWATableSelect\n aria-invalid={errors.type ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.type?.message}\n name=\"type\"\n options={transactionTypeOptions}\n rules={{\n required: \"Transaction type is required\",\n }}\n />\n ),\n },\n {\n label: \"Entry Time\",\n Input: () => (\n <DateTimeLocalInput\n {...register(\"entryTime\", {\n required: true,\n disabled: operation === \"view\",\n })}\n name=\"entryTime\"\n />\n ),\n inputLabel: entryTimeInputValue\n ? formatDateForDisplay(new Date(entryTimeInputValue))\n : null,\n },\n isFeesTransaction\n ? {\n label: \"Service Provider\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"SERVICE_PROVIDER_FEE_TYPE\"),\n label: \"Add Service Provider\",\n }}\n control={control}\n disabled={operation === \"view\"}\n name=\"serviceProviderFeeTypeId\"\n options={serviceProviderFeeTypeOptions}\n />\n ),\n }\n : null,\n isAssetTransaction\n ? {\n label: \"Asset name\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ASSET\"),\n label: \"Create Asset\",\n }}\n aria-invalid={errors.type ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.type?.message}\n name=\"fixedIncomeId\"\n options={fixedIncomeOptions}\n rules={{\n required: \"Asset name is required\",\n }}\n />\n ),\n }\n : undefined,\n isAssetTransaction\n ? {\n label: \"Quantity\",\n Input: () => (\n <RWANumberInput\n aria-invalid={errors.fixedIncomeAmount ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.fixedIncomeAmount?.message}\n name=\"fixedIncomeAmount\"\n placeholder=\"E.g. 1,000.00\"\n rules={{\n required: \"Quantity is required\",\n validate: {\n positive: (value) =>\n (!!value && Number(value) > 0) ||\n \"Asset proceeds must be greater than zero\",\n },\n }}\n />\n ),\n }\n : undefined,\n {\n label: isAssetTransaction ? \"Asset Proceeds\" : \"Cash Amount\",\n Input: () => (\n <>\n <RWANumberInput\n aria-invalid={errors.cashAmount ? \"true\" : \"false\"}\n control={control}\n currency=\"USD\"\n disabled={operation === \"view\"}\n errorMessage={errors.cashAmount?.message}\n name=\"cashAmount\"\n placeholder=\"E.g. $1,000.00\"\n rules={{\n required: \"Asset proceeds is required\",\n validate: {\n positive: (value) =>\n (!!value && Number(value) > 0) ||\n \"Asset proceeds must be greater than zero\",\n },\n }}\n />\n {isAssetTransaction ? (\n <UnitPrice\n control={control}\n isViewOnly={operation === \"view\"}\n />\n ) : null}\n </>\n ),\n },\n {\n label: \"Transaction reference\",\n Input: () => (\n <TransactionReference\n {...register(\"txRef\", {\n disabled: operation === \"view\",\n })}\n aria-invalid={errors.txRef ? \"true\" : \"false\"}\n control={control}\n errorMessage={errors.txRef?.message}\n placeholder=\"E.g. 0x123...\"\n />\n ),\n },\n ].filter(Boolean);\n\n const additionalInputs = (\n <>\n <FeeTransactionsTable\n canHaveTransactionFees={canHaveTransactionFees}\n control={control}\n errors={errors}\n isViewOnly={operation === \"view\"}\n serviceProviderFeeTypeOptions={serviceProviderFeeTypeOptions}\n serviceProviderFeeTypes={serviceProviderFeeTypes}\n showCreateServiceProviderFeeTypeModal={showCreateItemModal(\n \"SERVICE_PROVIDER_FEE_TYPE\",\n )}\n />\n <CashBalanceChange control={control} />\n </>\n );\n\n return { inputs, additionalInputs };\n }\n case tableNames.ACCOUNT: {\n type Payload = FormInputsByTableName[\"ACCOUNT\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n const inputs = [\n {\n label: \"Account Label\",\n Input: () => (\n <RWATableTextInput\n {...register(\"label\", {\n disabled: operation === \"view\",\n required: \"Account label is required\",\n })}\n aria-invalid={\n errors.label?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.label?.message}\n placeholder=\"E.g. My Label\"\n />\n ),\n },\n {\n label: \"Account Reference\",\n Input: () => (\n <RWATableTextInput\n {...register(\"reference\", {\n disabled: operation === \"view\",\n required: \"Account reference is required\",\n })}\n aria-invalid={\n errors.reference?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.reference?.message}\n placeholder=\"E.g. bank account number or ETH address\"\n />\n ),\n },\n ];\n return { inputs };\n }\n case tableNames.SPV: {\n type Payload = FormInputsByTableName[\"SPV\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n\n const inputs = [\n {\n label: \"SPV name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"SPV name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My SPV name\"\n />\n ),\n },\n ];\n\n return { inputs };\n }\n case tableNames.FIXED_INCOME_TYPE: {\n type Payload = FormInputsByTableName[\"FIXED_INCOME_TYPE\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n\n const inputs = [\n {\n label: \"Fixed Income Type Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Fixed Income Type name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Fixed Income Type name\"\n />\n ),\n },\n ];\n\n return { inputs };\n }\n case tableNames.SERVICE_PROVIDER_FEE_TYPE: {\n type Payload = FormInputsByTableName[\"SERVICE_PROVIDER_FEE_TYPE\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n const control = _control as Control<Payload>;\n\n const makeAccountLabel = (account: Account) => {\n return `${account.label} (${account.reference})`;\n };\n\n const makeAccountOptions = (accounts: Account[]) => {\n return accounts.map((account) => ({\n ...account,\n value: account.id,\n label: makeAccountLabel(account),\n }));\n };\n\n const inputs = [\n {\n label: \"Service Provider Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Service provider name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Service Provider\"\n />\n ),\n },\n {\n label: \"Fee Type\",\n Input: () => (\n <RWATableTextInput\n {...register(\"feeType\", {\n disabled: operation === \"view\",\n required: \"Fee type is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Fee Type\"\n />\n ),\n },\n {\n label: \"Account\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ACCOUNT\"),\n label: \"Create Account\",\n }}\n aria-invalid={errors.accountId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.accountId?.message}\n name=\"accountId\"\n options={makeAccountOptions(accounts)}\n rules={{ required: \"Account is required\" }}\n />\n ),\n },\n ];\n\n return { inputs };\n }\n }\n }, [\n _formState,\n _control,\n _register,\n _tableItem,\n _watch,\n accounts,\n fixedIncomeTypes,\n fixedIncomes,\n operation,\n serviceProviderFeeTypes,\n showCreateItemModal,\n spvs,\n tableName,\n ]);\n}\n"],"names":["useFormInputs","props","tableName","operation","_formState","_tableItem","_register","_watch","_control","fixedIncomeTypes","spvs","serviceProviderFeeTypes","accounts","fixedIncomes","useEditorContext","showModal","useModal","showCreateItemModal","useCallback","useMemo","tableNames","tableItem","register","watch","formState","errors","control","derivedInputsToDisplay","jsx","Fragment","handleTableDatum","maturityInputValue","RWATableTextInput","_a","DateTimeLocalInput","value","formatDateForDisplay","RWATableSelect","t","type","entryTimeInputValue","isFeesTransaction","feesTransactions","isAssetTransaction","assetGroupTransactions","canHaveTransactionFees","transactionTypeOptions","allGroupTransactionTypes","groupTransactionTypeLabels","fixedIncomeOptions","fixedIncome","makeFixedIncomeOptionLabel","serviceProviderFeeTypeOptions","spft","account","inputs","RWANumberInput","jsxs","UnitPrice","TransactionReference","additionalInputs","FeeTransactionsTable","CashBalanceChange","_b","makeAccountLabel","makeAccountOptions"],"mappings":"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"}
1
+ {"version":3,"file":"useFormInputs.js","sources":["../../../src/rwa/hooks/useFormInputs.tsx"],"sourcesContent":["import {\n Account,\n allGroupTransactionTypes,\n assetGroupTransactions,\n feesTransactions,\n FeeTransactionsTable,\n formatDateForDisplay,\n FormInputsByTableName,\n groupTransactionTypeLabels,\n handleTableDatum,\n makeFixedIncomeOptionLabel,\n Operation,\n RWANumberInput,\n RWATableSelect,\n RWATableTextInput,\n TableItemType,\n TableName,\n tableNames,\n TransactionReference,\n UnitPrice,\n useEditorContext,\n useModal,\n} from \"@/rwa\";\nimport { ReactElement, ReactNode, useCallback, useMemo } from \"react\";\nimport {\n Control,\n FormState,\n UseFormRegister,\n UseFormWatch,\n} from \"react-hook-form\";\nimport { CashBalanceChange } from \"../components/table/transactions/cash-balance-change\";\nimport { EntryTimeLabel } from \"../components/inputs/entry-time-label\";\n\ntype Input = {\n label: string;\n Input: () => string | React.JSX.Element;\n inputLabel?: ReactNode | null;\n};\n\ntype Props = {\n tableName: TableName;\n tableItem: TableItemType<TableName> | undefined | null;\n operation: Operation;\n formState: FormState<FormInputsByTableName[TableName]>;\n register: UseFormRegister<FormInputsByTableName[TableName]>;\n watch: UseFormWatch<FormInputsByTableName[TableName]>;\n control: Control<FormInputsByTableName[TableName]>;\n};\nexport function useFormInputs(props: Props): {\n inputs: Input[];\n additionalInputs?: ReactElement;\n} {\n const {\n tableName,\n operation,\n formState: _formState,\n tableItem: _tableItem,\n register: _register,\n watch: _watch,\n control: _control,\n } = props;\n const {\n fixedIncomeTypes,\n spvs,\n serviceProviderFeeTypes,\n accounts,\n fixedIncomes,\n } = useEditorContext();\n const { showModal } = useModal();\n const showCreateItemModal = useCallback(\n (tableName: TableName) => () => {\n showModal(\"createItem\", { tableName });\n },\n [showModal],\n );\n return useMemo(() => {\n switch (tableName) {\n case tableNames.ASSET: {\n const tableItem = _tableItem as TableItemType<\"ASSET\"> | null;\n type Payload = FormInputsByTableName[\"ASSET\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n\n const control = _control as Control<Payload>;\n const derivedInputsToDisplay =\n operation !== \"create\" && !!tableItem\n ? [\n {\n label: \"Notional\",\n Input: () => <>{handleTableDatum(tableItem.notional)}</>,\n },\n {\n label: \"Purchase Date\",\n Input: () => <>{handleTableDatum(tableItem.purchaseDate)}</>,\n },\n {\n label: \"Purchase Price\",\n Input: () => (\n <>{handleTableDatum(tableItem.purchasePrice, 6)}</>\n ),\n },\n {\n label: \"Purchase Proceeds\",\n Input: () => (\n <>{handleTableDatum(tableItem.purchaseProceeds)}</>\n ),\n },\n ]\n : [];\n\n const inputs = [\n {\n label: \"Asset Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Asset name is required\",\n })}\n aria-invalid={errors.name ? \"true\" : \"false\"}\n errorMessage={errors.name?.message}\n inputClassName=\"text-left\"\n placeholder=\"E.g. My Asset\"\n />\n ),\n },\n {\n label: \"CUSIP\",\n Input: () =>\n operation === \"view\" ? (\n (tableItem?.CUSIP ?? \"Not available\")\n ) : (\n <RWATableTextInput\n {...register(\"CUSIP\", {\n maxLength: {\n value: 9,\n message: \"CUSIP cannot be longer than 9 characters\",\n },\n minLength: {\n value: 9,\n message: \"CUSIP cannot be shorter than 9 characters\",\n },\n pattern: {\n value: /^[a-zA-Z0-9]*$/,\n message: \"CUSIP must be alphanumeric\",\n },\n })}\n aria-invalid={errors.CUSIP ? \"true\" : \"false\"}\n errorMessage={errors.CUSIP?.message}\n placeholder=\"E.g. A2345B789\"\n />\n ),\n },\n {\n label: \"ISIN\",\n Input: () =>\n operation === \"view\" ? (\n (tableItem?.ISIN ?? \"Not available\")\n ) : (\n <RWATableTextInput\n {...register(\"ISIN\", {\n maxLength: {\n value: 12,\n message: \"ISIN cannot be longer than 12 characters\",\n },\n minLength: {\n value: 12,\n message: \"ISIN cannot be shorter than 12 characters\",\n },\n pattern: {\n value: /^[a-zA-Z0-9]*$/,\n message: \"ISIN must be alphanumeric\",\n },\n })}\n aria-invalid={errors.ISIN ? \"true\" : \"false\"}\n errorMessage={errors.ISIN?.message}\n placeholder=\"E.g. 123456789ABC\"\n />\n ),\n },\n {\n label: \"Maturity\",\n Input: () => (\n <input\n className=\"h-8 w-full rounded-md bg-gray-100 px-3 disabled:bg-transparent disabled:p-0\"\n step={1}\n type=\"date\"\n {...register(\"maturity\", {\n disabled: operation === \"view\",\n })}\n />\n ),\n inputLabel: tableItem?.maturity\n ? formatDateForDisplay(tableItem.maturity, true)\n : null,\n },\n {\n label: \"Asset Type\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ASSET\"),\n label: \"Create Fixed Income Type\",\n }}\n aria-invalid={errors.fixedIncomeTypeId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.fixedIncomeTypeId?.message}\n name=\"fixedIncomeTypeId\"\n options={fixedIncomeTypes.map((t) => ({\n ...t,\n value: t.id,\n label: t.name,\n }))}\n rules={{ required: \"Asset type is required\" }}\n />\n ),\n },\n {\n label: \"SPV\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"SPV\"),\n label: \"Create SPV\",\n }}\n aria-invalid={errors.spvId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.spvId?.message}\n name=\"spvId\"\n options={spvs.map((t) => ({\n ...t,\n value: t.id,\n label: t.name,\n }))}\n rules={{ required: \"SPV is required\" }}\n />\n ),\n },\n ...derivedInputsToDisplay,\n ];\n\n return { inputs };\n }\n case tableNames.TRANSACTION: {\n type Payload = FormInputsByTableName[\"TRANSACTION\"];\n const register = _register as UseFormRegister<Payload>;\n const watch = _watch as UseFormWatch<Payload>;\n const { errors } = _formState as FormState<Payload>;\n const control = _control as Control<Payload>;\n const type = watch(\"type\");\n const isFeesTransaction = !!type && feesTransactions.includes(type);\n const isAssetTransaction =\n !!type && assetGroupTransactions.includes(type);\n const canHaveTransactionFees = !isFeesTransaction;\n const transactionTypeOptions = allGroupTransactionTypes.map((type) => ({\n label: groupTransactionTypeLabels[type],\n value: type,\n }));\n const fixedIncomeOptions = fixedIncomes.map((fixedIncome) => ({\n label: makeFixedIncomeOptionLabel(fixedIncome),\n value: fixedIncome.id,\n }));\n const serviceProviderFeeTypeOptions = serviceProviderFeeTypes.map(\n (spft) => ({\n label: `${spft.name} — ${spft.feeType} — ${accounts.find((account) => account.id === spft.accountId)?.reference}`,\n value: spft.id,\n }),\n );\n\n const inputs = [\n {\n label: \"Transaction Type\",\n Input: () => (\n <RWATableSelect\n aria-invalid={errors.type ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.type?.message}\n name=\"type\"\n options={transactionTypeOptions}\n rules={{\n required: \"Transaction type is required\",\n }}\n />\n ),\n },\n {\n label: \"Entry Time\",\n Input: () => (\n <input\n className=\"h-8 w-full rounded-md bg-gray-100 px-3 disabled:bg-transparent disabled:p-0\"\n step={1}\n type=\"datetime-local\"\n {...register(\"entryTime\", {\n disabled: operation === \"view\",\n required: \"Entry time is required\",\n })}\n />\n ),\n inputLabel: <EntryTimeLabel control={control} />,\n },\n isFeesTransaction\n ? {\n label: \"Service Provider\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"SERVICE_PROVIDER_FEE_TYPE\"),\n label: \"Add Service Provider\",\n }}\n control={control}\n disabled={operation === \"view\"}\n name=\"serviceProviderFeeTypeId\"\n options={serviceProviderFeeTypeOptions}\n />\n ),\n }\n : null,\n isAssetTransaction\n ? {\n label: \"Asset name\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ASSET\"),\n label: \"Create Asset\",\n }}\n aria-invalid={errors.type ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.type?.message}\n name=\"fixedIncomeId\"\n options={fixedIncomeOptions}\n rules={{\n required: \"Asset name is required\",\n }}\n />\n ),\n }\n : undefined,\n isAssetTransaction\n ? {\n label: \"Quantity\",\n Input: () => (\n <RWANumberInput\n aria-invalid={errors.fixedIncomeAmount ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.fixedIncomeAmount?.message}\n name=\"fixedIncomeAmount\"\n placeholder=\"E.g. 1,000.00\"\n rules={{\n required: \"Quantity is required\",\n validate: {\n positive: (value) =>\n (!!value && Number(value) > 0) ||\n \"Asset proceeds must be greater than zero\",\n },\n }}\n />\n ),\n }\n : undefined,\n {\n label: isAssetTransaction ? \"Asset Proceeds\" : \"Cash Amount\",\n Input: () => (\n <>\n <RWANumberInput\n aria-invalid={errors.cashAmount ? \"true\" : \"false\"}\n control={control}\n currency=\"USD\"\n disabled={operation === \"view\"}\n errorMessage={errors.cashAmount?.message}\n name=\"cashAmount\"\n placeholder=\"E.g. $1,000.00\"\n rules={{\n required: \"Asset proceeds is required\",\n validate: {\n positive: (value) =>\n (!!value && Number(value) > 0) ||\n \"Asset proceeds must be greater than zero\",\n },\n }}\n />\n {isAssetTransaction ? (\n <UnitPrice\n control={control}\n isViewOnly={operation === \"view\"}\n />\n ) : null}\n </>\n ),\n },\n {\n label: \"Transaction reference\",\n Input: () => (\n <TransactionReference\n {...register(\"txRef\", {\n disabled: operation === \"view\",\n })}\n aria-invalid={errors.txRef ? \"true\" : \"false\"}\n control={control}\n errorMessage={errors.txRef?.message}\n placeholder=\"E.g. 0x123...\"\n />\n ),\n },\n ].filter(Boolean);\n\n const additionalInputs = (\n <>\n <FeeTransactionsTable\n canHaveTransactionFees={canHaveTransactionFees}\n control={control}\n errors={errors}\n isViewOnly={operation === \"view\"}\n serviceProviderFeeTypeOptions={serviceProviderFeeTypeOptions}\n serviceProviderFeeTypes={serviceProviderFeeTypes}\n showCreateServiceProviderFeeTypeModal={showCreateItemModal(\n \"SERVICE_PROVIDER_FEE_TYPE\",\n )}\n />\n <CashBalanceChange control={control} />\n </>\n );\n\n return { inputs, additionalInputs };\n }\n case tableNames.ACCOUNT: {\n type Payload = FormInputsByTableName[\"ACCOUNT\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n const inputs = [\n {\n label: \"Account Label\",\n Input: () => (\n <RWATableTextInput\n {...register(\"label\", {\n disabled: operation === \"view\",\n required: \"Account label is required\",\n })}\n aria-invalid={\n errors.label?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.label?.message}\n placeholder=\"E.g. My Label\"\n />\n ),\n },\n {\n label: \"Account Reference\",\n Input: () => (\n <RWATableTextInput\n {...register(\"reference\", {\n disabled: operation === \"view\",\n required: \"Account reference is required\",\n })}\n aria-invalid={\n errors.reference?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.reference?.message}\n placeholder=\"E.g. bank account number or ETH address\"\n />\n ),\n },\n ];\n return { inputs };\n }\n case tableNames.SPV: {\n type Payload = FormInputsByTableName[\"SPV\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n\n const inputs = [\n {\n label: \"SPV name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"SPV name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My SPV name\"\n />\n ),\n },\n ];\n\n return { inputs };\n }\n case tableNames.FIXED_INCOME_TYPE: {\n type Payload = FormInputsByTableName[\"FIXED_INCOME_TYPE\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n\n const inputs = [\n {\n label: \"Fixed Income Type Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Fixed Income Type name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Fixed Income Type name\"\n />\n ),\n },\n ];\n\n return { inputs };\n }\n case tableNames.SERVICE_PROVIDER_FEE_TYPE: {\n type Payload = FormInputsByTableName[\"SERVICE_PROVIDER_FEE_TYPE\"];\n const register = _register as UseFormRegister<Payload>;\n const formState = _formState as FormState<Payload>;\n const { errors } = formState;\n const control = _control as Control<Payload>;\n\n const makeAccountLabel = (account: Account) => {\n return `${account.label} (${account.reference})`;\n };\n\n const makeAccountOptions = (accounts: Account[]) => {\n return accounts.map((account) => ({\n ...account,\n value: account.id,\n label: makeAccountLabel(account),\n }));\n };\n\n const inputs = [\n {\n label: \"Service Provider Name\",\n Input: () => (\n <RWATableTextInput\n {...register(\"name\", {\n disabled: operation === \"view\",\n required: \"Service provider name is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Service Provider\"\n />\n ),\n },\n {\n label: \"Fee Type\",\n Input: () => (\n <RWATableTextInput\n {...register(\"feeType\", {\n disabled: operation === \"view\",\n required: \"Fee type is required\",\n })}\n aria-invalid={\n errors.name?.type === \"required\" ? \"true\" : \"false\"\n }\n errorMessage={errors.name?.message}\n placeholder=\"E.g. My Fee Type\"\n />\n ),\n },\n {\n label: \"Account\",\n Input: () => (\n <RWATableSelect\n addItemButtonProps={{\n onClick: showCreateItemModal(\"ACCOUNT\"),\n label: \"Create Account\",\n }}\n aria-invalid={errors.accountId ? \"true\" : \"false\"}\n control={control}\n disabled={operation === \"view\"}\n errorMessage={errors.accountId?.message}\n name=\"accountId\"\n options={makeAccountOptions(accounts)}\n rules={{ required: \"Account is required\" }}\n />\n ),\n },\n ];\n\n return { inputs };\n }\n }\n }, [\n _formState,\n _control,\n _register,\n _tableItem,\n _watch,\n accounts,\n fixedIncomeTypes,\n fixedIncomes,\n operation,\n serviceProviderFeeTypes,\n showCreateItemModal,\n spvs,\n tableName,\n ]);\n}\n"],"names":["useFormInputs","props","tableName","operation","_formState","_tableItem","_register","_watch","_control","fixedIncomeTypes","spvs","serviceProviderFeeTypes","accounts","fixedIncomes","useEditorContext","showModal","useModal","showCreateItemModal","useCallback","useMemo","tableNames","tableItem","register","formState","errors","control","derivedInputsToDisplay","jsx","Fragment","handleTableDatum","RWATableTextInput","_a","formatDateForDisplay","RWATableSelect","t","watch","type","isFeesTransaction","feesTransactions","isAssetTransaction","assetGroupTransactions","canHaveTransactionFees","transactionTypeOptions","allGroupTransactionTypes","groupTransactionTypeLabels","fixedIncomeOptions","fixedIncome","makeFixedIncomeOptionLabel","serviceProviderFeeTypeOptions","spft","account","inputs","EntryTimeLabel","RWANumberInput","value","jsxs","UnitPrice","TransactionReference","additionalInputs","FeeTransactionsTable","CashBalanceChange","_b","makeAccountLabel","makeAccountOptions"],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare function useTableForm(props: FormHookProps): {
8
8
  inputs: {
9
9
  label: string;
10
10
  Input: () => string | React.JSX.Element;
11
- inputLabel?: string | null;
11
+ inputLabel?: import('react').ReactNode | null;
12
12
  }[];
13
13
  additionalInputs?: import('react').ReactElement;
14
14
  };
@@ -1,6 +1,4 @@
1
- /**
2
- * The html datetime local input requires this specific format
3
- */
4
- export declare function convertToDateTimeLocalFormat(date?: Date | string): string;
5
- export declare function formatDateForDisplay(date: Date | string, displayTime?: boolean): string;
1
+ export declare function formatDateForDisplay(date: Date | string, displayTime?: boolean, isUTC?: boolean): string;
6
2
  export declare function isISODate(str: string): boolean;
3
+ export declare function getTimeZone(): string;
4
+ export declare function isoDateStringToDateInput(isoDateString: string, withTime?: boolean): string;
@@ -1,19 +1,24 @@
1
- import { formatInTimeZone as o } from "date-fns-tz/formatInTimeZone";
2
- import { format as r } from "date-fns/format";
3
- function i(t = /* @__PURE__ */ new Date()) {
4
- return r(t, "yyyy-MM-dd'T'HH:mm");
1
+ import { formatInTimeZone as i } from "date-fns-tz/formatInTimeZone";
2
+ function s(t, e = !0, n = !1) {
3
+ const o = e ? "yyyy/MM/dd, HH:mm:ss zzz" : "yyyy/MM/dd", a = n ? "UTC" : r();
4
+ return i(t, a, o);
5
5
  }
6
- function d(t, e = !0) {
7
- return o(t, "UTC", e ? "yyyy/MM/dd, HH:mm:ss zzz" : "yyyy/MM/dd");
8
- }
9
- function f(t) {
6
+ function d(t) {
10
7
  if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(t)) return !1;
11
8
  const e = new Date(t);
12
9
  return e instanceof Date && !isNaN(e.getTime()) && e.toISOString() === t;
13
10
  }
11
+ function r() {
12
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
13
+ }
14
+ function y(t, e = !1) {
15
+ const n = e ? "yyyy-MM-dd'T'HH:mm:ss" : "yyyy-MM-dd", o = r();
16
+ return i(t, o, n);
17
+ }
14
18
  export {
15
- i as convertToDateTimeLocalFormat,
16
- d as formatDateForDisplay,
17
- f as isISODate
19
+ s as formatDateForDisplay,
20
+ r as getTimeZone,
21
+ d as isISODate,
22
+ y as isoDateStringToDateInput
18
23
  };
19
24
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sources":["../../../src/rwa/utils/date.ts"],"sourcesContent":["import { formatInTimeZone } from \"date-fns-tz/formatInTimeZone\";\nimport { format } from \"date-fns/format\";\n\n/**\n * The html datetime local input requires this specific format\n */\nexport function convertToDateTimeLocalFormat(date: Date | string = new Date()) {\n return format(date, \"yyyy-MM-dd'T'HH:mm\");\n}\nexport function formatDateForDisplay(date: Date | string, displayTime = true) {\n const formatString = displayTime ? \"yyyy/MM/dd, HH:mm:ss zzz\" : \"yyyy/MM/dd\";\n\n return formatInTimeZone(date, \"UTC\", formatString);\n}\n\nexport function isISODate(str: string) {\n if (!/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(str)) return false;\n const d = new Date(str);\n return d instanceof Date && !isNaN(d.getTime()) && d.toISOString() === str;\n}\n"],"names":["convertToDateTimeLocalFormat","date","format","formatDateForDisplay","displayTime","formatInTimeZone","isISODate","str","d"],"mappings":";;AAMO,SAASA,EAA6BC,IAA0B,oBAAA,QAAQ;AACtE,SAAAC,EAAOD,GAAM,oBAAoB;AAC1C;AACgB,SAAAE,EAAqBF,GAAqBG,IAAc,IAAM;AAGrE,SAAAC,EAAiBJ,GAAM,OAFTG,IAAc,6BAA6B,YAEf;AACnD;AAEO,SAASE,EAAUC,GAAa;AACrC,MAAI,CAAC,6CAA6C,KAAKA,CAAG,EAAU,QAAA;AAC9D,QAAAC,IAAI,IAAI,KAAKD,CAAG;AACf,SAAAC,aAAa,QAAQ,CAAC,MAAMA,EAAE,SAAS,KAAKA,EAAE,YAAA,MAAkBD;AACzE;"}
1
+ {"version":3,"file":"date.js","sources":["../../../src/rwa/utils/date.ts"],"sourcesContent":["import { formatInTimeZone } from \"date-fns-tz/formatInTimeZone\";\n\nexport function formatDateForDisplay(\n date: Date | string,\n displayTime = true,\n isUTC = false,\n) {\n const formatString = displayTime ? \"yyyy/MM/dd, HH:mm:ss zzz\" : \"yyyy/MM/dd\";\n const timeZone = isUTC ? \"UTC\" : getTimeZone();\n return formatInTimeZone(date, timeZone, formatString);\n}\n\nexport function isISODate(str: string) {\n if (!/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(str)) return false;\n const d = new Date(str);\n return d instanceof Date && !isNaN(d.getTime()) && d.toISOString() === str;\n}\n\nexport function getTimeZone() {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\nexport function isoDateStringToDateInput(\n isoDateString: string,\n withTime = false,\n) {\n const format = withTime ? \"yyyy-MM-dd'T'HH:mm:ss\" : \"yyyy-MM-dd\";\n const timeZone = getTimeZone();\n return formatInTimeZone(isoDateString, timeZone, format);\n}\n"],"names":["formatDateForDisplay","date","displayTime","isUTC","formatString","timeZone","getTimeZone","formatInTimeZone","isISODate","str","d","isoDateStringToDateInput","isoDateString","withTime","format"],"mappings":";AAEO,SAASA,EACdC,GACAC,IAAc,IACdC,IAAQ,IACR;AACM,QAAAC,IAAeF,IAAc,6BAA6B,cAC1DG,IAAWF,IAAQ,QAAQG,EAAY;AACtC,SAAAC,EAAiBN,GAAMI,GAAUD,CAAY;AACtD;AAEO,SAASI,EAAUC,GAAa;AACrC,MAAI,CAAC,6CAA6C,KAAKA,CAAG,EAAU,QAAA;AAC9D,QAAAC,IAAI,IAAI,KAAKD,CAAG;AACf,SAAAC,aAAa,QAAQ,CAAC,MAAMA,EAAE,SAAS,KAAKA,EAAE,YAAA,MAAkBD;AACzE;AAEO,SAASH,IAAc;AAC5B,SAAO,KAAK,iBAAiB,gBAAkB,EAAA;AACjD;AAEgB,SAAAK,EACdC,GACAC,IAAW,IACX;AACM,QAAAC,IAASD,IAAW,0BAA0B,cAC9CR,IAAWC,EAAY;AACtB,SAAAC,EAAiBK,GAAeP,GAAUS,CAAM;AACzD;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/design-system",
3
- "version": "1.7.2",
3
+ "version": "1.9.0",
4
4
  "description": "",
5
5
  "files": [
6
6
  "/dist"
@@ -1,5 +0,0 @@
1
- import { ComponentPropsWithRef } from 'react';
2
- export type DateTimeLocalInputProps = Omit<ComponentPropsWithRef<"input">, "type"> & {
3
- readonly inputType?: "datetime-local" | "date";
4
- };
5
- export declare const DateTimeLocalInput: import('react').ForwardRefExoticComponent<Omit<DateTimeLocalInputProps, "ref"> & import('react').RefAttributes<HTMLInputElement>>;
@@ -1,23 +0,0 @@
1
- import { jsx as o } from "react/jsx-runtime";
2
- import { forwardRef as n } from "react";
3
- import { twMerge as p } from "tailwind-merge";
4
- const d = n(function(t, e) {
5
- const { inputType: a = "datetime-local", ...r } = t;
6
- return /* @__PURE__ */ o(
7
- "input",
8
- {
9
- ...r,
10
- className: p(
11
- "h-8 w-full rounded-md bg-gray-100 px-3 disabled:bg-transparent disabled:p-0",
12
- t.className
13
- ),
14
- ref: e,
15
- step: t.step ?? "1",
16
- type: a
17
- }
18
- );
19
- });
20
- export {
21
- d as DateTimeLocalInput
22
- };
23
- //# sourceMappingURL=date-time-local-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-time-local-input.js","sources":["../../../../src/connect/components/date-time-input/date-time-local-input.tsx"],"sourcesContent":["import { ComponentPropsWithRef, Ref, forwardRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type DateTimeLocalInputProps = Omit<\n ComponentPropsWithRef<\"input\">,\n \"type\"\n> & {\n readonly inputType?: \"datetime-local\" | \"date\";\n};\n\nexport const DateTimeLocalInput = forwardRef(function DateTimeLocalInput(\n props: DateTimeLocalInputProps,\n ref: Ref<HTMLInputElement>,\n) {\n const { inputType = \"datetime-local\", ...inputProps } = props;\n\n return (\n <input\n {...inputProps}\n className={twMerge(\n \"h-8 w-full rounded-md bg-gray-100 px-3 disabled:bg-transparent disabled:p-0\",\n props.className,\n )}\n ref={ref}\n step={props.step ?? \"1\"}\n type={inputType}\n />\n );\n});\n"],"names":["DateTimeLocalInput","forwardRef","props","ref","inputType","inputProps","jsx","twMerge"],"mappings":";;;AAUO,MAAMA,IAAqBC,EAAW,SAC3CC,GACAC,GACA;AACA,QAAM,EAAE,WAAAC,IAAY,kBAAkB,GAAGC,EAAe,IAAAH;AAGtD,SAAA,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE;AAAA,QACT;AAAA,QACAL,EAAM;AAAA,MACR;AAAA,MACA,KAAAC;AAAA,MACA,MAAMD,EAAM,QAAQ;AAAA,MACpB,MAAME;AAAA,IAAA;AAAA,EACR;AAEJ,CAAC;"}
@@ -1 +0,0 @@
1
- export * from './date-time-local-input';