@sincpro/mobile-ui 0.7.2 → 1.1.0
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 +575 -230
- package/dist/Actions/Actions.Button.d.ts +98 -93
- package/dist/Actions/Actions.Button.js +58 -52
- package/dist/Actions/Actions.FAB.d.ts +3 -1
- package/dist/Actions/Actions.FAB.js +12 -8
- package/dist/Actions/Actions.FilterButton.d.ts +10 -2
- package/dist/Actions/Actions.FilterButton.js +23 -8
- package/dist/Actions/Actions.IconButton.d.ts +36 -33
- package/dist/Actions/Actions.IconButton.js +10 -6
- package/dist/Actions/index.d.ts +12 -12
- package/dist/Actions/index.js +6 -6
- package/dist/Dialog/BottomSheet/BottomSheet.Root.js +1 -1
- package/dist/Dialog/BottomSheet/index.d.ts +1 -1
- package/dist/Dialog/BottomSheet/index.js +1 -1
- package/dist/Dialog/Confirmation.context.js +3 -3
- package/dist/Dialog/Dialog.ActionSheet.d.ts +2 -1
- package/dist/Dialog/Dialog.ActionSheet.js +19 -9
- package/dist/Dialog/Dialog.Confirmation.js +7 -7
- package/dist/Dialog/Dialog.EditValue.js +4 -4
- package/dist/Dialog/Dialog.NativeSheet.d.ts +10 -0
- package/dist/Dialog/Dialog.NativeSheet.js +21 -0
- package/dist/Dialog/Dialog.Sheet.d.ts +5 -1
- package/dist/Dialog/Dialog.Sheet.js +19 -11
- package/dist/Dialog/index.d.ts +5 -5
- package/dist/Dialog/index.js +5 -5
- package/dist/Display/Display.Accordion.js +5 -5
- package/dist/Display/Display.Avatar.d.ts +30 -30
- package/dist/Display/Display.Avatar.js +2 -2
- package/dist/Display/Display.AvatarGroup.js +3 -3
- package/dist/Display/Display.Badge.d.ts +3 -3
- package/dist/Display/Display.Badge.js +1 -1
- package/dist/Display/Display.Card.d.ts +15 -15
- package/dist/Display/Display.Card.js +4 -4
- package/dist/Display/Display.Carousel.js +2 -2
- package/dist/Display/Display.Chip.d.ts +3 -3
- package/dist/Display/Display.Chip.js +12 -12
- package/dist/Display/Display.CircleButton.d.ts +1 -1
- package/dist/Display/Display.CircleButton.js +3 -3
- package/dist/Display/Display.CopyableText.d.ts +9 -2
- package/dist/Display/Display.CopyableText.js +76 -8
- package/dist/Display/Display.CountRecords.js +2 -2
- package/dist/Display/Display.DataTable.js +2 -2
- package/dist/Display/Display.Date.d.ts +1 -1
- package/dist/Display/Display.Date.js +5 -5
- package/dist/Display/Display.Divider.d.ts +24 -24
- package/dist/Display/Display.Divider.js +1 -1
- package/dist/Display/Display.GradientSurface.d.ts +58 -39
- package/dist/Display/Display.GradientSurface.js +31 -15
- package/dist/Display/Display.Icon.d.ts +1 -1
- package/dist/Display/Display.Icon.js +2 -1
- package/dist/Display/Display.IconBadge.js +3 -3
- package/dist/Display/Display.Image.js +4 -4
- package/dist/Display/Display.KeyValue.d.ts +11 -4
- package/dist/Display/Display.KeyValue.js +8 -6
- package/dist/Display/Display.ListGroup.d.ts +23 -0
- package/dist/Display/Display.ListGroup.js +17 -0
- package/dist/Display/Display.ListItem.d.ts +16 -2
- package/dist/Display/Display.ListItem.js +29 -12
- package/dist/Display/Display.Logo.d.ts +3 -3
- package/dist/Display/Display.Logo.js +2 -2
- package/dist/Display/Display.MediaCard.js +4 -4
- package/dist/Display/Display.MediaEmbed.js +7 -7
- package/dist/Display/Display.MenuButton.d.ts +4 -4
- package/dist/Display/Display.MenuButton.js +6 -6
- package/dist/Display/Display.MenuCard.d.ts +1 -1
- package/dist/Display/Display.MenuCard.js +3 -3
- package/dist/Display/Display.MenuGrid.d.ts +1 -1
- package/dist/Display/Display.MenuGrid.js +1 -1
- package/dist/Display/Display.Monetary.d.ts +1 -1
- package/dist/Display/Display.Monetary.js +2 -2
- package/dist/Display/Display.Pattern.d.ts +33 -12
- package/dist/Display/Display.Pattern.js +60 -14
- package/dist/Display/Display.PriceTag.js +2 -2
- package/dist/Display/Display.ProductCard.js +7 -7
- package/dist/Display/Display.Rating.js +3 -3
- package/dist/Display/Display.SearchHistory.js +6 -6
- package/dist/Display/Display.SectionHeader.d.ts +11 -1
- package/dist/Display/Display.SectionHeader.js +14 -5
- package/dist/Display/Display.Stat.js +2 -2
- package/dist/Display/Display.StatCard.js +4 -4
- package/dist/Display/Display.StatusDot.js +3 -3
- package/dist/Display/Display.Story.js +3 -3
- package/dist/Display/Display.StoryTray.js +5 -5
- package/dist/Display/Display.StoryViewer.js +4 -4
- package/dist/Display/Display.SwipeableRow.d.ts +3 -1
- package/dist/Display/Display.SwipeableRow.js +7 -7
- package/dist/Display/Display.Tag.js +2 -2
- package/dist/Display/Display.Timeline.js +4 -4
- package/dist/Display/Display.Tooltip.js +3 -3
- package/dist/Display/index.d.ts +49 -45
- package/dist/Display/index.js +44 -42
- package/dist/Feedback/ErrorBoundary.d.ts +1 -1
- package/dist/Feedback/ErrorBoundary.js +1 -1
- package/dist/Feedback/Feedback.Banner.d.ts +3 -3
- package/dist/Feedback/Feedback.Banner.js +6 -6
- package/dist/Feedback/Feedback.DomainSplashScreen.js +5 -4
- package/dist/Feedback/Feedback.Empty.js +3 -3
- package/dist/Feedback/Feedback.EmptyState.d.ts +2 -1
- package/dist/Feedback/Feedback.EmptyState.js +7 -7
- package/dist/Feedback/Feedback.Error.d.ts +3 -1
- package/dist/Feedback/Feedback.Error.js +7 -6
- package/dist/Feedback/Feedback.Loading.d.ts +1 -1
- package/dist/Feedback/Feedback.Loading.js +2 -2
- package/dist/Feedback/Feedback.PermissionCard.js +5 -5
- package/dist/Feedback/Feedback.Progress.js +2 -2
- package/dist/Feedback/Feedback.ProgressCircle.js +1 -1
- package/dist/Feedback/Feedback.Skeleton.js +2 -2
- package/dist/Feedback/Feedback.Spinner.js +3 -3
- package/dist/Feedback/Feedback.Splash.d.ts +1 -1
- package/dist/Feedback/Feedback.Splash.js +7 -6
- package/dist/Feedback/Toast.context.js +7 -7
- package/dist/Feedback/index.d.ts +13 -13
- package/dist/Feedback/index.js +13 -13
- package/dist/Form/Form.Button.d.ts +2 -2
- package/dist/Form/Form.Button.js +1 -1
- package/dist/Form/Form.Checkbox.d.ts +4 -1
- package/dist/Form/Form.Checkbox.js +5 -5
- package/dist/Form/Form.ControlledCheckbox.js +1 -1
- package/dist/Form/Form.ControlledInput.js +1 -1
- package/dist/Form/Form.ControlledMonetaryInput.js +1 -1
- package/dist/Form/Form.ControlledRadioButton.js +1 -1
- package/dist/Form/Form.DatePicker.d.ts +2 -1
- package/dist/Form/Form.DatePicker.js +8 -7
- package/dist/Form/Form.Dropdown.js +7 -7
- package/dist/Form/Form.FAB.d.ts +2 -2
- package/dist/Form/Form.FAB.js +1 -1
- package/dist/Form/Form.FilterButton.d.ts +2 -2
- package/dist/Form/Form.FilterButton.js +1 -1
- package/dist/Form/Form.FractionalQuantityInput.js +4 -4
- package/dist/Form/Form.IconButton.d.ts +2 -2
- package/dist/Form/Form.IconButton.js +1 -1
- package/dist/Form/Form.Input.d.ts +5 -3
- package/dist/Form/Form.Input.js +5 -5
- package/dist/Form/Form.InputField.d.ts +1 -1
- package/dist/Form/Form.InputField.js +3 -3
- package/dist/Form/Form.KeyboardForm.d.ts +11 -0
- package/dist/Form/Form.KeyboardForm.js +9 -0
- package/dist/Form/Form.KeyboardToolbar.d.ts +21 -0
- package/dist/Form/Form.KeyboardToolbar.js +70 -0
- package/dist/Form/Form.MonetaryInput.js +5 -4
- package/dist/Form/Form.PasswordInput.d.ts +1 -1
- package/dist/Form/Form.PasswordInput.js +3 -3
- package/dist/Form/Form.PinInput.js +5 -5
- package/dist/Form/Form.QuantitySelector.js +3 -3
- package/dist/Form/Form.RadioButton.js +4 -4
- package/dist/Form/Form.SearchBar.js +4 -4
- package/dist/Form/Form.Select.d.ts +3 -1
- package/dist/Form/Form.Select.js +27 -14
- package/dist/Form/Form.Slider.js +3 -3
- package/dist/Form/Form.Switch.js +4 -4
- package/dist/Form/Form.TextInput.js +3 -3
- package/dist/Form/index.d.ts +33 -27
- package/dist/Form/index.js +29 -25
- package/dist/Navigation/Navigation.AppBar.d.ts +11 -6
- package/dist/Navigation/Navigation.AppBar.js +16 -16
- package/dist/Navigation/Navigation.BottomNav.d.ts +4 -2
- package/dist/Navigation/Navigation.BottomNav.js +34 -21
- package/dist/Navigation/Navigation.CollapsingHeader.d.ts +1 -1
- package/dist/Navigation/Navigation.CollapsingHeader.js +3 -3
- package/dist/Navigation/Navigation.FloatingBar.js +2 -2
- package/dist/Navigation/Navigation.Header.js +6 -6
- package/dist/Navigation/Navigation.HeaderToolbar.js +5 -5
- package/dist/Navigation/Navigation.Menu.js +6 -6
- package/dist/Navigation/Navigation.MenuSection.js +2 -2
- package/dist/Navigation/Navigation.RowItem.d.ts +2 -2
- package/dist/Navigation/Navigation.RowItem.js +4 -4
- package/dist/Navigation/Navigation.SearchBar.d.ts +6 -1
- package/dist/Navigation/Navigation.SearchBar.js +33 -12
- package/dist/Navigation/Navigation.SearchSuggestions.d.ts +14 -0
- package/dist/Navigation/Navigation.SearchSuggestions.js +7 -0
- package/dist/Navigation/Navigation.SegmentedControl.d.ts +3 -1
- package/dist/Navigation/Navigation.SegmentedControl.js +6 -5
- package/dist/Navigation/Navigation.Steps.js +5 -5
- package/dist/Navigation/Navigation.TabIcon.js +2 -2
- package/dist/Navigation/Navigation.TabItem.js +2 -2
- package/dist/Navigation/Navigation.Tabs.js +5 -5
- package/dist/Navigation/index.d.ts +23 -19
- package/dist/Navigation/index.js +17 -15
- package/dist/Typography/Typography.Heading.d.ts +1 -1
- package/dist/Typography/Typography.Heading.js +2 -2
- package/dist/Typography/Typography.SelectableText.d.ts +10 -0
- package/dist/Typography/Typography.SelectableText.js +16 -0
- package/dist/Typography/Typography.Text.d.ts +2 -2
- package/dist/Typography/Typography.Text.js +5 -19
- package/dist/Typography/index.d.ts +5 -2
- package/dist/Typography/index.js +5 -2
- package/dist/branding.d.ts +22 -0
- package/dist/branding.js +20 -3
- package/dist/icons/AddItemIcon.d.ts +1 -1
- package/dist/icons/ArrangeCircle.d.ts +1 -1
- package/dist/icons/ArrowDownIcon.d.ts +1 -1
- package/dist/icons/ArrowUpIcon.d.ts +1 -1
- package/dist/icons/BoxIcon.d.ts +1 -1
- package/dist/icons/BoxTimeIcon.d.ts +1 -1
- package/dist/icons/CalendarIcon.d.ts +1 -1
- package/dist/icons/CardIcon.d.ts +1 -1
- package/dist/icons/CashierIcon.d.ts +1 -1
- package/dist/icons/DuoIcon.d.ts +1 -1
- package/dist/icons/HomeIcon.d.ts +1 -1
- package/dist/icons/HomeIconOutlined.d.ts +1 -1
- package/dist/icons/LogoIcon.d.ts +1 -1
- package/dist/icons/MoneyReceiveIcon.d.ts +1 -1
- package/dist/icons/PinIcon.d.ts +1 -1
- package/dist/icons/PrinterIcon.d.ts +1 -1
- package/dist/icons/ProfileIcon.d.ts +1 -1
- package/dist/icons/SettingsIcon.d.ts +1 -1
- package/dist/icons/SinpeIcon.d.ts +1 -1
- package/dist/icons/ToggleOffIcon.d.ts +1 -1
- package/dist/icons/WalletMoneyIcon.d.ts +1 -1
- package/dist/index.d.ts +24 -23
- package/dist/index.js +26 -24
- package/dist/layouts/AuthContainer.d.ts +9 -3
- package/dist/layouts/AuthContainer.js +8 -8
- package/dist/layouts/Container.js +1 -1
- package/dist/layouts/GradientContainer.js +1 -1
- package/dist/layouts/ScrollContainer.js +1 -1
- package/dist/layouts/TabNavigatorLayout.js +4 -4
- package/dist/primitives/AspectRatio.js +1 -1
- package/dist/primitives/BaseButton.d.ts +92 -87
- package/dist/primitives/BaseButton.js +52 -54
- package/dist/primitives/Box.js +1 -1
- package/dist/primitives/Pressable.js +1 -1
- package/dist/primitives/Row.js +1 -1
- package/dist/primitives/Stack.js +1 -1
- package/dist/primitives/index.d.ts +6 -6
- package/dist/primitives/index.js +6 -6
- package/dist/theme/active.d.ts +1 -1
- package/dist/theme/active.js +14 -1
- package/dist/theme/build.d.ts +33 -0
- package/dist/theme/build.js +118 -0
- package/dist/theme/color.d.ts +26 -0
- package/dist/theme/color.js +109 -0
- package/dist/theme/components/index.d.ts +1 -1
- package/dist/theme/components/index.js +1 -1
- package/dist/theme/contrast.d.ts +29 -0
- package/dist/theme/contrast.js +57 -0
- package/dist/theme/css-vars.d.ts +3 -1
- package/dist/theme/css-vars.js +29 -3
- package/dist/theme/dark.d.ts +3 -4
- package/dist/theme/dark.js +91 -48
- package/dist/theme/default.d.ts +5 -1
- package/dist/theme/default.js +89 -41
- package/dist/theme/define.d.ts +4 -1
- package/dist/theme/define.js +4 -1
- package/dist/theme/globals.css +61 -46
- package/dist/theme/index.d.ts +14 -10
- package/dist/theme/index.js +13 -9
- package/dist/theme/theme.d.ts +1 -1
- package/dist/theme/theme.js +2 -2
- package/dist/theme/types.d.ts +77 -16
- package/dist/theme/types.js +13 -3
- package/dist/theme/typography.d.ts +19 -4
- package/dist/theme/typography.js +45 -28
- package/dist/theme/useTheme.d.ts +1 -1
- package/dist/theme/useTheme.js +1 -1
- package/dist/theme/validate.d.ts +16 -0
- package/dist/theme/validate.js +200 -0
- package/dist/tokens/index.d.ts +2 -2
- package/dist/tokens/index.js +2 -2
- package/dist/utils/criteria.d.ts +56 -0
- package/dist/utils/criteria.js +99 -0
- package/dist/utils/reorder.d.ts +4 -0
- package/dist/utils/reorder.js +32 -0
- package/dist/views/AppSplashView.d.ts +2 -2
- package/dist/views/AppSplashView.js +3 -3
- package/dist/views/AuthFormView.d.ts +5 -2
- package/dist/views/AuthFormView.js +5 -5
- package/dist/views/FormViewV2.d.ts +9 -4
- package/dist/views/FormViewV2.js +44 -25
- package/dist/views/ListViewV2.d.ts +12 -9
- package/dist/views/ListViewV2.js +49 -36
- package/dist/views/Wizard/Wizard.context.js +1 -1
- package/dist/views/Wizard/Wizard.d.ts +1 -1
- package/dist/views/Wizard/Wizard.js +1 -1
- package/dist/views/Wizard/index.d.ts +4 -4
- package/dist/views/Wizard/index.js +2 -2
- package/dist/views/types/IFormView.d.ts +1 -1
- package/dist/views/types/IListView.d.ts +1 -1
- package/dist/widgets/CircleButton.d.ts +2 -2
- package/dist/widgets/CircleButton.js +1 -1
- package/dist/widgets/CollectionOptions.d.ts +15 -0
- package/dist/widgets/CollectionOptions.js +127 -0
- package/dist/widgets/FilterBar.d.ts +21 -0
- package/dist/widgets/FilterBar.js +14 -0
- package/dist/widgets/FilterBuilder.d.ts +10 -0
- package/dist/widgets/FilterBuilder.js +115 -0
- package/dist/widgets/GeoPermissionCard.js +3 -3
- package/dist/widgets/HomeHeader.js +3 -3
- package/dist/widgets/JSONViewer.js +2 -2
- package/dist/widgets/MenuCard.d.ts +2 -2
- package/dist/widgets/MenuCard.js +1 -1
- package/dist/widgets/MenuGrid.d.ts +3 -3
- package/dist/widgets/MenuGrid.js +1 -1
- package/dist/widgets/MenuSection.d.ts +2 -2
- package/dist/widgets/MenuSection.js +1 -1
- package/dist/widgets/PromoBanner.js +3 -3
- package/dist/widgets/PromoModal.js +3 -3
- package/dist/widgets/QueryChoice.d.ts +10 -0
- package/dist/widgets/QueryChoice.js +13 -0
- package/dist/widgets/QuickActions.js +3 -3
- package/dist/widgets/ReorderableList.d.ts +51 -0
- package/dist/widgets/ReorderableList.js +138 -0
- package/dist/widgets/ScreenHeader.js +2 -2
- package/dist/widgets/TimeZoneSelector.d.ts +1 -1
- package/dist/widgets/TimeZoneSelector.js +4 -4
- package/dist/widgets/TimeZoneSelectorModal.d.ts +1 -1
- package/dist/widgets/TimeZoneSelectorModal.js +5 -5
- package/dist/widgets/index.d.ts +20 -16
- package/dist/widgets/index.js +13 -10
- package/package.json +70 -50
- package/tailwind.preset.js +19 -0
- package/dist/icons/icon_getters.d.ts +0 -6
- package/dist/icons/icon_getters.js +0 -23
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type VariantProps } from "../theme/tw";
|
|
1
|
+
import { type VariantProps } from "../theme/tw.js";
|
|
2
2
|
declare const badge: import("tailwind-variants").TVReturnType<{
|
|
3
3
|
variant: {
|
|
4
4
|
info: {
|
|
@@ -59,7 +59,7 @@ declare const badge: import("tailwind-variants").TVReturnType<{
|
|
|
59
59
|
}, {
|
|
60
60
|
root: string;
|
|
61
61
|
text: string;
|
|
62
|
-
}, import("tailwind-variants").
|
|
62
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
63
63
|
variant: {
|
|
64
64
|
info: {
|
|
65
65
|
root: string;
|
|
@@ -89,7 +89,7 @@ declare const badge: import("tailwind-variants").TVReturnType<{
|
|
|
89
89
|
}, {
|
|
90
90
|
root: string;
|
|
91
91
|
text: string;
|
|
92
|
-
}
|
|
92
|
+
}>>;
|
|
93
93
|
export type BadgeVariant = VariantProps<typeof badge>["variant"];
|
|
94
94
|
export declare enum BadgeVariants {
|
|
95
95
|
INFO = "info",
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { type VariantProps } from "../theme/tw";
|
|
1
|
+
import { type VariantProps } from "../theme/tw.js";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
declare const card: import("tailwind-variants").TVReturnType<{
|
|
4
4
|
padding: {
|
|
5
|
-
none:
|
|
6
|
-
sm:
|
|
7
|
-
md:
|
|
8
|
-
lg:
|
|
5
|
+
none: "p-0";
|
|
6
|
+
sm: "p-3";
|
|
7
|
+
md: "p-4";
|
|
8
|
+
lg: "p-6";
|
|
9
9
|
};
|
|
10
10
|
}, undefined, "bg-bg-card rounded-lg border border-border-light", {
|
|
11
11
|
padding: {
|
|
12
|
-
none:
|
|
13
|
-
sm:
|
|
14
|
-
md:
|
|
15
|
-
lg:
|
|
12
|
+
none: "p-0";
|
|
13
|
+
sm: "p-3";
|
|
14
|
+
md: "p-4";
|
|
15
|
+
lg: "p-6";
|
|
16
16
|
};
|
|
17
|
-
}, undefined, import("tailwind-variants").
|
|
17
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
18
18
|
padding: {
|
|
19
|
-
none:
|
|
20
|
-
sm:
|
|
21
|
-
md:
|
|
22
|
-
lg:
|
|
19
|
+
none: "p-0";
|
|
20
|
+
sm: "p-3";
|
|
21
|
+
md: "p-4";
|
|
22
|
+
lg: "p-6";
|
|
23
23
|
};
|
|
24
|
-
}, undefined
|
|
24
|
+
}, undefined>>;
|
|
25
25
|
export interface CardProps extends VariantProps<typeof card> {
|
|
26
26
|
elevation?: "none" | "sm" | "md" | "lg";
|
|
27
27
|
onPress?: () => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "nativewind/jsx-runtime";
|
|
2
|
-
import Pressable from "../primitives/Pressable";
|
|
3
|
-
import { theme } from "../theme";
|
|
4
|
-
import { cn, tv } from "../theme/tw";
|
|
5
|
-
import { Typography } from "../Typography";
|
|
2
|
+
import Pressable from "../primitives/Pressable.js";
|
|
3
|
+
import { theme } from "../theme/index.js";
|
|
4
|
+
import { cn, tv } from "../theme/tw.js";
|
|
5
|
+
import { Typography } from "../Typography/index.js";
|
|
6
6
|
import { View } from "react-native";
|
|
7
7
|
const card = tv({
|
|
8
8
|
base: "bg-bg-card rounded-lg border border-border-light",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
-
import { theme } from "../theme";
|
|
3
|
-
import { cn } from "../theme/tw";
|
|
2
|
+
import { theme } from "../theme/index.js";
|
|
3
|
+
import { cn } from "../theme/tw.js";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { ScrollView, View, } from "react-native";
|
|
6
6
|
function Carousel({ data, renderItem, keyExtractor, itemWidth, gap = 12, showDots = true, className, testID, }) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type VariantProps } from "../theme/tw";
|
|
1
|
+
import { type VariantProps } from "../theme/tw.js";
|
|
2
2
|
declare const chip: import("tailwind-variants").TVReturnType<{
|
|
3
3
|
tone: {
|
|
4
4
|
neutral: {
|
|
@@ -61,7 +61,7 @@ declare const chip: import("tailwind-variants").TVReturnType<{
|
|
|
61
61
|
}, {
|
|
62
62
|
root: string;
|
|
63
63
|
label: string;
|
|
64
|
-
}, import("tailwind-variants").
|
|
64
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
65
65
|
tone: {
|
|
66
66
|
neutral: {
|
|
67
67
|
root: string;
|
|
@@ -92,7 +92,7 @@ declare const chip: import("tailwind-variants").TVReturnType<{
|
|
|
92
92
|
}, {
|
|
93
93
|
root: string;
|
|
94
94
|
label: string;
|
|
95
|
-
}
|
|
95
|
+
}>>;
|
|
96
96
|
export interface ChipProps extends VariantProps<typeof chip> {
|
|
97
97
|
label: string;
|
|
98
98
|
onPress?: () => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
-
import Icon from "
|
|
3
|
-
import Pressable from "../primitives/Pressable";
|
|
4
|
-
import { theme } from "../theme";
|
|
5
|
-
import { tv } from "../theme/tw";
|
|
2
|
+
import Icon from "./Display.Icon.js";
|
|
3
|
+
import Pressable from "../primitives/Pressable.js";
|
|
4
|
+
import { theme } from "../theme/index.js";
|
|
5
|
+
import { tv } from "../theme/tw.js";
|
|
6
6
|
import { Text, View } from "react-native";
|
|
7
7
|
const chip = tv({
|
|
8
8
|
slots: {
|
|
@@ -12,10 +12,10 @@ const chip = tv({
|
|
|
12
12
|
variants: {
|
|
13
13
|
tone: {
|
|
14
14
|
neutral: { root: "bg-bg-muted", label: "text-text-secondary" },
|
|
15
|
-
primary: { root: "bg-
|
|
16
|
-
success: { root: "bg-success
|
|
17
|
-
warning: { root: "bg-warning
|
|
18
|
-
danger: { root: "bg-danger
|
|
15
|
+
primary: { root: "bg-container-primary", label: "text-container-on-primary" },
|
|
16
|
+
success: { root: "bg-container-success", label: "text-container-on-success" },
|
|
17
|
+
warning: { root: "bg-container-warning", label: "text-container-on-warning" },
|
|
18
|
+
danger: { root: "bg-container-danger", label: "text-container-on-danger" },
|
|
19
19
|
},
|
|
20
20
|
selected: {
|
|
21
21
|
true: { root: "border border-primary" },
|
|
@@ -28,10 +28,10 @@ const chip = tv({
|
|
|
28
28
|
});
|
|
29
29
|
const removeIconColor = {
|
|
30
30
|
neutral: theme.text.secondary,
|
|
31
|
-
primary: theme.
|
|
32
|
-
success: theme.
|
|
33
|
-
warning: theme.
|
|
34
|
-
danger: theme.
|
|
31
|
+
primary: theme.container.onPrimary,
|
|
32
|
+
success: theme.container.onSuccess,
|
|
33
|
+
warning: theme.container.onWarning,
|
|
34
|
+
danger: theme.container.onDanger,
|
|
35
35
|
};
|
|
36
36
|
function Chip({ label, tone = "neutral", selected = false, onPress, onRemove, className, testID, }) {
|
|
37
37
|
const styles = chip({ tone, selected });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "nativewind/jsx-runtime";
|
|
2
|
-
import Icon from "
|
|
3
|
-
import { useTheme } from "../theme";
|
|
4
|
-
import { cn } from "../theme/tw";
|
|
2
|
+
import Icon from "./Display.Icon.js";
|
|
3
|
+
import { useTheme } from "../theme/index.js";
|
|
4
|
+
import { cn } from "../theme/tw.js";
|
|
5
5
|
import { View } from "react-native";
|
|
6
6
|
import { tv } from "tailwind-variants";
|
|
7
7
|
const circleButtonVariants = tv({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type CopyableTextProps = {
|
|
1
|
+
export type CopyableTextProps = ({
|
|
2
2
|
value: string;
|
|
3
3
|
getValue?: never;
|
|
4
4
|
label?: string;
|
|
@@ -8,6 +8,13 @@ type CopyableTextProps = {
|
|
|
8
8
|
getValue: () => string;
|
|
9
9
|
label?: string;
|
|
10
10
|
className?: string;
|
|
11
|
+
}) & {
|
|
12
|
+
accessibilityLabel?: string;
|
|
13
|
+
testID?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
onCopied?: (value: string) => void;
|
|
16
|
+
onCopyError?: (error: Error) => void;
|
|
17
|
+
selectable?: boolean;
|
|
11
18
|
};
|
|
12
|
-
declare function CopyableText({ value, getValue, label, className }: CopyableTextProps): import("react").JSX.Element;
|
|
19
|
+
declare function CopyableText({ value, getValue, label, className, accessibilityLabel, testID, disabled, onCopied, onCopyError, selectable, }: CopyableTextProps): import("react").JSX.Element;
|
|
13
20
|
export default CopyableText;
|
|
@@ -1,14 +1,82 @@
|
|
|
1
|
-
import { jsx as _jsx } from "nativewind/jsx-runtime";
|
|
2
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
+
import Icon from "./Display.Icon.js";
|
|
3
|
+
import Pressable from "../primitives/Pressable.js";
|
|
4
|
+
import { useTheme } from "../theme/index.js";
|
|
5
|
+
import { Typography } from "../Typography/index.js";
|
|
3
6
|
import * as Clipboard from "expo-clipboard";
|
|
4
|
-
import {
|
|
5
|
-
|
|
7
|
+
import { useEffect, useRef, useState } from "react";
|
|
8
|
+
import { AccessibilityInfo, ActivityIndicator, View } from "react-native";
|
|
9
|
+
function CopyableText({ value, getValue, label, className, accessibilityLabel, testID, disabled = false, onCopied, onCopyError, selectable = false, }) {
|
|
10
|
+
const theme = useTheme();
|
|
11
|
+
const pending = useRef(false);
|
|
12
|
+
const [status, setStatus] = useState("idle");
|
|
13
|
+
const [copiedValue, setCopiedValue] = useState();
|
|
6
14
|
const hasStaticValue = value !== undefined;
|
|
7
|
-
const
|
|
15
|
+
const isCopied = status === "copied" && (!hasStaticValue || copiedValue === value);
|
|
16
|
+
const displayText = label || value || "Copiar";
|
|
17
|
+
const copyLabel = accessibilityLabel ?? `Copiar ${displayText}`;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (status !== "copied")
|
|
20
|
+
return;
|
|
21
|
+
const timer = setTimeout(() => setStatus("idle"), 3000);
|
|
22
|
+
return () => clearTimeout(timer);
|
|
23
|
+
}, [status]);
|
|
8
24
|
const handleCopy = async () => {
|
|
9
|
-
|
|
10
|
-
|
|
25
|
+
if (pending.current || disabled)
|
|
26
|
+
return;
|
|
27
|
+
pending.current = true;
|
|
28
|
+
setStatus("copying");
|
|
29
|
+
let textToCopy;
|
|
30
|
+
try {
|
|
31
|
+
textToCopy = hasStaticValue ? value : getValue();
|
|
32
|
+
const copied = await Clipboard.setStringAsync(textToCopy);
|
|
33
|
+
if (!copied)
|
|
34
|
+
throw new Error("El portapapeles no pudo copiar el texto");
|
|
35
|
+
}
|
|
36
|
+
catch (cause) {
|
|
37
|
+
const error = cause instanceof Error ? cause : new Error(String(cause));
|
|
38
|
+
setStatus("error");
|
|
39
|
+
AccessibilityInfo.announceForAccessibility("No se pudo copiar. Toca para reintentar.");
|
|
40
|
+
pending.current = false;
|
|
41
|
+
console.error("CopyableText: no se pudo copiar", error);
|
|
42
|
+
onCopyError?.(error);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
pending.current = false;
|
|
46
|
+
setCopiedValue(textToCopy);
|
|
47
|
+
setStatus("copied");
|
|
48
|
+
AccessibilityInfo.announceForAccessibility("Copiado");
|
|
49
|
+
onCopied?.(textToCopy);
|
|
11
50
|
};
|
|
12
|
-
return (
|
|
51
|
+
return (_jsxs(View, { children: [_jsxs(View, { style: {
|
|
52
|
+
flexDirection: "row",
|
|
53
|
+
alignItems: selectable ? "flex-start" : "center",
|
|
54
|
+
gap: 8,
|
|
55
|
+
}, children: [selectable ? (_jsx(Typography.SelectableText, { className: className, style: { flex: 1 }, value: displayText, variant: "body" })) : null, _jsxs(Pressable, { accessibilityHint: selectable ? "Copia el texto completo" : "Toca para copiar", accessibilityLabel: isCopied ? `${copyLabel}. Copiado` : copyLabel, accessibilityState: {
|
|
56
|
+
disabled: disabled || status === "copying",
|
|
57
|
+
busy: status === "copying",
|
|
58
|
+
}, accessibilityValue: {
|
|
59
|
+
text: isCopied
|
|
60
|
+
? "Copiado"
|
|
61
|
+
: status === "copying"
|
|
62
|
+
? "Copiando"
|
|
63
|
+
: status === "error"
|
|
64
|
+
? "Error al copiar"
|
|
65
|
+
: "",
|
|
66
|
+
}, disabled: disabled || status === "copying", onPress: () => {
|
|
67
|
+
void handleCopy();
|
|
68
|
+
}, style: {
|
|
69
|
+
minHeight: 48,
|
|
70
|
+
minWidth: 48,
|
|
71
|
+
flexDirection: "row",
|
|
72
|
+
alignItems: "center",
|
|
73
|
+
justifyContent: selectable ? "center" : "flex-start",
|
|
74
|
+
gap: 8,
|
|
75
|
+
flexShrink: selectable ? 0 : 1,
|
|
76
|
+
}, testID: testID, children: [!selectable ? (_jsx(Typography.Text, { className: className, style: { flexShrink: 1 }, variant: "body", children: displayText })) : null, _jsx(View, { accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: { width: 24, alignItems: "center" }, children: status === "copying" ? (_jsx(ActivityIndicator, { color: theme.text.accent, size: "small" })) : (_jsx(Icon, { color: isCopied ? theme.success : theme.text.accent, name: isCopied
|
|
77
|
+
? "checkmark"
|
|
78
|
+
: status === "error"
|
|
79
|
+
? "alert-circle-outline"
|
|
80
|
+
: "copy-outline", size: 20 })) })] })] }), status === "error" ? (_jsx(Typography.Text, { accessibilityLiveRegion: "polite", className: "text-danger", variant: "bodySmall", children: "No se pudo copiar. Toca para reintentar." })) : null] }));
|
|
13
81
|
}
|
|
14
82
|
export default CopyableText;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
-
import { cn } from "../theme/tw";
|
|
3
|
-
import { Typography } from "../Typography";
|
|
2
|
+
import { cn } from "../theme/tw.js";
|
|
3
|
+
import { Typography } from "../Typography/index.js";
|
|
4
4
|
import { View } from "react-native";
|
|
5
5
|
function CountRecords({ name, count, withPadding = true, className }) {
|
|
6
6
|
return (_jsxs(View, { className: cn("flex-row py-2", withPadding && "px-4", className), children: [_jsxs(Typography.Text, { semibold: true, variant: "bodySmall", children: ["Total ", " ", `${name || "Registros"} `] }), _jsxs(Typography.Text, { className: "text-text-secondary", variant: "bodySmall", children: ["( ", count, " )"] })] }));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
-
import { cn } from "../theme/tw";
|
|
3
|
-
import { Typography } from "../Typography";
|
|
2
|
+
import { cn } from "../theme/tw.js";
|
|
3
|
+
import { Typography } from "../Typography/index.js";
|
|
4
4
|
import { ScrollView, View } from "react-native";
|
|
5
5
|
const alignClass = {
|
|
6
6
|
left: "text-left",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "nativewind/jsx-runtime";
|
|
2
|
-
import Icon from "
|
|
3
|
-
import { theme } from "../theme";
|
|
4
|
-
import { cn } from "../theme/tw";
|
|
5
|
-
import { Typography } from "../Typography";
|
|
6
|
-
import { formatDate, formatDateWithDefaultTimezone } from "../utils/date";
|
|
2
|
+
import Icon from "./Display.Icon.js";
|
|
3
|
+
import { theme } from "../theme/index.js";
|
|
4
|
+
import { cn } from "../theme/tw.js";
|
|
5
|
+
import { Typography } from "../Typography/index.js";
|
|
6
|
+
import { formatDate, formatDateWithDefaultTimezone } from "../utils/date.js";
|
|
7
7
|
import { View } from "react-native";
|
|
8
8
|
function relativeTime(value) {
|
|
9
9
|
const then = new Date(value).getTime();
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { type VariantProps } from "../theme/tw";
|
|
1
|
+
import { type VariantProps } from "../theme/tw.js";
|
|
2
2
|
declare const divider: import("tailwind-variants").TVReturnType<{
|
|
3
3
|
spacing: {
|
|
4
|
-
none:
|
|
5
|
-
sm:
|
|
6
|
-
md:
|
|
7
|
-
lg:
|
|
4
|
+
none: "my-0";
|
|
5
|
+
sm: "my-1";
|
|
6
|
+
md: "my-2";
|
|
7
|
+
lg: "my-3";
|
|
8
8
|
};
|
|
9
9
|
colorScheme: {
|
|
10
|
-
light:
|
|
11
|
-
default:
|
|
12
|
-
dark:
|
|
10
|
+
light: "bg-border-divider opacity-50";
|
|
11
|
+
default: "bg-border-divider";
|
|
12
|
+
dark: "bg-border-divider opacity-100";
|
|
13
13
|
};
|
|
14
14
|
}, undefined, "w-full bg-border-divider", {
|
|
15
15
|
spacing: {
|
|
16
|
-
none:
|
|
17
|
-
sm:
|
|
18
|
-
md:
|
|
19
|
-
lg:
|
|
16
|
+
none: "my-0";
|
|
17
|
+
sm: "my-1";
|
|
18
|
+
md: "my-2";
|
|
19
|
+
lg: "my-3";
|
|
20
20
|
};
|
|
21
21
|
colorScheme: {
|
|
22
|
-
light:
|
|
23
|
-
default:
|
|
24
|
-
dark:
|
|
22
|
+
light: "bg-border-divider opacity-50";
|
|
23
|
+
default: "bg-border-divider";
|
|
24
|
+
dark: "bg-border-divider opacity-100";
|
|
25
25
|
};
|
|
26
|
-
}, undefined, import("tailwind-variants").
|
|
26
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
27
27
|
spacing: {
|
|
28
|
-
none:
|
|
29
|
-
sm:
|
|
30
|
-
md:
|
|
31
|
-
lg:
|
|
28
|
+
none: "my-0";
|
|
29
|
+
sm: "my-1";
|
|
30
|
+
md: "my-2";
|
|
31
|
+
lg: "my-3";
|
|
32
32
|
};
|
|
33
33
|
colorScheme: {
|
|
34
|
-
light:
|
|
35
|
-
default:
|
|
36
|
-
dark:
|
|
34
|
+
light: "bg-border-divider opacity-50";
|
|
35
|
+
default: "bg-border-divider";
|
|
36
|
+
dark: "bg-border-divider opacity-100";
|
|
37
37
|
};
|
|
38
|
-
}, undefined
|
|
38
|
+
}, undefined>>;
|
|
39
39
|
interface DividerProps extends VariantProps<typeof divider> {
|
|
40
40
|
thickness?: number;
|
|
41
41
|
className?: string;
|
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
import { type VariantProps } from "../theme/tw";
|
|
1
|
+
import { type VariantProps } from "../theme/tw.js";
|
|
2
2
|
import { type LinearGradientPoint } from "expo-linear-gradient";
|
|
3
3
|
import type { ReactNode } from "react";
|
|
4
4
|
import { type ViewStyle } from "react-native";
|
|
5
5
|
/**
|
|
6
|
-
* Decorative gradient presets
|
|
7
|
-
*
|
|
8
|
-
* Each is [from, …, to].
|
|
6
|
+
* Decorative gradient presets. `brand` is themeable (reads `theme.gradient.primary`) —
|
|
7
|
+
* use it when you want the surface to follow whatever the app's active theme defines.
|
|
8
|
+
* Other presets are static constants for one-off uses. Each is [from, …, to].
|
|
9
9
|
*/
|
|
10
10
|
declare const GRADIENT_PRESETS: {
|
|
11
|
+
readonly warm: {
|
|
12
|
+
readonly colors: readonly ["#1A1714", "#C89B3C", "#B88A2E"];
|
|
13
|
+
readonly start: {
|
|
14
|
+
readonly x: 0;
|
|
15
|
+
readonly y: 0;
|
|
16
|
+
};
|
|
17
|
+
readonly end: {
|
|
18
|
+
readonly x: 1;
|
|
19
|
+
readonly y: 1;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
11
22
|
readonly "neon-teal": {
|
|
12
|
-
readonly colors: readonly ["#
|
|
23
|
+
readonly colors: readonly ["#0F5C6E", "#5CC4D8"];
|
|
13
24
|
readonly start: {
|
|
14
25
|
readonly x: 0;
|
|
15
26
|
readonly y: 0;
|
|
@@ -20,7 +31,7 @@ declare const GRADIENT_PRESETS: {
|
|
|
20
31
|
};
|
|
21
32
|
};
|
|
22
33
|
readonly "night-green": {
|
|
23
|
-
readonly colors: readonly ["#
|
|
34
|
+
readonly colors: readonly ["#0B101E", "#18223A"];
|
|
24
35
|
readonly start: {
|
|
25
36
|
readonly x: 0;
|
|
26
37
|
readonly y: 0;
|
|
@@ -31,7 +42,7 @@ declare const GRADIENT_PRESETS: {
|
|
|
31
42
|
};
|
|
32
43
|
};
|
|
33
44
|
readonly mesh: {
|
|
34
|
-
readonly colors: readonly ["#
|
|
45
|
+
readonly colors: readonly ["#1C3765", "#2A4A85", "#8FA9E8"];
|
|
35
46
|
readonly start: {
|
|
36
47
|
readonly x: 0;
|
|
37
48
|
readonly y: 0;
|
|
@@ -42,7 +53,7 @@ declare const GRADIENT_PRESETS: {
|
|
|
42
53
|
};
|
|
43
54
|
};
|
|
44
55
|
readonly emerald: {
|
|
45
|
-
readonly colors: readonly ["#
|
|
56
|
+
readonly colors: readonly ["#2F6B3C", "#6FCF8B"];
|
|
46
57
|
readonly start: {
|
|
47
58
|
readonly x: 0;
|
|
48
59
|
readonly y: 0;
|
|
@@ -53,49 +64,57 @@ declare const GRADIENT_PRESETS: {
|
|
|
53
64
|
};
|
|
54
65
|
};
|
|
55
66
|
};
|
|
56
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Aliases kept for backwards compatibility. These were the original names; the
|
|
69
|
+
* canonical ones are above. Use the canonical names in new code.
|
|
70
|
+
* @deprecated use `warm` instead of `gold-mesh`.
|
|
71
|
+
*/
|
|
72
|
+
declare const DEPRECATED_PRESETS: {
|
|
73
|
+
readonly "gold-mesh": "warm";
|
|
74
|
+
};
|
|
75
|
+
export type GradientPreset = keyof typeof GRADIENT_PRESETS | keyof typeof DEPRECATED_PRESETS | "brand";
|
|
57
76
|
declare const surface: import("tailwind-variants").TVReturnType<{
|
|
58
77
|
radius: {
|
|
59
|
-
none:
|
|
60
|
-
md:
|
|
61
|
-
lg:
|
|
62
|
-
full:
|
|
78
|
+
none: "rounded-none";
|
|
79
|
+
md: "rounded-xl";
|
|
80
|
+
lg: "rounded-2xl";
|
|
81
|
+
full: "rounded-full";
|
|
63
82
|
};
|
|
64
83
|
padding: {
|
|
65
|
-
none:
|
|
66
|
-
sm:
|
|
67
|
-
md:
|
|
68
|
-
lg:
|
|
84
|
+
none: "p-0";
|
|
85
|
+
sm: "p-3";
|
|
86
|
+
md: "p-4";
|
|
87
|
+
lg: "p-6";
|
|
69
88
|
};
|
|
70
89
|
}, undefined, undefined, {
|
|
71
90
|
radius: {
|
|
72
|
-
none:
|
|
73
|
-
md:
|
|
74
|
-
lg:
|
|
75
|
-
full:
|
|
91
|
+
none: "rounded-none";
|
|
92
|
+
md: "rounded-xl";
|
|
93
|
+
lg: "rounded-2xl";
|
|
94
|
+
full: "rounded-full";
|
|
76
95
|
};
|
|
77
96
|
padding: {
|
|
78
|
-
none:
|
|
79
|
-
sm:
|
|
80
|
-
md:
|
|
81
|
-
lg:
|
|
97
|
+
none: "p-0";
|
|
98
|
+
sm: "p-3";
|
|
99
|
+
md: "p-4";
|
|
100
|
+
lg: "p-6";
|
|
82
101
|
};
|
|
83
|
-
}, undefined, import("tailwind-variants").
|
|
102
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
84
103
|
radius: {
|
|
85
|
-
none:
|
|
86
|
-
md:
|
|
87
|
-
lg:
|
|
88
|
-
full:
|
|
104
|
+
none: "rounded-none";
|
|
105
|
+
md: "rounded-xl";
|
|
106
|
+
lg: "rounded-2xl";
|
|
107
|
+
full: "rounded-full";
|
|
89
108
|
};
|
|
90
109
|
padding: {
|
|
91
|
-
none:
|
|
92
|
-
sm:
|
|
93
|
-
md:
|
|
94
|
-
lg:
|
|
110
|
+
none: "p-0";
|
|
111
|
+
sm: "p-3";
|
|
112
|
+
md: "p-4";
|
|
113
|
+
lg: "p-6";
|
|
95
114
|
};
|
|
96
|
-
}, undefined
|
|
115
|
+
}, undefined>>;
|
|
97
116
|
export interface GradientSurfaceProps extends VariantProps<typeof surface> {
|
|
98
|
-
/** Named
|
|
117
|
+
/** Named gradient preset. Ignored if `colors` is provided. */
|
|
99
118
|
preset?: GradientPreset;
|
|
100
119
|
/** Custom gradient stops (overrides `preset`). */
|
|
101
120
|
colors?: readonly [string, string, ...string[]];
|
|
@@ -107,9 +126,9 @@ export interface GradientSurfaceProps extends VariantProps<typeof surface> {
|
|
|
107
126
|
testID?: string;
|
|
108
127
|
}
|
|
109
128
|
/**
|
|
110
|
-
* Modern gradient surface
|
|
111
|
-
*
|
|
112
|
-
*
|
|
129
|
+
* Modern gradient surface. Wraps `expo-linear-gradient` with named presets +
|
|
130
|
+
* tokenized radius/padding. iOS + Android (no native dep beyond the already-peer
|
|
131
|
+
* `expo-linear-gradient`). Replaces the legacy `GradientContainer`.
|
|
113
132
|
*/
|
|
114
133
|
declare function GradientSurface({ preset, colors, start, end, radius, padding, children, className, style, testID, }: GradientSurfaceProps): import("react").JSX.Element;
|
|
115
134
|
export default GradientSurface;
|