@eristack/form-ui
Version:
Native React form controls wired to @eristack money, percent, and timestamp
1 lines • 4.67 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/form-field.tsx","../src/money-input.tsx","../src/percent-input.tsx","../src/timestamp-wall-input.tsx"],"sourcesContent":["export { FormField, type FormFieldProps } from \"./form-field.js\";\nexport { MoneyInput, type MoneyInputProps } from \"./money-input.js\";\nexport { PercentInput, type PercentInputProps } from \"./percent-input.js\";\nexport {\n TimestampWallInput,\n type TimestampWallInputProps,\n} from \"./timestamp-wall-input.js\";\n","import type { ReactNode } from \"react\";\n\nexport type FormFieldProps = {\n label?: string;\n hint?: string;\n error?: string;\n children: ReactNode;\n};\n\nexport function FormField({ label, hint, error, children }: FormFieldProps) {\n return (\n <label className=\"erista-form-field\">\n {label ? <span className=\"erista-form-field__label\">{label}</span> : null}\n {children}\n {hint ? <span className=\"erista-form-field__hint\">{hint}</span> : null}\n {error ? <span className=\"erista-form-field__error\">{error}</span> : null}\n </label>\n );\n}\n","import { submitAmountOnlyFormValue } from \"@eristack/money/react\";\nimport type { InputHTMLAttributes } from \"react\";\n\nexport type MoneyInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\"\n> & {\n amount: string;\n currency: string;\n onAmountChange?: (amount: string) => void;\n onParsed?: (amount: string) => void;\n round?: boolean;\n};\n\nexport function MoneyInput({\n amount,\n currency,\n onAmountChange,\n onParsed,\n round,\n onBlur,\n ...rest\n}: MoneyInputProps) {\n return (\n <input\n {...rest}\n type=\"text\"\n inputMode=\"decimal\"\n value={amount}\n data-currency={currency}\n onChange={(event) => onAmountChange?.(event.target.value)}\n onBlur={(event) => {\n onBlur?.(event);\n const raw = event.target.value;\n if (raw === \"\") return;\n const money = submitAmountOnlyFormValue(raw, currency, { round });\n const normalized = money.toJSON().amount;\n onAmountChange?.(normalized);\n onParsed?.(normalized);\n }}\n />\n );\n}\n","import type { InputHTMLAttributes } from \"react\";\n\nexport type PercentInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\"\n> & {\n value: string;\n onValueChange?: (value: string) => void;\n};\n\nexport function PercentInput({\n value,\n onValueChange,\n ...rest\n}: PercentInputProps) {\n return (\n <input\n {...rest}\n type=\"text\"\n inputMode=\"decimal\"\n value={value}\n onChange={(event) => onValueChange?.(event.target.value)}\n />\n );\n}\n","import type { InputHTMLAttributes } from \"react\";\n\nexport type TimestampWallInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\" | \"type\"\n> & {\n /** Wall calendar date `YYYY-MM-DD`. */\n value: string;\n onValueChange?: (value: string) => void;\n};\n\nexport function TimestampWallInput({\n value,\n onValueChange,\n ...rest\n}: TimestampWallInputProps) {\n return (\n <input\n {...rest}\n type=\"date\"\n value={value}\n onChange={(event) => onValueChange?.(event.target.value)}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACWI;AAFG,SAAS,UAAU,EAAE,OAAO,MAAM,OAAO,SAAS,GAAmB;AAC1E,SACE,6CAAC,WAAM,WAAU,qBACd;AAAA,YAAQ,4CAAC,UAAK,WAAU,4BAA4B,iBAAM,IAAU;AAAA,IACpE;AAAA,IACA,OAAO,4CAAC,UAAK,WAAU,2BAA2B,gBAAK,IAAU;AAAA,IACjE,QAAQ,4CAAC,UAAK,WAAU,4BAA4B,iBAAM,IAAU;AAAA,KACvE;AAEJ;;;AClBA,mBAA0C;AAwBtC,IAAAA,sBAAA;AAVG,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAK;AAAA,MACL,WAAU;AAAA,MACV,OAAO;AAAA,MACP,iBAAe;AAAA,MACf,UAAU,CAAC,UAAU,iBAAiB,MAAM,OAAO,KAAK;AAAA,MACxD,QAAQ,CAAC,UAAU;AACjB,iBAAS,KAAK;AACd,cAAM,MAAM,MAAM,OAAO;AACzB,YAAI,QAAQ,GAAI;AAChB,cAAM,YAAQ,wCAA0B,KAAK,UAAU,EAAE,MAAM,CAAC;AAChE,cAAM,aAAa,MAAM,OAAO,EAAE;AAClC,yBAAiB,UAAU;AAC3B,mBAAW,UAAU;AAAA,MACvB;AAAA;AAAA,EACF;AAEJ;;;AC1BI,IAAAC,sBAAA;AANG,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAK;AAAA,MACL,WAAU;AAAA,MACV;AAAA,MACA,UAAU,CAAC,UAAU,gBAAgB,MAAM,OAAO,KAAK;AAAA;AAAA,EACzD;AAEJ;;;ACPI,IAAAC,sBAAA;AANG,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAK;AAAA,MACL;AAAA,MACA,UAAU,CAAC,UAAU,gBAAgB,MAAM,OAAO,KAAK;AAAA;AAAA,EACzD;AAEJ;","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}