@ecohouse/ui 0.1.46 → 0.1.48

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecohouse/ui",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Cross-platform presentation-only UI components for EcoHouse (React Native + React Native Web)",
@@ -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
- // Half a cell so the bar meets the circle center, not past it.
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 widthPct = (last - first + 1) * cellPct;
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
- widthPct -= halfCellPct;
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 = {
@@ -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";
@@ -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 { UNLOCK_PATH } from "./unlockPath";
5
+
6
+ export { UNLOCK_PATH } from "./unlockPath";
7
+
8
+ export function UnlockIcon({ size = 16, color = colors.grey0, strokeWidth = 1.5 }: IconProps) {
9
+ return (
10
+ <Svg width={size} height={size} viewBox="0 0 16 16" fill="none">
11
+ <Path
12
+ d={UNLOCK_PATH}
13
+ stroke={color}
14
+ strokeWidth={strokeWidth}
15
+ strokeLinecap="round"
16
+ strokeLinejoin="round"
17
+ />
18
+ </Svg>
19
+ );
20
+ }
@@ -0,0 +1,26 @@
1
+ import { UNLOCK_PATH } from "./unlockPath";
2
+ import { colors } from "../../theme";
3
+ import type { IconProps } from "../types";
4
+
5
+ export function UnlockIcon({ size = 16, color = colors.grey0, strokeWidth = 1.5 }: IconProps) {
6
+ return (
7
+ <svg
8
+ width={size}
9
+ height={size}
10
+ viewBox="0 0 16 16"
11
+ fill="none"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ aria-hidden
14
+ >
15
+ <path
16
+ d={UNLOCK_PATH}
17
+ stroke={color}
18
+ strokeWidth={strokeWidth}
19
+ strokeLinecap="round"
20
+ strokeLinejoin="round"
21
+ />
22
+ </svg>
23
+ );
24
+ }
25
+
26
+ export { UNLOCK_PATH } from "./unlockPath";
@@ -0,0 +1 @@
1
+ export { UnlockIcon, UNLOCK_PATH } from "./UnlockIcon";
@@ -0,0 +1,2 @@
1
+ export const UNLOCK_PATH =
2
+ "M5.33333 7.33333V5.33333C5.33333 3.86057 6.52724 2.66667 8 2.66667C9.47276 2.66667 10.6667 3.86057 10.6667 5.33333M4 7.33333H12C12.7364 7.33333 13.3333 7.93029 13.3333 8.66667V12.6667C13.3333 13.403 12.7364 14 12 14H4C3.26362 14 2.66667 13.403 2.66667 12.6667V8.66667C2.66667 7.93029 3.26362 7.33333 4 7.33333Z";
@@ -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,8 @@ 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";
107
+ export { UnlockIcon } from "./Unlock";
104
108
  export { UserIcon } from "./User";
105
109
  export { UsersAltIcon } from "./UsersAlt";
106
110
  export { VideoIcon } from "./Video";
@@ -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,8 @@ 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";
94
+ import { UnlockIcon } from "./Unlock";
91
95
  import { UserIcon } from "./User";
92
96
  import { UsersAltIcon } from "./UsersAlt";
93
97
  import { VideoIcon } from "./Video";
@@ -97,12 +101,14 @@ import { ZoomOutIcon } from "./ZoomOut";
97
101
  import type { IconComponent } from "./types";
98
102
 
99
103
  export const icons = {
104
+ activeGuests: ActiveGuestsIcon,
100
105
  alertTriangle: AlertTriangleIcon,
101
106
  areaExpand: AreaExpandIcon,
102
107
  apple: AppleIcon,
103
108
  arrowRight: ArrowRightIcon,
104
109
  bag: BagIcon,
105
110
  ban: BanIcon,
111
+ blockedGuests: BlockedGuestsIcon,
106
112
  bell: BellIcon,
107
113
  building: BuildingIcon,
108
114
  calendar: CalendarIcon,
@@ -178,8 +184,10 @@ export const icons = {
178
184
  starOutline: StarOutlineIcon,
179
185
  sun: SunIcon,
180
186
  tableView: TableViewIcon,
187
+ totalGuests: TotalGuestsIcon,
181
188
  tooltipArrow: TooltipArrowIcon,
182
189
  trash: TrashIcon,
190
+ unlock: UnlockIcon,
183
191
  user: UserIcon,
184
192
  usersAlt: UsersAltIcon,
185
193
  video: VideoIcon,
@@ -268,6 +276,9 @@ export const iconGroups = {
268
276
  "clock",
269
277
  "clockFilled",
270
278
  "guests",
279
+ "totalGuests",
280
+ "activeGuests",
281
+ "blockedGuests",
271
282
  "lock",
272
283
  "noPets",
273
284
  "noSmoking",
@@ -275,6 +286,7 @@ export const iconGroups = {
275
286
  "qrCode",
276
287
  "quietHours",
277
288
  "trash",
289
+ "unlock",
278
290
  "user",
279
291
  "usersAlt",
280
292
  "video",
package/src/index.ts CHANGED
@@ -216,8 +216,12 @@ export {
216
216
  StarOutlineIcon,
217
217
  SunIcon,
218
218
  TableViewIcon,
219
+ UnlockIcon,
219
220
  UserIcon,
220
221
  UsersAltIcon,
222
+ TotalGuestsIcon,
223
+ ActiveGuestsIcon,
224
+ BlockedGuestsIcon,
221
225
  VideoIcon,
222
226
  VideoOffIcon,
223
227
  WasherIcon,