@powerhousedao/design-system 1.18.0 → 1.19.1

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.
Files changed (160) hide show
  1. package/dist/scalars/components/amount-field/amount-field.js +153 -0
  2. package/dist/scalars/components/amount-field/amount-field.js.map +1 -0
  3. package/dist/scalars/components/amount-field/use-amount-field.js +79 -0
  4. package/dist/scalars/components/amount-field/use-amount-field.js.map +1 -0
  5. package/dist/scalars/components/amount-field/utils.js +17 -0
  6. package/dist/scalars/components/amount-field/utils.js.map +1 -0
  7. package/dist/scalars/components/country-code-field/country-code-field.js +64 -0
  8. package/dist/scalars/components/country-code-field/country-code-field.js.map +1 -0
  9. package/dist/scalars/components/currency-code-field/currency-code-field.js +69 -0
  10. package/dist/scalars/components/currency-code-field/currency-code-field.js.map +1 -0
  11. package/dist/scalars/components/enum-field/enum-field.js +18 -8
  12. package/dist/scalars/components/enum-field/enum-field.js.map +1 -1
  13. package/dist/scalars/components/form/form.js +49 -35
  14. package/dist/scalars/components/form/form.js.map +1 -1
  15. package/dist/scalars/components/fragments/button/button.js +11 -18
  16. package/dist/scalars/components/fragments/button/button.js.map +1 -1
  17. package/dist/scalars/components/fragments/character-counter/character-counter.js +8 -8
  18. package/dist/scalars/components/fragments/character-counter/character-counter.js.map +1 -1
  19. package/dist/scalars/components/fragments/command/command.js +36 -36
  20. package/dist/scalars/components/fragments/command/command.js.map +1 -1
  21. package/dist/scalars/components/fragments/form-label/form-label.js +35 -32
  22. package/dist/scalars/components/fragments/form-label/form-label.js.map +1 -1
  23. package/dist/scalars/components/fragments/input/input.js +16 -14
  24. package/dist/scalars/components/fragments/input/input.js.map +1 -1
  25. package/dist/scalars/components/fragments/popover/popover.js +4 -4
  26. package/dist/scalars/components/fragments/popover/popover.js.map +1 -1
  27. package/dist/scalars/components/fragments/select-field/content.js +168 -114
  28. package/dist/scalars/components/fragments/select-field/content.js.map +1 -1
  29. package/dist/scalars/components/fragments/select-field/select-field.js +110 -130
  30. package/dist/scalars/components/fragments/select-field/select-field.js.map +1 -1
  31. package/dist/scalars/components/fragments/select-field/selected-content.js +48 -49
  32. package/dist/scalars/components/fragments/select-field/selected-content.js.map +1 -1
  33. package/dist/scalars/components/fragments/select-field/use-select-field.js +42 -46
  34. package/dist/scalars/components/fragments/select-field/use-select-field.js.map +1 -1
  35. package/dist/scalars/components/fragments/text-field/text-field.js +68 -60
  36. package/dist/scalars/components/fragments/text-field/text-field.js.map +1 -1
  37. package/dist/scalars/components/fragments/textarea-field/textarea-field.js +122 -109
  38. package/dist/scalars/components/fragments/textarea-field/textarea-field.js.map +1 -1
  39. package/dist/scalars/components/fragments/value-transformer/value-transformer.js +49 -33
  40. package/dist/scalars/components/fragments/value-transformer/value-transformer.js.map +1 -1
  41. package/dist/scalars/components/fragments/with-field-validation/with-field-validation.js +86 -59
  42. package/dist/scalars/components/fragments/with-field-validation/with-field-validation.js.map +1 -1
  43. package/dist/scalars/components/id-field/id-field.js +24 -14
  44. package/dist/scalars/components/id-field/id-field.js.map +1 -1
  45. package/dist/scalars/components/number-field/number-field-validations.js +32 -15
  46. package/dist/scalars/components/number-field/number-field-validations.js.map +1 -1
  47. package/dist/scalars/components/number-field/number-field.js +107 -135
  48. package/dist/scalars/components/number-field/number-field.js.map +1 -1
  49. package/dist/scalars/components/number-field/use-number-field.js +98 -0
  50. package/dist/scalars/components/number-field/use-number-field.js.map +1 -0
  51. package/dist/scalars/components/number-field/utils.js +20 -19
  52. package/dist/scalars/components/number-field/utils.js.map +1 -1
  53. package/dist/scalars/components/url-field/url-favicon.js +20 -0
  54. package/dist/scalars/components/url-field/url-favicon.js.map +1 -0
  55. package/dist/scalars/components/url-field/url-field.js +97 -68
  56. package/dist/scalars/components/url-field/url-field.js.map +1 -1
  57. package/dist/scalars/components/url-field/useURLWarnings.js +20 -11
  58. package/dist/scalars/components/url-field/useURLWarnings.js.map +1 -1
  59. package/dist/scalars/index.js +69 -63
  60. package/dist/scalars/index.js.map +1 -1
  61. package/dist/scalars/lib/shared-value-transformers.js +13 -6
  62. package/dist/scalars/lib/shared-value-transformers.js.map +1 -1
  63. package/dist/scalars/lib/value-cast.js +13 -0
  64. package/dist/scalars/lib/value-cast.js.map +1 -0
  65. package/dist/src/scalars/components/amount-field/amount-field-validations.d.ts +0 -2
  66. package/dist/src/scalars/components/amount-field/amount-field-validations.d.ts.map +1 -1
  67. package/dist/src/scalars/components/amount-field/amount-field.d.ts +11 -4
  68. package/dist/src/scalars/components/amount-field/amount-field.d.ts.map +1 -1
  69. package/dist/src/scalars/components/amount-field/index.d.ts +2 -0
  70. package/dist/src/scalars/components/amount-field/index.d.ts.map +1 -0
  71. package/dist/src/scalars/components/amount-field/types.d.ts +5 -4
  72. package/dist/src/scalars/components/amount-field/types.d.ts.map +1 -1
  73. package/dist/src/scalars/components/amount-field/use-amount-field.d.ts +12 -5
  74. package/dist/src/scalars/components/amount-field/use-amount-field.d.ts.map +1 -1
  75. package/dist/src/scalars/components/amount-field/utils.d.ts +11 -1
  76. package/dist/src/scalars/components/amount-field/utils.d.ts.map +1 -1
  77. package/dist/src/scalars/components/country-code-field/country-code-field.d.ts.map +1 -1
  78. package/dist/src/scalars/components/currency-code-field/currency-code-field.d.ts +16 -0
  79. package/dist/src/scalars/components/currency-code-field/currency-code-field.d.ts.map +1 -0
  80. package/dist/src/scalars/components/currency-code-field/currency-code-field.test.d.ts +2 -0
  81. package/dist/src/scalars/components/currency-code-field/currency-code-field.test.d.ts.map +1 -0
  82. package/dist/src/scalars/components/currency-code-field/index.d.ts +2 -0
  83. package/dist/src/scalars/components/currency-code-field/index.d.ts.map +1 -0
  84. package/dist/src/scalars/components/enum-field/types.d.ts +11 -11
  85. package/dist/src/scalars/components/enum-field/types.d.ts.map +1 -1
  86. package/dist/src/scalars/components/form/form.d.ts.map +1 -1
  87. package/dist/src/scalars/components/fragments/button/button.d.ts +0 -1
  88. package/dist/src/scalars/components/fragments/button/button.d.ts.map +1 -1
  89. package/dist/src/scalars/components/fragments/command/command.d.ts +5 -5
  90. package/dist/src/scalars/components/fragments/command/command.d.ts.map +1 -1
  91. package/dist/src/scalars/components/fragments/form-label/form-label.d.ts.map +1 -1
  92. package/dist/src/scalars/components/fragments/input/input.d.ts.map +1 -1
  93. package/dist/src/scalars/components/fragments/popover/popover.d.ts +2 -1
  94. package/dist/src/scalars/components/fragments/popover/popover.d.ts.map +1 -1
  95. package/dist/src/scalars/components/fragments/select-field/content.d.ts +7 -7
  96. package/dist/src/scalars/components/fragments/select-field/content.d.ts.map +1 -1
  97. package/dist/src/scalars/components/fragments/select-field/select-field.d.ts +1 -1
  98. package/dist/src/scalars/components/fragments/select-field/select-field.d.ts.map +1 -1
  99. package/dist/src/scalars/components/fragments/select-field/selected-content.d.ts +1 -3
  100. package/dist/src/scalars/components/fragments/select-field/selected-content.d.ts.map +1 -1
  101. package/dist/src/scalars/components/fragments/select-field/use-select-field.d.ts +4 -6
  102. package/dist/src/scalars/components/fragments/select-field/use-select-field.d.ts.map +1 -1
  103. package/dist/src/scalars/components/fragments/text-field/text-field.d.ts.map +1 -1
  104. package/dist/src/scalars/components/fragments/textarea-field/textarea-field.d.ts.map +1 -1
  105. package/dist/src/scalars/components/fragments/value-transformer/value-transformer.d.ts +1 -1
  106. package/dist/src/scalars/components/fragments/value-transformer/value-transformer.d.ts.map +1 -1
  107. package/dist/src/scalars/components/fragments/with-field-validation/with-field-validation.d.ts.map +1 -1
  108. package/dist/src/scalars/components/id-field/id-field.d.ts +1 -1
  109. package/dist/src/scalars/components/id-field/id-field.d.ts.map +1 -1
  110. package/dist/src/scalars/components/index.d.ts +3 -0
  111. package/dist/src/scalars/components/index.d.ts.map +1 -1
  112. package/dist/src/scalars/components/number-field/number-field-validations.d.ts +2 -3
  113. package/dist/src/scalars/components/number-field/number-field-validations.d.ts.map +1 -1
  114. package/dist/src/scalars/components/number-field/number-field.d.ts +3 -3
  115. package/dist/src/scalars/components/number-field/number-field.d.ts.map +1 -1
  116. package/dist/src/scalars/components/number-field/types.d.ts +20 -0
  117. package/dist/src/scalars/components/number-field/types.d.ts.map +1 -0
  118. package/dist/src/scalars/components/number-field/use-number-field.d.ts +25 -0
  119. package/dist/src/scalars/components/number-field/use-number-field.d.ts.map +1 -0
  120. package/dist/src/scalars/components/number-field/utils.d.ts +3 -2
  121. package/dist/src/scalars/components/number-field/utils.d.ts.map +1 -1
  122. package/dist/src/scalars/components/types.d.ts +0 -21
  123. package/dist/src/scalars/components/types.d.ts.map +1 -1
  124. package/dist/src/scalars/components/url-field/url-favicon.d.ts +8 -0
  125. package/dist/src/scalars/components/url-field/url-favicon.d.ts.map +1 -0
  126. package/dist/src/scalars/components/url-field/url-field.d.ts +5 -2
  127. package/dist/src/scalars/components/url-field/url-field.d.ts.map +1 -1
  128. package/dist/src/scalars/components/url-field/useURLWarnings.d.ts.map +1 -1
  129. package/dist/src/scalars/docs/examples/multiple-fields-with-complex-layout/multiple-fields-with-complex-layout.d.ts.map +1 -1
  130. package/dist/src/scalars/lib/decorators.d.ts.map +1 -1
  131. package/dist/src/scalars/lib/share-number-validations.d.ts +0 -1
  132. package/dist/src/scalars/lib/share-number-validations.d.ts.map +1 -1
  133. package/dist/src/scalars/lib/shared-value-transformers.d.ts +1 -1
  134. package/dist/src/scalars/lib/shared-value-transformers.d.ts.map +1 -1
  135. package/dist/src/scalars/lib/storybook-arg-types.d.ts +0 -12
  136. package/dist/src/scalars/lib/storybook-arg-types.d.ts.map +1 -1
  137. package/dist/src/scalars/lib/value-cast.d.ts +4 -0
  138. package/dist/src/scalars/lib/value-cast.d.ts.map +1 -0
  139. package/dist/style.css +1 -1
  140. package/package.json +4 -3
  141. package/dist/scalars/components/fragments/badge/badge.js +0 -24
  142. package/dist/scalars/components/fragments/badge/badge.js.map +0 -1
  143. package/dist/scalars/components/fragments/select-field/search-input.js +0 -68
  144. package/dist/scalars/components/fragments/select-field/search-input.js.map +0 -1
  145. package/dist/scalars/components/url-field/utils.js +0 -31
  146. package/dist/scalars/components/url-field/utils.js.map +0 -1
  147. package/dist/scalars/lib/share-number-validations.js +0 -8
  148. package/dist/scalars/lib/share-number-validations.js.map +0 -1
  149. package/dist/src/scalars/components/fragments/badge/badge.d.ts +0 -10
  150. package/dist/src/scalars/components/fragments/badge/badge.d.ts.map +0 -1
  151. package/dist/src/scalars/components/fragments/badge/badge.test.d.ts +0 -2
  152. package/dist/src/scalars/components/fragments/badge/badge.test.d.ts.map +0 -1
  153. package/dist/src/scalars/components/fragments/badge/index.d.ts +0 -2
  154. package/dist/src/scalars/components/fragments/badge/index.d.ts.map +0 -1
  155. package/dist/src/scalars/components/fragments/select-field/search-input.d.ts +0 -17
  156. package/dist/src/scalars/components/fragments/select-field/search-input.d.ts.map +0 -1
  157. package/dist/src/scalars/components/fragments/value-transformer/indext.d.ts +0 -2
  158. package/dist/src/scalars/components/fragments/value-transformer/indext.d.ts.map +0 -1
  159. package/dist/src/scalars/components/url-field/utils.d.ts +0 -3
  160. package/dist/src/scalars/components/url-field/utils.d.ts.map +0 -1
@@ -0,0 +1,153 @@
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
+ import { useId as z } from "react";
3
+ import { useAmountField as H } from "./use-amount-field.js";
4
+ import { SelectFieldRaw as v } from "../fragments/select-field/select-field.js";
5
+ import { NumberFieldRaw as J } from "../number-field/number-field.js";
6
+ import { withFieldValidation as K } from "../fragments/with-field-validation/with-field-validation.js";
7
+ import { FormGroup as Q } from "../fragments/form-group/form-group.js";
8
+ import { FormLabel as T } from "../fragments/form-label/form-label.js";
9
+ import { cn as r } from "../../lib/utils.js";
10
+ import { FormDescription as U } from "../fragments/form-description/form-description.js";
11
+ import { FormMessageList as F } from "../fragments/form-message/message-list.js";
12
+ const W = ({
13
+ label: l,
14
+ value: y,
15
+ id: N,
16
+ precision: C = 0,
17
+ minValue: k,
18
+ maxValue: w,
19
+ trailingZeros: I,
20
+ onChange: S,
21
+ onBlur: A,
22
+ disabled: o,
23
+ className: B,
24
+ required: a,
25
+ errors: n,
26
+ warnings: d,
27
+ description: c,
28
+ defaultValue: R,
29
+ type: j,
30
+ allowedCurrencies: L = [],
31
+ allowedTokens: O = [],
32
+ numberProps: D,
33
+ selectProps: t,
34
+ step: s = 1,
35
+ currencyPosition: m,
36
+ tokenIcons: E
37
+ }) => {
38
+ const G = z(), u = N ?? G, {
39
+ isShowSelect: g,
40
+ isPercent: f,
41
+ options: h,
42
+ valueSelect: p,
43
+ valueInput: x,
44
+ handleOnChangeInput: M,
45
+ handleOnChangeSelect: b,
46
+ handleBlur: V
47
+ } = H({
48
+ value: y,
49
+ defaultValue: R,
50
+ type: j,
51
+ allowedCurrencies: L,
52
+ allowedTokens: O,
53
+ onChange: S,
54
+ onBlur: A,
55
+ tokenIcons: E
56
+ });
57
+ return /* @__PURE__ */ i(Q, { children: [
58
+ l && /* @__PURE__ */ e(
59
+ T,
60
+ {
61
+ htmlFor: u,
62
+ required: a,
63
+ disabled: o,
64
+ hasError: !!(n != null && n.length),
65
+ className: r(o && "text-gray-400 mb-[3px]"),
66
+ children: l
67
+ }
68
+ ),
69
+ /* @__PURE__ */ i("div", { className: r("relative flex items-center"), children: [
70
+ /* @__PURE__ */ i("div", { className: r("relative flex items-center"), children: [
71
+ g && m === "left" && /* @__PURE__ */ e(
72
+ v,
73
+ {
74
+ optionsCheckmark: "Checkmark",
75
+ value: p,
76
+ name: "",
77
+ required: a,
78
+ options: h,
79
+ disabled: o,
80
+ onChange: b,
81
+ className: r(
82
+ "border border-gray-300 rounded-l-md rounded-r-none",
83
+ "border-r-[0.5px] focus:border-r-[1px] focus:ring-1 focus:ring-gray-900",
84
+ "focus:outline-none",
85
+ t == null ? void 0 : t.className
86
+ ),
87
+ ...t || {}
88
+ }
89
+ ),
90
+ /* @__PURE__ */ e(
91
+ J,
92
+ {
93
+ step: s,
94
+ required: a,
95
+ disabled: o,
96
+ name: "",
97
+ value: x,
98
+ id: u,
99
+ maxValue: w,
100
+ precision: C,
101
+ minValue: k,
102
+ trailingZeros: I,
103
+ "data-cast": typeof x == "bigint" ? "BigInt" : "Number",
104
+ onChange: M,
105
+ className: r(
106
+ m === "left" && "border border-gray-300 rounded-l-none border-l-[0.5px]",
107
+ m === "right" && "border border-gray-300 rounded-r-none border-r-[0.5px]",
108
+ f && "pr-7",
109
+ B
110
+ ),
111
+ onBlur: V,
112
+ ...D || {}
113
+ }
114
+ ),
115
+ f && s === 0 && /* @__PURE__ */ e(
116
+ "span",
117
+ {
118
+ className: r(
119
+ "pointer-events-none absolute inset-y-0 right-2 ml-2 flex items-center",
120
+ o ? "text-gray-400" : "text-gray-900"
121
+ ),
122
+ children: "%"
123
+ }
124
+ )
125
+ ] }),
126
+ g && m === "right" && /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
127
+ v,
128
+ {
129
+ optionsCheckmark: "Checkmark",
130
+ value: p,
131
+ name: "",
132
+ required: a,
133
+ disabled: o,
134
+ onChange: b,
135
+ options: h,
136
+ className: r(
137
+ "rounded-l-none rounded-r-md border border-gray-300",
138
+ "border-l-[0.5px] focus:border-l-[1px] focus:ring-1 focus:ring-gray-900 focus:ring-offset-0",
139
+ "focus:outline-none"
140
+ ),
141
+ ...t || {}
142
+ }
143
+ ) })
144
+ ] }),
145
+ c && /* @__PURE__ */ e(U, { children: c }),
146
+ d && /* @__PURE__ */ e(F, { messages: d, type: "warning" }),
147
+ n && /* @__PURE__ */ e(F, { messages: n, type: "error" })
148
+ ] });
149
+ }, te = K(W);
150
+ export {
151
+ te as AmountField
152
+ };
153
+ //# sourceMappingURL=amount-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amount-field.js","sources":["../../../../src/scalars/components/amount-field/amount-field.tsx"],"sourcesContent":["import React, { FC, useId } from \"react\";\nimport { NumberFieldProps, NumberFieldRaw } from \"../number-field\";\nimport {\n FormDescription,\n FormGroup,\n FormLabel,\n FormMessageList,\n SelectFieldProps,\n SelectFieldRaw,\n withFieldValidation,\n} from \"../fragments\";\nimport { useAmountField } from \"./use-amount-field\";\nimport { cn } from \"@/scalars/lib\";\nimport { InputNumberProps } from \"../number-field/types\";\nimport { AmountValue } from \"./types\";\nimport { AmountFieldPropsGeneric } from \"./types\";\nimport { IconName } from \"@/powerhouse\";\n\nexport interface TokenIcons {\n [key: string]: IconName | (() => React.JSX.Element);\n}\n\nexport type AmountFieldProps = AmountFieldPropsGeneric &\n Omit<InputNumberProps, \"onChange\" | \"onBlur\"> & {\n className?: string;\n name: string;\n pattern?: RegExp;\n numberProps?: Omit<NumberFieldProps, \"name\">;\n selectProps?: Omit<SelectFieldProps, \"name\">;\n allowedCurrencies?: string[];\n allowedTokens?: string[];\n selectName: string;\n defaultValue?: AmountValue;\n value?: AmountValue;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n currencyPosition?: \"left\" | \"right\";\n tokenIcons?: TokenIcons;\n };\n\nconst AmountFieldRaw: FC<AmountFieldProps> = ({\n label,\n value,\n id: propId,\n precision = 0,\n minValue,\n maxValue,\n trailingZeros,\n onChange,\n onBlur,\n disabled,\n className,\n required,\n errors,\n warnings,\n description,\n defaultValue,\n type,\n allowedCurrencies = [],\n allowedTokens = [],\n numberProps,\n selectProps,\n step = 1,\n currencyPosition,\n tokenIcons,\n}) => {\n const generatedId = useId();\n const id = propId ?? generatedId;\n const {\n isShowSelect,\n isPercent,\n options,\n valueSelect,\n valueInput,\n handleOnChangeInput,\n handleOnChangeSelect,\n handleBlur,\n } = useAmountField({\n value,\n defaultValue,\n type,\n allowedCurrencies,\n allowedTokens,\n onChange,\n onBlur,\n tokenIcons,\n });\n\n return (\n <FormGroup>\n {label && (\n <FormLabel\n htmlFor={id}\n required={required}\n disabled={disabled}\n hasError={!!errors?.length}\n className={cn(disabled && \"text-gray-400 mb-[3px]\")}\n >\n {label}\n </FormLabel>\n )}\n <div className={cn(\"relative flex items-center\")}>\n <div className={cn(\"relative flex items-center\")}>\n {isShowSelect && currencyPosition === \"left\" && (\n <SelectFieldRaw\n optionsCheckmark=\"Checkmark\"\n value={valueSelect}\n name=\"\"\n required={required}\n options={options}\n disabled={disabled}\n onChange={handleOnChangeSelect}\n className={cn(\n \"border border-gray-300 rounded-l-md rounded-r-none\",\n \"border-r-[0.5px] focus:border-r-[1px] focus:ring-1 focus:ring-gray-900\",\n \"focus:outline-none\",\n selectProps?.className,\n )}\n {...(selectProps || {})}\n />\n )}\n <NumberFieldRaw\n step={step}\n required={required}\n disabled={disabled}\n name=\"\"\n value={valueInput}\n id={id}\n maxValue={maxValue}\n precision={precision}\n minValue={minValue}\n trailingZeros={trailingZeros}\n data-cast={typeof valueInput === \"bigint\" ? \"BigInt\" : \"Number\"}\n onChange={handleOnChangeInput}\n className={cn(\n currencyPosition === \"left\" &&\n \"border border-gray-300 rounded-l-none border-l-[0.5px]\",\n currencyPosition === \"right\" &&\n \"border border-gray-300 rounded-r-none border-r-[0.5px]\",\n isPercent && \"pr-7\",\n className,\n )}\n onBlur={handleBlur}\n {...(numberProps || {})}\n />\n {isPercent && step === 0 && (\n <span\n className={cn(\n \"pointer-events-none absolute inset-y-0 right-2 ml-2 flex items-center\",\n disabled ? \"text-gray-400\" : \"text-gray-900\",\n )}\n >\n %\n </span>\n )}\n </div>\n {isShowSelect && currencyPosition === \"right\" && (\n <div>\n <SelectFieldRaw\n optionsCheckmark=\"Checkmark\"\n value={valueSelect}\n name=\"\"\n required={required}\n disabled={disabled}\n onChange={handleOnChangeSelect}\n options={options}\n className={cn(\n \"rounded-l-none rounded-r-md border border-gray-300\",\n \"border-l-[0.5px] focus:border-l-[1px] focus:ring-1 focus:ring-gray-900 focus:ring-offset-0\",\n \"focus:outline-none\",\n )}\n {...(selectProps || {})}\n />\n </div>\n )}\n </div>\n {description && <FormDescription>{description}</FormDescription>}\n {warnings && <FormMessageList messages={warnings} type=\"warning\" />}\n {errors && <FormMessageList messages={errors} type=\"error\" />}\n </FormGroup>\n );\n};\n\nexport const AmountField =\n withFieldValidation<AmountFieldProps>(AmountFieldRaw);\n"],"names":["AmountFieldRaw","label","value","propId","precision","minValue","maxValue","trailingZeros","onChange","onBlur","disabled","className","required","errors","warnings","description","defaultValue","type","allowedCurrencies","allowedTokens","numberProps","selectProps","step","currencyPosition","tokenIcons","generatedId","useId","id","isShowSelect","isPercent","options","valueSelect","valueInput","handleOnChangeInput","handleOnChangeSelect","handleBlur","useAmountField","FormGroup","jsx","FormLabel","cn","jsxs","SelectFieldRaw","NumberFieldRaw","FormDescription","FormMessageList","AmountField","withFieldValidation"],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { getCountryCurrencies as j, getTokens as k } from "./utils.js";
2
+ const T = ({
3
+ value: c,
4
+ defaultValue: s = 0,
5
+ type: e,
6
+ allowedCurrencies: i = [],
7
+ allowedTokens: l = [],
8
+ onChange: r,
9
+ onBlur: u,
10
+ tokenIcons: m
11
+ }) => {
12
+ const a = c ?? s, b = e === "Amount" || e === "AmountPercentage" ? a : a.amount, f = e === "AmountPercentage", A = e === "AmountCurrency" || e === "AmountToken", v = j(i), d = k(l, m), g = e === "AmountCurrency" ? v : d, w = e === "AmountCurrency" ? a.currency : a.token;
13
+ return {
14
+ isPercent: f,
15
+ isShowSelect: A,
16
+ options: g,
17
+ valueInput: b,
18
+ valueSelect: w,
19
+ handleOnChangeInput: (t) => {
20
+ let n = {};
21
+ e === "AmountCurrency" && typeof c == "object" && (n = {
22
+ ...c,
23
+ amount: Number(t.target.value)
24
+ }), e === "AmountToken" && typeof c == "object" && (n = {
25
+ ...c,
26
+ amount: BigInt(t.target.value)
27
+ }), (e === "Amount" || e === "AmountPercentage") && (n = Number(t.target.value));
28
+ const o = new Event("change", {
29
+ bubbles: !0,
30
+ cancelable: !0
31
+ });
32
+ Object.defineProperty(o, "target", {
33
+ value: { value: n },
34
+ writable: !1
35
+ }), r == null || r(o);
36
+ },
37
+ handleOnChangeSelect: (t) => {
38
+ let n = {};
39
+ e === "AmountCurrency" && typeof c == "object" && (n = {
40
+ ...c,
41
+ currency: typeof t == "string" ? t : void 0
42
+ }), e === "AmountToken" && typeof c == "object" && (n = {
43
+ ...c,
44
+ token: typeof t == "string" ? t : void 0
45
+ });
46
+ const o = new Event("change", {
47
+ bubbles: !0,
48
+ cancelable: !0
49
+ });
50
+ Object.defineProperty(o, "target", {
51
+ value: { value: n },
52
+ writable: !1
53
+ }), r == null || r(o);
54
+ },
55
+ handleBlur: (t) => {
56
+ if ((e === "AmountCurrency" || e === "AmountToken") && typeof c == "object") {
57
+ const n = {
58
+ ...c,
59
+ amount: BigInt(t.target.value)
60
+ };
61
+ u == null || u(n);
62
+ }
63
+ if (e === "Amount" || e === "AmountPercentage") {
64
+ const n = Number(t.target.value), o = new Event("change", {
65
+ bubbles: !0,
66
+ cancelable: !0
67
+ });
68
+ Object.defineProperty(o, "target", {
69
+ value: { value: n },
70
+ writable: !1
71
+ }), r == null || r(o), u == null || u(t);
72
+ }
73
+ }
74
+ };
75
+ };
76
+ export {
77
+ T as useAmountField
78
+ };
79
+ //# sourceMappingURL=use-amount-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-amount-field.js","sources":["../../../../src/scalars/components/amount-field/use-amount-field.tsx"],"sourcesContent":["import { TokenIcons } from \"./amount-field\";\nimport {\n AmountCurrency,\n AmountFieldPropsGeneric,\n AmountToken,\n AmountValue,\n} from \"./types\";\nimport { getCountryCurrencies, getTokens } from \"./utils\";\n\ninterface UseAmountFieldProps {\n value?: AmountValue;\n defaultValue?: AmountValue;\n type: AmountFieldPropsGeneric[\"type\"];\n allowedCurrencies?: string[];\n allowedTokens?: string[];\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n tokenIcons?: TokenIcons;\n}\n\nexport const useAmountField = ({\n value,\n defaultValue = 0,\n type,\n allowedCurrencies = [],\n allowedTokens = [],\n onChange,\n onBlur,\n tokenIcons,\n}: UseAmountFieldProps) => {\n const currentValue = value ?? defaultValue;\n\n const valueInput =\n type === \"Amount\" || type === \"AmountPercentage\"\n ? (currentValue as number)\n : (currentValue as AmountCurrency | AmountToken).amount;\n\n const isPercent = type === \"AmountPercentage\";\n\n //Allow select only if type is AmountCurrency or AmountToken\n const isShowSelect = type === \"AmountCurrency\" || type === \"AmountToken\";\n\n // Filter only if allowedCurrencies is provided\n const optionsCurrencies = getCountryCurrencies(allowedCurrencies);\n const optionsTokenIcons = getTokens(allowedTokens, tokenIcons);\n\n const options =\n type === \"AmountCurrency\" ? optionsCurrencies : optionsTokenIcons;\n\n const valueSelect =\n type === \"AmountCurrency\"\n ? (currentValue as AmountCurrency).currency\n : (currentValue as AmountToken).token;\n\n // Handle the change of the input\n const handleOnChangeInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n let newValue: AmountValue = {} as unknown as AmountValue;\n if (type === \"AmountCurrency\" && typeof value === \"object\") {\n newValue = {\n ...value,\n amount: Number(e.target.value),\n } as AmountValue;\n }\n if (type === \"AmountToken\" && typeof value === \"object\") {\n newValue = {\n ...value,\n amount: BigInt(e.target.value),\n } as AmountValue;\n }\n if (type === \"Amount\" || type === \"AmountPercentage\") {\n newValue = Number(e.target.value);\n }\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n };\n\n // Handle the change of the select\n const handleOnChangeSelect = (e: string | string[]) => {\n let newValue: AmountCurrency | AmountToken = {} as\n | AmountCurrency\n | AmountToken;\n if (type === \"AmountCurrency\" && typeof value === \"object\") {\n newValue = {\n ...value,\n currency: typeof e === \"string\" ? e : undefined,\n } as AmountCurrency;\n }\n if (type === \"AmountToken\" && typeof value === \"object\") {\n newValue = {\n ...value,\n token: typeof e === \"string\" ? e : undefined,\n } as AmountToken;\n }\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n // Handle the blur of the input if type is AmountCurrency or AmountToken should be a bigint\n if (\n (type === \"AmountCurrency\" || type === \"AmountToken\") &&\n typeof value === \"object\"\n ) {\n const newValue = {\n ...value,\n amount: BigInt(e.target.value),\n } as AmountValue;\n\n onBlur?.(newValue as unknown as React.FocusEvent<HTMLInputElement>);\n }\n if (type === \"Amount\" || type === \"AmountPercentage\") {\n const newValue = Number(e.target.value);\n\n //Create the event\n const nativeEvent = new Event(\"change\", {\n bubbles: true,\n cancelable: true,\n });\n Object.defineProperty(nativeEvent, \"target\", {\n value: { value: newValue },\n writable: false,\n });\n onChange?.(nativeEvent as unknown as React.ChangeEvent<HTMLInputElement>);\n\n onBlur?.(e);\n }\n };\n\n return {\n isPercent,\n isShowSelect,\n options,\n valueInput,\n valueSelect,\n handleOnChangeInput,\n handleOnChangeSelect,\n handleBlur,\n };\n};\n"],"names":["useAmountField","value","defaultValue","type","allowedCurrencies","allowedTokens","onChange","onBlur","tokenIcons","currentValue","valueInput","isPercent","isShowSelect","optionsCurrencies","getCountryCurrencies","optionsTokenIcons","getTokens","options","valueSelect","e","newValue","nativeEvent"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ const u = (t = []) => t.map((r) => ({
2
+ value: r,
3
+ label: r
4
+ })), l = (t = []) => u(t), p = (t = [], r) => t.map((e) => {
5
+ const n = r == null ? void 0 : r[e];
6
+ return {
7
+ value: e,
8
+ label: e,
9
+ icon: n
10
+ };
11
+ });
12
+ export {
13
+ l as getCountryCurrencies,
14
+ u as getOptions,
15
+ p as getTokens
16
+ };
17
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/scalars/components/amount-field/utils.ts"],"sourcesContent":["import { TokenIcons } from \"./amount-field\";\n\nexport const getOptions = (items: string[] = []) => {\n return items.map((item) => ({\n value: item,\n label: item,\n }));\n};\n\nexport const getCountryCurrencies = (allowedCurrencies: string[] = []) => {\n return getOptions(allowedCurrencies);\n};\n\nexport const getTokens = (\n allowedTokens: string[] = [],\n tokenIcons?: TokenIcons,\n) => {\n const options = allowedTokens.map((token) => {\n const iconFn = tokenIcons?.[token];\n\n return {\n value: token,\n label: token,\n icon: iconFn,\n };\n });\n\n return options;\n};\n"],"names":["getOptions","items","item","getCountryCurrencies","allowedCurrencies","getTokens","allowedTokens","tokenIcons","token","iconFn"],"mappings":"AAEO,MAAMA,IAAa,CAACC,IAAkB,OACpCA,EAAM,IAAI,CAACC,OAAU;AAAA,EAC1B,OAAOA;AAAA,EACP,OAAOA;AAAA,EACP,GAGSC,IAAuB,CAACC,IAA8B,OAC1DJ,EAAWI,CAAiB,GAGxBC,IAAY,CACvBC,IAA0B,IAC1BC,MAEgBD,EAAc,IAAI,CAACE,MAAU;AACrC,QAAAC,IAASF,KAAA,gBAAAA,EAAaC;AAErB,SAAA;AAAA,IACL,OAAOA;AAAA,IACP,OAAOA;AAAA,IACP,MAAMC;AAAA,EACR;AAAA,CACD;"}
@@ -0,0 +1,64 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import k from "react";
3
+ import s from "world-countries";
4
+ import { CircleFlag as F } from "react-circle-flags";
5
+ import { SelectFieldRaw as b } from "../fragments/select-field/select-field.js";
6
+ import { withFieldValidation as R } from "../fragments/with-field-validation/with-field-validation.js";
7
+ const C = k.forwardRef(
8
+ ({
9
+ onChange: l,
10
+ placeholder: t,
11
+ allowedCountries: r,
12
+ excludedCountries: e,
13
+ includeDependentAreas: o = !1,
14
+ viewMode: i = "NamesOnly",
15
+ showFlagIcons: f = !0,
16
+ enableSearch: p,
17
+ ...d
18
+ }, h) => {
19
+ const n = s.filter(
20
+ (a) => (o ? !0 : a.independent) && a.cca2 !== "AQ"
21
+ // exclude Antarctica
22
+ ).map((a) => ({
23
+ value: a.cca2,
24
+ label: i === "CodesOnly" ? a.cca2 : i === "NamesAndCodes" ? `${a.name.common} (${a.cca2})` : a.name.common,
25
+ icon: f ? () => /* @__PURE__ */ m(
26
+ F,
27
+ {
28
+ className: "size-4",
29
+ countryCode: a.cca2.toLowerCase(),
30
+ height: 16
31
+ }
32
+ ) : void 0
33
+ })).sort((a, c) => a.label > c.label ? 1 : a.label < c.label ? -1 : 0), v = r || e ? n.filter(
34
+ (a) => (!r || r.includes(a.value)) && !(e != null && e.includes(a.value))
35
+ ) : n;
36
+ return /* @__PURE__ */ m(
37
+ b,
38
+ {
39
+ ref: h,
40
+ options: v,
41
+ optionsCheckmark: "Checkmark",
42
+ optionsCheckmarkPosition: "Right",
43
+ searchable: p,
44
+ onChange: l,
45
+ placeholder: t,
46
+ ...d
47
+ }
48
+ );
49
+ }
50
+ ), N = R(
51
+ C,
52
+ {
53
+ validations: {
54
+ _validOption: ({ allowedCountries: l, excludedCountries: t, includeDependentAreas: r }) => (e) => e === "" || e === void 0 ? !0 : !s.filter(
55
+ (i) => (r ? !0 : i.independent) && i.cca2 !== "AQ"
56
+ ).map((i) => i.cca2).includes(e) || l && !l.includes(e) || t != null && t.includes(e) ? "Please select a valid country" : !0
57
+ }
58
+ }
59
+ );
60
+ N.displayName = "CountryCodeField";
61
+ export {
62
+ N as CountryCodeField
63
+ };
64
+ //# sourceMappingURL=country-code-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"country-code-field.js","sources":["../../../../src/scalars/components/country-code-field/country-code-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { SelectFieldRaw } from \"@/scalars/components/fragments/select-field\";\nimport { withFieldValidation } from \"@/scalars/components/fragments/with-field-validation\";\nimport countries from \"world-countries\";\nimport { CircleFlag } from \"react-circle-flags\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { CountryCodeProps } from \"./types\";\n\nexport type CountryCodeFieldProps = FieldCommonProps<string> &\n ErrorHandling &\n CountryCodeProps;\n\nconst CountryCodeFieldRaw: React.FC<CountryCodeFieldProps> = React.forwardRef<\n HTMLButtonElement,\n CountryCodeFieldProps\n>(\n (\n {\n onChange,\n placeholder,\n allowedCountries,\n excludedCountries,\n includeDependentAreas = false,\n viewMode = \"NamesOnly\",\n showFlagIcons = true,\n enableSearch,\n ...props\n },\n ref,\n ) => {\n const defaultOptions = countries\n .filter(\n (country) =>\n (includeDependentAreas ? true : country.independent) &&\n country.cca2 !== \"AQ\", // exclude Antarctica\n )\n .map((country) => ({\n value: country.cca2,\n label:\n viewMode === \"CodesOnly\"\n ? country.cca2\n : viewMode === \"NamesAndCodes\"\n ? `${country.name.common} (${country.cca2})`\n : country.name.common,\n icon: showFlagIcons\n ? () => (\n <CircleFlag\n className=\"size-4\"\n countryCode={country.cca2.toLowerCase()}\n height={16}\n />\n )\n : undefined,\n }))\n .sort((a, b) => (a.label > b.label ? 1 : a.label < b.label ? -1 : 0));\n\n const options =\n allowedCountries || excludedCountries\n ? defaultOptions.filter(\n (option) =>\n (!allowedCountries || allowedCountries.includes(option.value)) &&\n !excludedCountries?.includes(option.value),\n )\n : defaultOptions;\n\n return (\n <SelectFieldRaw\n ref={ref}\n options={options}\n optionsCheckmark=\"Checkmark\"\n optionsCheckmarkPosition=\"Right\"\n searchable={enableSearch}\n onChange={onChange}\n placeholder={placeholder}\n {...props}\n />\n );\n },\n);\n\nexport const CountryCodeField = withFieldValidation<CountryCodeFieldProps>(\n CountryCodeFieldRaw,\n {\n validations: {\n _validOption:\n ({ allowedCountries, excludedCountries, includeDependentAreas }) =>\n (value: string | undefined) => {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n const validCountries = countries\n .filter(\n (country) =>\n (includeDependentAreas ? true : country.independent) &&\n country.cca2 !== \"AQ\",\n )\n .map((country) => country.cca2);\n\n // First check if it's a valid country code\n if (!validCountries.includes(value)) {\n return \"Please select a valid country\";\n }\n // Check if country is in allowed list\n if (allowedCountries && !allowedCountries.includes(value)) {\n return \"Please select a valid country\";\n }\n // Check if country is in excluded list\n if (excludedCountries?.includes(value)) {\n return \"Please select a valid country\";\n }\n\n return true;\n },\n },\n },\n);\n\nCountryCodeField.displayName = \"CountryCodeField\";\n"],"names":["CountryCodeFieldRaw","React","onChange","placeholder","allowedCountries","excludedCountries","includeDependentAreas","viewMode","showFlagIcons","enableSearch","props","ref","defaultOptions","countries","country","jsx","CircleFlag","b","options","option","SelectFieldRaw","CountryCodeField","withFieldValidation","value"],"mappings":";;;;;;AAYA,MAAMA,IAAuDC,EAAM;AAAA,EAIjE,CACE;AAAA,IACE,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,uBAAAC,IAAwB;AAAA,IACxB,UAAAC,IAAW;AAAA,IACX,eAAAC,IAAgB;AAAA,IAChB,cAAAC;AAAA,IACA,GAAGC;AAAA,KAELC,MACG;AACH,UAAMC,IAAiBC,EACpB;AAAA,MACC,CAACC,OACER,IAAwB,KAAOQ,EAAQ,gBACxCA,EAAQ,SAAS;AAAA;AAAA,IAAA,EAEpB,IAAI,CAACA,OAAa;AAAA,MACjB,OAAOA,EAAQ;AAAA,MACf,OACEP,MAAa,cACTO,EAAQ,OACRP,MAAa,kBACX,GAAGO,EAAQ,KAAK,MAAM,KAAKA,EAAQ,IAAI,MACvCA,EAAQ,KAAK;AAAA,MACrB,MAAMN,IACF,MACE,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,aAAaF,EAAQ,KAAK,YAAY;AAAA,UACtC,QAAQ;AAAA,QAAA;AAAA,MAAA,IAGZ;AAAA,IAAA,EACJ,EACD,KAAK,CAAC,GAAGG,MAAO,EAAE,QAAQA,EAAE,QAAQ,IAAI,EAAE,QAAQA,EAAE,QAAQ,KAAK,CAAE,GAEhEC,IACJd,KAAoBC,IAChBO,EAAe;AAAA,MACb,CAACO,OACE,CAACf,KAAoBA,EAAiB,SAASe,EAAO,KAAK,MAC5D,EAACd,KAAA,QAAAA,EAAmB,SAASc,EAAO;AAAA,IAAK,IAE7CP;AAGJ,WAAA,gBAAAG;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QACA,SAAAO;AAAA,QACA,kBAAiB;AAAA,QACjB,0BAAyB;AAAA,QACzB,YAAYT;AAAA,QACZ,UAAAP;AAAA,QACA,aAAAC;AAAA,QACC,GAAGO;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN,GAEaW,IAAmBC;AAAA,EAC9BtB;AAAA,EACA;AAAA,IACE,aAAa;AAAA,MACX,cACE,CAAC,EAAE,kBAAAI,GAAkB,mBAAAC,GAAmB,uBAAAC,EAAsB,MAC9D,CAACiB,MACKA,MAAU,MAAMA,MAAU,SACrB,KAYL,CATmBV,EACpB;AAAA,QACC,CAACC,OACER,IAAwB,KAAOQ,EAAQ,gBACxCA,EAAQ,SAAS;AAAA,MAEpB,EAAA,IAAI,CAACA,MAAYA,EAAQ,IAAI,EAGZ,SAASS,CAAK,KAI9BnB,KAAoB,CAACA,EAAiB,SAASmB,CAAK,KAIpDlB,KAAA,QAAAA,EAAmB,SAASkB,KACvB,kCAGF;AAAA,IACT;AAAA,EACJ;AAEJ;AAEAF,EAAiB,cAAc;"}
@@ -0,0 +1,69 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import c, { useMemo as y } from "react";
3
+ import { SelectFieldRaw as u } from "../fragments/select-field/select-field.js";
4
+ import { withFieldValidation as b } from "../fragments/with-field-validation/with-field-validation.js";
5
+ const f = [
6
+ { code: "ARS", name: "Argentine Peso", symbol: "$" },
7
+ { code: "AUD", name: "Australian Dollar", symbol: "A$" },
8
+ { code: "BRL", name: "Brazilian Real", symbol: "R$" },
9
+ { code: "CAD", name: "Canadian Dollar", symbol: "C$" },
10
+ { code: "CHF", name: "Swiss Franc", symbol: "CHF" },
11
+ { code: "CLP", name: "Chilean Peso", symbol: "$" },
12
+ { code: "CNY", name: "Chinese Yuan", symbol: "¥" },
13
+ { code: "COP", name: "Colombian Peso", symbol: "$" },
14
+ { code: "EUR", name: "Euro", symbol: "€" },
15
+ { code: "GBP", name: "British Pound", symbol: "£" },
16
+ { code: "INR", name: "Indian Rupee", symbol: "₹" },
17
+ { code: "JPY", name: "Japanese Yen", symbol: "¥" },
18
+ { code: "MXN", name: "Mexican Peso", symbol: "$" },
19
+ { code: "USD", name: "United States Dollar", symbol: "$" },
20
+ { code: "UYU", name: "Uruguayan Peso", symbol: "$" },
21
+ { code: "ZAR", name: "South African Rand", symbol: "R" }
22
+ ], n = c.forwardRef(
23
+ ({
24
+ placeholder: o,
25
+ allowedCurrencies: r,
26
+ excludedCurrencies: e,
27
+ multiple: i = !1,
28
+ // maxSelection is not used in the component, but in the validation
29
+ // declared here to prevent forwarding it to the select via props
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ maxSelection: R,
32
+ // TODO: implement following props
33
+ // includeCurrencySymbols,
34
+ // enableAutocomplete,
35
+ // showFlagIcons,
36
+ ...t
37
+ }, l) => {
38
+ const s = y(() => f.filter((a) => !(r !== void 0 && Array.isArray(r) && !r.includes(a.code) || e !== void 0 && Array.isArray(e) && e.includes(a.code))).map((a) => ({
39
+ label: a.name,
40
+ value: a.code
41
+ })).sort((a, m) => a.label.localeCompare(m.label)), [r, e]);
42
+ return /* @__PURE__ */ d(
43
+ u,
44
+ {
45
+ ref: l,
46
+ options: s,
47
+ optionsCheckmark: "Checkmark",
48
+ searchable: !0,
49
+ multiple: i,
50
+ placeholder: o,
51
+ ...t
52
+ }
53
+ );
54
+ }
55
+ );
56
+ n.displayName = "CurrencyCodeFieldRaw";
57
+ const C = b(
58
+ n,
59
+ {
60
+ validations: {
61
+ _validateMaxSelection: ({ value: o, multiple: r, maxSelection: e }) => () => o === void 0 || Array.isArray(o) && o.length === 0 || !r || e === void 0 ? !0 : Array.isArray(o) && o.length > e ? `You can select up to ${e} currencies only` : !0
62
+ }
63
+ }
64
+ );
65
+ C.displayName = "CurrencyCodeField";
66
+ export {
67
+ C as CurrencyCodeField
68
+ };
69
+ //# sourceMappingURL=currency-code-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency-code-field.js","sources":["../../../../src/scalars/components/currency-code-field/currency-code-field.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { ErrorHandling, FieldCommonProps } from \"../types\";\nimport { SelectFieldRaw, withFieldValidation } from \"../fragments\";\nimport type { SelectOption } from \"../enum-field/types\";\n\nexport interface CurrencyCodeFieldProps\n extends FieldCommonProps<string | string[]>,\n ErrorHandling {\n placeholder?: string;\n allowedCurrencies?: string[];\n excludedCurrencies?: string[];\n includeCurrencySymbols?: boolean;\n enableAutocomplete?: boolean;\n showFlagIcons?: boolean;\n multiple?: boolean;\n maxSelection?: number;\n onChange?: (value: string | string[]) => void;\n onBlur?: () => void;\n}\n\ninterface Currency {\n code: string;\n name: string;\n symbol: string;\n}\n\n// TODO: replace with the full list of currencies\nconst CURRENCIES: Currency[] = [\n { code: \"ARS\", name: \"Argentine Peso\", symbol: \"$\" },\n { code: \"AUD\", name: \"Australian Dollar\", symbol: \"A$\" },\n { code: \"BRL\", name: \"Brazilian Real\", symbol: \"R$\" },\n { code: \"CAD\", name: \"Canadian Dollar\", symbol: \"C$\" },\n { code: \"CHF\", name: \"Swiss Franc\", symbol: \"CHF\" },\n { code: \"CLP\", name: \"Chilean Peso\", symbol: \"$\" },\n { code: \"CNY\", name: \"Chinese Yuan\", symbol: \"¥\" },\n { code: \"COP\", name: \"Colombian Peso\", symbol: \"$\" },\n { code: \"EUR\", name: \"Euro\", symbol: \"€\" },\n { code: \"GBP\", name: \"British Pound\", symbol: \"£\" },\n { code: \"INR\", name: \"Indian Rupee\", symbol: \"₹\" },\n { code: \"JPY\", name: \"Japanese Yen\", symbol: \"¥\" },\n { code: \"MXN\", name: \"Mexican Peso\", symbol: \"$\" },\n { code: \"USD\", name: \"United States Dollar\", symbol: \"$\" },\n { code: \"UYU\", name: \"Uruguayan Peso\", symbol: \"$\" },\n { code: \"ZAR\", name: \"South African Rand\", symbol: \"R\" },\n];\n\nconst CurrencyCodeFieldRaw = React.forwardRef<\n HTMLButtonElement,\n CurrencyCodeFieldProps\n>(\n (\n {\n placeholder,\n allowedCurrencies,\n excludedCurrencies,\n multiple = false,\n // maxSelection is not used in the component, but in the validation\n // declared here to prevent forwarding it to the select via props\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxSelection,\n // TODO: implement following props\n // includeCurrencySymbols,\n // enableAutocomplete,\n // showFlagIcons,\n ...props\n },\n ref,\n ) => {\n const options: SelectOption[] = useMemo(() => {\n const filteredCurrencies = CURRENCIES.filter((currency) => {\n // filter the allowed currencies only\n if (\n allowedCurrencies !== undefined &&\n Array.isArray(allowedCurrencies) &&\n !allowedCurrencies.includes(currency.code)\n ) {\n return false; // not allowed\n }\n // filter the excluded currencies\n if (\n excludedCurrencies !== undefined &&\n Array.isArray(excludedCurrencies) &&\n excludedCurrencies.includes(currency.code)\n ) {\n return false; // excluded\n }\n return true;\n });\n\n return filteredCurrencies\n .map((currency) => ({\n label: currency.name,\n value: currency.code,\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n }, [allowedCurrencies, excludedCurrencies]);\n\n return (\n <SelectFieldRaw\n ref={ref}\n options={options}\n optionsCheckmark=\"Checkmark\"\n searchable\n multiple={multiple}\n placeholder={placeholder}\n {...props}\n />\n );\n },\n);\n\nCurrencyCodeFieldRaw.displayName = \"CurrencyCodeFieldRaw\";\n\nexport const CurrencyCodeField = withFieldValidation<CurrencyCodeFieldProps>(\n CurrencyCodeFieldRaw,\n {\n validations: {\n _validateMaxSelection:\n ({ value, multiple, maxSelection }) =>\n () => {\n if (\n value === undefined ||\n (Array.isArray(value) && value.length === 0)\n )\n return true;\n if (!multiple) return true;\n if (maxSelection === undefined) return true;\n\n if (Array.isArray(value) && value.length > maxSelection) {\n return `You can select up to ${maxSelection} currencies only`;\n }\n return true;\n },\n },\n },\n);\n\nCurrencyCodeField.displayName = \"CurrencyCodeField\";\n"],"names":["CURRENCIES","CurrencyCodeFieldRaw","React","placeholder","allowedCurrencies","excludedCurrencies","multiple","maxSelection","props","ref","options","useMemo","currency","b","jsx","SelectFieldRaw","CurrencyCodeField","withFieldValidation","value"],"mappings":";;;;AA2BA,MAAMA,IAAyB;AAAA,EAC7B,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,qBAAqB,QAAQ,KAAK;AAAA,EACvD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,KAAK;AAAA,EACpD,EAAE,MAAM,OAAO,MAAM,mBAAmB,QAAQ,KAAK;AAAA,EACrD,EAAE,MAAM,OAAO,MAAM,eAAe,QAAQ,MAAM;AAAA,EAClD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,QAAQ,QAAQ,IAAI;AAAA,EACzC,EAAE,MAAM,OAAO,MAAM,iBAAiB,QAAQ,IAAI;AAAA,EAClD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,gBAAgB,QAAQ,IAAI;AAAA,EACjD,EAAE,MAAM,OAAO,MAAM,wBAAwB,QAAQ,IAAI;AAAA,EACzD,EAAE,MAAM,OAAO,MAAM,kBAAkB,QAAQ,IAAI;AAAA,EACnD,EAAE,MAAM,OAAO,MAAM,sBAAsB,QAAQ,IAAI;AACzD,GAEMC,IAAuBC,EAAM;AAAA,EAIjC,CACE;AAAA,IACE,aAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,UAAAC,IAAW;AAAA;AAAA;AAAA;AAAA,IAIX,cAAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,GAAGC;AAAA,KAELC,MACG;AACG,UAAAC,IAA0BC,EAAQ,MACXX,EAAW,OAAO,CAACY,MAG1C,EAAAR,MAAsB,UACtB,MAAM,QAAQA,CAAiB,KAC/B,CAACA,EAAkB,SAASQ,EAAS,IAAI,KAMzCP,MAAuB,UACvB,MAAM,QAAQA,CAAkB,KAChCA,EAAmB,SAASO,EAAS,IAAI,EAK5C,EAGE,IAAI,CAACA,OAAc;AAAA,MAClB,OAAOA,EAAS;AAAA,MAChB,OAAOA,EAAS;AAAA,IAClB,EAAE,EACD,KAAK,CAAC,GAAGC,MAAM,EAAE,MAAM,cAAcA,EAAE,KAAK,CAAC,GAC/C,CAACT,GAAmBC,CAAkB,CAAC;AAGxC,WAAA,gBAAAS;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAN;AAAA,QACA,SAAAC;AAAA,QACA,kBAAiB;AAAA,QACjB,YAAU;AAAA,QACV,UAAAJ;AAAA,QACA,aAAAH;AAAA,QACC,GAAGK;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEAP,EAAqB,cAAc;AAE5B,MAAMe,IAAoBC;AAAA,EAC/BhB;AAAA,EACA;AAAA,IACE,aAAa;AAAA,MACX,uBACE,CAAC,EAAE,OAAAiB,GAAO,UAAAZ,GAAU,cAAAC,QACpB,MAEIW,MAAU,UACT,MAAM,QAAQA,CAAK,KAAKA,EAAM,WAAW,KAGxC,CAACZ,KACDC,MAAiB,SAAkB,KAEnC,MAAM,QAAQW,CAAK,KAAKA,EAAM,SAASX,IAClC,wBAAwBA,CAAY,qBAEtC;AAAA,IACT;AAAA,EACJ;AAEJ;AAEAS,EAAkB,cAAc;"}
@@ -1,13 +1,23 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import { RadioGroupField as d } from "../fragments/radio-group-field/radio-group-field.js";
3
- import { SelectField as i } from "../fragments/select-field/select-field.js";
4
- const l = ({
5
- variant: u = "Auto",
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ import { RadioGroupField as l } from "../fragments/radio-group-field/radio-group-field.js";
3
+ import { SelectField as m } from "../fragments/select-field/select-field.js";
4
+ const u = ({
5
+ variant: i = "Auto",
6
6
  options: e = [],
7
7
  ...r
8
- }) => u === "Auto" ? e.length < 6 ? /* @__PURE__ */ m(d, { options: e, ...r }) : /* @__PURE__ */ m(i, { options: e, ...r }) : u === "RadioGroup" ? /* @__PURE__ */ m(d, { options: e, ...r }) : /* @__PURE__ */ m(i, { options: e, ...r });
9
- l.displayName = "EnumField";
8
+ }) => {
9
+ const t = /* @__PURE__ */ c(l, { options: e, ...r }), o = /* @__PURE__ */ c(m, { options: e, ...r });
10
+ switch (i) {
11
+ case "RadioGroup":
12
+ return t;
13
+ case "Select":
14
+ return o;
15
+ case "Auto":
16
+ return e.length < 6 ? t : o;
17
+ }
18
+ };
19
+ u.displayName = "EnumField";
10
20
  export {
11
- l as EnumField
21
+ u as EnumField
12
22
  };
13
23
  //# sourceMappingURL=enum-field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum-field.js","sources":["../../../../src/scalars/components/enum-field/enum-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { RadioGroupField } from \"@/scalars/components/fragments/radio-group-field\";\nimport { SelectField } from \"@/scalars/components/fragments/select-field\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { EnumProps } from \"./types\";\n\nexport type EnumFieldProps = FieldCommonProps<string | string[]> &\n ErrorHandling &\n EnumProps;\n\ntype RadioGroupVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype SelectVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string[];\n value?: string[];\n onChange?: (value: string | string[]) => void;\n};\n\nexport const EnumField: React.FC<EnumFieldProps> = ({\n variant = \"Auto\",\n options = [],\n ...props\n}) => {\n if (variant === \"Auto\") {\n return options.length < 6 ? (\n <RadioGroupField options={options} {...(props as RadioGroupVariant)} />\n ) : (\n <SelectField options={options} {...(props as SelectVariant)} />\n );\n }\n\n if (variant === \"RadioGroup\") {\n return (\n <RadioGroupField options={options} {...(props as RadioGroupVariant)} />\n );\n }\n\n return <SelectField options={options} {...(props as SelectVariant)} />;\n};\n\nEnumField.displayName = \"EnumField\";\n"],"names":["EnumField","variant","options","props","jsx","RadioGroupField","SelectField"],"mappings":";;;AA4BO,MAAMA,IAAsC,CAAC;AAAA,EAClD,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU,CAAC;AAAA,EACX,GAAGC;AACL,MACMF,MAAY,SACPC,EAAQ,SAAS,IACtB,gBAAAE,EAACC,GAAgB,EAAA,SAAAH,GAAmB,GAAIC,EAA6B,CAAA,IAErE,gBAAAC,EAACE,GAAY,EAAA,SAAAJ,GAAmB,GAAIC,GAAyB,IAI7DF,MAAY,eAEX,gBAAAG,EAAAC,GAAA,EAAgB,SAAAH,GAAmB,GAAIC,EAA6B,CAAA,IAIjE,gBAAAC,EAAAE,GAAA,EAAY,SAAAJ,GAAmB,GAAIC,EAAyB,CAAA;AAGtEH,EAAU,cAAc;"}
1
+ {"version":3,"file":"enum-field.js","sources":["../../../../src/scalars/components/enum-field/enum-field.tsx"],"sourcesContent":["import React from \"react\";\nimport { RadioGroupField } from \"@/scalars/components/fragments/radio-group-field\";\nimport { SelectField } from \"@/scalars/components/fragments/select-field\";\nimport { FieldCommonProps, ErrorHandling } from \"@/scalars/components/types\";\nimport { EnumProps } from \"./types\";\n\nexport type EnumFieldProps = FieldCommonProps<string | string[]> &\n ErrorHandling &\n EnumProps;\n\ntype RadioGroupVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype SelectVariant = Omit<\n EnumFieldProps,\n \"defaultValue\" | \"value\" | \"onChange\"\n> & {\n defaultValue?: string[];\n value?: string[];\n onChange?: (value: string | string[]) => void;\n};\n\nexport const EnumField: React.FC<EnumFieldProps> = ({\n variant = \"Auto\",\n options = [],\n ...props\n}) => {\n const radio = (\n <RadioGroupField options={options} {...(props as RadioGroupVariant)} />\n );\n const select = (\n <SelectField options={options} {...(props as SelectVariant)} />\n );\n\n switch (variant) {\n case \"RadioGroup\":\n return radio;\n case \"Select\":\n return select;\n case \"Auto\":\n return options.length < 6 ? radio : select;\n }\n};\n\nEnumField.displayName = \"EnumField\";\n"],"names":["EnumField","variant","options","props","radio","jsx","RadioGroupField","select","SelectField"],"mappings":";;;AA4BO,MAAMA,IAAsC,CAAC;AAAA,EAClD,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU,CAAC;AAAA,EACX,GAAGC;AACL,MAAM;AACJ,QAAMC,IACJ,gBAAAC,EAACC,GAAgB,EAAA,SAAAJ,GAAmB,GAAIC,GAA6B,GAEjEI,IACJ,gBAAAF,EAACG,GAAY,EAAA,SAAAN,GAAmB,GAAIC,GAAyB;AAG/D,UAAQF,GAAS;AAAA,IACf,KAAK;AACI,aAAAG;AAAA,IACT,KAAK;AACI,aAAAG;AAAA,IACT,KAAK;AACI,aAAAL,EAAQ,SAAS,IAAIE,IAAQG;AAAA,EAAA;AAE1C;AAEAP,EAAU,cAAc;"}
@@ -1,60 +1,74 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import { deepEqual as d } from "../../lib/deep-equal.js";
3
- import { isEmpty as E } from "../../lib/is-empty.js";
4
- import { forwardRef as S, useImperativeHandle as u, useEffect as O, useCallback as a } from "react";
5
- import { useForm as k, FormProvider as y } from "react-hook-form";
6
- const w = S(
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import { deepEqual as S } from "../../lib/deep-equal.js";
3
+ import { isEmpty as O } from "../../lib/is-empty.js";
4
+ import { castValue as y } from "../../lib/value-cast.js";
5
+ import { forwardRef as I, useId as h, useImperativeHandle as F, useEffect as k, useCallback as q } from "react";
6
+ import { useForm as v, FormProvider as x } from "react-hook-form";
7
+ const M = I(
7
8
  ({
8
- children: m,
9
+ children: i,
9
10
  onSubmit: f,
10
- resetOnSuccessfulSubmit: c = !1,
11
- submitChangesOnly: s = !1,
12
- defaultValues: t,
11
+ resetOnSuccessfulSubmit: a = !1,
12
+ submitChangesOnly: p = !1,
13
+ defaultValues: c,
13
14
  className: b
14
15
  }, j) => {
15
- const r = k({
16
- defaultValues: t,
16
+ const m = h(), t = v({
17
+ defaultValues: c,
17
18
  criteriaMode: "all"
18
19
  // display all errors at once
19
20
  });
20
- u(j, () => r, [r]), O(() => {
21
- c && r.formState.isSubmitSuccessful && r.reset({ ...t ?? {} });
21
+ F(j, () => t, [t]), k(() => {
22
+ a && t.formState.isSubmitSuccessful && t.reset({ ...c ?? {} });
22
23
  }, [
23
- c,
24
- r,
25
- r.formState.isSubmitSuccessful,
26
- t
24
+ a,
25
+ t,
26
+ t.formState.isSubmitSuccessful,
27
+ c
27
28
  ]);
28
- const l = a(
29
- (n) => {
30
- let e = n;
31
- return Object.keys(r.control._fields).forEach((o) => {
32
- Object.keys(e).includes(o) || (e[o] = null);
33
- }), s && t && (e = Object.fromEntries(
34
- Object.entries(n).filter(
35
- ([o, i]) => !d(i, t[o])
29
+ const E = q(
30
+ (l) => {
31
+ let e = l;
32
+ Object.keys(t.control._fields).forEach((r) => {
33
+ Object.keys(e).includes(r) || (e[r] = null);
34
+ }), p && c && (e = Object.fromEntries(
35
+ Object.entries(l).filter(
36
+ ([r, o]) => !S(o, c[r])
36
37
  )
37
38
  )), e = Object.fromEntries(
38
- Object.entries(e).map(([o, i]) => [
39
- o,
40
- E(i) ? null : i
39
+ Object.entries(e).map(([r, o]) => [
40
+ r,
41
+ O(o) ? null : o
41
42
  ])
42
- ), f(e);
43
+ );
44
+ const s = document.getElementById(m);
45
+ return Object.keys(e).map((r) => {
46
+ try {
47
+ const o = e[r];
48
+ if (o !== null) {
49
+ const n = s == null ? void 0 : s.querySelector(`[name="${r}"]`), d = n == null ? void 0 : n.getAttribute("data-cast");
50
+ d && (e[r] = y(o, d));
51
+ }
52
+ } catch (o) {
53
+ console.error(o);
54
+ }
55
+ }), f(e);
43
56
  },
44
- [r, t, s, f]
57
+ [t.control, p, c, m, f]
45
58
  );
46
- return /* @__PURE__ */ p(y, { ...r, children: /* @__PURE__ */ p(
59
+ return /* @__PURE__ */ u(x, { ...t, children: /* @__PURE__ */ u(
47
60
  "form",
48
61
  {
49
- onSubmit: r.handleSubmit(l),
62
+ id: m,
63
+ onSubmit: t.handleSubmit(E),
50
64
  className: b,
51
65
  noValidate: !0,
52
- children: typeof m == "function" ? m(r) : m
66
+ children: typeof i == "function" ? i(t) : i
53
67
  }
54
68
  ) });
55
69
  }
56
70
  );
57
71
  export {
58
- w as Form
72
+ M as Form
59
73
  };
60
74
  //# sourceMappingURL=form.js.map