Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,19 @@ run = "yarn clean-all"

[tasks.ops]
description = "Start ops frontend development server"
run = "cd apps/private/ops && yarn start"
run = "yarn start ops"

[tasks.ops-minikube]
description = "Start ops frontend connected to minikube"
run = "cd apps/private/ops && yarn start:minikube"
run = "VITE_PROXY_TARGET=http://app.minikube.local yarn start ops"

[tasks.site]
description = "Start CN2 frontend connected to minikube"
run = "yarn start site"

[tasks.site-minikube]
description = "Start CN2 frontend connected to minikube"
run = "VITE_PROXY_TARGET=http://app.minikube.local yarn start site"

[tasks.gql-codegen]
description = "Generate GraphQL code"
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"lint:fix": "turbo run lint:fix",
"package:checks": "turbo run package:checks",
"release": "turbo build && changeset publish",
"start:minikube": "VITE_PROXY_TARGET=http://app.minikube.local yarn start",
"start:prod": "VITE_PROXY_TARGET=https://app.lightspark.com yarn start",
"preview": "turbo run preview",
"start": "./start.sh",
Expand Down
127 changes: 127 additions & 0 deletions packages/core/src/utils/currency.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ export const CurrencyUnit = {
SGD: "SGD",
THB: "THB",
VND: "VND",
NGN: "NGN",
ZAR: "ZAR",
KES: "KES",
TZS: "TZS",
UGX: "UGX",
BWP: "BWP",
USDT: "USDT",

Bitcoin: "BITCOIN",
Expand Down Expand Up @@ -88,6 +94,12 @@ const standardUnitConversionObj = {
[CurrencyUnit.SGD]: (v: number) => v,
[CurrencyUnit.THB]: (v: number) => v,
[CurrencyUnit.VND]: (v: number) => v,
[CurrencyUnit.NGN]: (v: number) => v,
[CurrencyUnit.ZAR]: (v: number) => v,
[CurrencyUnit.KES]: (v: number) => v,
[CurrencyUnit.TZS]: (v: number) => v,
[CurrencyUnit.UGX]: (v: number) => v,
[CurrencyUnit.BWP]: (v: number) => v,
[CurrencyUnit.USDT]: (v: number) => v,
};

Expand Down Expand Up @@ -128,6 +140,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toBitcoinConversion,
[CurrencyUnit.THB]: toBitcoinConversion,
[CurrencyUnit.VND]: toBitcoinConversion,
[CurrencyUnit.NGN]: toBitcoinConversion,
[CurrencyUnit.ZAR]: toBitcoinConversion,
[CurrencyUnit.KES]: toBitcoinConversion,
[CurrencyUnit.TZS]: toBitcoinConversion,
[CurrencyUnit.UGX]: toBitcoinConversion,
[CurrencyUnit.BWP]: toBitcoinConversion,
[CurrencyUnit.USDT]: toBitcoinConversion,
},
[CurrencyUnit.MICROBITCOIN]: {
Expand All @@ -152,6 +170,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toMicrobitcoinConversion,
[CurrencyUnit.THB]: toMicrobitcoinConversion,
[CurrencyUnit.VND]: toMicrobitcoinConversion,
[CurrencyUnit.NGN]: toMicrobitcoinConversion,
[CurrencyUnit.ZAR]: toMicrobitcoinConversion,
[CurrencyUnit.KES]: toMicrobitcoinConversion,
[CurrencyUnit.TZS]: toMicrobitcoinConversion,
[CurrencyUnit.UGX]: toMicrobitcoinConversion,
[CurrencyUnit.BWP]: toMicrobitcoinConversion,
[CurrencyUnit.USDT]: toMicrobitcoinConversion,
},
[CurrencyUnit.MILLIBITCOIN]: {
Expand All @@ -176,6 +200,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toMillibitcoinConversion,
[CurrencyUnit.THB]: toMillibitcoinConversion,
[CurrencyUnit.VND]: toMillibitcoinConversion,
[CurrencyUnit.NGN]: toMillibitcoinConversion,
[CurrencyUnit.ZAR]: toMillibitcoinConversion,
[CurrencyUnit.KES]: toMillibitcoinConversion,
[CurrencyUnit.TZS]: toMillibitcoinConversion,
[CurrencyUnit.UGX]: toMillibitcoinConversion,
[CurrencyUnit.BWP]: toMillibitcoinConversion,
[CurrencyUnit.USDT]: toMillibitcoinConversion,
},
[CurrencyUnit.MILLISATOSHI]: {
Expand All @@ -200,6 +230,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toMillisatoshiConversion,
[CurrencyUnit.THB]: toMillisatoshiConversion,
[CurrencyUnit.VND]: toMillisatoshiConversion,
[CurrencyUnit.NGN]: toMillisatoshiConversion,
[CurrencyUnit.ZAR]: toMillisatoshiConversion,
[CurrencyUnit.KES]: toMillisatoshiConversion,
[CurrencyUnit.TZS]: toMillisatoshiConversion,
[CurrencyUnit.UGX]: toMillisatoshiConversion,
[CurrencyUnit.BWP]: toMillisatoshiConversion,
[CurrencyUnit.USDT]: toMillisatoshiConversion,
},
[CurrencyUnit.NANOBITCOIN]: {
Expand All @@ -224,6 +260,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toNanobitcoinConversion,
[CurrencyUnit.THB]: toNanobitcoinConversion,
[CurrencyUnit.VND]: toNanobitcoinConversion,
[CurrencyUnit.NGN]: toNanobitcoinConversion,
[CurrencyUnit.ZAR]: toNanobitcoinConversion,
[CurrencyUnit.KES]: toNanobitcoinConversion,
[CurrencyUnit.TZS]: toNanobitcoinConversion,
[CurrencyUnit.UGX]: toNanobitcoinConversion,
[CurrencyUnit.BWP]: toNanobitcoinConversion,
[CurrencyUnit.USDT]: toNanobitcoinConversion,
},
[CurrencyUnit.SATOSHI]: {
Expand All @@ -248,6 +290,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: toSatoshiConversion,
[CurrencyUnit.THB]: toSatoshiConversion,
[CurrencyUnit.VND]: toSatoshiConversion,
[CurrencyUnit.NGN]: toSatoshiConversion,
[CurrencyUnit.ZAR]: toSatoshiConversion,
[CurrencyUnit.KES]: toSatoshiConversion,
[CurrencyUnit.TZS]: toSatoshiConversion,
[CurrencyUnit.UGX]: toSatoshiConversion,
[CurrencyUnit.BWP]: toSatoshiConversion,
[CurrencyUnit.USDT]: toSatoshiConversion,
},
[CurrencyUnit.USD]: standardUnitConversionObj,
Expand All @@ -265,6 +313,12 @@ const CONVERSION_MAP = {
[CurrencyUnit.SGD]: standardUnitConversionObj,
[CurrencyUnit.THB]: standardUnitConversionObj,
[CurrencyUnit.VND]: standardUnitConversionObj,
[CurrencyUnit.NGN]: standardUnitConversionObj,
[CurrencyUnit.ZAR]: standardUnitConversionObj,
[CurrencyUnit.KES]: standardUnitConversionObj,
[CurrencyUnit.TZS]: standardUnitConversionObj,
[CurrencyUnit.UGX]: standardUnitConversionObj,
[CurrencyUnit.BWP]: standardUnitConversionObj,
[CurrencyUnit.USDT]: standardUnitConversionObj,
};

Expand Down Expand Up @@ -342,6 +396,12 @@ export type CurrencyMap = {
[CurrencyUnit.SGD]: number;
[CurrencyUnit.THB]: number;
[CurrencyUnit.VND]: number;
[CurrencyUnit.NGN]: number;
[CurrencyUnit.ZAR]: number;
[CurrencyUnit.KES]: number;
[CurrencyUnit.TZS]: number;
[CurrencyUnit.UGX]: number;
[CurrencyUnit.BWP]: number;
[CurrencyUnit.USDT]: number;
[CurrencyUnit.FUTURE_VALUE]: number;
formatted: {
Expand Down Expand Up @@ -369,6 +429,12 @@ export type CurrencyMap = {
[CurrencyUnit.SGD]: string;
[CurrencyUnit.THB]: string;
[CurrencyUnit.VND]: string;
[CurrencyUnit.NGN]: string;
[CurrencyUnit.ZAR]: string;
[CurrencyUnit.KES]: string;
[CurrencyUnit.TZS]: string;
[CurrencyUnit.UGX]: string;
[CurrencyUnit.BWP]: string;
[CurrencyUnit.USDT]: string;
[CurrencyUnit.FUTURE_VALUE]: string;
};
Expand Down Expand Up @@ -577,6 +643,12 @@ function convertCurrencyAmountValues(
sgd: CurrencyUnit.SGD,
thb: CurrencyUnit.THB,
vnd: CurrencyUnit.VND,
ngn: CurrencyUnit.NGN,
zar: CurrencyUnit.ZAR,
kes: CurrencyUnit.KES,
tzs: CurrencyUnit.TZS,
ugx: CurrencyUnit.UGX,
bwp: CurrencyUnit.BWP,
mibtc: CurrencyUnit.MICROBITCOIN,
mlbtc: CurrencyUnit.MILLIBITCOIN,
nbtc: CurrencyUnit.NANOBITCOIN,
Expand Down Expand Up @@ -649,6 +721,12 @@ export function mapCurrencyAmount(
sgd,
thb,
vnd,
ngn,
zar,
kes,
tzs,
ugx,
bwp,
usdt,
} = convertCurrencyAmountValues(unit, value, unitsPerBtc, conversionOverride);

Expand All @@ -671,6 +749,12 @@ export function mapCurrencyAmount(
[CurrencyUnit.SGD]: sgd,
[CurrencyUnit.THB]: thb,
[CurrencyUnit.VND]: vnd,
[CurrencyUnit.NGN]: ngn,
[CurrencyUnit.ZAR]: zar,
[CurrencyUnit.KES]: kes,
[CurrencyUnit.TZS]: tzs,
[CurrencyUnit.UGX]: ugx,
[CurrencyUnit.BWP]: bwp,
[CurrencyUnit.MICROBITCOIN]: mibtc,
[CurrencyUnit.MILLIBITCOIN]: mlbtc,
[CurrencyUnit.NANOBITCOIN]: nbtc,
Expand Down Expand Up @@ -761,6 +845,30 @@ export function mapCurrencyAmount(
value: vnd,
unit: CurrencyUnit.VND,
}),
[CurrencyUnit.NGN]: formatCurrencyStr({
value: ngn,
unit: CurrencyUnit.NGN,
}),
[CurrencyUnit.ZAR]: formatCurrencyStr({
value: zar,
unit: CurrencyUnit.ZAR,
}),
[CurrencyUnit.KES]: formatCurrencyStr({
value: kes,
unit: CurrencyUnit.KES,
}),
[CurrencyUnit.TZS]: formatCurrencyStr({
value: tzs,
unit: CurrencyUnit.TZS,
}),
[CurrencyUnit.UGX]: formatCurrencyStr({
value: ugx,
unit: CurrencyUnit.UGX,
}),
[CurrencyUnit.BWP]: formatCurrencyStr({
value: bwp,
unit: CurrencyUnit.BWP,
}),
[CurrencyUnit.USDT]: formatCurrencyStr({
value: usdt,
unit: CurrencyUnit.USDT,
Expand Down Expand Up @@ -865,6 +973,18 @@ export const abbrCurrencyUnit = (unit: CurrencyUnitType) => {
return "THB";
case CurrencyUnit.VND:
return "VND";
case CurrencyUnit.NGN:
return "NGN";
case CurrencyUnit.ZAR:
return "ZAR";
case CurrencyUnit.KES:
return "KES";
case CurrencyUnit.TZS:
return "TZS";
case CurrencyUnit.UGX:
return "UGX";
case CurrencyUnit.BWP:
return "BWP";
}
return "Unsupported CurrencyUnit";
};
Expand Down Expand Up @@ -921,6 +1041,13 @@ export function formatCurrencyStr(
CurrencyUnit.EUR,
CurrencyUnit.GBP,
CurrencyUnit.INR,
CurrencyUnit.BRL,
CurrencyUnit.NGN,
CurrencyUnit.ZAR,
CurrencyUnit.KES,
CurrencyUnit.TZS,
CurrencyUnit.UGX,
CurrencyUnit.BWP,
] as string[];
/* centCurrencies are always provided in the smallest unit, e.g. cents for USD. These should be
* divided by 100 for proper display format: */
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/src/components/Table/Table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export type TableProps<T extends Record<string, unknown>> = {
loading?: boolean;
onClickRow?: (
row: Row<T>,
) => { link?: string; to?: NewRoutesType; params: RouteParams } | void;
) => { link?: string; to?: NewRoutesType; params?: RouteParams } | void;
emptyState?: ReactNode;
clipboardCallbacks?: Parameters<typeof useClipboard>[0] | undefined;
rowHoverEffect?: "border" | "background" | "none" | undefined;
Expand Down
2 changes: 2 additions & 0 deletions packages/ui/src/components/TextInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ export type TextInputProps = {
width?: "full" | "short" | undefined;
paddingX?: number;
paddingY?: number;
subTextPaddingX?: number | undefined;
marginTop?: number | undefined;
// Outline that appears outside/offset when the input is focused
activeOutline?: boolean;
Expand Down Expand Up @@ -425,6 +426,7 @@ export function TextInput(textInputProps: TextInputProps) {
tooltipId={hintTooltipId}
hideNonErrorsIfBlurred={props.hideNonErrorsIfBlurred}
focused={focused}
subTextPaddingX={props.subTextPaddingX}
/>
{props.hintTooltip ? (
<Tooltip id={hintTooltipId} content={props.hintTooltip} place="right" />
Expand Down
2 changes: 1 addition & 1 deletion packages/ui/src/hooks/useFields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { diff } from "deep-object-diff";
import { isObject } from "lodash-es";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";

type ValidatorFn = (
export type ValidatorFn = (
value: string,
fields?: Fields<any>, // eslint-disable-line @typescript-eslint/no-explicit-any
) => string | false;
Expand Down
Loading