@ecohouse/ui 0.1.6 → 0.1.8
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/README.md +13 -12
- package/dist/index.cjs +699 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -3
- package/dist/index.d.ts +137 -3
- package/dist/index.js +690 -103
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/CommentCard/CommentCard.stories.tsx +31 -0
- package/src/components/CommentCard/CommentCard.tsx +209 -0
- package/src/components/CommentCard/index.ts +2 -0
- package/src/components/LanguageSwitcher/LanguageSwitcher.stories.tsx +52 -0
- package/src/components/LanguageSwitcher/LanguageSwitcher.tsx +287 -0
- package/src/components/LanguageSwitcher/index.ts +2 -0
- package/src/components/RatingInput/RatingInput.stories.tsx +41 -0
- package/src/components/RatingInput/RatingInput.tsx +168 -0
- package/src/components/RatingInput/index.ts +2 -0
- package/src/components/index.ts +9 -0
- package/src/icons/Globe/GlobeIcon.tsx +20 -0
- package/src/icons/Globe/GlobeIcon.web.tsx +26 -0
- package/src/icons/Globe/globePath.ts +3 -0
- package/src/icons/Globe/index.ts +2 -0
- package/src/icons/Star/StarIcon.tsx +35 -0
- package/src/icons/Star/StarIcon.web.tsx +41 -0
- package/src/icons/Star/index.ts +2 -0
- package/src/icons/Star/starPath.ts +3 -0
- package/src/icons/StarFilled/StarFilledIcon.tsx +28 -0
- package/src/icons/StarFilled/StarFilledIcon.web.tsx +34 -0
- package/src/icons/StarFilled/index.ts +1 -0
- package/src/icons/index.ts +4 -0
- package/src/icons/registry.ts +9 -1
- package/src/index.ts +22 -1
- package/src/theme/index.ts +3 -0
- package/src/theme/typography.ts +50 -0
package/dist/index.cjs
CHANGED
|
@@ -107,6 +107,13 @@ var segmentedToggleTypography = {
|
|
|
107
107
|
lineHeight: 14,
|
|
108
108
|
letterSpacing: 0
|
|
109
109
|
};
|
|
110
|
+
var languageSwitcherTypography = {
|
|
111
|
+
fontFamily: fonts.sans,
|
|
112
|
+
fontSize: 14,
|
|
113
|
+
fontWeight: "600",
|
|
114
|
+
lineHeight: 19,
|
|
115
|
+
letterSpacing: 0
|
|
116
|
+
};
|
|
110
117
|
var counterTypography = {
|
|
111
118
|
fontFamily: fonts.sans,
|
|
112
119
|
fontSize: 14,
|
|
@@ -114,6 +121,43 @@ var counterTypography = {
|
|
|
114
121
|
lineHeight: 14,
|
|
115
122
|
letterSpacing: 0
|
|
116
123
|
};
|
|
124
|
+
var ratingTypography = {
|
|
125
|
+
fontFamily: fonts.sans,
|
|
126
|
+
fontSize: 32,
|
|
127
|
+
fontWeight: "700",
|
|
128
|
+
lineHeight: 35.84,
|
|
129
|
+
letterSpacing: 0
|
|
130
|
+
};
|
|
131
|
+
var commentCardTypography = {
|
|
132
|
+
name: {
|
|
133
|
+
fontFamily: fonts.sans,
|
|
134
|
+
fontSize: 16,
|
|
135
|
+
fontWeight: "600",
|
|
136
|
+
lineHeight: 18,
|
|
137
|
+
letterSpacing: 0
|
|
138
|
+
},
|
|
139
|
+
date: {
|
|
140
|
+
fontFamily: fonts.sans,
|
|
141
|
+
fontSize: 14,
|
|
142
|
+
fontWeight: "400",
|
|
143
|
+
lineHeight: 16,
|
|
144
|
+
letterSpacing: 0
|
|
145
|
+
},
|
|
146
|
+
comment: {
|
|
147
|
+
fontFamily: fonts.sans,
|
|
148
|
+
fontSize: 14,
|
|
149
|
+
fontWeight: "400",
|
|
150
|
+
lineHeight: 19,
|
|
151
|
+
letterSpacing: 0
|
|
152
|
+
},
|
|
153
|
+
action: {
|
|
154
|
+
fontFamily: fonts.sans,
|
|
155
|
+
fontSize: 12,
|
|
156
|
+
fontWeight: "700",
|
|
157
|
+
lineHeight: 12,
|
|
158
|
+
letterSpacing: 0
|
|
159
|
+
}
|
|
160
|
+
};
|
|
117
161
|
var inputTypography = {
|
|
118
162
|
label: {
|
|
119
163
|
fontFamily: fonts.sans,
|
|
@@ -451,6 +495,21 @@ function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }) {
|
|
|
451
495
|
) });
|
|
452
496
|
}
|
|
453
497
|
|
|
498
|
+
// src/icons/Globe/globePath.ts
|
|
499
|
+
var GLOBE_PATH = "M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333M18.3333 10C18.3333 5.39763 14.6024 1.66667 10 1.66667M18.3333 10H1.66667M10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10M10 18.3333C12.0833 16.0511 13.2675 13.0836 13.3333 10C13.2675 6.91643 12.0833 3.94892 10 1.66667M10 18.3333C7.91667 16.0511 6.73248 13.0836 6.66667 10C6.73248 6.91643 7.91667 3.94892 10 1.66667M1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667";
|
|
500
|
+
function GlobeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
501
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: size, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
502
|
+
Svg.Path,
|
|
503
|
+
{
|
|
504
|
+
d: GLOBE_PATH,
|
|
505
|
+
stroke: color,
|
|
506
|
+
strokeWidth,
|
|
507
|
+
strokeLinecap: "round",
|
|
508
|
+
strokeLinejoin: "round"
|
|
509
|
+
}
|
|
510
|
+
) });
|
|
511
|
+
}
|
|
512
|
+
|
|
454
513
|
// src/icons/HelpCircle/helpCirclePath.ts
|
|
455
514
|
var HELP_CIRCLE_PATH = "M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z";
|
|
456
515
|
function HelpCircleIcon({
|
|
@@ -711,6 +770,47 @@ function SidebarIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
|
711
770
|
) });
|
|
712
771
|
}
|
|
713
772
|
|
|
773
|
+
// src/icons/Star/starPath.ts
|
|
774
|
+
var STAR_PATH = "M12.6112 2.09824C12.9186 1.47565 13.0722 1.16436 13.2808 1.0649C13.4623 0.978367 13.6732 0.978367 13.8546 1.0649C14.0632 1.16436 14.2169 1.47565 14.5242 2.09824L17.4398 8.00486C17.5305 8.18866 17.5759 8.28056 17.6422 8.35192C17.7009 8.41509 17.7713 8.46628 17.8495 8.50264C17.9378 8.54371 18.0392 8.55854 18.242 8.58818L24.7637 9.54142C25.4505 9.6418 25.7938 9.69199 25.9528 9.85973C26.091 10.0057 26.156 10.2062 26.1297 10.4055C26.0995 10.6346 25.8509 10.8767 25.3537 11.361L20.6363 15.9557C20.4893 16.0989 20.4157 16.1706 20.3683 16.2558C20.3263 16.3312 20.2993 16.4141 20.2889 16.4998C20.2772 16.5966 20.2945 16.6978 20.3292 16.9001L21.4423 23.39C21.5597 24.0745 21.6184 24.4167 21.5081 24.6198C21.4121 24.7965 21.2415 24.9205 21.0438 24.9571C20.8165 24.9992 20.5092 24.8376 19.8945 24.5144L14.0642 21.4483C13.8826 21.3527 13.7917 21.305 13.696 21.2862C13.6113 21.2696 13.5242 21.2696 13.4394 21.2862C13.3437 21.305 13.2529 21.3527 13.0713 21.4483L7.24094 24.5144C6.62626 24.8376 6.31892 24.9992 6.09167 24.9571C5.89395 24.9205 5.72334 24.7965 5.62736 24.6198C5.51704 24.4167 5.57574 24.0745 5.69314 23.39L6.80622 16.9001C6.84092 16.6978 6.85828 16.5966 6.84653 16.4998C6.83614 16.4141 6.80919 16.3312 6.76718 16.2558C6.71974 16.1706 6.64621 16.0989 6.49916 15.9557L1.78179 11.361C1.28459 10.8767 1.03599 10.6346 1.00574 10.4055C0.979423 10.2062 1.04445 10.0057 1.18271 9.85973C1.34162 9.69199 1.685 9.6418 2.37177 9.54142L8.89346 8.58818C9.09627 8.55854 9.19768 8.54371 9.286 8.50264C9.36419 8.46628 9.43459 8.41509 9.49329 8.35192C9.55958 8.28056 9.60495 8.18866 9.69567 8.00486L12.6112 2.09824Z";
|
|
775
|
+
function StarIcon({
|
|
776
|
+
active = false,
|
|
777
|
+
size = 28,
|
|
778
|
+
height,
|
|
779
|
+
color,
|
|
780
|
+
strokeWidth = 2
|
|
781
|
+
}) {
|
|
782
|
+
const resolvedColor = color ?? (active ? "#E38E5E" : colors.grey150);
|
|
783
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: height ?? size * 26 / 28, viewBox: "0 0 28 26", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
784
|
+
Svg.Path,
|
|
785
|
+
{
|
|
786
|
+
d: STAR_PATH,
|
|
787
|
+
fill: active ? resolvedColor : "none",
|
|
788
|
+
stroke: resolvedColor,
|
|
789
|
+
strokeWidth,
|
|
790
|
+
strokeLinecap: "round",
|
|
791
|
+
strokeLinejoin: "round"
|
|
792
|
+
}
|
|
793
|
+
) });
|
|
794
|
+
}
|
|
795
|
+
function StarFilledIcon({
|
|
796
|
+
size = 28,
|
|
797
|
+
height,
|
|
798
|
+
color = "#E38E5E",
|
|
799
|
+
strokeWidth = 2
|
|
800
|
+
}) {
|
|
801
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Svg__default.default, { width: size, height: height ?? size * 26 / 28, viewBox: "0 0 28 26", fill: color, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
802
|
+
Svg.Path,
|
|
803
|
+
{
|
|
804
|
+
d: STAR_PATH,
|
|
805
|
+
fill: color,
|
|
806
|
+
stroke: color,
|
|
807
|
+
strokeWidth,
|
|
808
|
+
strokeLinecap: "round",
|
|
809
|
+
strokeLinejoin: "round"
|
|
810
|
+
}
|
|
811
|
+
) });
|
|
812
|
+
}
|
|
813
|
+
|
|
714
814
|
// src/icons/User/userPath.ts
|
|
715
815
|
var USER_PATH = "M15.8334 17.5C15.8334 14.2783 13.2217 11.6667 10 11.6667C6.77836 11.6667 4.16669 14.2783 4.16669 17.5M10 9.16667C8.15907 9.16667 6.66669 7.67428 6.66669 5.83333C6.66669 3.99238 8.15907 2.5 10 2.5C11.841 2.5 13.3334 3.99238 13.3334 5.83333C13.3334 7.67428 11.841 9.16667 10 9.16667Z";
|
|
716
816
|
function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }) {
|
|
@@ -767,6 +867,7 @@ var icons = {
|
|
|
767
867
|
clock: ClockIcon,
|
|
768
868
|
facebook: FacebookIcon,
|
|
769
869
|
heart: HeartIcon,
|
|
870
|
+
globe: GlobeIcon,
|
|
770
871
|
helpCircle: HelpCircleIcon,
|
|
771
872
|
home: HomeIcon,
|
|
772
873
|
instagram: InstagramIcon,
|
|
@@ -783,6 +884,8 @@ var icons = {
|
|
|
783
884
|
settings: SettingsIcon,
|
|
784
885
|
show: ShowIcon,
|
|
785
886
|
sidebar: SidebarIcon,
|
|
887
|
+
star: StarIcon,
|
|
888
|
+
starFilled: StarFilledIcon,
|
|
786
889
|
user: UserIcon,
|
|
787
890
|
usersAlt: UsersAltIcon,
|
|
788
891
|
video: VideoIcon
|
|
@@ -801,13 +904,15 @@ var iconGroups = {
|
|
|
801
904
|
"calendar",
|
|
802
905
|
"calendarOutline",
|
|
803
906
|
"heart",
|
|
907
|
+
"star",
|
|
908
|
+
"starFilled",
|
|
804
909
|
"minus",
|
|
805
910
|
"plus"
|
|
806
911
|
],
|
|
807
912
|
objects: ["bag", "building", "clock", "user", "usersAlt", "video"],
|
|
808
913
|
communication: ["mail", "phone"],
|
|
809
914
|
social: ["facebook", "instagram", "linkedin"],
|
|
810
|
-
interface: ["layoutGrid", "sidebar", "settings", "helpCircle", "logOut"]
|
|
915
|
+
interface: ["globe", "layoutGrid", "sidebar", "settings", "helpCircle", "logOut"]
|
|
811
916
|
};
|
|
812
917
|
var iconGroupNames = Object.keys(iconGroups);
|
|
813
918
|
function getIconsByGroup(group) {
|
|
@@ -1536,7 +1641,223 @@ var styles5 = reactNative.StyleSheet.create({
|
|
|
1536
1641
|
flexShrink: 1
|
|
1537
1642
|
}
|
|
1538
1643
|
});
|
|
1539
|
-
var
|
|
1644
|
+
var defaultLanguageOptions = [
|
|
1645
|
+
{ value: "hy", label: "\u0540\u0561\u0575" },
|
|
1646
|
+
{ value: "en", label: "Eng" },
|
|
1647
|
+
{ value: "ru", label: "\u0420\u0443\u0441" }
|
|
1648
|
+
];
|
|
1649
|
+
var CONTROL_WIDTH = 90;
|
|
1650
|
+
var CONTROL_HEIGHT = 35;
|
|
1651
|
+
var ICON_SIZE4 = 16;
|
|
1652
|
+
var LanguageSwitcher = react.forwardRef(
|
|
1653
|
+
function LanguageSwitcher2({
|
|
1654
|
+
options = defaultLanguageOptions,
|
|
1655
|
+
value,
|
|
1656
|
+
defaultValue,
|
|
1657
|
+
onValueChange,
|
|
1658
|
+
open: openProp,
|
|
1659
|
+
defaultOpen = false,
|
|
1660
|
+
onOpenChange,
|
|
1661
|
+
disabled = false,
|
|
1662
|
+
accessibilityLabel = "Language",
|
|
1663
|
+
style,
|
|
1664
|
+
className,
|
|
1665
|
+
hitSlop = 8,
|
|
1666
|
+
...rest
|
|
1667
|
+
}, forwardedRef) {
|
|
1668
|
+
const wrapperRef = react.useRef(null);
|
|
1669
|
+
const triggerRef = react.useRef(null);
|
|
1670
|
+
const setWrapperRef = react.useMemo(() => mergeRefs(wrapperRef, forwardedRef), [forwardedRef]);
|
|
1671
|
+
const firstValue = options[0]?.value ?? "";
|
|
1672
|
+
const isValueControlled = value !== void 0;
|
|
1673
|
+
const isOpenControlled = openProp !== void 0;
|
|
1674
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue ?? firstValue);
|
|
1675
|
+
const [uncontrolledOpen, setUncontrolledOpen] = react.useState(defaultOpen);
|
|
1676
|
+
const [triggerHovered, setTriggerHovered] = react.useState(false);
|
|
1677
|
+
const [hoveredValue, setHoveredValue] = react.useState(null);
|
|
1678
|
+
const selectedValue = isValueControlled ? value : uncontrolledValue;
|
|
1679
|
+
const isOpen = isOpenControlled ? openProp : uncontrolledOpen;
|
|
1680
|
+
const selectedOption = options.find((option) => option.value === selectedValue) ?? options[0] ?? null;
|
|
1681
|
+
useApplyWebClassName(wrapperRef, className?.trim() || void 0);
|
|
1682
|
+
const setOpen = react.useCallback(
|
|
1683
|
+
(next) => {
|
|
1684
|
+
if (disabled || next === isOpen) return;
|
|
1685
|
+
if (!isOpenControlled) setUncontrolledOpen(next);
|
|
1686
|
+
onOpenChange?.(next);
|
|
1687
|
+
},
|
|
1688
|
+
[disabled, isOpen, isOpenControlled, onOpenChange]
|
|
1689
|
+
);
|
|
1690
|
+
const closeAndFocusTrigger = react.useCallback(() => {
|
|
1691
|
+
setOpen(false);
|
|
1692
|
+
const node = triggerRef.current;
|
|
1693
|
+
node?.focus?.();
|
|
1694
|
+
}, [setOpen]);
|
|
1695
|
+
react.useEffect(() => {
|
|
1696
|
+
if (reactNative.Platform.OS !== "web" || !isOpen) return;
|
|
1697
|
+
const handlePointerDown = (event) => {
|
|
1698
|
+
const wrapper = wrapperRef.current;
|
|
1699
|
+
const target = event.target;
|
|
1700
|
+
if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {
|
|
1701
|
+
setOpen(false);
|
|
1702
|
+
}
|
|
1703
|
+
};
|
|
1704
|
+
const handleKeyDown = (event) => {
|
|
1705
|
+
if (event.key === "Escape") {
|
|
1706
|
+
event.preventDefault();
|
|
1707
|
+
closeAndFocusTrigger();
|
|
1708
|
+
}
|
|
1709
|
+
};
|
|
1710
|
+
document.addEventListener("mousedown", handlePointerDown);
|
|
1711
|
+
document.addEventListener("touchstart", handlePointerDown);
|
|
1712
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
1713
|
+
return () => {
|
|
1714
|
+
document.removeEventListener("mousedown", handlePointerDown);
|
|
1715
|
+
document.removeEventListener("touchstart", handlePointerDown);
|
|
1716
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
1717
|
+
};
|
|
1718
|
+
}, [closeAndFocusTrigger, isOpen, setOpen]);
|
|
1719
|
+
const selectLanguage = (nextValue) => {
|
|
1720
|
+
if (nextValue !== selectedValue) {
|
|
1721
|
+
if (!isValueControlled) setUncontrolledValue(nextValue);
|
|
1722
|
+
onValueChange?.(nextValue);
|
|
1723
|
+
}
|
|
1724
|
+
closeAndFocusTrigger();
|
|
1725
|
+
};
|
|
1726
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1727
|
+
reactNative.View,
|
|
1728
|
+
{
|
|
1729
|
+
...rest,
|
|
1730
|
+
ref: setWrapperRef,
|
|
1731
|
+
style: [styles6.wrapper, isOpen && styles6.wrapperOpen, disabled && styles6.disabled, style],
|
|
1732
|
+
children: [
|
|
1733
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1734
|
+
reactNative.Pressable,
|
|
1735
|
+
{
|
|
1736
|
+
ref: triggerRef,
|
|
1737
|
+
onPress: () => setOpen(!isOpen),
|
|
1738
|
+
disabled: disabled || options.length === 0,
|
|
1739
|
+
hitSlop,
|
|
1740
|
+
accessibilityRole: "button",
|
|
1741
|
+
accessibilityLabel,
|
|
1742
|
+
accessibilityState: { disabled, expanded: isOpen },
|
|
1743
|
+
onHoverIn: () => setTriggerHovered(true),
|
|
1744
|
+
onHoverOut: () => setTriggerHovered(false),
|
|
1745
|
+
style: ({ pressed }) => [
|
|
1746
|
+
styles6.trigger,
|
|
1747
|
+
(triggerHovered || pressed || isOpen) && styles6.triggerActive
|
|
1748
|
+
],
|
|
1749
|
+
children: [
|
|
1750
|
+
/* @__PURE__ */ jsxRuntime.jsx(GlobeIcon, { size: ICON_SIZE4, color: colors.white, strokeWidth: 2 }),
|
|
1751
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles6.triggerLabel, numberOfLines: 1, children: selectedOption?.label ?? "" }),
|
|
1752
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles6.chevron, isOpen && styles6.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: ICON_SIZE4, color: colors.white, strokeWidth: 2 }) })
|
|
1753
|
+
]
|
|
1754
|
+
}
|
|
1755
|
+
),
|
|
1756
|
+
isOpen && options.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles6.menu, accessibilityRole: "menu", children: options.map((option) => {
|
|
1757
|
+
const selected = option.value === selectedValue;
|
|
1758
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1759
|
+
reactNative.Pressable,
|
|
1760
|
+
{
|
|
1761
|
+
onPress: () => selectLanguage(option.value),
|
|
1762
|
+
accessibilityRole: "menuitem",
|
|
1763
|
+
accessibilityLabel: option.label,
|
|
1764
|
+
accessibilityState: { selected },
|
|
1765
|
+
onHoverIn: () => setHoveredValue(option.value),
|
|
1766
|
+
onHoverOut: () => setHoveredValue(null),
|
|
1767
|
+
style: ({ pressed }) => [
|
|
1768
|
+
styles6.item,
|
|
1769
|
+
selected ? styles6.itemSelected : (hoveredValue === option.value || pressed) && styles6.itemHovered
|
|
1770
|
+
],
|
|
1771
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles6.itemLabel, selected && styles6.itemLabelSelected], children: option.label })
|
|
1772
|
+
},
|
|
1773
|
+
option.value
|
|
1774
|
+
);
|
|
1775
|
+
}) }) : null
|
|
1776
|
+
]
|
|
1777
|
+
}
|
|
1778
|
+
);
|
|
1779
|
+
}
|
|
1780
|
+
);
|
|
1781
|
+
var styles6 = reactNative.StyleSheet.create({
|
|
1782
|
+
wrapper: {
|
|
1783
|
+
position: "relative",
|
|
1784
|
+
width: CONTROL_WIDTH,
|
|
1785
|
+
alignSelf: "flex-start"
|
|
1786
|
+
},
|
|
1787
|
+
wrapperOpen: {
|
|
1788
|
+
zIndex: 20
|
|
1789
|
+
},
|
|
1790
|
+
disabled: {
|
|
1791
|
+
opacity: 0.6
|
|
1792
|
+
},
|
|
1793
|
+
trigger: {
|
|
1794
|
+
width: CONTROL_WIDTH,
|
|
1795
|
+
height: CONTROL_HEIGHT,
|
|
1796
|
+
flexDirection: "row",
|
|
1797
|
+
alignItems: "center",
|
|
1798
|
+
gap: 8,
|
|
1799
|
+
padding: 8,
|
|
1800
|
+
borderRadius: 12,
|
|
1801
|
+
backgroundColor: "transparent"
|
|
1802
|
+
},
|
|
1803
|
+
triggerActive: {
|
|
1804
|
+
backgroundColor: colors.grey700
|
|
1805
|
+
},
|
|
1806
|
+
triggerLabel: {
|
|
1807
|
+
...languageSwitcherTypography,
|
|
1808
|
+
...reactNative.Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),
|
|
1809
|
+
minWidth: 0,
|
|
1810
|
+
flex: 1,
|
|
1811
|
+
color: colors.white
|
|
1812
|
+
},
|
|
1813
|
+
chevron: {
|
|
1814
|
+
width: ICON_SIZE4,
|
|
1815
|
+
height: ICON_SIZE4,
|
|
1816
|
+
flexShrink: 0,
|
|
1817
|
+
alignItems: "center",
|
|
1818
|
+
justifyContent: "center"
|
|
1819
|
+
},
|
|
1820
|
+
chevronOpen: {
|
|
1821
|
+
transform: [{ rotate: "180deg" }]
|
|
1822
|
+
},
|
|
1823
|
+
menu: {
|
|
1824
|
+
position: "absolute",
|
|
1825
|
+
top: CONTROL_HEIGHT + 8,
|
|
1826
|
+
left: 0,
|
|
1827
|
+
width: CONTROL_WIDTH,
|
|
1828
|
+
padding: 8,
|
|
1829
|
+
gap: 8,
|
|
1830
|
+
borderRadius: 12,
|
|
1831
|
+
backgroundColor: colors.grey700,
|
|
1832
|
+
...reactNative.Platform.select({
|
|
1833
|
+
web: { boxShadow: `0 8px 24px ${colors.black}73` },
|
|
1834
|
+
default: { elevation: 8 }
|
|
1835
|
+
})
|
|
1836
|
+
},
|
|
1837
|
+
item: {
|
|
1838
|
+
height: CONTROL_HEIGHT,
|
|
1839
|
+
alignItems: "center",
|
|
1840
|
+
justifyContent: "center",
|
|
1841
|
+
paddingVertical: 8,
|
|
1842
|
+
paddingHorizontal: 12,
|
|
1843
|
+
borderRadius: 8
|
|
1844
|
+
},
|
|
1845
|
+
itemHovered: {
|
|
1846
|
+
backgroundColor: colors.whiteAlpha5
|
|
1847
|
+
},
|
|
1848
|
+
itemSelected: {
|
|
1849
|
+
backgroundColor: colors.primaryMuted
|
|
1850
|
+
},
|
|
1851
|
+
itemLabel: {
|
|
1852
|
+
...languageSwitcherTypography,
|
|
1853
|
+
...reactNative.Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),
|
|
1854
|
+
color: colors.white
|
|
1855
|
+
},
|
|
1856
|
+
itemLabelSelected: {
|
|
1857
|
+
color: colors.primary
|
|
1858
|
+
}
|
|
1859
|
+
});
|
|
1860
|
+
var ICON_SIZE5 = 28;
|
|
1540
1861
|
var StatCard = react.forwardRef(function StatCard2({ label, icon: Icon2, style, className, accessibilityLabel, ...rest }, forwardedRef) {
|
|
1541
1862
|
const containerRef = react.useRef(null);
|
|
1542
1863
|
const resolvedClassName = className?.trim() || void 0;
|
|
@@ -1547,17 +1868,17 @@ var StatCard = react.forwardRef(function StatCard2({ label, icon: Icon2, style,
|
|
|
1547
1868
|
{
|
|
1548
1869
|
...rest,
|
|
1549
1870
|
ref: setContainerRef,
|
|
1550
|
-
style: [
|
|
1871
|
+
style: [styles7.base, style],
|
|
1551
1872
|
accessibilityRole: "text",
|
|
1552
1873
|
accessibilityLabel: accessibilityLabel ?? label,
|
|
1553
1874
|
children: [
|
|
1554
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { size:
|
|
1555
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
1875
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { size: ICON_SIZE5, color: colors.white }),
|
|
1876
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles7.label, children: label })
|
|
1556
1877
|
]
|
|
1557
1878
|
}
|
|
1558
1879
|
);
|
|
1559
1880
|
});
|
|
1560
|
-
var
|
|
1881
|
+
var styles7 = reactNative.StyleSheet.create({
|
|
1561
1882
|
base: {
|
|
1562
1883
|
width: 204.5,
|
|
1563
1884
|
minHeight: 114,
|
|
@@ -1643,7 +1964,7 @@ var Button = react.forwardRef(
|
|
|
1643
1964
|
useApplyWebClassName(textRef, textClassName);
|
|
1644
1965
|
const iconNode = customIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ArrowRightIcon, { size: metrics.iconSize, color: preset.iconColor });
|
|
1645
1966
|
const containerStyle = [
|
|
1646
|
-
|
|
1967
|
+
styles8.base,
|
|
1647
1968
|
{
|
|
1648
1969
|
minHeight: metrics.minHeight,
|
|
1649
1970
|
borderRadius: metrics.borderRadius,
|
|
@@ -1654,15 +1975,15 @@ var Button = react.forwardRef(
|
|
|
1654
1975
|
paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,
|
|
1655
1976
|
gap: hasIcon ? metrics.gap : 0
|
|
1656
1977
|
},
|
|
1657
|
-
disabled &&
|
|
1978
|
+
disabled && styles8.disabled,
|
|
1658
1979
|
style
|
|
1659
1980
|
];
|
|
1660
1981
|
const labelStyle = [
|
|
1661
|
-
|
|
1982
|
+
styles8.label,
|
|
1662
1983
|
metrics.text,
|
|
1663
1984
|
{ color: preset.textColor },
|
|
1664
|
-
reactNative.Platform.OS === "android" ?
|
|
1665
|
-
!hasIcon &&
|
|
1985
|
+
reactNative.Platform.OS === "android" ? styles8.labelAndroid : null,
|
|
1986
|
+
!hasIcon && styles8.labelCentered,
|
|
1666
1987
|
textStyle
|
|
1667
1988
|
];
|
|
1668
1989
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1683,7 +2004,7 @@ var Button = react.forwardRef(
|
|
|
1683
2004
|
reactNative.View,
|
|
1684
2005
|
{
|
|
1685
2006
|
style: [
|
|
1686
|
-
|
|
2007
|
+
styles8.iconContainer,
|
|
1687
2008
|
{
|
|
1688
2009
|
width: metrics.iconContainerSize,
|
|
1689
2010
|
height: metrics.iconContainerSize,
|
|
@@ -1699,7 +2020,7 @@ var Button = react.forwardRef(
|
|
|
1699
2020
|
);
|
|
1700
2021
|
}
|
|
1701
2022
|
);
|
|
1702
|
-
var
|
|
2023
|
+
var styles8 = reactNative.StyleSheet.create({
|
|
1703
2024
|
base: {
|
|
1704
2025
|
flexDirection: "row",
|
|
1705
2026
|
alignItems: "center",
|
|
@@ -1777,13 +2098,13 @@ var Checkbox = react.forwardRef(function Checkbox2({
|
|
|
1777
2098
|
accessibilityRole: "checkbox",
|
|
1778
2099
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
1779
2100
|
accessibilityState: { checked: isActive, disabled },
|
|
1780
|
-
style: [
|
|
2101
|
+
style: [styles9.root, disabled && styles9.disabled, style],
|
|
1781
2102
|
children: [
|
|
1782
2103
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
2104
|
reactNative.View,
|
|
1784
2105
|
{
|
|
1785
2106
|
style: [
|
|
1786
|
-
|
|
2107
|
+
styles9.box,
|
|
1787
2108
|
{
|
|
1788
2109
|
backgroundColor: chrome.backgroundColor,
|
|
1789
2110
|
borderColor: chrome.borderColor
|
|
@@ -1792,12 +2113,12 @@ var Checkbox = react.forwardRef(function Checkbox2({
|
|
|
1792
2113
|
children: isActive ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { size: CHECK_SIZE, color: colors.primary, strokeWidth: CHECK_STROKE }) : null
|
|
1793
2114
|
}
|
|
1794
2115
|
),
|
|
1795
|
-
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2116
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles9.label, labelStyle], children: labelContent }) : labelContent : null
|
|
1796
2117
|
]
|
|
1797
2118
|
}
|
|
1798
2119
|
);
|
|
1799
2120
|
});
|
|
1800
|
-
var
|
|
2121
|
+
var styles9 = reactNative.StyleSheet.create({
|
|
1801
2122
|
root: {
|
|
1802
2123
|
flexDirection: "row",
|
|
1803
2124
|
alignItems: "center",
|
|
@@ -1895,7 +2216,7 @@ var DEFAULT_WIDTH = 380;
|
|
|
1895
2216
|
var TRIGGER_HEIGHT = 44;
|
|
1896
2217
|
var TRIGGER_RADIUS = 60;
|
|
1897
2218
|
var MENU_RADIUS2 = 20;
|
|
1898
|
-
var
|
|
2219
|
+
var ICON_SIZE6 = 20;
|
|
1899
2220
|
var NAV_ICON_SIZE = 20;
|
|
1900
2221
|
var DAY_CELL_HEIGHT = 44;
|
|
1901
2222
|
var DAY_CIRCLE_SIZE = 44;
|
|
@@ -2047,9 +2368,9 @@ var DatePicker = react.forwardRef(
|
|
|
2047
2368
|
{
|
|
2048
2369
|
...rest,
|
|
2049
2370
|
ref: setRootRef,
|
|
2050
|
-
style: [
|
|
2371
|
+
style: [styles10.root, isOpen && styles10.rootOpen, disabled && styles10.disabled, style],
|
|
2051
2372
|
accessibilityState: { disabled, expanded: isOpen },
|
|
2052
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
2373
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles10.triggerWrap, isOpen && styles10.triggerWrapOpen], children: [
|
|
2053
2374
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2054
2375
|
reactNative.Pressable,
|
|
2055
2376
|
{
|
|
@@ -2060,17 +2381,17 @@ var DatePicker = react.forwardRef(
|
|
|
2060
2381
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
2061
2382
|
accessibilityState: { disabled, expanded: isOpen },
|
|
2062
2383
|
style: [
|
|
2063
|
-
|
|
2384
|
+
styles10.trigger,
|
|
2064
2385
|
{ borderColor: triggerBorderColor, backgroundColor: colors.grey700 }
|
|
2065
2386
|
],
|
|
2066
2387
|
children: [
|
|
2067
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2068
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2388
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles10.triggerText, { color: triggerTextColor }], numberOfLines: 1, children: triggerLabel }),
|
|
2389
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(CalendarOutlineIcon, { size: ICON_SIZE6, color: colors.grey100 }) })
|
|
2069
2390
|
]
|
|
2070
2391
|
}
|
|
2071
2392
|
),
|
|
2072
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2073
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2393
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles10.menu, children: [
|
|
2394
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles10.calendarHeader, children: [
|
|
2074
2395
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2075
2396
|
reactNative.Pressable,
|
|
2076
2397
|
{
|
|
@@ -2078,11 +2399,11 @@ var DatePicker = react.forwardRef(
|
|
|
2078
2399
|
hitSlop: 8,
|
|
2079
2400
|
accessibilityRole: "button",
|
|
2080
2401
|
accessibilityLabel: "Previous month",
|
|
2081
|
-
style:
|
|
2402
|
+
style: styles10.navButton,
|
|
2082
2403
|
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { size: NAV_ICON_SIZE, color: colors.white })
|
|
2083
2404
|
}
|
|
2084
2405
|
),
|
|
2085
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.Text, { style:
|
|
2406
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.Text, { style: styles10.monthHeading, children: [
|
|
2086
2407
|
monthNames[visibleMonth.getMonth()],
|
|
2087
2408
|
" ",
|
|
2088
2409
|
visibleMonth.getFullYear()
|
|
@@ -2094,13 +2415,13 @@ var DatePicker = react.forwardRef(
|
|
|
2094
2415
|
hitSlop: 8,
|
|
2095
2416
|
accessibilityRole: "button",
|
|
2096
2417
|
accessibilityLabel: "Next month",
|
|
2097
|
-
style:
|
|
2098
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2418
|
+
style: styles10.navButton,
|
|
2419
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.navIconMirror, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { size: NAV_ICON_SIZE, color: colors.white }) })
|
|
2099
2420
|
}
|
|
2100
2421
|
)
|
|
2101
2422
|
] }),
|
|
2102
2423
|
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { children: [
|
|
2103
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2424
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.weekdayRow, children: weekdayLabels.map((weekdayLabel, index) => /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.dayCellWrap, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles10.weekdayText, children: weekdayLabel }) }, `${weekdayLabel}-${index}`)) }),
|
|
2104
2425
|
weeks.map((week, weekIndex) => {
|
|
2105
2426
|
let rangeHighlightStyle = null;
|
|
2106
2427
|
if (isRange && rangeValue.start && rangeValue.end) {
|
|
@@ -2137,13 +2458,13 @@ var DatePicker = react.forwardRef(
|
|
|
2137
2458
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2138
2459
|
reactNative.View,
|
|
2139
2460
|
{
|
|
2140
|
-
style: [
|
|
2461
|
+
style: [styles10.weekRow, weekIndex > 0 && styles10.weekRowSpaced],
|
|
2141
2462
|
children: [
|
|
2142
2463
|
rangeHighlightStyle ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2143
2464
|
reactNative.View,
|
|
2144
2465
|
{
|
|
2145
2466
|
pointerEvents: "none",
|
|
2146
|
-
style: [
|
|
2467
|
+
style: [styles10.rangeHighlight, rangeHighlightStyle]
|
|
2147
2468
|
}
|
|
2148
2469
|
) : null,
|
|
2149
2470
|
week.map((day, dayIndex) => {
|
|
@@ -2166,7 +2487,7 @@ var DatePicker = react.forwardRef(
|
|
|
2166
2487
|
onHoverOut: () => setHoveredDayKey((current) => current === dayKey ? null : current),
|
|
2167
2488
|
onPressIn: () => setHoveredDayKey(dayKey),
|
|
2168
2489
|
onPressOut: () => setHoveredDayKey((current) => current === dayKey ? null : current),
|
|
2169
|
-
style:
|
|
2490
|
+
style: styles10.dayCellWrap,
|
|
2170
2491
|
accessibilityRole: "button",
|
|
2171
2492
|
accessibilityLabel: formatValue(day),
|
|
2172
2493
|
accessibilityState: {
|
|
@@ -2178,14 +2499,14 @@ var DatePicker = react.forwardRef(
|
|
|
2178
2499
|
reactNative.View,
|
|
2179
2500
|
{
|
|
2180
2501
|
style: [
|
|
2181
|
-
|
|
2182
|
-
isSelectedEndpoint &&
|
|
2183
|
-
isHovered &&
|
|
2502
|
+
styles10.dayCircle,
|
|
2503
|
+
isSelectedEndpoint && styles10.dayCircleSelected,
|
|
2504
|
+
isHovered && styles10.dayCircleHovered
|
|
2184
2505
|
],
|
|
2185
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2506
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles10.dayText, { color: dayTextColor }], children: day.getDate() })
|
|
2186
2507
|
}
|
|
2187
2508
|
),
|
|
2188
|
-
isToday && !isSelectedEndpoint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2509
|
+
isToday && !isSelectedEndpoint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.todayDot }) : null
|
|
2189
2510
|
]
|
|
2190
2511
|
},
|
|
2191
2512
|
dayIndex
|
|
@@ -2203,7 +2524,7 @@ var DatePicker = react.forwardRef(
|
|
|
2203
2524
|
);
|
|
2204
2525
|
}
|
|
2205
2526
|
);
|
|
2206
|
-
var
|
|
2527
|
+
var styles10 = reactNative.StyleSheet.create({
|
|
2207
2528
|
root: {
|
|
2208
2529
|
width: DEFAULT_WIDTH,
|
|
2209
2530
|
gap: 8,
|
|
@@ -2239,8 +2560,8 @@ var styles9 = reactNative.StyleSheet.create({
|
|
|
2239
2560
|
minWidth: 0
|
|
2240
2561
|
},
|
|
2241
2562
|
iconSlot: {
|
|
2242
|
-
width:
|
|
2243
|
-
height:
|
|
2563
|
+
width: ICON_SIZE6,
|
|
2564
|
+
height: ICON_SIZE6,
|
|
2244
2565
|
alignItems: "center",
|
|
2245
2566
|
justifyContent: "center",
|
|
2246
2567
|
flexShrink: 0
|
|
@@ -2463,13 +2784,13 @@ var Input = react.forwardRef(function Input2({
|
|
|
2463
2784
|
const rightIconNode = rightIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ShowIcon, { size: metrics.iconSize, color: chrome.rightIconColor });
|
|
2464
2785
|
useApplyWebClassName(rootRef, className);
|
|
2465
2786
|
useApplyWebClassName(inputRef, inputClassName);
|
|
2466
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [
|
|
2467
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2787
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles11.root, disabled && styles11.disabled, style], children: [
|
|
2788
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles11.label, { color: chrome.labelColor }], children: label }) : null,
|
|
2468
2789
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2469
2790
|
reactNative.View,
|
|
2470
2791
|
{
|
|
2471
2792
|
style: [
|
|
2472
|
-
|
|
2793
|
+
styles11.field,
|
|
2473
2794
|
{
|
|
2474
2795
|
height: metrics.height,
|
|
2475
2796
|
borderRadius: metrics.borderRadius,
|
|
@@ -2484,7 +2805,7 @@ var Input = react.forwardRef(function Input2({
|
|
|
2484
2805
|
fieldStyle
|
|
2485
2806
|
],
|
|
2486
2807
|
children: [
|
|
2487
|
-
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
2808
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles11.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: leftIconNode }) : null,
|
|
2488
2809
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2489
2810
|
reactNative.TextInput,
|
|
2490
2811
|
{
|
|
@@ -2508,11 +2829,11 @@ var Input = react.forwardRef(function Input2({
|
|
|
2508
2829
|
onBlur?.(event);
|
|
2509
2830
|
},
|
|
2510
2831
|
style: [
|
|
2511
|
-
|
|
2832
|
+
styles11.input,
|
|
2512
2833
|
metrics.text,
|
|
2513
2834
|
{ color: chrome.textColor },
|
|
2514
|
-
reactNative.Platform.OS === "web" ?
|
|
2515
|
-
reactNative.Platform.OS === "android" ?
|
|
2835
|
+
reactNative.Platform.OS === "web" ? styles11.inputWeb : null,
|
|
2836
|
+
reactNative.Platform.OS === "android" ? styles11.inputAndroid : null,
|
|
2516
2837
|
inputStyle
|
|
2517
2838
|
],
|
|
2518
2839
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
@@ -2524,20 +2845,20 @@ var Input = react.forwardRef(function Input2({
|
|
|
2524
2845
|
{
|
|
2525
2846
|
onPress: onRightIconPress,
|
|
2526
2847
|
disabled,
|
|
2527
|
-
style: [
|
|
2848
|
+
style: [styles11.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }],
|
|
2528
2849
|
accessibilityRole: "button",
|
|
2529
2850
|
accessibilityLabel: rightIconAccessibilityLabel,
|
|
2530
2851
|
hitSlop: 8,
|
|
2531
2852
|
children: rightIconNode
|
|
2532
2853
|
}
|
|
2533
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
2854
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles11.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: rightIconNode }) : null
|
|
2534
2855
|
]
|
|
2535
2856
|
}
|
|
2536
2857
|
),
|
|
2537
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2858
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles11.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
2538
2859
|
] });
|
|
2539
2860
|
});
|
|
2540
|
-
var
|
|
2861
|
+
var styles11 = reactNative.StyleSheet.create({
|
|
2541
2862
|
root: {
|
|
2542
2863
|
width: DEFAULT_WIDTH2,
|
|
2543
2864
|
gap: 8,
|
|
@@ -2580,7 +2901,7 @@ var TRIGGER_RADIUS2 = 60;
|
|
|
2580
2901
|
var MENU_RADIUS3 = 24;
|
|
2581
2902
|
var MENU_MAX_LIST_HEIGHT = 248;
|
|
2582
2903
|
var ITEM_RADIUS2 = 12;
|
|
2583
|
-
var
|
|
2904
|
+
var ICON_SIZE7 = 20;
|
|
2584
2905
|
var CHIP_GAP = 6;
|
|
2585
2906
|
var FALLBACK_ELLIPSIS_WIDTH = 20;
|
|
2586
2907
|
function itemBackground(state) {
|
|
@@ -2653,25 +2974,25 @@ function MultiValueChips({ options, disabled, onRemove }) {
|
|
|
2653
2974
|
const next = Math.ceil(event.nativeEvent.layout.width);
|
|
2654
2975
|
setEllipsisWidth((current) => current === next ? current : next);
|
|
2655
2976
|
};
|
|
2656
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2657
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { pointerEvents: "none", style:
|
|
2977
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles12.multiValueRoot, children: [
|
|
2978
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { pointerEvents: "none", style: styles12.measureRow, children: [
|
|
2658
2979
|
options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2659
2980
|
reactNative.View,
|
|
2660
2981
|
{
|
|
2661
|
-
style:
|
|
2982
|
+
style: styles12.chip,
|
|
2662
2983
|
onLayout: (event) => handleChipLayout(option.value, event),
|
|
2663
2984
|
children: [
|
|
2664
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
2665
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
2985
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.chipLabel, numberOfLines: 1, children: option.label }),
|
|
2986
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.chipRemove, children: "\xD7" })
|
|
2666
2987
|
]
|
|
2667
2988
|
},
|
|
2668
2989
|
`measure-${option.value}`
|
|
2669
2990
|
)),
|
|
2670
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2991
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.ellipsis, onLayout: handleEllipsisLayout, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.ellipsisText, children: "..." }) })
|
|
2671
2992
|
] }),
|
|
2672
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2673
|
-
visible.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2674
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
2993
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles12.chipsRow, onLayout: handleContainerLayout, children: [
|
|
2994
|
+
visible.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles12.chip, children: [
|
|
2995
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.chipLabel, numberOfLines: 1, children: option.label }),
|
|
2675
2996
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2676
2997
|
reactNative.Pressable,
|
|
2677
2998
|
{
|
|
@@ -2683,11 +3004,11 @@ function MultiValueChips({ options, disabled, onRemove }) {
|
|
|
2683
3004
|
hitSlop: 6,
|
|
2684
3005
|
accessibilityRole: "button",
|
|
2685
3006
|
accessibilityLabel: `Remove ${option.label}`,
|
|
2686
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
3007
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.chipRemove, children: "\xD7" })
|
|
2687
3008
|
}
|
|
2688
3009
|
)
|
|
2689
3010
|
] }, option.value)),
|
|
2690
|
-
hasOverflow ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3011
|
+
hasOverflow ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.ellipsis, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.ellipsisText, children: "..." }) }) : null
|
|
2691
3012
|
] })
|
|
2692
3013
|
] });
|
|
2693
3014
|
}
|
|
@@ -2898,7 +3219,7 @@ var Select = react.forwardRef(
|
|
|
2898
3219
|
const leftIconNode = leftIcon ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2899
3220
|
UserIcon,
|
|
2900
3221
|
{
|
|
2901
|
-
size:
|
|
3222
|
+
size: ICON_SIZE7,
|
|
2902
3223
|
color: error ? colors.red : isOpen ? colors.primary : colors.grey100
|
|
2903
3224
|
}
|
|
2904
3225
|
);
|
|
@@ -2914,11 +3235,11 @@ var Select = react.forwardRef(
|
|
|
2914
3235
|
{
|
|
2915
3236
|
...rest,
|
|
2916
3237
|
ref: setRootRef,
|
|
2917
|
-
style: [
|
|
3238
|
+
style: [styles12.root, isOpen && styles12.rootOpen, disabled && styles12.disabled, style],
|
|
2918
3239
|
accessibilityState: { disabled, expanded: isOpen },
|
|
2919
3240
|
children: [
|
|
2920
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2921
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
3241
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles12.label, { color: labelColor }], children: label }) : null,
|
|
3242
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles12.triggerWrap, isOpen && styles12.triggerWrapOpen], children: [
|
|
2922
3243
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2923
3244
|
reactNative.Pressable,
|
|
2924
3245
|
{
|
|
@@ -2929,29 +3250,29 @@ var Select = react.forwardRef(
|
|
|
2929
3250
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
2930
3251
|
accessibilityState: { disabled, expanded: isOpen },
|
|
2931
3252
|
style: [
|
|
2932
|
-
|
|
3253
|
+
styles12.trigger,
|
|
2933
3254
|
{
|
|
2934
3255
|
borderColor: triggerBorderColor,
|
|
2935
3256
|
backgroundColor: colors.grey700
|
|
2936
3257
|
}
|
|
2937
3258
|
],
|
|
2938
3259
|
children: [
|
|
2939
|
-
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2940
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3260
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.iconSlot, children: leftIconNode }) : null,
|
|
3261
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.triggerContent, children: multiple && hasValue ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2941
3262
|
MultiValueChips,
|
|
2942
3263
|
{
|
|
2943
3264
|
options: selectedOptions,
|
|
2944
3265
|
disabled,
|
|
2945
3266
|
onRemove: handleRemoveChip
|
|
2946
3267
|
}
|
|
2947
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2948
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
3268
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles12.triggerText, { color: triggerTextColor }], numberOfLines: 1, children: multiple ? placeholder : singleLabel }) }),
|
|
3269
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles12.iconSlot, isOpen && styles12.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: ICON_SIZE7, color: isOpen ? colors.primary : colors.grey100 }) })
|
|
2949
3270
|
]
|
|
2950
3271
|
}
|
|
2951
3272
|
),
|
|
2952
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2953
|
-
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2954
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3273
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles12.menu, children: [
|
|
3274
|
+
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles12.searchField, children: [
|
|
3275
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, { size: ICON_SIZE7, color: colors.grey100 }) }),
|
|
2955
3276
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2956
3277
|
reactNative.TextInput,
|
|
2957
3278
|
{
|
|
@@ -2962,9 +3283,9 @@ var Select = react.forwardRef(
|
|
|
2962
3283
|
placeholder: searchPlaceholder,
|
|
2963
3284
|
placeholderTextColor: colors.grey100,
|
|
2964
3285
|
style: [
|
|
2965
|
-
|
|
2966
|
-
reactNative.Platform.OS === "web" ?
|
|
2967
|
-
reactNative.Platform.OS === "android" ?
|
|
3286
|
+
styles12.searchInput,
|
|
3287
|
+
reactNative.Platform.OS === "web" ? styles12.searchInputWeb : null,
|
|
3288
|
+
reactNative.Platform.OS === "android" ? styles12.searchInputAndroid : null
|
|
2968
3289
|
],
|
|
2969
3290
|
accessibilityLabel: searchPlaceholder
|
|
2970
3291
|
}
|
|
@@ -2973,12 +3294,12 @@ var Select = react.forwardRef(
|
|
|
2973
3294
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2974
3295
|
reactNative.ScrollView,
|
|
2975
3296
|
{
|
|
2976
|
-
style:
|
|
2977
|
-
contentContainerStyle:
|
|
3297
|
+
style: styles12.optionList,
|
|
3298
|
+
contentContainerStyle: styles12.optionListContent,
|
|
2978
3299
|
keyboardShouldPersistTaps: "handled",
|
|
2979
3300
|
showsVerticalScrollIndicator: false,
|
|
2980
3301
|
children: [
|
|
2981
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3302
|
+
loading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.statusText, children: "Loading..." }) }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles12.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.statusText, children: emptyText }) }) : null,
|
|
2982
3303
|
!loading && filteredOptions.map((option) => {
|
|
2983
3304
|
const isSelected = selectedValues.includes(option.value);
|
|
2984
3305
|
const isHovered = hoveredValue === option.value;
|
|
@@ -2995,14 +3316,14 @@ var Select = react.forwardRef(
|
|
|
2995
3316
|
accessibilityRole: multiple ? "checkbox" : "button",
|
|
2996
3317
|
accessibilityState: { selected: isSelected, checked: isSelected, disabled },
|
|
2997
3318
|
style: [
|
|
2998
|
-
|
|
3319
|
+
styles12.item,
|
|
2999
3320
|
{
|
|
3000
3321
|
backgroundColor: itemBackground(visualState)
|
|
3001
3322
|
}
|
|
3002
3323
|
],
|
|
3003
3324
|
children: [
|
|
3004
|
-
multiple ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style:
|
|
3005
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
3325
|
+
multiple ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style: styles12.itemCheckbox, children: /* @__PURE__ */ jsxRuntime.jsx(Checkbox, { value: isSelected, variant: "light" }) }) : null,
|
|
3326
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles12.itemLabel, numberOfLines: 1, children: option.label })
|
|
3006
3327
|
]
|
|
3007
3328
|
},
|
|
3008
3329
|
option.value
|
|
@@ -3013,13 +3334,13 @@ var Select = react.forwardRef(
|
|
|
3013
3334
|
)
|
|
3014
3335
|
] }) : null
|
|
3015
3336
|
] }),
|
|
3016
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3337
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles12.hint, { color: hintColor }], children: hint }) : null
|
|
3017
3338
|
]
|
|
3018
3339
|
}
|
|
3019
3340
|
);
|
|
3020
3341
|
}
|
|
3021
3342
|
);
|
|
3022
|
-
var
|
|
3343
|
+
var styles12 = reactNative.StyleSheet.create({
|
|
3023
3344
|
root: {
|
|
3024
3345
|
width: DEFAULT_WIDTH3,
|
|
3025
3346
|
gap: 8,
|
|
@@ -3109,8 +3430,8 @@ var styles11 = reactNative.StyleSheet.create({
|
|
|
3109
3430
|
lineHeight: 16
|
|
3110
3431
|
},
|
|
3111
3432
|
iconSlot: {
|
|
3112
|
-
width:
|
|
3113
|
-
height:
|
|
3433
|
+
width: ICON_SIZE7,
|
|
3434
|
+
height: ICON_SIZE7,
|
|
3114
3435
|
alignItems: "center",
|
|
3115
3436
|
justifyContent: "center",
|
|
3116
3437
|
flexShrink: 0
|
|
@@ -3281,13 +3602,13 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
3281
3602
|
const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? void 0 : label);
|
|
3282
3603
|
useApplyWebClassName(rootRef, className);
|
|
3283
3604
|
useApplyWebClassName(inputRef, inputClassName);
|
|
3284
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [
|
|
3285
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3605
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles13.root, disabled && styles13.disabled, style], children: [
|
|
3606
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles13.label, { color: chrome.labelColor }], children: label }) : null,
|
|
3286
3607
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3287
3608
|
reactNative.View,
|
|
3288
3609
|
{
|
|
3289
3610
|
style: [
|
|
3290
|
-
|
|
3611
|
+
styles13.field,
|
|
3291
3612
|
{
|
|
3292
3613
|
borderColor: chrome.borderColor,
|
|
3293
3614
|
backgroundColor: chrome.backgroundColor
|
|
@@ -3319,11 +3640,11 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
3319
3640
|
onBlur?.(event);
|
|
3320
3641
|
},
|
|
3321
3642
|
style: [
|
|
3322
|
-
|
|
3643
|
+
styles13.input,
|
|
3323
3644
|
textareaTypography.field,
|
|
3324
3645
|
{ color: chrome.textColor },
|
|
3325
|
-
reactNative.Platform.OS === "web" ?
|
|
3326
|
-
reactNative.Platform.OS === "android" ?
|
|
3646
|
+
reactNative.Platform.OS === "web" ? styles13.inputWeb : null,
|
|
3647
|
+
reactNative.Platform.OS === "android" ? styles13.inputAndroid : null,
|
|
3327
3648
|
inputStyle
|
|
3328
3649
|
],
|
|
3329
3650
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
@@ -3332,10 +3653,10 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
3332
3653
|
)
|
|
3333
3654
|
}
|
|
3334
3655
|
),
|
|
3335
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3656
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles13.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
3336
3657
|
] });
|
|
3337
3658
|
});
|
|
3338
|
-
var
|
|
3659
|
+
var styles13 = reactNative.StyleSheet.create({
|
|
3339
3660
|
root: {
|
|
3340
3661
|
width: DEFAULT_WIDTH4,
|
|
3341
3662
|
gap: 8,
|
|
@@ -3435,13 +3756,13 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
3435
3756
|
accessibilityRole: "switch",
|
|
3436
3757
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
3437
3758
|
accessibilityState: { checked: isActive, disabled },
|
|
3438
|
-
style: [
|
|
3759
|
+
style: [styles14.pressable, disabled && styles14.disabled, style],
|
|
3439
3760
|
children: [
|
|
3440
3761
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3441
3762
|
reactNative.Animated.View,
|
|
3442
3763
|
{
|
|
3443
3764
|
style: [
|
|
3444
|
-
|
|
3765
|
+
styles14.track,
|
|
3445
3766
|
{
|
|
3446
3767
|
backgroundColor: trackBackgroundColor
|
|
3447
3768
|
}
|
|
@@ -3450,7 +3771,7 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
3450
3771
|
reactNative.Animated.View,
|
|
3451
3772
|
{
|
|
3452
3773
|
style: [
|
|
3453
|
-
|
|
3774
|
+
styles14.thumb,
|
|
3454
3775
|
{
|
|
3455
3776
|
transform: [{ translateX: thumbTranslateX }]
|
|
3456
3777
|
}
|
|
@@ -3459,12 +3780,12 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
3459
3780
|
)
|
|
3460
3781
|
}
|
|
3461
3782
|
),
|
|
3462
|
-
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3783
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles14.label, labelStyle], children: labelContent }) : labelContent : null
|
|
3463
3784
|
]
|
|
3464
3785
|
}
|
|
3465
3786
|
);
|
|
3466
3787
|
});
|
|
3467
|
-
var
|
|
3788
|
+
var styles14 = reactNative.StyleSheet.create({
|
|
3468
3789
|
pressable: {
|
|
3469
3790
|
flexDirection: "row",
|
|
3470
3791
|
alignItems: "center",
|
|
@@ -3492,6 +3813,272 @@ var styles13 = reactNative.StyleSheet.create({
|
|
|
3492
3813
|
color: colors.white
|
|
3493
3814
|
}
|
|
3494
3815
|
});
|
|
3816
|
+
var STAR_COUNT = 5;
|
|
3817
|
+
var BASE_ITEM_SIZE = 16;
|
|
3818
|
+
var ICON_WIDTH_RATIO = 12.57 / BASE_ITEM_SIZE;
|
|
3819
|
+
var ICON_HEIGHT_RATIO = 11.98 / BASE_ITEM_SIZE;
|
|
3820
|
+
var STAR_GAP_RATIO = 2 / BASE_ITEM_SIZE;
|
|
3821
|
+
function clamp2(value) {
|
|
3822
|
+
return Math.max(0, Math.min(value, STAR_COUNT));
|
|
3823
|
+
}
|
|
3824
|
+
var RatingInput = react.forwardRef(
|
|
3825
|
+
function RatingInput2({
|
|
3826
|
+
value,
|
|
3827
|
+
defaultValue = 0,
|
|
3828
|
+
onValueChange,
|
|
3829
|
+
showValue = true,
|
|
3830
|
+
precision = 1,
|
|
3831
|
+
size = 20,
|
|
3832
|
+
starGap,
|
|
3833
|
+
readOnly = false,
|
|
3834
|
+
disabled = false,
|
|
3835
|
+
style,
|
|
3836
|
+
valueStyle,
|
|
3837
|
+
className,
|
|
3838
|
+
hitSlop = 6,
|
|
3839
|
+
accessibilityLabel,
|
|
3840
|
+
...rest
|
|
3841
|
+
}, forwardedRef) {
|
|
3842
|
+
const containerRef = react.useRef(null);
|
|
3843
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
3844
|
+
const isControlled = value !== void 0;
|
|
3845
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(() => clamp2(defaultValue));
|
|
3846
|
+
const selectedValue = clamp2(isControlled ? value : uncontrolledValue);
|
|
3847
|
+
const selectedStarCount = Math.round(selectedValue);
|
|
3848
|
+
const iconWidth = size * ICON_WIDTH_RATIO;
|
|
3849
|
+
const iconHeight = size * ICON_HEIGHT_RATIO;
|
|
3850
|
+
const resolvedStarGap = starGap ?? size * STAR_GAP_RATIO;
|
|
3851
|
+
const resolvedAccessibilityLabel = accessibilityLabel ?? (readOnly ? `${selectedValue} out of ${STAR_COUNT} stars` : "Rating");
|
|
3852
|
+
useApplyWebClassName(containerRef, className);
|
|
3853
|
+
const selectValue = (nextValue) => {
|
|
3854
|
+
if (disabled || nextValue === selectedValue) return;
|
|
3855
|
+
if (!isControlled) setUncontrolledValue(nextValue);
|
|
3856
|
+
onValueChange?.(nextValue);
|
|
3857
|
+
};
|
|
3858
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3859
|
+
reactNative.View,
|
|
3860
|
+
{
|
|
3861
|
+
...rest,
|
|
3862
|
+
ref: setContainerRef,
|
|
3863
|
+
style: [styles15.root, disabled && styles15.disabled, style],
|
|
3864
|
+
children: [
|
|
3865
|
+
showValue ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: [styles15.value, valueStyle], children: selectedValue.toFixed(precision) }) : null,
|
|
3866
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3867
|
+
reactNative.View,
|
|
3868
|
+
{
|
|
3869
|
+
accessibilityRole: readOnly ? "image" : "radiogroup",
|
|
3870
|
+
accessibilityLabel: resolvedAccessibilityLabel,
|
|
3871
|
+
accessibilityState: { disabled },
|
|
3872
|
+
style: [styles15.stars, { gap: resolvedStarGap }],
|
|
3873
|
+
children: Array.from({ length: STAR_COUNT }, (_, index) => {
|
|
3874
|
+
const starValue = index + 1;
|
|
3875
|
+
const isSelected = starValue <= selectedStarCount;
|
|
3876
|
+
const icon = isSelected ? /* @__PURE__ */ jsxRuntime.jsx(StarFilledIcon, { size: iconWidth, height: iconHeight }) : /* @__PURE__ */ jsxRuntime.jsx(StarIcon, { size: iconWidth, height: iconHeight });
|
|
3877
|
+
const itemStyle = [styles15.starItem, { width: size, height: size }];
|
|
3878
|
+
if (readOnly) {
|
|
3879
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: itemStyle, children: icon }, starValue);
|
|
3880
|
+
}
|
|
3881
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3882
|
+
reactNative.Pressable,
|
|
3883
|
+
{
|
|
3884
|
+
disabled,
|
|
3885
|
+
hitSlop,
|
|
3886
|
+
onPress: () => selectValue(starValue),
|
|
3887
|
+
accessibilityRole: "radio",
|
|
3888
|
+
accessibilityLabel: `${starValue} star${starValue === 1 ? "" : "s"}`,
|
|
3889
|
+
accessibilityState: { checked: isSelected, disabled },
|
|
3890
|
+
style: itemStyle,
|
|
3891
|
+
children: icon
|
|
3892
|
+
},
|
|
3893
|
+
starValue
|
|
3894
|
+
);
|
|
3895
|
+
})
|
|
3896
|
+
}
|
|
3897
|
+
)
|
|
3898
|
+
]
|
|
3899
|
+
}
|
|
3900
|
+
);
|
|
3901
|
+
}
|
|
3902
|
+
);
|
|
3903
|
+
var styles15 = reactNative.StyleSheet.create({
|
|
3904
|
+
root: {
|
|
3905
|
+
flexDirection: "row",
|
|
3906
|
+
alignItems: "center",
|
|
3907
|
+
flexWrap: "nowrap",
|
|
3908
|
+
alignSelf: "flex-start",
|
|
3909
|
+
gap: 16
|
|
3910
|
+
},
|
|
3911
|
+
stars: {
|
|
3912
|
+
flexDirection: "row",
|
|
3913
|
+
alignItems: "center"
|
|
3914
|
+
},
|
|
3915
|
+
starItem: {
|
|
3916
|
+
alignItems: "center",
|
|
3917
|
+
justifyContent: "center"
|
|
3918
|
+
},
|
|
3919
|
+
value: {
|
|
3920
|
+
...ratingTypography,
|
|
3921
|
+
color: colors.white
|
|
3922
|
+
},
|
|
3923
|
+
disabled: {
|
|
3924
|
+
opacity: 0.5
|
|
3925
|
+
}
|
|
3926
|
+
});
|
|
3927
|
+
var CARD_WIDTH = 370;
|
|
3928
|
+
var CARD_MIN_HEIGHT = 173;
|
|
3929
|
+
var AVATAR_SIZE = 44;
|
|
3930
|
+
var CommentCard = react.forwardRef(
|
|
3931
|
+
function CommentCard2({
|
|
3932
|
+
userName,
|
|
3933
|
+
date,
|
|
3934
|
+
commentText,
|
|
3935
|
+
rating,
|
|
3936
|
+
imageUrl,
|
|
3937
|
+
maxCommentLines = 3,
|
|
3938
|
+
maxCommentLength = 111,
|
|
3939
|
+
readMoreLabel = "\u0534\u056B\u057F\u0565\u056C \u0561\u057E\u0565\u056C\u056B\u0576",
|
|
3940
|
+
readLessLabel = "\u0553\u0561\u056F\u0565\u056C",
|
|
3941
|
+
onExpandedChange,
|
|
3942
|
+
style,
|
|
3943
|
+
commentStyle,
|
|
3944
|
+
className,
|
|
3945
|
+
...rest
|
|
3946
|
+
}, forwardedRef) {
|
|
3947
|
+
const containerRef = react.useRef(null);
|
|
3948
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
3949
|
+
const [imageFailed, setImageFailed] = react.useState(false);
|
|
3950
|
+
const [expanded, setExpanded] = react.useState(false);
|
|
3951
|
+
const [actionHovered, setActionHovered] = react.useState(false);
|
|
3952
|
+
const hasImage = Boolean(imageUrl) && !imageFailed;
|
|
3953
|
+
const shouldShowAction = Array.from(commentText).length >= maxCommentLength;
|
|
3954
|
+
useApplyWebClassName(containerRef, className);
|
|
3955
|
+
react.useEffect(() => {
|
|
3956
|
+
setImageFailed(false);
|
|
3957
|
+
}, [imageUrl]);
|
|
3958
|
+
react.useEffect(() => {
|
|
3959
|
+
setExpanded(false);
|
|
3960
|
+
setActionHovered(false);
|
|
3961
|
+
}, [commentText, maxCommentLength, maxCommentLines]);
|
|
3962
|
+
const toggleExpanded = () => {
|
|
3963
|
+
const next = !expanded;
|
|
3964
|
+
setExpanded(next);
|
|
3965
|
+
onExpandedChange?.(next);
|
|
3966
|
+
};
|
|
3967
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ...rest, ref: setContainerRef, style: [styles16.root, style], children: [
|
|
3968
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles16.header, children: [
|
|
3969
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles16.avatar, children: hasImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3970
|
+
reactNative.Image,
|
|
3971
|
+
{
|
|
3972
|
+
source: { uri: imageUrl ?? void 0 },
|
|
3973
|
+
style: styles16.avatarImage,
|
|
3974
|
+
onError: () => setImageFailed(true)
|
|
3975
|
+
}
|
|
3976
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { size: 20, color: colors.primary }) }),
|
|
3977
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles16.identity, children: [
|
|
3978
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles16.name, children: userName }),
|
|
3979
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles16.date, children: date })
|
|
3980
|
+
] }),
|
|
3981
|
+
/* @__PURE__ */ jsxRuntime.jsx(RatingInput, { value: rating, readOnly: true, showValue: false, size: 16 })
|
|
3982
|
+
] }),
|
|
3983
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3984
|
+
reactNative.Text,
|
|
3985
|
+
{
|
|
3986
|
+
numberOfLines: expanded ? void 0 : maxCommentLines,
|
|
3987
|
+
style: [styles16.comment, commentStyle],
|
|
3988
|
+
children: commentText
|
|
3989
|
+
}
|
|
3990
|
+
),
|
|
3991
|
+
shouldShowAction ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3992
|
+
reactNative.Pressable,
|
|
3993
|
+
{
|
|
3994
|
+
onPress: toggleExpanded,
|
|
3995
|
+
accessibilityRole: "button",
|
|
3996
|
+
accessibilityState: { expanded },
|
|
3997
|
+
hitSlop: 6,
|
|
3998
|
+
onHoverIn: () => setActionHovered(true),
|
|
3999
|
+
onHoverOut: () => setActionHovered(false),
|
|
4000
|
+
style: styles16.action,
|
|
4001
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4002
|
+
reactNative.Text,
|
|
4003
|
+
{
|
|
4004
|
+
style: [
|
|
4005
|
+
styles16.actionText,
|
|
4006
|
+
expanded && styles16.closeActionText,
|
|
4007
|
+
actionHovered && (expanded ? styles16.closeActionTextHovered : styles16.openActionTextHovered)
|
|
4008
|
+
],
|
|
4009
|
+
children: expanded ? readLessLabel : readMoreLabel
|
|
4010
|
+
}
|
|
4011
|
+
)
|
|
4012
|
+
}
|
|
4013
|
+
) : null
|
|
4014
|
+
] });
|
|
4015
|
+
}
|
|
4016
|
+
);
|
|
4017
|
+
var styles16 = reactNative.StyleSheet.create({
|
|
4018
|
+
root: {
|
|
4019
|
+
width: CARD_WIDTH,
|
|
4020
|
+
minHeight: CARD_MIN_HEIGHT,
|
|
4021
|
+
padding: 16,
|
|
4022
|
+
gap: 12,
|
|
4023
|
+
borderRadius: 12,
|
|
4024
|
+
backgroundColor: colors.grey750
|
|
4025
|
+
},
|
|
4026
|
+
header: {
|
|
4027
|
+
flexDirection: "row",
|
|
4028
|
+
alignItems: "center",
|
|
4029
|
+
gap: 8
|
|
4030
|
+
},
|
|
4031
|
+
avatar: {
|
|
4032
|
+
width: AVATAR_SIZE,
|
|
4033
|
+
height: AVATAR_SIZE,
|
|
4034
|
+
flexShrink: 0,
|
|
4035
|
+
alignItems: "center",
|
|
4036
|
+
justifyContent: "center",
|
|
4037
|
+
overflow: "hidden",
|
|
4038
|
+
borderRadius: AVATAR_SIZE / 2,
|
|
4039
|
+
backgroundColor: colors.grey600
|
|
4040
|
+
},
|
|
4041
|
+
avatarImage: {
|
|
4042
|
+
width: AVATAR_SIZE,
|
|
4043
|
+
height: AVATAR_SIZE
|
|
4044
|
+
},
|
|
4045
|
+
identity: {
|
|
4046
|
+
minWidth: 0,
|
|
4047
|
+
flex: 1,
|
|
4048
|
+
gap: 4
|
|
4049
|
+
},
|
|
4050
|
+
name: {
|
|
4051
|
+
...commentCardTypography.name,
|
|
4052
|
+
color: colors.white
|
|
4053
|
+
},
|
|
4054
|
+
date: {
|
|
4055
|
+
...commentCardTypography.date,
|
|
4056
|
+
color: colors.grey0
|
|
4057
|
+
},
|
|
4058
|
+
comment: {
|
|
4059
|
+
...commentCardTypography.comment,
|
|
4060
|
+
color: colors.white
|
|
4061
|
+
},
|
|
4062
|
+
action: {
|
|
4063
|
+
alignSelf: "flex-start",
|
|
4064
|
+
marginTop: "auto",
|
|
4065
|
+
minHeight: 16,
|
|
4066
|
+
justifyContent: "center"
|
|
4067
|
+
},
|
|
4068
|
+
actionText: {
|
|
4069
|
+
...commentCardTypography.action,
|
|
4070
|
+
color: colors.white
|
|
4071
|
+
},
|
|
4072
|
+
closeActionText: {
|
|
4073
|
+
color: colors.primary
|
|
4074
|
+
},
|
|
4075
|
+
openActionTextHovered: {
|
|
4076
|
+
color: colors.primary
|
|
4077
|
+
},
|
|
4078
|
+
closeActionTextHovered: {
|
|
4079
|
+
color: colors.white
|
|
4080
|
+
}
|
|
4081
|
+
});
|
|
3495
4082
|
|
|
3496
4083
|
exports.ArrowRightIcon = ArrowRightIcon;
|
|
3497
4084
|
exports.Avatar = Avatar;
|
|
@@ -3509,9 +4096,11 @@ exports.Checkbox = Checkbox;
|
|
|
3509
4096
|
exports.ChevronDownIcon = ChevronDownIcon;
|
|
3510
4097
|
exports.ChevronLeftIcon = ChevronLeftIcon;
|
|
3511
4098
|
exports.ClockIcon = ClockIcon;
|
|
4099
|
+
exports.CommentCard = CommentCard;
|
|
3512
4100
|
exports.Counter = Counter;
|
|
3513
4101
|
exports.DatePicker = DatePicker;
|
|
3514
4102
|
exports.FacebookIcon = FacebookIcon;
|
|
4103
|
+
exports.GlobeIcon = GlobeIcon;
|
|
3515
4104
|
exports.HeartIcon = HeartIcon;
|
|
3516
4105
|
exports.HelpCircleIcon = HelpCircleIcon;
|
|
3517
4106
|
exports.HomeIcon = HomeIcon;
|
|
@@ -3519,6 +4108,7 @@ exports.Icon = Icon;
|
|
|
3519
4108
|
exports.Input = Input;
|
|
3520
4109
|
exports.InstagramIcon = InstagramIcon;
|
|
3521
4110
|
exports.KeyIcon = KeyIcon;
|
|
4111
|
+
exports.LanguageSwitcher = LanguageSwitcher;
|
|
3522
4112
|
exports.LayoutGridIcon = LayoutGridIcon;
|
|
3523
4113
|
exports.LinkedInIcon = LinkedInIcon;
|
|
3524
4114
|
exports.LogOutIcon = LogOutIcon;
|
|
@@ -3528,12 +4118,15 @@ exports.MinusIcon = MinusIcon;
|
|
|
3528
4118
|
exports.NavigateIcon = NavigateIcon;
|
|
3529
4119
|
exports.PhoneIcon = PhoneIcon;
|
|
3530
4120
|
exports.PlusIcon = PlusIcon;
|
|
4121
|
+
exports.RatingInput = RatingInput;
|
|
3531
4122
|
exports.SearchIcon = SearchIcon;
|
|
3532
4123
|
exports.SegmentedToggle = SegmentedToggle;
|
|
3533
4124
|
exports.Select = Select;
|
|
3534
4125
|
exports.SettingsIcon = SettingsIcon;
|
|
3535
4126
|
exports.ShowIcon = ShowIcon;
|
|
3536
4127
|
exports.SidebarIcon = SidebarIcon;
|
|
4128
|
+
exports.StarFilledIcon = StarFilledIcon;
|
|
4129
|
+
exports.StarIcon = StarIcon;
|
|
3537
4130
|
exports.StatCard = StatCard;
|
|
3538
4131
|
exports.Textarea = Textarea;
|
|
3539
4132
|
exports.Toggle = Toggle;
|
|
@@ -3544,8 +4137,10 @@ exports.avatarTypography = avatarTypography;
|
|
|
3544
4137
|
exports.badgeTypography = badgeTypography;
|
|
3545
4138
|
exports.buttonTypography = buttonTypography;
|
|
3546
4139
|
exports.colors = colors;
|
|
4140
|
+
exports.commentCardTypography = commentCardTypography;
|
|
3547
4141
|
exports.counterTypography = counterTypography;
|
|
3548
4142
|
exports.datePickerTypography = datePickerTypography;
|
|
4143
|
+
exports.defaultLanguageOptions = defaultLanguageOptions;
|
|
3549
4144
|
exports.fonts = fonts;
|
|
3550
4145
|
exports.getIconsByGroup = getIconsByGroup;
|
|
3551
4146
|
exports.grey = grey;
|
|
@@ -3554,6 +4149,8 @@ exports.iconGroups = iconGroups;
|
|
|
3554
4149
|
exports.iconNames = iconNames;
|
|
3555
4150
|
exports.icons = icons;
|
|
3556
4151
|
exports.inputTypography = inputTypography;
|
|
4152
|
+
exports.languageSwitcherTypography = languageSwitcherTypography;
|
|
4153
|
+
exports.ratingTypography = ratingTypography;
|
|
3557
4154
|
exports.segmentedToggleTypography = segmentedToggleTypography;
|
|
3558
4155
|
exports.selectTypography = selectTypography;
|
|
3559
4156
|
exports.statCardTypography = statCardTypography;
|