@medway-ui/native 1.7.2 → 1.8.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 +4 -1
- package/lib/commonjs/components/Badge.js +159 -36
- package/lib/commonjs/components/Badge.js.map +1 -1
- package/lib/commonjs/components/Choice.js +35 -37
- package/lib/commonjs/components/Choice.js.map +1 -1
- package/lib/commonjs/components/SegmentControl.js +197 -0
- package/lib/commonjs/components/SegmentControl.js.map +1 -0
- package/lib/commonjs/editor/editorHtml.generated.js +1 -1
- package/lib/commonjs/editor/editorHtml.generated.js.map +1 -1
- package/lib/commonjs/hooks/useThemeColor.js +42 -42
- package/lib/commonjs/hooks/useThemeColor.js.map +1 -1
- package/lib/commonjs/index.js +31 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/lib/raised-surface.js +24 -0
- package/lib/commonjs/lib/raised-surface.js.map +1 -0
- package/lib/module/components/Badge.js +159 -36
- package/lib/module/components/Badge.js.map +1 -1
- package/lib/module/components/Choice.js +35 -37
- package/lib/module/components/Choice.js.map +1 -1
- package/lib/module/components/SegmentControl.js +189 -0
- package/lib/module/components/SegmentControl.js.map +1 -0
- package/lib/module/editor/editorHtml.generated.js +1 -1
- package/lib/module/editor/editorHtml.generated.js.map +1 -1
- package/lib/module/hooks/useThemeColor.js +42 -42
- package/lib/module/hooks/useThemeColor.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/lib/raised-surface.js +22 -0
- package/lib/module/lib/raised-surface.js.map +1 -0
- package/lib/typescript/components/Badge.d.ts +14 -4
- package/lib/typescript/components/Badge.d.ts.map +1 -1
- package/lib/typescript/components/Chip.d.ts +2 -2
- package/lib/typescript/components/Choice.d.ts.map +1 -1
- package/lib/typescript/components/SegmentControl.d.ts +37 -0
- package/lib/typescript/components/SegmentControl.d.ts.map +1 -0
- package/lib/typescript/components/Tag.d.ts +2 -2
- package/lib/typescript/editor/editorHtml.generated.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/lib/raised-surface.d.ts +3 -0
- package/lib/typescript/lib/raised-surface.d.ts.map +1 -0
- package/package.json +1 -1
- package/setup/tokens.native.css +49 -22
- package/src/components/Badge.tsx +207 -61
- package/src/components/Choice.tsx +66 -45
- package/src/components/SegmentControl.tsx +265 -0
- package/src/editor/editorHtml.generated.ts +1 -1
- package/src/hooks/useThemeColor.ts +42 -42
- package/src/index.ts +21 -1
- package/src/lib/raised-surface.tsx +21 -0
|
@@ -4,23 +4,33 @@ import { Pressable, View } from "react-native";
|
|
|
4
4
|
import * as MedwayIcons from "@medway-ui/icons/native";
|
|
5
5
|
import { Text } from "@/components/Text";
|
|
6
6
|
import { ThemedIcon } from "@/components/ThemedIcon";
|
|
7
|
-
import {
|
|
7
|
+
import { RaisedSurface } from "@/lib/raised-surface";
|
|
8
8
|
import { cn } from "@/lib/utils";
|
|
9
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
// The design's padding minus the 2px ring (`p-0.5`) around the inner card. The vertical hit slop
|
|
11
|
+
// takes the 32, 40 and 48pt chips to the package's 44pt touch target (`MIN_TOUCH_TARGET`).
|
|
10
12
|
const SIZE_MAP = {
|
|
11
13
|
sm: {
|
|
12
|
-
container: "gap-2 px-
|
|
13
|
-
text: "text-xs",
|
|
14
|
-
icon: 16
|
|
14
|
+
container: "gap-2 px-2.5 py-1.5",
|
|
15
|
+
text: "text-xs leading-xs",
|
|
16
|
+
icon: 16,
|
|
17
|
+
hitSlop: {
|
|
18
|
+
top: 6,
|
|
19
|
+
bottom: 6
|
|
20
|
+
}
|
|
15
21
|
},
|
|
16
22
|
md: {
|
|
17
|
-
container: "gap-2.5 px-3
|
|
18
|
-
text: "text-sm",
|
|
19
|
-
icon: 20
|
|
23
|
+
container: "gap-2.5 px-3 py-2",
|
|
24
|
+
text: "text-sm leading-sm",
|
|
25
|
+
icon: 20,
|
|
26
|
+
hitSlop: {
|
|
27
|
+
top: 2,
|
|
28
|
+
bottom: 2
|
|
29
|
+
}
|
|
20
30
|
},
|
|
21
31
|
lg: {
|
|
22
|
-
container: "gap-3 px-
|
|
23
|
-
text: "text-
|
|
32
|
+
container: "gap-3 px-3.5 py-2.5",
|
|
33
|
+
text: "text-md leading-md",
|
|
24
34
|
icon: 24
|
|
25
35
|
}
|
|
26
36
|
};
|
|
@@ -50,15 +60,6 @@ const THEME_CHECK_COLOR_TOKEN = {
|
|
|
50
60
|
ped: "ped-foreground",
|
|
51
61
|
prev: "prev-foreground"
|
|
52
62
|
};
|
|
53
|
-
const SHADOW_STYLE = {
|
|
54
|
-
shadowOffset: {
|
|
55
|
-
width: 0,
|
|
56
|
-
height: 2
|
|
57
|
-
},
|
|
58
|
-
shadowOpacity: 0.08,
|
|
59
|
-
shadowRadius: 4,
|
|
60
|
-
elevation: 2
|
|
61
|
-
};
|
|
62
63
|
function Choice({
|
|
63
64
|
label,
|
|
64
65
|
selected = false,
|
|
@@ -70,39 +71,36 @@ function Choice({
|
|
|
70
71
|
className
|
|
71
72
|
}) {
|
|
72
73
|
const sz = SIZE_MAP[size] ?? SIZE_MAP.md;
|
|
73
|
-
const
|
|
74
|
-
const outerBg = disabled ? "bg-gray-background-soft-muted" : selected ? THEME_SELECTED_OUTER_BG[theme] : "bg-gray-background-soft";
|
|
75
|
-
const textClass = disabled ? "font-medium text-gray-foreground-muted" : selected ? "font-semibold text-primary-foreground" : "font-medium text-gray-foreground";
|
|
74
|
+
const isRaised = selected && !disabled;
|
|
75
|
+
const outerBg = disabled ? "bg-gray-background-soft-muted" : selected ? THEME_SELECTED_OUTER_BG[theme] : "bg-gray-background-soft active:bg-gray-background-soft-emphasis";
|
|
76
76
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
77
77
|
onPress: disabled ? undefined : onPress,
|
|
78
78
|
disabled: disabled,
|
|
79
|
-
|
|
79
|
+
hitSlop: sz.hitSlop,
|
|
80
|
+
accessibilityRole: "togglebutton",
|
|
81
|
+
accessibilityLabel: label,
|
|
80
82
|
accessibilityState: {
|
|
81
|
-
selected,
|
|
83
|
+
checked: selected,
|
|
82
84
|
disabled
|
|
83
85
|
},
|
|
84
|
-
className: cn("rounded-md", outerBg, className),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
style: selected ? {
|
|
91
|
-
...SHADOW_STYLE,
|
|
92
|
-
shadowColor
|
|
93
|
-
} : undefined,
|
|
94
|
-
children: [icon ? /*#__PURE__*/_jsx(View, {
|
|
86
|
+
className: cn("rounded-md p-0.5", outerBg, className),
|
|
87
|
+
children: ({
|
|
88
|
+
pressed
|
|
89
|
+
}) => /*#__PURE__*/_jsxs(View, {
|
|
90
|
+
className: cn("flex-row items-center justify-center", sz.container),
|
|
91
|
+
children: [isRaised ? /*#__PURE__*/_jsx(RaisedSurface, {}) : null, icon ? /*#__PURE__*/_jsx(View, {
|
|
95
92
|
className: "shrink-0",
|
|
96
93
|
children: icon
|
|
97
94
|
}) : null, /*#__PURE__*/_jsx(Text, {
|
|
98
|
-
|
|
95
|
+
numberOfLines: 1,
|
|
96
|
+
className: cn("shrink text-center", sz.text, disabled ? "font-medium text-gray-foreground-muted" : selected ? "font-semibold text-primary-foreground" : pressed ? "font-medium text-gray-foreground-emphasis" : "font-medium text-gray-foreground"),
|
|
99
97
|
children: label
|
|
100
98
|
}), selected ? /*#__PURE__*/_jsx(View, {
|
|
101
99
|
className: "shrink-0",
|
|
102
100
|
children: /*#__PURE__*/_jsx(ThemedIcon, {
|
|
103
|
-
icon: MedwayIcons.
|
|
101
|
+
icon: MedwayIcons.CheckMedium,
|
|
104
102
|
size: sz.icon,
|
|
105
|
-
colorToken: THEME_CHECK_COLOR_TOKEN[theme]
|
|
103
|
+
colorToken: disabled ? "gray-foreground-muted" : THEME_CHECK_COLOR_TOKEN[theme]
|
|
106
104
|
})
|
|
107
105
|
}) : null]
|
|
108
106
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Pressable","View","MedwayIcons","Text","ThemedIcon","
|
|
1
|
+
{"version":3,"names":["Pressable","View","MedwayIcons","Text","ThemedIcon","RaisedSurface","cn","jsx","_jsx","jsxs","_jsxs","SIZE_MAP","sm","container","text","icon","hitSlop","top","bottom","md","lg","THEME_SELECTED_OUTER_BG","gray","primary","secondary","green","red","yellow","cm","go","cir","ped","prev","THEME_CHECK_COLOR_TOKEN","Choice","label","selected","disabled","size","theme","onPress","className","sz","isRaised","outerBg","undefined","accessibilityRole","accessibilityLabel","accessibilityState","checked","children","pressed","numberOfLines","CheckMedium","colorToken"],"sourceRoot":"../../../src","sources":["components/Choice.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Children, createContext, useContext, useMemo, useState } from "react";
|
|
4
|
+
import { Pressable, View } from "react-native";
|
|
5
|
+
import * as TabsPrimitive from "@rn-primitives/tabs";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
import { Badge } from "@/components/Badge";
|
|
8
|
+
import { Text } from "@/components/Text";
|
|
9
|
+
import { RaisedSurface } from "@/lib/raised-surface";
|
|
10
|
+
import { cn } from "@/lib/utils";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
12
|
+
const SegmentControlContext = /*#__PURE__*/createContext({
|
|
13
|
+
size: "md"
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// `min-h` instead of the web's `max-h`: a larger system font grows the segment instead of clipping it.
|
|
17
|
+
const segmentControlTriggerVariants = cva("shrink flex-row items-center justify-center", {
|
|
18
|
+
variants: {
|
|
19
|
+
size: {
|
|
20
|
+
sm: "min-h-7 gap-2 px-3 py-1.5",
|
|
21
|
+
md: "min-h-9 gap-2.5 px-3.5 py-2",
|
|
22
|
+
lg: "min-h-11 gap-3 px-4 py-2.5"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
size: "md"
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Up to the package's 44pt touch target (`MIN_TOUCH_TARGET`), vertically only: segments sit 2px apart.
|
|
31
|
+
const TRIGGER_HIT_SLOP = {
|
|
32
|
+
sm: {
|
|
33
|
+
top: 8,
|
|
34
|
+
bottom: 8
|
|
35
|
+
},
|
|
36
|
+
md: {
|
|
37
|
+
top: 4,
|
|
38
|
+
bottom: 4
|
|
39
|
+
},
|
|
40
|
+
lg: undefined
|
|
41
|
+
};
|
|
42
|
+
const segmentControlTextVariants = cva("text-center", {
|
|
43
|
+
variants: {
|
|
44
|
+
size: {
|
|
45
|
+
sm: "text-xs leading-xs",
|
|
46
|
+
md: "text-sm leading-sm",
|
|
47
|
+
lg: "text-md leading-md"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
defaultVariants: {
|
|
51
|
+
size: "md"
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
function SegmentControl({
|
|
55
|
+
value: valueProp,
|
|
56
|
+
defaultValue = "",
|
|
57
|
+
onValueChange,
|
|
58
|
+
size = "md",
|
|
59
|
+
className,
|
|
60
|
+
children,
|
|
61
|
+
...props
|
|
62
|
+
}) {
|
|
63
|
+
const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
|
|
64
|
+
const value = valueProp ?? uncontrolledValue;
|
|
65
|
+
const context = useMemo(() => ({
|
|
66
|
+
size
|
|
67
|
+
}), [size]);
|
|
68
|
+
const handleValueChange = next => {
|
|
69
|
+
if (next === value) return;
|
|
70
|
+
if (valueProp === undefined) setUncontrolledValue(next);
|
|
71
|
+
onValueChange?.(next);
|
|
72
|
+
};
|
|
73
|
+
return /*#__PURE__*/_jsx(SegmentControlContext.Provider, {
|
|
74
|
+
value: context,
|
|
75
|
+
children: /*#__PURE__*/_jsx(TabsPrimitive.Root, {
|
|
76
|
+
asChild: true,
|
|
77
|
+
value: value,
|
|
78
|
+
onValueChange: handleValueChange,
|
|
79
|
+
...props,
|
|
80
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
81
|
+
className: cn("gap-2", className),
|
|
82
|
+
children: children
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function SegmentControlList({
|
|
88
|
+
className,
|
|
89
|
+
children,
|
|
90
|
+
...props
|
|
91
|
+
}) {
|
|
92
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.List, {
|
|
93
|
+
asChild: true,
|
|
94
|
+
...props,
|
|
95
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
96
|
+
className: cn("flex-row items-center gap-0.5 self-start rounded-md bg-gray-background-soft p-0.5", className),
|
|
97
|
+
children: children
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function shouldShowBadge(badge, disabled) {
|
|
102
|
+
return badge != null && badge !== 0 && badge !== "" && badge !== "0" && !disabled;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Strings and numbers, as in `Aulas {count}`, join into one label; anything else renders as is.
|
|
106
|
+
function toLabel(children) {
|
|
107
|
+
const parts = Children.toArray(children);
|
|
108
|
+
return parts.length > 0 && parts.every(part => typeof part === "string" || typeof part === "number") ? parts.join("") : null;
|
|
109
|
+
}
|
|
110
|
+
function SegmentControlTrigger({
|
|
111
|
+
className,
|
|
112
|
+
children,
|
|
113
|
+
icon,
|
|
114
|
+
badge,
|
|
115
|
+
badgeVariant,
|
|
116
|
+
value,
|
|
117
|
+
disabled,
|
|
118
|
+
accessibilityLabel,
|
|
119
|
+
...props
|
|
120
|
+
}) {
|
|
121
|
+
const {
|
|
122
|
+
size
|
|
123
|
+
} = useContext(SegmentControlContext);
|
|
124
|
+
const {
|
|
125
|
+
value: activeValue
|
|
126
|
+
} = TabsPrimitive.useRootContext();
|
|
127
|
+
const isActive = activeValue === value;
|
|
128
|
+
const isDisabled = !!disabled;
|
|
129
|
+
const showBadge = shouldShowBadge(badge, isDisabled);
|
|
130
|
+
const label = toLabel(children);
|
|
131
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.Trigger, {
|
|
132
|
+
asChild: true,
|
|
133
|
+
value: value,
|
|
134
|
+
disabled: disabled,
|
|
135
|
+
...props,
|
|
136
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
137
|
+
accessibilityLabel: accessibilityLabel ?? (label != null ? showBadge ? `${label}, ${badge}` : label : undefined),
|
|
138
|
+
hitSlop: TRIGGER_HIT_SLOP[size],
|
|
139
|
+
className: cn(segmentControlTriggerVariants({
|
|
140
|
+
size
|
|
141
|
+
}), className),
|
|
142
|
+
children: ({
|
|
143
|
+
pressed
|
|
144
|
+
}) => /*#__PURE__*/_jsxs(_Fragment, {
|
|
145
|
+
children: [isActive ? /*#__PURE__*/_jsx(RaisedSurface, {}) : null, icon ? /*#__PURE__*/_jsx(View, {
|
|
146
|
+
className: "shrink-0",
|
|
147
|
+
children: icon
|
|
148
|
+
}) : null, label != null ? /*#__PURE__*/_jsxs(View, {
|
|
149
|
+
className: "min-w-0 shrink",
|
|
150
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
151
|
+
numberOfLines: 1,
|
|
152
|
+
accessibilityElementsHidden: true,
|
|
153
|
+
importantForAccessibility: "no-hide-descendants",
|
|
154
|
+
className: cn(segmentControlTextVariants({
|
|
155
|
+
size
|
|
156
|
+
}), "font-semibold opacity-0"),
|
|
157
|
+
children: label
|
|
158
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
159
|
+
numberOfLines: 1,
|
|
160
|
+
className: cn(segmentControlTextVariants({
|
|
161
|
+
size
|
|
162
|
+
}), "absolute inset-0", isActive ? "font-semibold" : "font-medium", isDisabled ? "text-gray-foreground-muted" : isActive ? pressed ? "text-primary-foreground-emphasis" : "text-primary-foreground" : pressed ? "text-gray-foreground-emphasis" : "text-gray-foreground"),
|
|
163
|
+
children: label
|
|
164
|
+
})]
|
|
165
|
+
}) : children, showBadge ? /*#__PURE__*/_jsx(Badge, {
|
|
166
|
+
size: size,
|
|
167
|
+
variant: badgeVariant,
|
|
168
|
+
children: String(badge)
|
|
169
|
+
}) : null]
|
|
170
|
+
})
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
function SegmentControlContent({
|
|
175
|
+
className,
|
|
176
|
+
children,
|
|
177
|
+
...props
|
|
178
|
+
}) {
|
|
179
|
+
return /*#__PURE__*/_jsx(TabsPrimitive.Content, {
|
|
180
|
+
asChild: true,
|
|
181
|
+
...props,
|
|
182
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
183
|
+
className: cn("flex-1", className),
|
|
184
|
+
children: children
|
|
185
|
+
})
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export { SegmentControl, SegmentControlContent, SegmentControlList, SegmentControlTrigger, segmentControlTriggerVariants };
|
|
189
|
+
//# sourceMappingURL=SegmentControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","createContext","useContext","useMemo","useState","Pressable","View","TabsPrimitive","cva","Badge","Text","RaisedSurface","cn","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SegmentControlContext","size","segmentControlTriggerVariants","variants","sm","md","lg","defaultVariants","TRIGGER_HIT_SLOP","top","bottom","undefined","segmentControlTextVariants","SegmentControl","value","valueProp","defaultValue","onValueChange","className","children","props","uncontrolledValue","setUncontrolledValue","context","handleValueChange","next","Provider","Root","asChild","SegmentControlList","List","shouldShowBadge","badge","disabled","toLabel","parts","toArray","length","every","part","join","SegmentControlTrigger","icon","badgeVariant","accessibilityLabel","activeValue","useRootContext","isActive","isDisabled","showBadge","label","Trigger","hitSlop","pressed","numberOfLines","accessibilityElementsHidden","importantForAccessibility","variant","String","SegmentControlContent","Content"],"sourceRoot":"../../../src","sources":["components/SegmentControl.tsx"],"mappings":"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","ignoreList":[]}
|