@consumidor-positivo/aurora 0.0.47 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/PasswordField/index.es.js +83 -0
- package/dist/components/PasswordField/index.es.js.map +1 -0
- package/dist/components/TokenField/index.es.js +10 -4
- package/dist/components/TokenField/index.es.js.map +1 -1
- package/dist/components/form/PasswordField/hook.d.ts +5 -0
- package/dist/components/form/PasswordField/index.d.ts +13 -0
- package/dist/components/form/TokenField/hook.d.ts +1 -1
- package/dist/components/tokens/styles.css +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.es.js +2 -0
- package/dist/main.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { aJ as Field } from "../../tokens-BPzuCjxd.js";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
const usePasswordField = () => {
|
|
5
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
6
|
+
const fieldType = showPassword ? "text" : "password";
|
|
7
|
+
const textButton = showPassword ? "ocultar" : "mostrar";
|
|
8
|
+
function changeVisibility() {
|
|
9
|
+
setShowPassword((prevState) => !prevState);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
fieldType,
|
|
13
|
+
textButton,
|
|
14
|
+
changeVisibility
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const PasswordField = ({
|
|
18
|
+
optional,
|
|
19
|
+
requiredInput,
|
|
20
|
+
success,
|
|
21
|
+
error,
|
|
22
|
+
errorMessage,
|
|
23
|
+
label,
|
|
24
|
+
ref,
|
|
25
|
+
id,
|
|
26
|
+
disabled,
|
|
27
|
+
style,
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}) => {
|
|
31
|
+
const { fieldType, textButton, changeVisibility } = usePasswordField();
|
|
32
|
+
return /* @__PURE__ */ jsxs(
|
|
33
|
+
Field.Root,
|
|
34
|
+
{
|
|
35
|
+
style,
|
|
36
|
+
customclass: className,
|
|
37
|
+
success,
|
|
38
|
+
error,
|
|
39
|
+
disabled,
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ jsx(
|
|
42
|
+
Field.Label,
|
|
43
|
+
{
|
|
44
|
+
text: label,
|
|
45
|
+
id,
|
|
46
|
+
required: requiredInput,
|
|
47
|
+
optional,
|
|
48
|
+
success,
|
|
49
|
+
error,
|
|
50
|
+
disabled
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
/* @__PURE__ */ jsxs("div", { className: "au-password-field__container", children: [
|
|
54
|
+
/* @__PURE__ */ jsx(
|
|
55
|
+
Field.Input,
|
|
56
|
+
{
|
|
57
|
+
customclass: "au-password-field__input",
|
|
58
|
+
type: fieldType,
|
|
59
|
+
id,
|
|
60
|
+
ref,
|
|
61
|
+
disabled,
|
|
62
|
+
...props
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ jsx(
|
|
66
|
+
"button",
|
|
67
|
+
{
|
|
68
|
+
className: "au-password-field__btn",
|
|
69
|
+
onClick: changeVisibility,
|
|
70
|
+
disabled,
|
|
71
|
+
children: textButton
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
] }),
|
|
75
|
+
/* @__PURE__ */ jsx(Field.ErrorMessage, { hasError: !!error, message: errorMessage })
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
export {
|
|
81
|
+
PasswordField
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../lib/components/form/PasswordField/hook.tsx","../../../lib/components/form/PasswordField/index.tsx"],"sourcesContent":["import { useState } from 'react'\n\nexport const usePasswordField = () => {\n const [showPassword, setShowPassword] = useState<boolean>(false)\n const fieldType = showPassword ? 'text' : 'password'\n const textButton = showPassword ? 'ocultar' : 'mostrar'\n\n function changeVisibility() {\n setShowPassword((prevState) => !prevState)\n }\n\n return {\n fieldType,\n textButton,\n changeVisibility,\n }\n}\n","import Field from '../Field'\nimport { usePasswordField } from './hook'\nimport './styles.scss'\n\ntype PasswordFieldProps = React.InputHTMLAttributes<HTMLInputElement> & {\n type?: 'password'\n optional?: boolean\n requiredInput?: boolean\n success?: boolean\n error?: boolean\n errorMessage?: string\n label?: string\n ref?: React.RefObject<HTMLInputElement>\n}\n\nexport const PasswordField = ({\n optional,\n requiredInput,\n success,\n error,\n errorMessage,\n label,\n ref,\n id,\n disabled,\n style,\n className,\n ...props\n}: PasswordFieldProps) => {\n const { fieldType, textButton, changeVisibility } = usePasswordField()\n\n return (\n <Field.Root\n style={style}\n customclass={className}\n success={success}\n error={error}\n disabled={disabled}>\n <Field.Label\n text={label}\n id={id}\n required={requiredInput}\n optional={optional}\n success={success}\n error={error}\n disabled={disabled}\n />\n <div className=\"au-password-field__container\">\n <Field.Input\n customclass=\"au-password-field__input\"\n type={fieldType}\n id={id}\n ref={ref}\n disabled={disabled}\n {...props}\n />\n <button\n className=\"au-password-field__btn\"\n onClick={changeVisibility}\n disabled={disabled}>\n {textButton}\n </button>\n </div>\n <Field.ErrorMessage hasError={!!error} message={errorMessage} />\n </Field.Root>\n )\n}\n"],"names":[],"mappings":";;;AAEO,MAAM,mBAAmB,MAAM;AACpC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AACzD,QAAA,YAAY,eAAe,SAAS;AACpC,QAAA,aAAa,eAAe,YAAY;AAE9C,WAAS,mBAAmB;AACV,oBAAA,CAAC,cAAc,CAAC,SAAS;AAAA,EAC3C;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;ACDO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA0B;AACxB,QAAM,EAAE,WAAW,YAAY,qBAAqB,iBAAiB;AAGnE,SAAA;AAAA,IAAC,MAAM;AAAA,IAAN;AAAA,MACC;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAA;AAAA,QAAA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACC,MAAM;AAAA,YACN;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,QACA,qBAAC,OAAI,EAAA,WAAU,gCACb,UAAA;AAAA,UAAA;AAAA,YAAC,MAAM;AAAA,YAAN;AAAA,cACC,aAAY;AAAA,cACZ,MAAM;AAAA,cACN;AAAA,cACA;AAAA,cACA;AAAA,cACC,GAAG;AAAA,YAAA;AAAA,UACN;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS;AAAA,cACT;AAAA,cACC,UAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA,GACF;AAAA,QACA,oBAAC,MAAM,cAAN,EAAmB,UAAU,CAAC,CAAC,OAAO,SAAS,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpE;"}
|
|
@@ -6,13 +6,13 @@ function inputtedValueIsValid(value) {
|
|
|
6
6
|
const isNaN = Number.isNaN(numberValue);
|
|
7
7
|
return !isNaN;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
const useTokenField = ({
|
|
10
10
|
size,
|
|
11
11
|
onComplete,
|
|
12
12
|
onChange,
|
|
13
13
|
onChangeTimer,
|
|
14
14
|
timer = null
|
|
15
|
-
}) {
|
|
15
|
+
}) => {
|
|
16
16
|
const rootElementRef = useRef(null);
|
|
17
17
|
const [tokenMap, setTokenMap] = useState(_getDefaultTokens());
|
|
18
18
|
const [timerTime, setTimerTime] = useState(timer);
|
|
@@ -128,7 +128,7 @@ function useTokenField({
|
|
|
128
128
|
tokenMap,
|
|
129
129
|
rootElementRef
|
|
130
130
|
};
|
|
131
|
-
}
|
|
131
|
+
};
|
|
132
132
|
const TokenField = ({
|
|
133
133
|
label,
|
|
134
134
|
disabled,
|
|
@@ -143,7 +143,13 @@ const TokenField = ({
|
|
|
143
143
|
onComplete,
|
|
144
144
|
onChange
|
|
145
145
|
}) => {
|
|
146
|
-
const {
|
|
146
|
+
const {
|
|
147
|
+
tokenMap,
|
|
148
|
+
rootElementRef,
|
|
149
|
+
onChangeNumber,
|
|
150
|
+
onKeyUpHandler,
|
|
151
|
+
onPasteNumber
|
|
152
|
+
} = useTokenField({ size, onComplete, onChange, onChangeTimer, timer });
|
|
147
153
|
return /* @__PURE__ */ jsxs(
|
|
148
154
|
Field.Root,
|
|
149
155
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../lib/components/form/TokenField/hook.tsx","../../../lib/components/form/TokenField/index.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from 'react'\n\ntype UseTokenInputProps = {\n size: number\n onComplete?: (token: string) => void\n onChange?: (value: string) => void\n onChangeTimer?: (time: number) => void\n timer?: number | null\n}\n\nfunction inputtedValueIsValid(value: unknown) {\n const numberValue = Number(value)\n const isNaN = Number.isNaN(numberValue)\n return !isNaN\n}\n\nexport default function useTokenField({\n size,\n onComplete,\n onChange,\n onChangeTimer,\n timer = null,\n}: UseTokenInputProps) {\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const [tokenMap, setTokenMap] = useState(_getDefaultTokens())\n const [timerTime, setTimerTime] = useState<number | null>(timer)\n\n useEffect(_handleValueEvents, [tokenMap])\n useEffect(_handleStartTimer, [timer])\n useEffect(_handleTimerUpdate, [timerTime])\n\n function _handleValueEvents() {\n const tokenValueArray =\n Object.keys(tokenMap).map((key) => tokenMap[key]) || []\n const stringField = tokenValueArray.join('')\n const isTokenValid = stringField.length === size\n if (onChange) onChange(stringField)\n\n if (!!isTokenValid && !!onComplete) {\n onComplete(stringField)\n }\n }\n\n function _handleStartTimer() {\n let interval: NodeJS.Timeout\n\n if (timer) {\n interval = setInterval(() => {\n setTimerTime((currentTime) => {\n if (!currentTime) return null\n const reachedTheLimit = currentTime === 0\n if (reachedTheLimit) {\n return timer\n } else {\n return currentTime - 1\n }\n })\n }, 1000)\n \n if (interval) {\n return () => clearInterval(interval)\n }\n }\n }\n\n function _handleTimerUpdate() {\n if (onChangeTimer && timerTime) onChangeTimer(timerTime)\n\n if (timerTime === 0) {\n setTokenMap(_getDefaultTokens())\n _resetFocus()\n }\n }\n\n function _getDefaultTokens() {\n return [...Array(size)].reduce((acc, _, i) => ({ ...acc, [i]: '' }), {})\n }\n\n function _goToNextInput(i: number) {\n const nextItem = rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i + 1}']`,\n )\n if (nextItem) nextItem.focus()\n }\n\n function _resetFocus() {\n const firstItem =\n rootElementRef.current?.querySelector<HTMLInputElement>(\n `[data-token-i='0']`,\n )\n firstItem?.focus()\n }\n\n function onKeyUpHandler(e: React.KeyboardEvent<HTMLInputElement>, i: number) {\n const hasBackspacePressed = e.which === 8 || e.key === 'Backspace'\n if (hasBackspacePressed) {\n const previousItem =\n rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i - 1}']`,\n )\n const currentItem =\n rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i}']`,\n )\n\n setTokenMap({ ...tokenMap, [i]: '' })\n if (!!previousItem && !currentItem?.value) previousItem.focus()\n }\n }\n\n function onChangeNumber(e: React.ChangeEvent<HTMLInputElement>, i: number) {\n e.preventDefault()\n let value = e?.target?.value\n const isNumberValid = inputtedValueIsValid(value)\n const isEmpty = value === ''\n\n if (isNumberValid) {\n let firstEmptyIndex = Object.keys(tokenMap).findIndex(\n (index) => tokenMap[index] === '',\n )\n\n if (value.length > 1) {\n firstEmptyIndex = firstEmptyIndex - 1\n value = value[value.length - 1]\n }\n\n if (firstEmptyIndex < 0) {\n if (value) {\n setTokenMap({ ...tokenMap, [i]: value })\n }\n\n return\n }\n\n setTokenMap({ ...tokenMap, [firstEmptyIndex]: value })\n if (!isEmpty) _goToNextInput(firstEmptyIndex)\n }\n }\n\n function onPasteNumber(e: React.ClipboardEvent<HTMLInputElement>) {\n e.preventDefault()\n const value = e.clipboardData.getData('Text')\n const isNumberValid = inputtedValueIsValid(value)\n\n if (isNumberValid) {\n const arrValue = value.split('').slice(0, size)\n setTokenMap({ ..._getDefaultTokens(), ...arrValue })\n\n _goToNextInput(arrValue.length - 1)\n } else {\n setTokenMap(_getDefaultTokens())\n }\n }\n\n return {\n onKeyUpHandler,\n onChangeNumber,\n onPasteNumber,\n tokenMap,\n rootElementRef,\n }\n}\n","import Field from '../Field'\nimport useTokenField from './hook'\nimport './styles.scss'\n\ntype TokenFieldProps = {\n label?: string\n disabled?: boolean\n success?: boolean\n error?: boolean\n errorMessage?: string\n size?: number\n type?: 'number' | 'password' | 'text'\n style?: React.CSSProperties\n timer?: number\n onChangeTimer?: () => void\n onComplete?: (value: string) => void\n onChange?: (value: string) => void\n}\n\nexport const TokenField = ({\n label,\n disabled,\n success,\n error,\n errorMessage,\n size = 6,\n type,\n style,\n timer,\n onChangeTimer,\n onComplete,\n onChange,\n}: TokenFieldProps) => {\n const { tokenMap, rootElementRef, onChangeNumber, onKeyUpHandler, onPasteNumber } =\n useTokenField({ size, onComplete, onChange, onChangeTimer, timer })\n\n return (\n <Field.Root\n style={style}\n customclass=\"au-token-field\"\n success={success}\n error={error}\n disabled={disabled}>\n <Field.Label\n text={label}\n success={success}\n error={error}\n disabled={disabled}\n />\n <div ref={rootElementRef} className=\"au-token-field__container\">\n {[...Object.values(tokenMap)].map((_, i) => (\n <div key={`token-digit-${i}`}>\n <Field.Input\n customclass=\"au-token-field__input\"\n type={type || 'number'}\n value={tokenMap[i]}\n disabled={disabled}\n onChange={(e) => onChangeNumber(e, i)}\n onKeyUp={(e) => onKeyUpHandler(e, i)}\n onPaste={(e) => onPasteNumber(e)}\n data-token-i={i}\n />\n </div>\n ))}\n </div>\n <Field.ErrorMessage hasError={error} message={errorMessage} />\n </Field.Root>\n )\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../lib/components/form/TokenField/hook.tsx","../../../lib/components/form/TokenField/index.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from 'react'\n\ntype UseTokenInputProps = {\n size: number\n onComplete?: (token: string) => void\n onChange?: (value: string) => void\n onChangeTimer?: (time: number) => void\n timer?: number | null\n}\n\nfunction inputtedValueIsValid(value: unknown) {\n const numberValue = Number(value)\n const isNaN = Number.isNaN(numberValue)\n return !isNaN\n}\n\nexport const useTokenField = ({\n size,\n onComplete,\n onChange,\n onChangeTimer,\n timer = null,\n}: UseTokenInputProps) => {\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const [tokenMap, setTokenMap] = useState(_getDefaultTokens())\n const [timerTime, setTimerTime] = useState<number | null>(timer)\n\n useEffect(_handleValueEvents, [tokenMap])\n useEffect(_handleStartTimer, [timer])\n useEffect(_handleTimerUpdate, [timerTime])\n\n function _handleValueEvents() {\n const tokenValueArray =\n Object.keys(tokenMap).map((key) => tokenMap[key]) || []\n const stringField = tokenValueArray.join('')\n const isTokenValid = stringField.length === size\n if (onChange) onChange(stringField)\n\n if (!!isTokenValid && !!onComplete) {\n onComplete(stringField)\n }\n }\n\n function _handleStartTimer() {\n let interval: NodeJS.Timeout\n\n if (timer) {\n interval = setInterval(() => {\n setTimerTime((currentTime) => {\n if (!currentTime) return null\n const reachedTheLimit = currentTime === 0\n if (reachedTheLimit) {\n return timer\n } else {\n return currentTime - 1\n }\n })\n }, 1000)\n\n if (interval) {\n return () => clearInterval(interval)\n }\n }\n }\n\n function _handleTimerUpdate() {\n if (onChangeTimer && timerTime) onChangeTimer(timerTime)\n\n if (timerTime === 0) {\n setTokenMap(_getDefaultTokens())\n _resetFocus()\n }\n }\n\n function _getDefaultTokens() {\n return [...Array(size)].reduce((acc, _, i) => ({ ...acc, [i]: '' }), {})\n }\n\n function _goToNextInput(i: number) {\n const nextItem = rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i + 1}']`,\n )\n if (nextItem) nextItem.focus()\n }\n\n function _resetFocus() {\n const firstItem =\n rootElementRef.current?.querySelector<HTMLInputElement>(\n `[data-token-i='0']`,\n )\n firstItem?.focus()\n }\n\n function onKeyUpHandler(e: React.KeyboardEvent<HTMLInputElement>, i: number) {\n const hasBackspacePressed = e.which === 8 || e.key === 'Backspace'\n if (hasBackspacePressed) {\n const previousItem =\n rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i - 1}']`,\n )\n const currentItem =\n rootElementRef?.current?.querySelector<HTMLInputElement>(\n `[data-token-i='${i}']`,\n )\n\n setTokenMap({ ...tokenMap, [i]: '' })\n if (!!previousItem && !currentItem?.value) previousItem.focus()\n }\n }\n\n function onChangeNumber(e: React.ChangeEvent<HTMLInputElement>, i: number) {\n e.preventDefault()\n let value = e?.target?.value\n const isNumberValid = inputtedValueIsValid(value)\n const isEmpty = value === ''\n\n if (isNumberValid) {\n let firstEmptyIndex = Object.keys(tokenMap).findIndex(\n (index) => tokenMap[index] === '',\n )\n\n if (value.length > 1) {\n firstEmptyIndex = firstEmptyIndex - 1\n value = value[value.length - 1]\n }\n\n if (firstEmptyIndex < 0) {\n if (value) {\n setTokenMap({ ...tokenMap, [i]: value })\n }\n\n return\n }\n\n setTokenMap({ ...tokenMap, [firstEmptyIndex]: value })\n if (!isEmpty) _goToNextInput(firstEmptyIndex)\n }\n }\n\n function onPasteNumber(e: React.ClipboardEvent<HTMLInputElement>) {\n e.preventDefault()\n const value = e.clipboardData.getData('Text')\n const isNumberValid = inputtedValueIsValid(value)\n\n if (isNumberValid) {\n const arrValue = value.split('').slice(0, size)\n setTokenMap({ ..._getDefaultTokens(), ...arrValue })\n\n _goToNextInput(arrValue.length - 1)\n } else {\n setTokenMap(_getDefaultTokens())\n }\n }\n\n return {\n onKeyUpHandler,\n onChangeNumber,\n onPasteNumber,\n tokenMap,\n rootElementRef,\n }\n}\n","import Field from '../Field'\nimport { useTokenField } from './hook'\nimport './styles.scss'\n\ntype TokenFieldProps = {\n label?: string\n disabled?: boolean\n success?: boolean\n error?: boolean\n errorMessage?: string\n size?: number\n type?: 'number' | 'password' | 'text'\n style?: React.CSSProperties\n timer?: number\n onChangeTimer?: () => void\n onComplete?: (value: string) => void\n onChange?: (value: string) => void\n}\n\nexport const TokenField = ({\n label,\n disabled,\n success,\n error,\n errorMessage,\n size = 6,\n type,\n style,\n timer,\n onChangeTimer,\n onComplete,\n onChange,\n}: TokenFieldProps) => {\n const {\n tokenMap,\n rootElementRef,\n onChangeNumber,\n onKeyUpHandler,\n onPasteNumber,\n } = useTokenField({ size, onComplete, onChange, onChangeTimer, timer })\n\n return (\n <Field.Root\n style={style}\n customclass=\"au-token-field\"\n success={success}\n error={error}\n disabled={disabled}>\n <Field.Label\n text={label}\n success={success}\n error={error}\n disabled={disabled}\n />\n <div ref={rootElementRef} className=\"au-token-field__container\">\n {[...Object.values(tokenMap)].map((_, i) => (\n <div key={`token-digit-${i}`}>\n <Field.Input\n customclass=\"au-token-field__input\"\n type={type || 'number'}\n value={tokenMap[i]}\n disabled={disabled}\n onChange={(e) => onChangeNumber(e, i)}\n onKeyUp={(e) => onKeyUpHandler(e, i)}\n onPaste={(e) => onPasteNumber(e)}\n data-token-i={i}\n />\n </div>\n ))}\n </div>\n <Field.ErrorMessage hasError={error} message={errorMessage} />\n </Field.Root>\n )\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
type PasswordFieldProps = React.InputHTMLAttributes<HTMLInputElement> & {
|
|
3
|
+
type?: 'password';
|
|
4
|
+
optional?: boolean;
|
|
5
|
+
requiredInput?: boolean;
|
|
6
|
+
success?: boolean;
|
|
7
|
+
error?: boolean;
|
|
8
|
+
errorMessage?: string;
|
|
9
|
+
label?: string;
|
|
10
|
+
ref?: React.RefObject<HTMLInputElement>;
|
|
11
|
+
};
|
|
12
|
+
export declare const PasswordField: ({ optional, requiredInput, success, error, errorMessage, label, ref, id, disabled, style, className, ...props }: PasswordFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -6,7 +6,7 @@ type UseTokenInputProps = {
|
|
|
6
6
|
onChangeTimer?: (time: number) => void;
|
|
7
7
|
timer?: number | null;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export declare const useTokenField: ({ size, onComplete, onChange, onChangeTimer, timer, }: UseTokenInputProps) => {
|
|
10
10
|
onKeyUpHandler: (e: React.KeyboardEvent<HTMLInputElement>, i: number) => void;
|
|
11
11
|
onChangeNumber: (e: React.ChangeEvent<HTMLInputElement>, i: number) => void;
|
|
12
12
|
onPasteNumber: (e: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
html{box-sizing:border-box;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}*,*:before,*:after{box-sizing:inherit;margin:0;padding:0}:focus{outline:none}body{font-family:"Source Sans 3",sans-serif;background-color:#fff}.au-field{cursor:pointer}.au-field__input{background-color:#fff;border:1px solid #454a54;border-radius:8px;box-sizing:border-box;font-size:16px;line-height:22px;padding:16px;height:56px;width:100%}.au-field__input:hover{border:1px solid #16181d}.au-field__input:focus{border-color:#0048db;outline:1px solid #0048db}.au-field:focus-within:not(.au-field--error) [class*=__header-label],.au-field:focus-within:not(.au-field--error) .au-field{color:#0048db}.au-field__header{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px}.au-field__header-label{color:#454a54;cursor:pointer;font-size:14px;font-weight:600}.au-field__header-label--required{color:#991717}.au-field__header-icon span{font-size:14px;color:#454a54}.au-field__error-message{color:#991717;font-size:16px;font-weight:400;line-height:24px;padding-top:8px}.au-field--disabled{cursor:not-allowed}.au-field--disabled [class*=__input],.au-field--disabled .au-field{background-color:#e2e4e9;border-color:#5e6573;color:#5e6573;cursor:not-allowed}.au-field--disabled [class*=__header-label],.au-field--disabled .au-field{color:#5e6573;cursor:not-allowed}.au-field--error [class*=__input],.au-field--error .au-field{background-color:#f5eff0;border-color:#991717}.au-field--error [class*=__input]:focus,.au-field--error .au-field:focus{border-color:#
|
|
1
|
+
html{box-sizing:border-box;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}*,*:before,*:after{box-sizing:inherit;margin:0;padding:0}:focus{outline:none}body{font-family:"Source Sans 3",sans-serif;background-color:#fff}.au-field{cursor:pointer}.au-field__input{background-color:#fff;border:1px solid #454a54;border-radius:8px;box-sizing:border-box;font-size:16px;line-height:22px;padding:16px;height:56px;width:100%}.au-field__input:hover{border:1px solid #16181d}.au-field__input:focus{border-color:#0048db;outline:1px solid #0048db}.au-field:focus-within:not(.au-field--error) [class*=__header-label],.au-field:focus-within:not(.au-field--error) .au-field{color:#0048db}.au-field__header{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px}.au-field__header-label{color:#454a54;cursor:pointer;font-size:14px;font-weight:600}.au-field__header-label--required{color:#991717}.au-field__header-icon span{font-size:14px;color:#454a54}.au-field__error-message{color:#991717;font-size:16px;font-weight:400;line-height:24px;padding-top:8px}.au-field--disabled{cursor:not-allowed}.au-field--disabled [class*=__input],.au-field--disabled .au-field{background-color:#e2e4e9;border-color:#5e6573;color:#5e6573;cursor:not-allowed}.au-field--disabled [class*=__header-label],.au-field--disabled .au-field{color:#5e6573;cursor:not-allowed}.au-field--error [class*=__input],.au-field--error .au-field{background-color:#f5eff0;border-color:#991717}.au-field--error [class*=__input]:focus,.au-field--error .au-field:focus{border-color:#0048db}.au-field--error [class*=__header-label],.au-field--error .au-field{color:#991717}.au-field--success [class*=__input],.au-field--success .au-field{animation:inputSuccess 2s forwards}.au-field--success [class*=__header-label],.au-field--success .au-field{animation:labelSuccess 2s forwards}.au-field--success [class*=__header-icon] .au-icon{animation:iconSucess 2s forwards}@keyframes inputSuccess{0%,70%{background-color:#f0fcf5;border-color:#10593b}}@keyframes labelSuccess{0%,70%{color:#10593b}}@keyframes iconSucess{0%,70%{opacity:1}to{opacity:0}}.au-token-field{max-width:max-content}.au-token-field__container{display:flex;gap:8px}.au-token-field__input{font-size:20px;text-align:center;padding:8px}.au-token-field__input[type=number]::-webkit-inner-spin-button,.au-token-field__input[type=number]::-webkit-outer-spin-button{display:none}.au-password-field__container{position:relative;height:56px}.au-password-field__input{position:absolute;padding:16px 94px 16px 16px}.au-password-field__btn{background-color:transparent;border:none;color:#0048db;cursor:pointer;font-size:14px;font-weight:600;text-transform:uppercase;position:absolute;z-index:1;background-position-y:center;right:16px;height:56px}.au-password-field__btn:disabled{cursor:not-allowed}
|
package/dist/main.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { Text } from './components/Text';
|
|
|
11
11
|
export { Footer } from './components/Footer';
|
|
12
12
|
export { InputField } from './components/form/InputField';
|
|
13
13
|
export { TokenField } from './components/form/TokenField';
|
|
14
|
+
export { PasswordField } from './components/form/PasswordField';
|
|
14
15
|
export { useDrawer } from './components/Drawer/hooks';
|
|
15
16
|
export * from './components/Logo';
|
|
16
17
|
export * from './components/icons';
|
package/dist/main.es.js
CHANGED
|
@@ -11,6 +11,7 @@ import { Text } from "./components/Text/index.es.js";
|
|
|
11
11
|
import { Footer } from "./components/Footer/index.es.js";
|
|
12
12
|
import { InputField } from "./components/InputField/index.es.js";
|
|
13
13
|
import { TokenField } from "./components/TokenField/index.es.js";
|
|
14
|
+
import { PasswordField } from "./components/PasswordField/index.es.js";
|
|
14
15
|
import { useState } from "react";
|
|
15
16
|
import { L as L2, a as a10, b as b2, c as c2, d as d2, e as e2, f as f2, g as g2, h as h2, i as i2, j as j2, k as k2, l as l2, m as m2 } from "./Tertiary-DMp-1eWT.js";
|
|
16
17
|
import { IconActivity } from "./components/icons/IconActivity/index.es.js";
|
|
@@ -759,6 +760,7 @@ export {
|
|
|
759
760
|
am as OPACITY_20,
|
|
760
761
|
an as OPACITY_30,
|
|
761
762
|
ao as OPACITY_40,
|
|
763
|
+
PasswordField,
|
|
762
764
|
ProfileNav,
|
|
763
765
|
ap as SHADOW_01,
|
|
764
766
|
aq as SHADOW_02,
|
package/dist/main.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.es.js","sources":["../lib/components/Drawer/hooks.ts"],"sourcesContent":["import { useState } from 'react'\n\ntype UseDrawerProps = Record<string, boolean>\n\nexport function useDrawer(props: UseDrawerProps) {\n const [drawerOpen, setDrawerOpen] = useState<UseDrawerProps>(props)\n\n function handleOpenDrawer(name: string) {\n setDrawerOpen((prev) => {\n return {\n ...prev,\n [name]: !prev[name],\n }\n })\n }\n\n return {\n handleOpenDrawer,\n drawerOpen,\n }\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.es.js","sources":["../lib/components/Drawer/hooks.ts"],"sourcesContent":["import { useState } from 'react'\n\ntype UseDrawerProps = Record<string, boolean>\n\nexport function useDrawer(props: UseDrawerProps) {\n const [drawerOpen, setDrawerOpen] = useState<UseDrawerProps>(props)\n\n function handleOpenDrawer(name: string) {\n setDrawerOpen((prev) => {\n return {\n ...prev,\n [name]: !prev[name],\n }\n })\n }\n\n return {\n handleOpenDrawer,\n drawerOpen,\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,UAAU,OAAuB;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAyB,KAAK;AAElE,WAAS,iBAAiB,MAAc;AACtC,kBAAc,CAAC,SAAS;AACf,aAAA;AAAA,QACL,GAAG;AAAA,QACH,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI;AAAA,MAAA;AAAA,IACpB,CACD;AAAA,EACH;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|