@ecohouse/ui 0.1.45 → 0.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +298 -248
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.js +211 -164
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/DatePicker/DatePicker.tsx +7 -5
- package/src/components/SegmentedToggle/SegmentedToggle.tsx +46 -50
- package/src/icons/ActiveGuests/ActiveGuestsIcon.tsx +14 -0
- package/src/icons/ActiveGuests/ActiveGuestsIcon.web.tsx +20 -0
- package/src/icons/ActiveGuests/activeGuestsPath.ts +2 -0
- package/src/icons/ActiveGuests/index.ts +1 -0
- package/src/icons/BlockedGuests/BlockedGuestsIcon.tsx +24 -0
- package/src/icons/BlockedGuests/BlockedGuestsIcon.web.tsx +30 -0
- package/src/icons/BlockedGuests/blockedGuestsPath.ts +2 -0
- package/src/icons/BlockedGuests/index.ts +1 -0
- package/src/icons/TotalGuests/TotalGuestsIcon.tsx +20 -0
- package/src/icons/TotalGuests/TotalGuestsIcon.web.tsx +26 -0
- package/src/icons/TotalGuests/index.ts +1 -0
- package/src/icons/TotalGuests/totalGuestsPath.ts +2 -0
- package/src/icons/index.ts +3 -0
- package/src/icons/registry.ts +9 -0
- package/src/index.ts +3 -0
- package/src/theme/typography.ts +2 -2
package/package.json
CHANGED
|
@@ -539,18 +539,20 @@ export const DatePicker = forwardRef<ComponentRef<typeof View>, DatePickerProps>
|
|
|
539
539
|
const last = rangeIndices[rangeIndices.length - 1];
|
|
540
540
|
const startsHere = isSameDay(week[first], rangeValue.start);
|
|
541
541
|
const endsHere = isSameDay(week[last], rangeValue.end);
|
|
542
|
-
//
|
|
542
|
+
// Tuck past the circle center so the highlight's rounded cap
|
|
543
|
+
// sits under the endpoint circle instead of leaving a gap.
|
|
543
544
|
const cellPct = 100 / 7;
|
|
544
545
|
const halfCellPct = cellPct / 2;
|
|
546
|
+
const tuckPct = (12 / MENU_CONTENT_WIDTH) * 100;
|
|
545
547
|
let leftPct = first * cellPct;
|
|
546
|
-
let
|
|
548
|
+
let rightPct = (last + 1) * cellPct;
|
|
547
549
|
if (startsHere) {
|
|
548
|
-
leftPct += halfCellPct;
|
|
549
|
-
widthPct -= halfCellPct;
|
|
550
|
+
leftPct += halfCellPct - tuckPct;
|
|
550
551
|
}
|
|
551
552
|
if (endsHere) {
|
|
552
|
-
|
|
553
|
+
rightPct -= halfCellPct - tuckPct;
|
|
553
554
|
}
|
|
555
|
+
const widthPct = rightPct - leftPct;
|
|
554
556
|
// Same-day range: only the circle, no connector bar.
|
|
555
557
|
if (widthPct > 0) {
|
|
556
558
|
rangeHighlightStyle = {
|
|
@@ -47,7 +47,6 @@ const ANIMATION_DURATION = 200;
|
|
|
47
47
|
const OPTION_HORIZONTAL_PADDING = 16;
|
|
48
48
|
const OPTION_CONTENT_GAP = 12;
|
|
49
49
|
const OPTION_MIN_WIDTH = 97;
|
|
50
|
-
const OPTION_MEASUREMENT_TOLERANCE = 0.5;
|
|
51
50
|
const TRACK_PADDING = 4;
|
|
52
51
|
const OPTION_GAP = 4;
|
|
53
52
|
|
|
@@ -91,7 +90,7 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
91
90
|
const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
92
91
|
const progress = useRef(new Animated.Value(selectedIndex)).current;
|
|
93
92
|
const hasMounted = useRef(false);
|
|
94
|
-
const [
|
|
93
|
+
const [measuredOptionWidths, setMeasuredOptionWidths] = useState<number[]>(() =>
|
|
95
94
|
Array.from({ length: optionCount }, () => 0),
|
|
96
95
|
);
|
|
97
96
|
const [containerWidth, setContainerWidth] = useState(0);
|
|
@@ -99,19 +98,12 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
99
98
|
// Track chrome: left+right padding + gaps between options.
|
|
100
99
|
const trackChrome = TRACK_PADDING * 2 + OPTION_GAP * (optionCount - 1);
|
|
101
100
|
const availableOptionWidth = Math.max(0, (containerWidth - trackChrome) / optionCount);
|
|
102
|
-
const resolveContentOptionWidth = (contentWidth: number) =>
|
|
103
|
-
contentWidth > 0
|
|
104
|
-
? Math.max(
|
|
105
|
-
OPTION_MIN_WIDTH,
|
|
106
|
-
contentWidth + OPTION_HORIZONTAL_PADDING * 2 + OPTION_MEASUREMENT_TOLERANCE,
|
|
107
|
-
)
|
|
108
|
-
: 0;
|
|
109
|
-
|
|
110
101
|
const optionWidths = fullWidth
|
|
111
102
|
? Array.from({ length: optionCount }, () => availableOptionWidth)
|
|
112
|
-
:
|
|
103
|
+
: measuredOptionWidths;
|
|
113
104
|
|
|
114
|
-
const
|
|
105
|
+
const measurementsReady = optionWidths.every((width) => width > 0);
|
|
106
|
+
const selectedOptionWidth = measurementsReady ? (optionWidths[selectedIndex] ?? 0) : 0;
|
|
115
107
|
const indicatorInputRange = options.map((_, index) => index);
|
|
116
108
|
const indicatorOutputRange = buildIndicatorOutputRange(optionWidths);
|
|
117
109
|
const indicatorTranslateX = progress.interpolate({
|
|
@@ -122,7 +114,7 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
122
114
|
useApplyWebClassName(containerRef, resolvedClassName);
|
|
123
115
|
|
|
124
116
|
useEffect(() => {
|
|
125
|
-
|
|
117
|
+
setMeasuredOptionWidths((current) => {
|
|
126
118
|
if (current.length === optionCount) return current;
|
|
127
119
|
return Array.from({ length: optionCount }, (_, index) => current[index] ?? 0);
|
|
128
120
|
});
|
|
@@ -171,32 +163,6 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
171
163
|
]}
|
|
172
164
|
accessibilityRole="radiogroup"
|
|
173
165
|
>
|
|
174
|
-
{!fullWidth
|
|
175
|
-
? options.map(({ value: optionValue, label, icon: Icon, showLabel = true }, index) => (
|
|
176
|
-
<View
|
|
177
|
-
key={`${optionValue}-measurement`}
|
|
178
|
-
pointerEvents="none"
|
|
179
|
-
aria-hidden
|
|
180
|
-
accessibilityElementsHidden
|
|
181
|
-
importantForAccessibility="no-hide-descendants"
|
|
182
|
-
onLayout={(event) => {
|
|
183
|
-
const nextWidth = event.nativeEvent.layout.width;
|
|
184
|
-
setContentWidths((currentWidths) => {
|
|
185
|
-
if (currentWidths[index] === nextWidth) return currentWidths;
|
|
186
|
-
const nextWidths = [...currentWidths];
|
|
187
|
-
nextWidths[index] = nextWidth;
|
|
188
|
-
return nextWidths;
|
|
189
|
-
});
|
|
190
|
-
}}
|
|
191
|
-
style={styles.optionMeasurement}
|
|
192
|
-
>
|
|
193
|
-
{Icon ? <Icon size={ICON_SIZE} /> : null}
|
|
194
|
-
{showLabel ? (
|
|
195
|
-
<Text style={[styles.label, styles.contentWidthLabel]}>{label}</Text>
|
|
196
|
-
) : null}
|
|
197
|
-
</View>
|
|
198
|
-
))
|
|
199
|
-
: null}
|
|
200
166
|
{selectedOptionWidth > 0 ? (
|
|
201
167
|
<Animated.View
|
|
202
168
|
pointerEvents="none"
|
|
@@ -210,7 +176,6 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
210
176
|
const selected = optionValue === selectedValue;
|
|
211
177
|
const iconColor = selected ? colors.primary : colors.whiteAlpha20;
|
|
212
178
|
const labelColor = selected ? colors.white : colors.grey150;
|
|
213
|
-
const optionWidth = optionWidths[index] ?? 0;
|
|
214
179
|
|
|
215
180
|
return (
|
|
216
181
|
<Pressable
|
|
@@ -218,18 +183,45 @@ export const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedTo
|
|
|
218
183
|
onPress={() => selectOption(optionValue)}
|
|
219
184
|
disabled={disabled}
|
|
220
185
|
hitSlop={hitSlop}
|
|
186
|
+
onLayout={
|
|
187
|
+
fullWidth
|
|
188
|
+
? undefined
|
|
189
|
+
: (event) => {
|
|
190
|
+
const nextWidth = event.nativeEvent.layout.width;
|
|
191
|
+
setMeasuredOptionWidths((currentWidths) => {
|
|
192
|
+
if (currentWidths[index] === nextWidth) return currentWidths;
|
|
193
|
+
const nextWidths = [...currentWidths];
|
|
194
|
+
nextWidths[index] = nextWidth;
|
|
195
|
+
return nextWidths;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
221
199
|
accessibilityRole="radio"
|
|
222
200
|
accessibilityLabel={label}
|
|
223
201
|
accessibilityState={{ selected, disabled }}
|
|
224
202
|
style={[
|
|
225
203
|
styles.option,
|
|
226
|
-
fullWidth
|
|
227
|
-
|
|
228
|
-
: [styles.optionContentWidth, optionWidth > 0 && { width: optionWidth }],
|
|
229
|
-
selected && selectedOptionWidth === 0 && styles.initialSelectedOption,
|
|
204
|
+
fullWidth ? styles.optionFullWidth : styles.optionContentWidth,
|
|
205
|
+
selected && !measurementsReady && styles.initialSelectedOption,
|
|
230
206
|
]}
|
|
231
207
|
>
|
|
232
|
-
|
|
208
|
+
{!fullWidth ? (
|
|
209
|
+
<View
|
|
210
|
+
aria-hidden
|
|
211
|
+
accessibilityElementsHidden
|
|
212
|
+
importantForAccessibility="no-hide-descendants"
|
|
213
|
+
pointerEvents="none"
|
|
214
|
+
style={[styles.optionContent, styles.optionSizeProbe]}
|
|
215
|
+
>
|
|
216
|
+
{Icon ? <Icon size={ICON_SIZE} /> : null}
|
|
217
|
+
{showLabel ? (
|
|
218
|
+
<Text style={[styles.label, styles.selectedLabel, styles.contentWidthLabel]}>
|
|
219
|
+
{label}
|
|
220
|
+
</Text>
|
|
221
|
+
) : null}
|
|
222
|
+
</View>
|
|
223
|
+
) : null}
|
|
224
|
+
<View style={[styles.optionContent, !fullWidth && styles.contentWidthVisibleContent]}>
|
|
233
225
|
{Icon ? <Icon size={ICON_SIZE} color={iconColor} /> : null}
|
|
234
226
|
{showLabel ? (
|
|
235
227
|
<Text
|
|
@@ -287,13 +279,17 @@ const styles = StyleSheet.create({
|
|
|
287
279
|
alignItems: "center",
|
|
288
280
|
gap: OPTION_CONTENT_GAP,
|
|
289
281
|
},
|
|
290
|
-
|
|
291
|
-
position: "absolute",
|
|
292
|
-
flexDirection: "row",
|
|
293
|
-
alignItems: "center",
|
|
294
|
-
gap: OPTION_CONTENT_GAP,
|
|
282
|
+
optionSizeProbe: {
|
|
295
283
|
opacity: 0,
|
|
296
284
|
},
|
|
285
|
+
contentWidthVisibleContent: {
|
|
286
|
+
position: "absolute",
|
|
287
|
+
top: 0,
|
|
288
|
+
left: 0,
|
|
289
|
+
width: "100%",
|
|
290
|
+
height: "100%",
|
|
291
|
+
justifyContent: "center",
|
|
292
|
+
},
|
|
297
293
|
optionFullWidth: {
|
|
298
294
|
flex: 1,
|
|
299
295
|
minWidth: 0,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
import { ACTIVE_GUESTS_PATH } from "./activeGuestsPath";
|
|
5
|
+
|
|
6
|
+
export { ACTIVE_GUESTS_PATH } from "./activeGuestsPath";
|
|
7
|
+
|
|
8
|
+
export function ActiveGuestsIcon({ size = 20, color = colors.primary }: IconProps) {
|
|
9
|
+
return (
|
|
10
|
+
<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
|
|
11
|
+
<Path d={ACTIVE_GUESTS_PATH} fill={color} />
|
|
12
|
+
</Svg>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ACTIVE_GUESTS_PATH } from "./activeGuestsPath";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
|
|
5
|
+
export function ActiveGuestsIcon({ size = 20, color = colors.primary }: IconProps) {
|
|
6
|
+
return (
|
|
7
|
+
<svg
|
|
8
|
+
width={size}
|
|
9
|
+
height={size}
|
|
10
|
+
viewBox="0 0 20 20"
|
|
11
|
+
fill="none"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
aria-hidden
|
|
14
|
+
>
|
|
15
|
+
<path d={ACTIVE_GUESTS_PATH} fill={color} />
|
|
16
|
+
</svg>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { ACTIVE_GUESTS_PATH } from "./activeGuestsPath";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const ACTIVE_GUESTS_PATH =
|
|
2
|
+
"M11.0846 10.1827C11.5293 9.79779 11.8859 9.32175 12.1304 8.78687C12.3748 8.25198 12.5013 7.67077 12.5013 7.08268C12.5013 5.97761 12.0623 4.91781 11.2809 4.1364C10.4995 3.355 9.4397 2.91602 8.33464 2.91602C7.22957 2.91602 6.16976 3.355 5.38836 4.1364C4.60696 4.91781 4.16797 5.97761 4.16797 7.08268C4.16796 7.67077 4.29447 8.25198 4.53891 8.78687C4.78334 9.32175 5.13999 9.79779 5.58464 10.1827C4.41809 10.7109 3.42836 11.564 2.73379 12.6398C2.03921 13.7156 1.6692 14.9688 1.66797 16.2493C1.66797 16.4704 1.75577 16.6823 1.91205 16.8386C2.06833 16.9949 2.28029 17.0827 2.5013 17.0827C2.72232 17.0827 2.93428 16.9949 3.09056 16.8386C3.24684 16.6823 3.33464 16.4704 3.33464 16.2493C3.33464 14.9233 3.86142 13.6515 4.7991 12.7138C5.73678 11.7761 7.00855 11.2493 8.33464 11.2493C9.66072 11.2493 10.9325 11.7761 11.8702 12.7138C12.8079 13.6515 13.3346 14.9233 13.3346 16.2493C13.3346 16.4704 13.4224 16.6823 13.5787 16.8386C13.735 16.9949 13.947 17.0827 14.168 17.0827C14.389 17.0827 14.6009 16.9949 14.7572 16.8386C14.9135 16.6823 15.0013 16.4704 15.0013 16.2493C15.0001 14.9688 14.6301 13.7156 13.9355 12.6398C13.2409 11.564 12.2512 10.7109 11.0846 10.1827ZM8.33464 9.58268C7.84018 9.58268 7.35683 9.43606 6.94571 9.16136C6.53459 8.88665 6.21416 8.49621 6.02494 8.03939C5.83572 7.58258 5.78621 7.07991 5.88267 6.59496C5.97914 6.11 6.21724 5.66455 6.56687 5.31492C6.9165 4.96528 7.36196 4.72718 7.84691 4.63072C8.33186 4.53426 8.83453 4.58376 9.29134 4.77298C9.74816 4.9622 10.1386 5.28263 10.4133 5.69376C10.688 6.10488 10.8346 6.58823 10.8346 7.08268C10.8346 7.74572 10.5712 8.38161 10.1024 8.85045C9.63356 9.31929 8.99768 9.58268 8.33464 9.58268ZM18.093 7.60768C18.0155 7.52958 17.9233 7.46758 17.8218 7.42527C17.7202 7.38297 17.6113 7.36118 17.5013 7.36118C17.3913 7.36118 17.2824 7.38297 17.1808 7.42527C17.0793 7.46758 16.9871 7.52958 16.9096 7.60768L15.243 9.27435L14.7263 8.74935C14.6488 8.67124 14.5567 8.60925 14.4551 8.56694C14.3536 8.52463 14.2446 8.50285 14.1346 8.50285C14.0246 8.50285 13.9157 8.52463 13.8142 8.56694C13.7126 8.60925 13.6204 8.67124 13.543 8.74935C13.3878 8.90548 13.3006 9.11669 13.3006 9.33685C13.3006 9.557 13.3878 9.76821 13.543 9.92435L14.6596 11.041C14.8158 11.1962 15.027 11.2833 15.2471 11.2833C15.4673 11.2833 15.6785 11.1962 15.8346 11.041L18.0596 8.81602C18.1438 8.74045 18.2116 8.64855 18.2591 8.54592C18.3066 8.44328 18.3327 8.33205 18.3358 8.21901C18.3389 8.10596 18.319 7.99347 18.2773 7.88837C18.2355 7.78327 18.1728 7.68777 18.093 7.60768Z";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ActiveGuestsIcon, ACTIVE_GUESTS_PATH } from "./ActiveGuestsIcon";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
import { BLOCKED_GUESTS_PATH } from "./blockedGuestsPath";
|
|
5
|
+
|
|
6
|
+
export { BLOCKED_GUESTS_PATH } from "./blockedGuestsPath";
|
|
7
|
+
|
|
8
|
+
export function BlockedGuestsIcon({
|
|
9
|
+
size = 20,
|
|
10
|
+
color = colors.primary,
|
|
11
|
+
strokeWidth = 2,
|
|
12
|
+
}: IconProps) {
|
|
13
|
+
return (
|
|
14
|
+
<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
|
|
15
|
+
<Path
|
|
16
|
+
d={BLOCKED_GUESTS_PATH}
|
|
17
|
+
stroke={color}
|
|
18
|
+
strokeWidth={strokeWidth}
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
/>
|
|
22
|
+
</Svg>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BLOCKED_GUESTS_PATH } from "./blockedGuestsPath";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
|
|
5
|
+
export function BlockedGuestsIcon({
|
|
6
|
+
size = 20,
|
|
7
|
+
color = colors.primary,
|
|
8
|
+
strokeWidth = 2,
|
|
9
|
+
}: IconProps) {
|
|
10
|
+
return (
|
|
11
|
+
<svg
|
|
12
|
+
width={size}
|
|
13
|
+
height={size}
|
|
14
|
+
viewBox="0 0 20 20"
|
|
15
|
+
fill="none"
|
|
16
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
17
|
+
aria-hidden
|
|
18
|
+
>
|
|
19
|
+
<path
|
|
20
|
+
d={BLOCKED_GUESTS_PATH}
|
|
21
|
+
stroke={color}
|
|
22
|
+
strokeWidth={strokeWidth}
|
|
23
|
+
strokeLinecap="round"
|
|
24
|
+
strokeLinejoin="round"
|
|
25
|
+
/>
|
|
26
|
+
</svg>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { BLOCKED_GUESTS_PATH } from "./blockedGuestsPath";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const BLOCKED_GUESTS_PATH =
|
|
2
|
+
"M14.1654 8.33333V6.66667C14.1654 4.36548 12.2999 2.5 9.9987 2.5C7.69751 2.5 5.83203 4.36548 5.83203 6.66667V8.33333M9.9987 12.0833V13.75M7.33203 17.5H12.6654C14.0655 17.5 14.7656 17.5 15.3003 17.2275C15.7707 16.9878 16.1532 16.6054 16.3929 16.135C16.6654 15.6002 16.6654 14.9001 16.6654 13.5V12.3333C16.6654 10.9332 16.6654 10.2331 16.3929 9.69836C16.1532 9.22795 15.7707 8.8455 15.3003 8.60582C14.7656 8.33333 14.0655 8.33333 12.6654 8.33333H7.33203C5.9319 8.33333 5.23183 8.33333 4.69705 8.60582C4.22665 8.8455 3.8442 9.22795 3.60451 9.69836C3.33203 10.2331 3.33203 10.9332 3.33203 12.3333V13.5C3.33203 14.9001 3.33203 15.6002 3.60451 16.135C3.8442 16.6054 4.22665 16.9878 4.69705 17.2275C5.23183 17.5 5.9319 17.5 7.33203 17.5Z";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BlockedGuestsIcon, BLOCKED_GUESTS_PATH } from "./BlockedGuestsIcon";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Svg, { Path } from "react-native-svg";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
import { TOTAL_GUESTS_PATH } from "./totalGuestsPath";
|
|
5
|
+
|
|
6
|
+
export { TOTAL_GUESTS_PATH } from "./totalGuestsPath";
|
|
7
|
+
|
|
8
|
+
export function TotalGuestsIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {
|
|
9
|
+
return (
|
|
10
|
+
<Svg width={size} height={size} viewBox="0 0 20 20" fill="none">
|
|
11
|
+
<Path
|
|
12
|
+
d={TOTAL_GUESTS_PATH}
|
|
13
|
+
stroke={color}
|
|
14
|
+
strokeWidth={strokeWidth}
|
|
15
|
+
strokeLinecap="round"
|
|
16
|
+
strokeLinejoin="round"
|
|
17
|
+
/>
|
|
18
|
+
</Svg>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TOTAL_GUESTS_PATH } from "./totalGuestsPath";
|
|
2
|
+
import { colors } from "../../theme";
|
|
3
|
+
import type { IconProps } from "../types";
|
|
4
|
+
|
|
5
|
+
export function TotalGuestsIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {
|
|
6
|
+
return (
|
|
7
|
+
<svg
|
|
8
|
+
width={size}
|
|
9
|
+
height={size}
|
|
10
|
+
viewBox="0 0 20 20"
|
|
11
|
+
fill="none"
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
aria-hidden
|
|
14
|
+
>
|
|
15
|
+
<path
|
|
16
|
+
d={TOTAL_GUESTS_PATH}
|
|
17
|
+
stroke={color}
|
|
18
|
+
strokeWidth={strokeWidth}
|
|
19
|
+
strokeLinecap="round"
|
|
20
|
+
strokeLinejoin="round"
|
|
21
|
+
/>
|
|
22
|
+
</svg>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { TOTAL_GUESTS_PATH } from "./totalGuestsPath";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TotalGuestsIcon, TOTAL_GUESTS_PATH } from "./TotalGuestsIcon";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const TOTAL_GUESTS_PATH =
|
|
2
|
+
"M13.3346 2.8898C14.5694 3.50343 15.418 4.77762 15.418 6.25C15.418 7.72238 14.5694 8.99657 13.3346 9.6102M15.0013 13.972C16.2608 14.5419 17.3951 15.4708 18.3346 16.6667M1.66797 16.6667C3.29004 14.6021 5.49228 13.3333 7.91797 13.3333C10.3437 13.3333 12.5459 14.6021 14.168 16.6667M11.668 6.25C11.668 8.32107 9.98904 10 7.91797 10C5.8469 10 4.16797 8.32107 4.16797 6.25C4.16797 4.17893 5.8469 2.5 7.91797 2.5C9.98904 2.5 11.668 4.17893 11.668 6.25Z";
|
package/src/icons/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type { IconByNameProps } from "./Icon";
|
|
|
5
5
|
export { icons, iconNames, iconGroups, iconGroupNames, getIconsByGroup } from "./registry";
|
|
6
6
|
export { Icon } from "./Icon";
|
|
7
7
|
|
|
8
|
+
export { ActiveGuestsIcon } from "./ActiveGuests";
|
|
8
9
|
export { AmenityIcon } from "./Amenity";
|
|
9
10
|
export type { AmenityIconProps, AmenityName } from "./Amenity";
|
|
10
11
|
export { AlertTriangleIcon } from "./AlertTriangle";
|
|
@@ -13,6 +14,7 @@ export { ArrowLeftIcon } from "./ArrowLeft";
|
|
|
13
14
|
export { ArrowRightIcon } from "./ArrowRight";
|
|
14
15
|
export { BagIcon } from "./Bag";
|
|
15
16
|
export { BanIcon } from "./Ban";
|
|
17
|
+
export { BlockedGuestsIcon } from "./BlockedGuests";
|
|
16
18
|
export { BellIcon } from "./Bell";
|
|
17
19
|
export { BuildingIcon } from "./Building";
|
|
18
20
|
export { CalendarIcon } from "./Calendar";
|
|
@@ -101,6 +103,7 @@ export { StarFilledIcon } from "./StarFilled";
|
|
|
101
103
|
export { StarOutlineIcon } from "./StarOutline";
|
|
102
104
|
export { SunIcon } from "./Sun";
|
|
103
105
|
export { TableViewIcon } from "./TableView";
|
|
106
|
+
export { TotalGuestsIcon } from "./TotalGuests";
|
|
104
107
|
export { UserIcon } from "./User";
|
|
105
108
|
export { UsersAltIcon } from "./UsersAlt";
|
|
106
109
|
export { VideoIcon } from "./Video";
|
package/src/icons/registry.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { ActiveGuestsIcon } from "./ActiveGuests";
|
|
1
2
|
import { ArrowRightIcon } from "./ArrowRight";
|
|
2
3
|
import { AlertTriangleIcon } from "./AlertTriangle";
|
|
3
4
|
import { AppleIcon, GooglePlayIcon } from "./Store";
|
|
4
5
|
import { BagIcon } from "./Bag";
|
|
5
6
|
import { BanIcon } from "./Ban";
|
|
7
|
+
import { BlockedGuestsIcon } from "./BlockedGuests";
|
|
6
8
|
import { BellIcon } from "./Bell";
|
|
7
9
|
import { BuildingIcon } from "./Building";
|
|
8
10
|
import { CalendarIcon } from "./Calendar";
|
|
@@ -88,6 +90,7 @@ import { StarFilledIcon } from "./StarFilled";
|
|
|
88
90
|
import { StarOutlineIcon } from "./StarOutline";
|
|
89
91
|
import { SunIcon } from "./Sun";
|
|
90
92
|
import { TableViewIcon } from "./TableView";
|
|
93
|
+
import { TotalGuestsIcon } from "./TotalGuests";
|
|
91
94
|
import { UserIcon } from "./User";
|
|
92
95
|
import { UsersAltIcon } from "./UsersAlt";
|
|
93
96
|
import { VideoIcon } from "./Video";
|
|
@@ -97,12 +100,14 @@ import { ZoomOutIcon } from "./ZoomOut";
|
|
|
97
100
|
import type { IconComponent } from "./types";
|
|
98
101
|
|
|
99
102
|
export const icons = {
|
|
103
|
+
activeGuests: ActiveGuestsIcon,
|
|
100
104
|
alertTriangle: AlertTriangleIcon,
|
|
101
105
|
areaExpand: AreaExpandIcon,
|
|
102
106
|
apple: AppleIcon,
|
|
103
107
|
arrowRight: ArrowRightIcon,
|
|
104
108
|
bag: BagIcon,
|
|
105
109
|
ban: BanIcon,
|
|
110
|
+
blockedGuests: BlockedGuestsIcon,
|
|
106
111
|
bell: BellIcon,
|
|
107
112
|
building: BuildingIcon,
|
|
108
113
|
calendar: CalendarIcon,
|
|
@@ -178,6 +183,7 @@ export const icons = {
|
|
|
178
183
|
starOutline: StarOutlineIcon,
|
|
179
184
|
sun: SunIcon,
|
|
180
185
|
tableView: TableViewIcon,
|
|
186
|
+
totalGuests: TotalGuestsIcon,
|
|
181
187
|
tooltipArrow: TooltipArrowIcon,
|
|
182
188
|
trash: TrashIcon,
|
|
183
189
|
user: UserIcon,
|
|
@@ -268,6 +274,9 @@ export const iconGroups = {
|
|
|
268
274
|
"clock",
|
|
269
275
|
"clockFilled",
|
|
270
276
|
"guests",
|
|
277
|
+
"totalGuests",
|
|
278
|
+
"activeGuests",
|
|
279
|
+
"blockedGuests",
|
|
271
280
|
"lock",
|
|
272
281
|
"noPets",
|
|
273
282
|
"noSmoking",
|
package/src/index.ts
CHANGED
package/src/theme/typography.ts
CHANGED
|
@@ -156,7 +156,7 @@ export const selectTypography = {
|
|
|
156
156
|
},
|
|
157
157
|
} as const;
|
|
158
158
|
|
|
159
|
-
/** Avatar name / email / menu-item typography —
|
|
159
|
+
/** Avatar name / email / menu-item typography — compact line heights, 0 letter-spacing. */
|
|
160
160
|
export const avatarTypography = {
|
|
161
161
|
name: {
|
|
162
162
|
fontFamily: fonts.sans,
|
|
@@ -176,7 +176,7 @@ export const avatarTypography = {
|
|
|
176
176
|
fontFamily: fonts.sans,
|
|
177
177
|
fontSize: 12,
|
|
178
178
|
fontWeight: "600" as const,
|
|
179
|
-
lineHeight:
|
|
179
|
+
lineHeight: 20,
|
|
180
180
|
letterSpacing: 0,
|
|
181
181
|
},
|
|
182
182
|
} as const;
|