@scripso-homepad/ui 0.4.23 → 0.4.24
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/{chunk-KJYQA5OY.js → chunk-JNVYKEYT.js} +11 -11
- package/dist/chunk-JNVYKEYT.js.map +1 -0
- package/dist/index.cjs +23 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +22 -13
- package/dist/index.js.map +1 -1
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.css +1 -1
- package/dist/web/index.css.map +1 -1
- package/dist/web/index.js +1 -1
- package/package.json +1 -1
- package/src/components/CountryCodeSelector.tsx +3 -1
- package/src/components/PhoneInput.tsx +23 -9
- package/src/theme/tokens.ts +8 -8
- package/src/web/components/sonner-toast.css +1 -1
- package/dist/chunk-KJYQA5OY.js.map +0 -1
package/dist/web/index.css
CHANGED
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
background: #fff;
|
|
127
127
|
border: 1px solid var(--color-storm-gray-50, #eceef0);
|
|
128
128
|
border-radius: 20px;
|
|
129
|
-
box-shadow: 0
|
|
129
|
+
box-shadow: 0 1px 4px 0 #00000014;
|
|
130
130
|
color: var(--color-slate-blue, #182e3c);
|
|
131
131
|
overflow: visible;
|
|
132
132
|
}
|
package/dist/web/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/web/components/table-scroll.css","../../src/web/components/drawer-scroll.css","../../src/web/components/sonner-toast.css"],"sourcesContent":[".table-scroll-area {\n scrollbar-color: var(--color-storm-gray-50, #eceef0) transparent;\n scrollbar-width: thin;\n}\n\n.table-scroll-area::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-button,\n.table-scroll-area::-webkit-scrollbar-button:single-button,\n.table-scroll-area::-webkit-scrollbar-button:double-button,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:increment,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:decrement,\n.table-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.table-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-50, #eceef0);\n border-radius: 51px;\n}\n\n.table-scroll-area::-webkit-scrollbar-corner {\n background: transparent;\n}\n\n.table-sticky-right-shadow::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n width: 12px;\n transform: translateX(-100%);\n background: linear-gradient(90deg, rgba(21, 26, 30, 0) 0%, rgba(21, 26, 30, 0.08) 100%);\n pointer-events: none;\n opacity: 0;\n transition: opacity 150ms ease;\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-shadow::before {\n opacity: 1;\n}\n\n.table-sticky-right-head {\n background-color: var(--color-storm-gray-0, #fbfcfc);\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-head {\n background-color: #fff;\n}\n",".drawer-scroll-area {\n scrollbar-color: var(--color-storm-gray-200, #d5d9dd) transparent;\n scrollbar-width: thin;\n}\n\n.drawer-scroll-area::-webkit-scrollbar {\n width: 4px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-button,\n.drawer-scroll-area::-webkit-scrollbar-button:single-button,\n.drawer-scroll-area::-webkit-scrollbar-button:double-button,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-200, #d5d9dd);\n border-radius: 9999px;\n}\n",".homepad-toaster {\n --width: 409px;\n --gap: 12px;\n --border-radius: 20px;\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] {\n align-items: center;\n gap: 16px;\n width: 409px;\n min-height: 72px;\n height: auto;\n padding: 12px 44px 12px 12px;\n background: #fff;\n border: 1px solid var(--color-storm-gray-50, #eceef0);\n border-radius: 20px;\n box-shadow: 0 0 20px 0 #0000000d;\n color: var(--color-slate-blue, #182e3c);\n overflow: visible;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'][data-front='true'] {\n height: auto !important;\n}\n\n.homepad-toaster\n [data-sonner-toast][data-styled='true'][data-mounted='true'][data-expanded='true'] {\n height: auto !important;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-icon] {\n width: auto;\n height: auto;\n margin: 0;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-content] {\n gap: 2px;\n min-width: 0;\n flex: 1;\n align-self: center;\n overflow: visible;\n}\n\n.homepad-toaster .homepad-toast__title {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 14px;\n font-weight: 700;\n line-height: 19px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__description {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__icon-badge {\n display: flex;\n width: 48px;\n height: 48px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 12px;\n border-radius: 12px;\n box-sizing: border-box;\n}\n\n.homepad-toaster .homepad-toast__icon-badge svg {\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--success {\n background: var(--color-emerald-green-0, #f0fbf5);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--error {\n background: var(--color-ruby-red-0, #fff5f6);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--warning {\n background: #f2a8001a;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--info,\n.homepad-toaster .homepad-toast__icon-badge--default {\n background: #0f52c71a;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] {\n top: 50%;\n right: 12px;\n left: auto;\n width: 20px;\n height: 20px;\n transform: translateY(-50%);\n border: 0;\n background: transparent;\n box-shadow: none;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true']:hover [data-close-button]:hover {\n background: transparent;\n border-color: transparent;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 767px) {\n .homepad-toaster {\n --width: calc(100vw - 16px);\n }\n\n .homepad-toaster[data-sonner-toaster] {\n right: var(--mobile-offset-right, 8px);\n left: var(--mobile-offset-left, 8px);\n width: calc(100vw - 16px);\n max-width: calc(100vw - 16px);\n }\n\n .homepad-toaster [data-sonner-toast][data-styled='true'] {\n right: 0;\n left: 0;\n width: 100%;\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/web/components/table-scroll.css","../../src/web/components/drawer-scroll.css","../../src/web/components/sonner-toast.css"],"sourcesContent":[".table-scroll-area {\n scrollbar-color: var(--color-storm-gray-50, #eceef0) transparent;\n scrollbar-width: thin;\n}\n\n.table-scroll-area::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-button,\n.table-scroll-area::-webkit-scrollbar-button:single-button,\n.table-scroll-area::-webkit-scrollbar-button:double-button,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:increment,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:decrement,\n.table-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.table-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-50, #eceef0);\n border-radius: 51px;\n}\n\n.table-scroll-area::-webkit-scrollbar-corner {\n background: transparent;\n}\n\n.table-sticky-right-shadow::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n width: 12px;\n transform: translateX(-100%);\n background: linear-gradient(90deg, rgba(21, 26, 30, 0) 0%, rgba(21, 26, 30, 0.08) 100%);\n pointer-events: none;\n opacity: 0;\n transition: opacity 150ms ease;\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-shadow::before {\n opacity: 1;\n}\n\n.table-sticky-right-head {\n background-color: var(--color-storm-gray-0, #fbfcfc);\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-head {\n background-color: #fff;\n}\n",".drawer-scroll-area {\n scrollbar-color: var(--color-storm-gray-200, #d5d9dd) transparent;\n scrollbar-width: thin;\n}\n\n.drawer-scroll-area::-webkit-scrollbar {\n width: 4px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-button,\n.drawer-scroll-area::-webkit-scrollbar-button:single-button,\n.drawer-scroll-area::-webkit-scrollbar-button:double-button,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-200, #d5d9dd);\n border-radius: 9999px;\n}\n",".homepad-toaster {\n --width: 409px;\n --gap: 12px;\n --border-radius: 20px;\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] {\n align-items: center;\n gap: 16px;\n width: 409px;\n min-height: 72px;\n height: auto;\n padding: 12px 44px 12px 12px;\n background: #fff;\n border: 1px solid var(--color-storm-gray-50, #eceef0);\n border-radius: 20px;\n box-shadow: 0 1px 4px 0 #00000014;\n color: var(--color-slate-blue, #182e3c);\n overflow: visible;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'][data-front='true'] {\n height: auto !important;\n}\n\n.homepad-toaster\n [data-sonner-toast][data-styled='true'][data-mounted='true'][data-expanded='true'] {\n height: auto !important;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-icon] {\n width: auto;\n height: auto;\n margin: 0;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-content] {\n gap: 2px;\n min-width: 0;\n flex: 1;\n align-self: center;\n overflow: visible;\n}\n\n.homepad-toaster .homepad-toast__title {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 14px;\n font-weight: 700;\n line-height: 19px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__description {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__icon-badge {\n display: flex;\n width: 48px;\n height: 48px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 12px;\n border-radius: 12px;\n box-sizing: border-box;\n}\n\n.homepad-toaster .homepad-toast__icon-badge svg {\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--success {\n background: var(--color-emerald-green-0, #f0fbf5);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--error {\n background: var(--color-ruby-red-0, #fff5f6);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--warning {\n background: #f2a8001a;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--info,\n.homepad-toaster .homepad-toast__icon-badge--default {\n background: #0f52c71a;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] {\n top: 50%;\n right: 12px;\n left: auto;\n width: 20px;\n height: 20px;\n transform: translateY(-50%);\n border: 0;\n background: transparent;\n box-shadow: none;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true']:hover [data-close-button]:hover {\n background: transparent;\n border-color: transparent;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 767px) {\n .homepad-toaster {\n --width: calc(100vw - 16px);\n }\n\n .homepad-toaster[data-sonner-toaster] {\n right: var(--mobile-offset-right, 8px);\n left: var(--mobile-offset-left, 8px);\n width: calc(100vw - 16px);\n max-width: calc(100vw - 16px);\n }\n\n .homepad-toaster [data-sonner-toast][data-styled='true'] {\n right: 0;\n left: 0;\n width: 100%;\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/web/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __commonJS, __require, __toESM, Input, Button } from '../chunk-
|
|
1
|
+
import { __commonJS, __require, __toESM, Input, Button } from '../chunk-JNVYKEYT.js';
|
|
2
2
|
import { ChevronsUpDown, Search, LogOut, PanelLeftClose, PanelLeftOpen, X, Menu, ChevronLeft, ChevronRight } from 'lucide-react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
package/package.json
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
type Country,
|
|
19
19
|
} from "../data/countries";
|
|
20
20
|
import { ChevronDownIcon } from "../icons/ChevronDownIcon";
|
|
21
|
+
import { INPUT_HEIGHT } from "../theme/input";
|
|
21
22
|
import { colors, fontSize, fontWeight, radii, spacing, fonts } from "../theme/tokens";
|
|
22
23
|
import {
|
|
23
24
|
COUNTRY_DROPDOWN_SCROLL_CLASS,
|
|
@@ -31,7 +32,8 @@ const DROPDOWN_HEIGHT = 186;
|
|
|
31
32
|
const DROPDOWN_PADDING = 8;
|
|
32
33
|
const OPTION_GAP = 10;
|
|
33
34
|
const OPTION_HEIGHT = 35;
|
|
34
|
-
|
|
35
|
+
/** Match shared text-field height (`INPUT_HEIGHT`) so PhoneInput columns align. */
|
|
36
|
+
const TRIGGER_HEIGHT = INPUT_HEIGHT;
|
|
35
37
|
const CHEVRON_SIZE = 16;
|
|
36
38
|
|
|
37
39
|
export interface CountryCodeSelectorProps {
|
|
@@ -17,11 +17,21 @@ import {
|
|
|
17
17
|
getInputFieldStyles,
|
|
18
18
|
inputFieldMetrics,
|
|
19
19
|
INPUT_ICON_GAP,
|
|
20
|
+
INPUT_OUTLINE_WIDTH,
|
|
20
21
|
resolveInputVisualState,
|
|
21
22
|
} from "../theme/input";
|
|
22
|
-
import { colors, spacing } from "../theme/tokens";
|
|
23
|
+
import { colors, radii, spacing } from "../theme/tokens";
|
|
23
24
|
import { useApplyWebClassName } from "../utils/useApplyWebClassName";
|
|
24
25
|
|
|
26
|
+
/** Keep country trigger outer box equal to the phone field (transparent focus ring). */
|
|
27
|
+
const countryOutlineSlot = {
|
|
28
|
+
borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,
|
|
29
|
+
borderWidth: INPUT_OUTLINE_WIDTH,
|
|
30
|
+
borderColor: colors.transparent,
|
|
31
|
+
padding: 0,
|
|
32
|
+
backgroundColor: colors.transparent,
|
|
33
|
+
} as const;
|
|
34
|
+
|
|
25
35
|
export interface PhoneInputProps extends Omit<TextInputProps, "style"> {
|
|
26
36
|
label?: string;
|
|
27
37
|
countryCode?: string;
|
|
@@ -109,12 +119,14 @@ export function PhoneInput({
|
|
|
109
119
|
</Label>
|
|
110
120
|
) : null}
|
|
111
121
|
<View style={styles.row}>
|
|
112
|
-
<
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
122
|
+
<View style={[countryOutlineSlot, styles.countryOutline]}>
|
|
123
|
+
<CountryCodeSelector
|
|
124
|
+
value={countryCode}
|
|
125
|
+
onValueChange={onCountryCodeChange}
|
|
126
|
+
disabled={isDisabled}
|
|
127
|
+
style={styles.countrySelector}
|
|
128
|
+
/>
|
|
129
|
+
</View>
|
|
118
130
|
<View style={[phoneFieldStyles.outline, styles.phoneOutline]}>
|
|
119
131
|
<View
|
|
120
132
|
style={[
|
|
@@ -161,12 +173,14 @@ const styles = StyleSheet.create({
|
|
|
161
173
|
},
|
|
162
174
|
row: {
|
|
163
175
|
flexDirection: "row",
|
|
164
|
-
alignItems: "
|
|
176
|
+
alignItems: "center",
|
|
165
177
|
gap: INPUT_ICON_GAP,
|
|
166
178
|
},
|
|
179
|
+
countryOutline: {
|
|
180
|
+
flexShrink: 0,
|
|
181
|
+
},
|
|
167
182
|
countrySelector: {
|
|
168
183
|
flexShrink: 0,
|
|
169
|
-
alignSelf: "flex-start",
|
|
170
184
|
},
|
|
171
185
|
phoneOutline: {
|
|
172
186
|
flex: 1,
|
package/src/theme/tokens.ts
CHANGED
|
@@ -271,16 +271,16 @@ export const buttonTypography = {
|
|
|
271
271
|
export const shadows = {
|
|
272
272
|
card: {
|
|
273
273
|
shadowColor: colors.navy,
|
|
274
|
-
shadowOffset: { width: 0, height:
|
|
275
|
-
shadowOpacity: 0.
|
|
276
|
-
shadowRadius:
|
|
277
|
-
elevation:
|
|
274
|
+
shadowOffset: { width: 0, height: 1 },
|
|
275
|
+
shadowOpacity: 0.06,
|
|
276
|
+
shadowRadius: 4,
|
|
277
|
+
elevation: 1,
|
|
278
278
|
},
|
|
279
279
|
cardLg: {
|
|
280
280
|
shadowColor: colors.navy,
|
|
281
|
-
shadowOffset: { width: 0, height:
|
|
282
|
-
shadowOpacity: 0.
|
|
283
|
-
shadowRadius:
|
|
284
|
-
elevation:
|
|
281
|
+
shadowOffset: { width: 0, height: 2 },
|
|
282
|
+
shadowOpacity: 0.08,
|
|
283
|
+
shadowRadius: 6,
|
|
284
|
+
elevation: 2,
|
|
285
285
|
},
|
|
286
286
|
} as const;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/tokens.ts","../src/icons/arrowUpRightPath.ts","../src/icons/ArrowUpRightIcon.tsx","../src/utils/useApplyWebClassName.ts","../src/components/Button.tsx","../src/components/Label.tsx","../src/icons/eyeIconPaths.ts","../src/icons/EyeIcon.tsx","../src/icons/EyeOffIcon.tsx","../src/theme/input.ts","../src/components/Input.tsx"],"names":["Platform","jsx","useRef","jsxs","Text","styles","StyleSheet","Svg","Path","View"],"mappings":"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","file":"chunk-KJYQA5OY.js","sourcesContent":["/**\n * HomePad design tokens — aligned with the Figma design system\n * (navy / storm gray / slate-blue palette from HomePad brand).\n */\n\n/** Storm Gray scale — Figma steps 0 → 8.5 */\nexport const stormGray = {\n \"0\": \"#fbfcfc\",\n \"0.5\": \"#eceef0\",\n \"1\": \"#dadde0\",\n \"1.5\": \"#c7cdd1\",\n \"2\": \"#b5bcc1\",\n \"3\": \"#8f9aa3\",\n \"4\": \"#6a7984\",\n \"5\": \"#455765\",\n \"6\": \"#374651\",\n \"7\": \"#29343d\",\n \"8\": \"#1c2328\",\n \"8.5\": \"#151a1e\",\n} as const;\n\nexport type StormGrayStep = keyof typeof stormGray;\n\n/** Navy scale — Figma steps 0 → 8.5 */\nexport const navy = {\n \"0\": \"#f6fafe\",\n \"0.5\": \"#dee5eb\",\n \"1\": \"#c6d0d8\",\n \"1.5\": \"#afbac5\",\n \"2\": \"#97a5b2\",\n \"3\": \"#677b8c\",\n \"4\": \"#385066\",\n \"5\": \"#082640\",\n \"6\": \"#061e33\",\n \"7\": \"#051726\",\n \"8\": \"#030f1a\",\n \"8.5\": \"#020b13\",\n} as const;\n\nexport type NavyStep = keyof typeof navy;\n\n/** Ruby Red scale — Figma steps 0 → 8.5 */\nexport const rubyRed = {\n \"0\": \"#fff5f6\",\n \"0.5\": \"#f7dddf\",\n \"1\": \"#efc4c8\",\n \"1.5\": \"#e7acb1\",\n \"2\": \"#df939a\",\n \"3\": \"#ce626d\",\n \"4\": \"#be313f\",\n \"5\": \"#ae0011\",\n \"6\": \"#8b000e\",\n \"7\": \"#68000a\",\n \"8\": \"#460007\",\n \"8.5\": \"#340005\",\n} as const;\n\nexport type RubyRedStep = keyof typeof rubyRed;\n\n/** Emerald Green scale — Figma steps 0 → 8.5 */\nexport const emeraldGreen = {\n \"0\": \"#f0fbf5\",\n \"0.5\": \"#dcf2e5\",\n \"1\": \"#c8e8d5\",\n \"1.5\": \"#b4dfc5\",\n \"2\": \"#a0d5b5\",\n \"3\": \"#77c394\",\n \"4\": \"#4fb074\",\n \"5\": \"#279d54\",\n \"6\": \"#1f7e43\",\n \"7\": \"#175e32\",\n \"8\": \"#103f22\",\n \"8.5\": \"#0c2f19\",\n} as const;\n\nexport type EmeraldGreenStep = keyof typeof emeraldGreen;\n\n/** Figma brand palette — primary swatch per color family */\nexport const brand = {\n slateBlue: \"#182e3c\",\n stormGray: stormGray[\"5\"],\n navy: navy[\"5\"],\n rubyRed: rubyRed[\"5\"],\n emeraldGreen: emeraldGreen[\"5\"],\n} as const;\n\nexport const colors = {\n // Brand colors\n slateBlue: brand.slateBlue,\n\n // Emerald Green — Figma scale + brand swatch\n emeraldGreen0: emeraldGreen[\"0\"],\n emeraldGreen50: emeraldGreen[\"0.5\"],\n emeraldGreen100: emeraldGreen[\"1\"],\n emeraldGreen150: emeraldGreen[\"1.5\"],\n emeraldGreen200: emeraldGreen[\"2\"],\n emeraldGreen300: emeraldGreen[\"3\"],\n emeraldGreen400: emeraldGreen[\"4\"],\n emeraldGreen500: emeraldGreen[\"5\"],\n emeraldGreen600: emeraldGreen[\"6\"],\n emeraldGreen700: emeraldGreen[\"7\"],\n emeraldGreen800: emeraldGreen[\"8\"],\n emeraldGreen850: emeraldGreen[\"8.5\"],\n\n /** Primary brand emerald green — Figma Emerald Green 5 */\n emeraldGreen: brand.emeraldGreen,\n\n // Ruby Red — Figma scale + brand swatch\n rubyRed0: rubyRed[\"0\"],\n rubyRed50: rubyRed[\"0.5\"],\n rubyRed100: rubyRed[\"1\"],\n rubyRed150: rubyRed[\"1.5\"],\n rubyRed200: rubyRed[\"2\"],\n rubyRed300: rubyRed[\"3\"],\n rubyRed400: rubyRed[\"4\"],\n rubyRed500: rubyRed[\"5\"],\n rubyRed600: rubyRed[\"6\"],\n rubyRed700: rubyRed[\"7\"],\n rubyRed800: rubyRed[\"8\"],\n rubyRed850: rubyRed[\"8.5\"],\n\n /** Primary brand ruby red — Figma Ruby Red 5 */\n rubyRed: brand.rubyRed,\n\n // Navy — Figma scale + brand swatch\n navy0: navy[\"0\"],\n navy50: navy[\"0.5\"],\n navy100: navy[\"1\"],\n navy150: navy[\"1.5\"],\n navy200: navy[\"2\"],\n navy300: navy[\"3\"],\n navy400: navy[\"4\"],\n navy500: navy[\"5\"],\n navy600: navy[\"6\"],\n navy700: navy[\"7\"],\n navy800: navy[\"8\"],\n navy850: navy[\"8.5\"],\n\n /** Primary brand navy — Figma Navy 5 */\n navy: brand.navy,\n\n // Storm Gray — Figma scale + brand swatch\n stormGray0: stormGray[\"0\"],\n stormGray50: stormGray[\"0.5\"],\n stormGray100: stormGray[\"1\"],\n stormGray150: stormGray[\"1.5\"],\n stormGray200: stormGray[\"2\"],\n stormGray300: stormGray[\"3\"],\n stormGray400: stormGray[\"4\"],\n stormGray500: stormGray[\"5\"],\n /** Figma brand swatch \"Storm Gray\" — same as `stormGray500` */\n stormGrayBrand: brand.stormGray,\n stormGray600: stormGray[\"6\"],\n stormGray700: stormGray[\"7\"],\n stormGray800: stormGray[\"8\"],\n stormGray850: stormGray[\"8.5\"],\n\n /** @deprecated Use `stormGray0` */\n storm0: stormGray[\"0\"],\n /** @deprecated Use `stormGray50` */\n storm50: stormGray[\"0.5\"],\n /** @deprecated Use `stormGray200` */\n storm200: stormGray[\"2\"],\n /** @deprecated Use `stormGray300` */\n storm300: stormGray[\"3\"],\n /** @deprecated Use `stormGray500` */\n storm500: stormGray[\"5\"],\n /** @deprecated Use `stormGray700` */\n storm700: stormGray[\"7\"],\n /** @deprecated Use `stormGray850` */\n storm900: stormGray[\"8.5\"],\n\n countrySelectorSelectedBg: `${stormGray[\"0.5\"]}99`,\n\n white: \"#ffffff\",\n error: \"#dc2626\",\n errorDark: \"#b3261e\",\n errorLight: \"#fee2e2\",\n /** @deprecated Use `rubyRed` */\n inputError: brand.rubyRed,\n inputOutlineFocus: navy[\"0.5\"],\n inputOutlineError: rubyRed[\"0.5\"],\n warning: \"#92400e\",\n warningBg: \"#fef3c7\",\n success: \"#28a745\",\n successMuted: \"#9fd4a8\",\n /** @deprecated Use `emeraldGreen` */\n green: brand.emeraldGreen,\n transparent: \"transparent\",\n} as const;\n\nexport const radii = {\n sm: 8,\n md: 12,\n lg: 16,\n xl: 20,\n full: 9999,\n} as const;\n\nexport const spacing = {\n xs: 4,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 24,\n xxl: 32,\n} as const;\n\nexport const fontSize = {\n xs: 11,\n sm: 12,\n md: 14,\n base: 16,\n lg: 18,\n xl: 24,\n xxl: 32,\n} as const;\n\n/**\n * Canonical Homepad type scale (matches `.typography-*` in `src/web/styles/typography.css`).\n * font-size / line-height pairs:\n * 12/16 · 14/19 · 18/24 · 20/27 · 24/25 · 32/34\n */\nexport const typographyScale = {\n 12: { fontSize: 12, lineHeight: 16 },\n 14: { fontSize: 14, lineHeight: 19 },\n 18: { fontSize: 18, lineHeight: 24 },\n 20: { fontSize: 20, lineHeight: 27 },\n 24: { fontSize: 24, lineHeight: 25 },\n 32: { fontSize: 32, lineHeight: 34 },\n} as const;\n\nexport const fontWeight = {\n regular: \"400\" as const,\n medium: \"500\" as const,\n semibold: \"600\" as const,\n bold: \"700\" as const,\n};\n\nexport const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Input label typography — Medium, typography-12 scale. */\nexport const labelTypography = {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.medium,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n} as const;\n\n/** Button label typography — SemiBold. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[14].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[14].lineHeight,\n letterSpacing: 0,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n },\n} as const;\n\nexport const shadows = {\n card: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.05,\n shadowRadius: 20,\n elevation: 2,\n },\n cardLg: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.1,\n shadowRadius: 20,\n elevation: 4,\n },\n} as const;\n","export const ARROW_UP_RIGHT_PATH =\n \"M14.1667 14.1668V5.8335H5.83333M14.1667 5.8335L5.83333 14.1668\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\nexport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\ninterface ArrowUpRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowUpRightIcon({\n size = 20,\n color = \"#082640\",\n strokeWidth = 2,\n}: ArrowUpRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_UP_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { useLayoutEffect } from \"react\";\nimport { Platform } from \"react-native\";\n\ninterface ClassListElement {\n classList: {\n add: (...classes: string[]) => void;\n remove: (...classes: string[]) => void;\n };\n}\n\nfunction hasClassList(node: unknown): node is ClassListElement {\n return (\n typeof node === \"object\" &&\n node !== null &&\n \"classList\" in node &&\n typeof (node as ClassListElement).classList?.add === \"function\"\n );\n}\n\nfunction resolveWebElement(ref: React.RefObject<unknown>): ClassListElement | null {\n const node = ref.current;\n if (!node) return null;\n\n if (hasClassList(node)) return node;\n\n const host = node as {\n _touchableNode?: unknown;\n getScrollableNode?: () => unknown;\n };\n\n if (hasClassList(host._touchableNode)) return host._touchableNode;\n\n if (typeof host.getScrollableNode === \"function\") {\n const scrollNode = host.getScrollableNode();\n if (hasClassList(scrollNode)) return scrollNode;\n }\n\n return null;\n}\n\n/**\n * Applies CSS class names to the underlying DOM node on web.\n * Keeps TouchableOpacity/Text as the render path so default RN styles stay intact.\n *\n * Retries via rAF when the host node is not ready yet — otherwise classes like\n * `h-13` / `w-full` would only land after a later re-render (e.g. typing in a form),\n * which visibly changes button size.\n */\nexport function useApplyWebClassName(\n ref: React.RefObject<unknown>,\n className?: string,\n enabled = true,\n): void {\n useLayoutEffect(() => {\n if (!enabled || Platform.OS !== \"web\" || !className?.trim()) return;\n\n let cancelled = false;\n let rafId = 0;\n let appliedElement: ClassListElement | null = null;\n const classes = className.trim().split(/\\s+/);\n\n const apply = () => {\n if (cancelled) return;\n\n const element = resolveWebElement(ref);\n if (!element) {\n rafId = requestAnimationFrame(apply);\n return;\n }\n\n appliedElement = element;\n element.classList.add(...classes);\n };\n\n apply();\n\n return () => {\n cancelled = true;\n if (rafId) cancelAnimationFrame(rafId);\n appliedElement?.classList.remove(...classes);\n };\n }, [ref, className, enabled]);\n}\n","import { useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { ArrowUpRightIcon } from \"../icons/ArrowUpRightIcon\";\nimport { colors, buttonTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"white\" | \"primary\" | \"green\" | \"gray\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n /** Custom icon inside the badge. Defaults to `ArrowUpRightIcon` when `showIcon` is true. */\n icon?: ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n className?: string;\n textClassName?: string;\n}\n\ntype VariantStyleSet = {\n backgroundColor: string;\n textColor: string;\n iconBadgeBackgroundColor: string;\n iconColor: string;\n};\n\nconst variantConfig: Record<ButtonVariant, VariantStyleSet> = {\n white: {\n backgroundColor: colors.white,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n primary: {\n backgroundColor: colors.navy,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.navy,\n },\n green: {\n backgroundColor: colors.green,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.green,\n },\n gray: {\n backgroundColor: colors.stormGray50,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n};\n\nconst sizeConfig = {\n lg: {\n /** Matches Tailwind `h-13` so size stays stable before web classNames attach. */\n minHeight: 52,\n borderRadius: 16,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 24,\n paddingHorizontalCentered: 24,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconContainerRadius: 12,\n iconContainerPadding: 8,\n iconSize: 20,\n },\n sm: {\n minHeight: 40,\n borderRadius: 12,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 16,\n paddingHorizontalCentered: 16,\n text: buttonTypography.sm,\n iconContainerSize: 32,\n iconContainerRadius: 8,\n iconContainerPadding: 8,\n iconSize: 16,\n },\n} as const;\n\nexport function Button({\n title,\n children,\n onPress,\n disabled = false,\n variant = \"primary\",\n size = \"lg\",\n showIcon = false,\n icon,\n style,\n textStyle,\n className,\n textClassName,\n}: ButtonProps) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const textRef = useRef<ComponentRef<typeof Text>>(null);\n const preset = variantConfig[variant];\n const metrics = sizeConfig[size];\n\n const label = typeof children !== \"undefined\" ? children : title;\n const hasCustomChildren = typeof children !== \"undefined\";\n const customIcon =\n icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = [\n Platform.OS === \"web\" ? \"max-md:px-4!\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n useApplyWebClassName(containerRef, resolvedContainerClassName || undefined);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode =\n customIcon ?? (\n <ArrowUpRightIcon size={metrics.iconSize} color={preset.iconColor} />\n );\n\n const containerStyle = [\n styles.base,\n {\n minHeight: metrics.minHeight,\n borderRadius: metrics.borderRadius,\n backgroundColor: preset.backgroundColor,\n paddingTop: metrics.paddingTop,\n paddingBottom: metrics.paddingBottom,\n paddingLeft: hasIcon ? metrics.paddingLeft : metrics.paddingHorizontalCentered,\n paddingRight: hasIcon ? metrics.paddingRight : metrics.paddingHorizontalCentered,\n },\n hasIcon ? styles.withIcon : styles.centered,\n disabled && styles.disabled,\n style,\n ];\n\n const labelStyle = [\n styles.label,\n metrics.text,\n { color: preset.textColor },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n !hasIcon && styles.labelCentered,\n hasIcon && styles.labelWithIcon,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n ref={containerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled }}\n >\n {hasCustomChildren ? (\n children\n ) : (\n <Text ref={textRef} style={labelStyle}>\n {label}\n </Text>\n )}\n\n {hasIcon ? (\n <View\n style={[\n styles.iconContainer,\n {\n width: metrics.iconContainerSize,\n height: metrics.iconContainerSize,\n borderRadius: metrics.iconContainerRadius,\n padding: metrics.iconContainerPadding,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderWidth: 0,\n },\n centered: {\n justifyContent: \"center\",\n },\n withIcon: {\n justifyContent: \"space-between\",\n gap: 24,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n labelWithIcon: {\n flex: 1,\n flexShrink: 1,\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n StyleSheet,\n Text,\n type StyleProp,\n type TextProps,\n type TextStyle,\n} from \"react-native\";\nimport { colors, labelTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport interface LabelProps extends TextProps {\n children: ReactNode;\n /** Render as a required field indicator. */\n required?: boolean;\n disabled?: boolean;\n style?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport function Label({\n children,\n required = false,\n disabled = false,\n style,\n className,\n ...props\n}: LabelProps) {\n const ref = useRef<ComponentRef<typeof Text>>(null);\n useApplyWebClassName(ref, className);\n\n return (\n <Text\n ref={ref}\n style={[styles.label, disabled && styles.labelDisabled, style]}\n accessibilityRole=\"text\"\n {...props}\n >\n {children}\n {required ? <Text style={styles.required}> *</Text> : null}\n </Text>\n );\n}\n\nconst styles = StyleSheet.create({\n label: {\n ...labelTypography,\n color: colors.slateBlue,\n },\n labelDisabled: {\n color: colors.stormGray400,\n },\n required: {\n color: colors.inputError,\n },\n});\n","export const EYE_OPEN_OUTLINE_PATH =\n \"M1.71835 10.2898C1.6489 10.1027 1.6489 9.89691 1.71835 9.70981C2.39476 8.06969 3.54294 6.66735 5.01732 5.68056C6.4917 4.69378 8.22588 4.16699 10 4.16699C11.7741 4.16699 13.5083 4.69378 14.9827 5.68056C16.4571 6.66735 17.6053 8.06969 18.2817 9.70981C18.3511 9.89691 18.3511 10.1027 18.2817 10.2898C17.6053 11.9299 16.4571 13.3323 14.9827 14.3191C13.5083 15.3058 11.7741 15.8326 10 15.8326C8.22588 15.8326 6.4917 15.3058 5.01732 14.3191C3.54294 13.3323 2.39476 11.9299 1.71835 10.2898Z\";\n\nexport const EYE_OPEN_PUPIL_PATH =\n \"M10 12.4998C11.3807 12.4998 12.5 11.3805 12.5 9.99981C12.5 8.6191 11.3807 7.49981 10 7.49981C8.6193 7.49981 7.50001 8.6191 7.50001 9.99981C7.50001 11.3805 8.6193 12.4998 10 12.4998Z\";\n\nexport const EYE_OFF_PATH =\n \"M10.733 5.076C13.0624 4.7984 15.4186 5.29082 17.4419 6.47805C19.4651 7.66528 21.0442 9.48208 21.938 11.651C22.0213 11.8755 22.0213 12.1225 21.938 12.347C21.5705 13.238 21.0848 14.0755 20.494 14.837M14.084 14.158C13.5182 14.7045 12.7604 15.0069 11.9738 15C11.1872 14.9932 10.4348 14.6777 9.87854 14.1215C9.32232 13.5652 9.00681 12.8128 8.99998 12.0262C8.99314 11.2396 9.29553 10.4818 9.842 9.916M17.479 17.499C16.1525 18.2848 14.6725 18.776 13.1394 18.9394C11.6063 19.1028 10.056 18.9345 8.59363 18.4459C7.13131 17.9573 5.79119 17.1599 4.66421 16.1077C3.53723 15.0556 2.64975 13.7734 2.062 12.348C1.97866 12.1235 1.97866 11.8765 2.062 11.652C2.94863 9.50186 4.50867 7.69725 6.508 6.509M2 2L22 22\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\ninterface EyeIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — open eye (password hidden). */\nexport function EyeIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={EYE_OPEN_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={EYE_OPEN_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\ninterface EyeOffIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — slashed eye (password visible). */\nexport function EyeOffIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeOffIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={EYE_OFF_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport { colors, fonts, fontSize, fontWeight, radii } from \"./tokens\";\n\nexport const INPUT_HEIGHT = 56;\nexport const INPUT_ICON_SIZE = 20;\nexport const INPUT_ICON_GAP = 10;\nexport const INPUT_OUTLINE_WIDTH = 2;\n/** Natural text metrics; avoid a tighter lineHeight that clips Armenian glyphs. */\nexport const INPUT_TEXT_LINE_HEIGHT = 20;\nexport const INPUT_WEB_VERTICAL_PADDING = 14;\nexport const INPUT_VERTICAL_PADDING = 14;\nexport const INPUT_HORIZONTAL_PADDING = 16;\n/** Default outer height for multiline fields (padding included). */\nexport const INPUT_MULTILINE_MIN_HEIGHT = 120;\nexport const INPUT_MULTILINE_INNER_MIN_HEIGHT =\n INPUT_MULTILINE_MIN_HEIGHT - INPUT_VERTICAL_PADDING * 2;\n\nexport type InputVisualState =\n | \"default\"\n | \"focused\"\n | \"error\"\n | \"disabled\";\n\nexport interface InputStateFlags {\n focused?: boolean;\n error?: boolean;\n disabled?: boolean;\n}\n\nexport function resolveInputVisualState({\n focused = false,\n error = false,\n disabled = false,\n}: InputStateFlags): InputVisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"focused\";\n return \"default\";\n}\n\ninterface FieldStyleSet {\n container: ViewStyle;\n outline: ViewStyle;\n text: TextStyle;\n placeholder: string;\n icon: string;\n}\n\nfunction createOutlineStyle(ringColor: string): ViewStyle {\n return {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: ringColor,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n };\n}\n\nconst defaultOutline: ViewStyle = {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: colors.transparent,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n};\n\nexport function getInputFieldStyles(state: InputVisualState): FieldStyleSet {\n const containerBase: ViewStyle = {\n borderRadius: radii.lg,\n };\n\n switch (state) {\n case \"disabled\":\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n text: { color: colors.stormGray300 },\n placeholder: colors.stormGray300,\n icon: colors.stormGray150,\n };\n case \"error\":\n return {\n outline: createOutlineStyle(colors.inputOutlineError),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.inputError,\n backgroundColor: colors.white,\n },\n text: { color: colors.inputError },\n placeholder: colors.stormGray200,\n icon: colors.inputError,\n };\n case \"focused\":\n return {\n outline: createOutlineStyle(colors.inputOutlineFocus),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.navy,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.navy,\n };\n default:\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.stormGray150,\n };\n }\n}\n\nexport const inputFieldMetrics = StyleSheet.create({\n containerBase: {\n flexDirection: \"row\",\n borderRadius: radii.lg,\n paddingHorizontal: INPUT_HORIZONTAL_PADDING,\n paddingVertical: INPUT_VERTICAL_PADDING,\n gap: INPUT_ICON_GAP,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n paddingVertical: INPUT_WEB_VERTICAL_PADDING,\n paddingHorizontal: INPUT_HORIZONTAL_PADDING,\n } as ViewStyle)\n : null),\n },\n container: {\n alignItems: \"center\",\n height: INPUT_HEIGHT,\n // Do not clip glyph ascenders on single-line fields (Armenian / tall fonts).\n overflow: \"visible\",\n },\n /**\n * Column layout + explicit minHeight so the TextInput hit target matches the\n * visible box on Android release builds (row + flexGrow:0 collapsed taps).\n */\n containerMultiline: {\n flexDirection: \"column\",\n alignItems: \"stretch\",\n justifyContent: \"flex-start\",\n minHeight: INPUT_MULTILINE_MIN_HEIGHT,\n overflow: \"hidden\",\n },\n input: {\n flex: 1,\n minWidth: 0,\n width: \"100%\",\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n borderWidth: 0,\n backgroundColor: colors.transparent,\n // Leave lineHeight unset so platform font metrics keep placeholder tops visible.\n ...(Platform.OS === \"web\"\n ? ({\n alignSelf: \"center\",\n outlineStyle: \"none\",\n lineHeight: INPUT_TEXT_LINE_HEIGHT,\n } as TextStyle)\n : {\n alignSelf: \"stretch\",\n }),\n },\n /** Single-line: avoid Android lineHeight jump between placeholder and typed text. */\n inputSingleLine: {\n ...(Platform.OS === \"android\"\n ? ({ textAlignVertical: \"center\", includeFontPadding: false } as TextStyle)\n : null),\n },\n /**\n * Fill the column container so the whole field is tappable in release APKs.\n * `textAlignVertical: \"top\"` keeps typed text (and Android placeholder) at the top.\n */\n inputMultiline: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"auto\",\n width: \"100%\",\n minHeight: INPUT_MULTILINE_INNER_MIN_HEIGHT,\n alignSelf: \"stretch\",\n textAlignVertical: \"top\",\n ...(Platform.OS === \"android\"\n ? ({ includeFontPadding: false } as TextStyle)\n : null),\n },\n});\n","import {\n cloneElement,\n isValidElement,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputFocusEventData,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { EyeIcon } from \"../icons/EyeIcon\";\nimport { EyeOffIcon } from \"../icons/EyeOffIcon\";\nimport {\n getInputFieldStyles,\n inputFieldMetrics,\n INPUT_ICON_SIZE,\n resolveInputVisualState,\n} from \"../theme/input\";\nimport { colors, spacing } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport { Label } from \"./Label\";\n\ntype InputIconProps = {\n size?: number;\n color?: string;\n};\n\nfunction renderInputIcon(icon: ReactNode, color: string) {\n if (!icon) return null;\n\n if (isValidElement<InputIconProps>(icon)) {\n return cloneElement(icon, {\n size: icon.props.size ?? INPUT_ICON_SIZE,\n color: icon.props.color ?? color,\n });\n }\n\n return icon;\n}\n\nexport interface InputProps extends TextInputProps {\n /** Optional field label rendered above the input. */\n label?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n /** Validation or helper error message. Shown instead of `hint` when set. */\n error?: string;\n /** Applies error field styling without showing a message (use with a form-level error). */\n invalid?: boolean;\n /** Helper text shown below the input when there is no error. */\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<TextStyle>;\n className?: string;\n /** CSS classes for the bordered field container (web). */\n fieldClassName?: string;\n /** Styles merged into the bordered field container. */\n fieldStyle?: StyleProp<ViewStyle>;\n labelClassName?: string;\n /** Styles merged into the field label. */\n labelStyles?: StyleProp<TextStyle>;\n inputClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** When `secureTextEntry` is set, show a toggleable eye icon. Pass `false` to disable. */\n showPasswordToggle?: boolean;\n}\n\nconst INTEGER_KEYBOARD_TYPES = new Set([\n \"numeric\",\n \"number-pad\",\n \"phone-pad\",\n]);\n\n/** Strip non-digits for integer pads; keep one decimal separator for decimal-pad. */\nfunction sanitizeNumericInput(\n value: string,\n keyboardType: TextInputProps[\"keyboardType\"],\n): string {\n if (keyboardType === \"decimal-pad\") {\n const normalized = value.replace(/,/g, \".\").replace(/[^\\d.]/g, \"\");\n const separatorIndex = normalized.indexOf(\".\");\n\n if (separatorIndex === -1) {\n return normalized;\n }\n\n return (\n normalized.slice(0, separatorIndex + 1) +\n normalized.slice(separatorIndex + 1).replace(/\\./g, \"\")\n );\n }\n\n if (keyboardType && INTEGER_KEYBOARD_TYPES.has(keyboardType)) {\n return value.replace(/\\D/g, \"\");\n }\n\n return value;\n}\n\nexport function Input({\n label,\n leftIcon,\n rightIcon,\n error,\n invalid,\n hint,\n containerStyle,\n style,\n className,\n fieldClassName,\n fieldStyle,\n labelClassName,\n labelStyles,\n inputClassName,\n errorClassName,\n hintClassName,\n editable = true,\n secureTextEntry,\n showPasswordToggle,\n onFocus,\n onBlur,\n onChangeText,\n keyboardType,\n multiline,\n textAlign = \"left\",\n textAlignVertical,\n ...props\n}: InputProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const fieldRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [focused, setFocused] = useState(false);\n const [passwordVisible, setPasswordVisible] = useState(false);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(fieldRef, fieldClassName);\n useApplyWebClassName(inputRef, inputClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n const isDisabled = editable === false;\n const hasError = Boolean(error) || Boolean(invalid);\n const passwordToggleEnabled =\n secureTextEntry === true && showPasswordToggle !== false && rightIcon == null;\n const effectiveSecureTextEntry = passwordToggleEnabled\n ? !passwordVisible\n : secureTextEntry;\n // Keep placeholder and typed text on the same vertical line (esp. Android).\n const resolvedTextAlignVertical =\n textAlignVertical ?? (multiline ? \"top\" : \"center\");\n const visualState = resolveInputVisualState({\n focused,\n error: hasError,\n disabled: isDisabled,\n });\n const fieldStyles = getInputFieldStyles(visualState);\n const iconColor = fieldStyles.icon;\n\n function handleFocus(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(true);\n onFocus?.(event);\n }\n\n function handleBlur(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(false);\n onBlur?.(event);\n }\n\n function handleChangeText(value: string) {\n onChangeText?.(sanitizeNumericInput(value, keyboardType));\n }\n\n const helperMessage = error ?? hint;\n\n function togglePasswordVisibility() {\n if (!isDisabled) {\n setPasswordVisible((visible) => !visible);\n }\n }\n\n const trailingIcon = passwordToggleEnabled ? (\n <Pressable\n onPress={togglePasswordVisibility}\n disabled={isDisabled}\n accessibilityRole=\"button\"\n accessibilityLabel={passwordVisible ? \"Hide password\" : \"Show password\"}\n hitSlop={8}\n style={styles.iconPressable}\n >\n {renderInputIcon(\n passwordVisible ? <EyeOffIcon /> : <EyeIcon />,\n iconColor,\n )}\n </Pressable>\n ) : rightIcon ? (\n renderInputIcon(rightIcon, iconColor)\n ) : null;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label\n disabled={isDisabled}\n className={labelClassName}\n style={labelStyles}\n >\n {label}\n </Label>\n ) : null}\n <View style={fieldStyles.outline}>\n <View\n ref={fieldRef}\n style={[\n inputFieldMetrics.containerBase,\n multiline\n ? inputFieldMetrics.containerMultiline\n : inputFieldMetrics.container,\n fieldStyles.container,\n fieldStyle,\n ]}\n >\n {leftIcon ? (\n <View style={styles.iconSlot}>{renderInputIcon(leftIcon, iconColor)}</View>\n ) : null}\n <TextInput\n ref={inputRef}\n style={[\n inputFieldMetrics.input,\n multiline\n ? inputFieldMetrics.inputMultiline\n : inputFieldMetrics.inputSingleLine,\n fieldStyles.text,\n style,\n ]}\n placeholderTextColor={fieldStyles.placeholder}\n editable={editable}\n keyboardType={keyboardType}\n multiline={multiline}\n scrollEnabled={multiline ? true : undefined}\n secureTextEntry={effectiveSecureTextEntry}\n textAlign={textAlign}\n textAlignVertical={resolvedTextAlignVertical}\n underlineColorAndroid=\"transparent\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n accessibilityState={{ disabled: isDisabled }}\n {...props}\n onChangeText={handleChangeText}\n />\n {trailingIcon ? (\n <View style={styles.iconSlot}>{trailingIcon}</View>\n ) : null}\n </View>\n </View>\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n minWidth: 0,\n gap: spacing.sm,\n },\n iconSlot: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n iconPressable: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n"]}
|