@hanzo/booker 8.3.0 → 8.3.2

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.
Files changed (166) hide show
  1. package/README.md +6 -6
  2. package/dist/cjs/Booker.js +23 -0
  3. package/dist/cjs/Booker.js.map +1 -0
  4. package/dist/cjs/BookingForm.js +32 -0
  5. package/dist/cjs/BookingForm.js.map +1 -0
  6. package/dist/cjs/CalendarEmbed.js +20 -0
  7. package/dist/cjs/CalendarEmbed.js.map +1 -0
  8. package/dist/cjs/Confirmation.js +34 -0
  9. package/dist/cjs/Confirmation.js.map +1 -0
  10. package/dist/cjs/EventHeader.js +31 -0
  11. package/dist/cjs/EventHeader.js.map +1 -0
  12. package/dist/cjs/MonthCalendar.js +24 -0
  13. package/dist/cjs/MonthCalendar.js.map +1 -0
  14. package/dist/cjs/TimeSlots.js +21 -0
  15. package/dist/cjs/TimeSlots.js.map +1 -0
  16. package/dist/cjs/client.js +113 -0
  17. package/dist/cjs/client.js.map +1 -0
  18. package/dist/cjs/hooks.js +121 -0
  19. package/dist/cjs/hooks.js.map +1 -0
  20. package/dist/cjs/index.js +55 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/package.json +1 -0
  23. package/dist/cjs/time.js +129 -0
  24. package/dist/cjs/time.js.map +1 -0
  25. package/dist/cjs/useBooker.js +135 -0
  26. package/dist/cjs/useBooker.js.map +1 -0
  27. package/dist/esm/Booker.js +20 -0
  28. package/dist/esm/Booker.js.map +1 -0
  29. package/dist/esm/BookingForm.js +29 -0
  30. package/dist/esm/BookingForm.js.map +1 -0
  31. package/dist/esm/CalendarEmbed.js +17 -0
  32. package/dist/esm/CalendarEmbed.js.map +1 -0
  33. package/dist/esm/Confirmation.js +31 -0
  34. package/dist/esm/Confirmation.js.map +1 -0
  35. package/dist/esm/EventHeader.js +28 -0
  36. package/dist/esm/EventHeader.js.map +1 -0
  37. package/dist/esm/MonthCalendar.js +21 -0
  38. package/dist/esm/MonthCalendar.js.map +1 -0
  39. package/dist/esm/TimeSlots.js +18 -0
  40. package/dist/esm/TimeSlots.js.map +1 -0
  41. package/dist/esm/client.js +104 -0
  42. package/dist/esm/client.js.map +1 -0
  43. package/dist/esm/hooks.js +115 -0
  44. package/dist/esm/hooks.js.map +1 -0
  45. package/dist/esm/index.js +18 -13
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/time.js +113 -0
  48. package/dist/esm/time.js.map +1 -0
  49. package/dist/esm/useBooker.js +132 -0
  50. package/dist/esm/useBooker.js.map +1 -0
  51. package/package.json +28 -28
  52. package/src/Booker.tsx +7 -7
  53. package/src/BookingForm.tsx +2 -2
  54. package/src/CalendarEmbed.tsx +7 -7
  55. package/src/Confirmation.tsx +4 -4
  56. package/src/EventHeader.tsx +1 -1
  57. package/src/MonthCalendar.tsx +1 -1
  58. package/src/TimeSlots.tsx +2 -2
  59. package/src/hooks.ts +1 -1
  60. package/src/index.ts +11 -11
  61. package/src/useBooker.ts +9 -4
  62. package/types/Booker.d.ts +2 -2
  63. package/types/Booker.d.ts.map +1 -1
  64. package/types/BookingForm.d.ts +2 -2
  65. package/types/BookingForm.d.ts.map +1 -1
  66. package/types/CalendarEmbed.d.ts +2 -2
  67. package/types/CalendarEmbed.d.ts.map +1 -1
  68. package/types/Confirmation.d.ts +2 -2
  69. package/types/Confirmation.d.ts.map +1 -1
  70. package/types/EventHeader.d.ts +2 -2
  71. package/types/EventHeader.d.ts.map +1 -1
  72. package/types/MonthCalendar.d.ts +1 -1
  73. package/types/MonthCalendar.d.ts.map +1 -1
  74. package/types/TimeSlots.d.ts +2 -2
  75. package/types/TimeSlots.d.ts.map +1 -1
  76. package/types/client.d.ts.map +1 -1
  77. package/types/hooks.d.ts +1 -1
  78. package/types/hooks.d.ts.map +1 -1
  79. package/types/index.d.ts +11 -11
  80. package/types/index.d.ts.map +1 -1
  81. package/types/useBooker.d.ts +3 -3
  82. package/types/useBooker.d.ts.map +1 -1
  83. package/dist/cjs/Booker.cjs +0 -153
  84. package/dist/cjs/Booker.native.js +0 -158
  85. package/dist/cjs/Booker.native.js.map +0 -1
  86. package/dist/cjs/BookingForm.cjs +0 -197
  87. package/dist/cjs/BookingForm.native.js +0 -203
  88. package/dist/cjs/BookingForm.native.js.map +0 -1
  89. package/dist/cjs/CalendarEmbed.cjs +0 -121
  90. package/dist/cjs/CalendarEmbed.native.js +0 -125
  91. package/dist/cjs/CalendarEmbed.native.js.map +0 -1
  92. package/dist/cjs/Confirmation.cjs +0 -177
  93. package/dist/cjs/Confirmation.native.js +0 -185
  94. package/dist/cjs/Confirmation.native.js.map +0 -1
  95. package/dist/cjs/EventHeader.cjs +0 -112
  96. package/dist/cjs/EventHeader.native.js +0 -118
  97. package/dist/cjs/EventHeader.native.js.map +0 -1
  98. package/dist/cjs/MonthCalendar.cjs +0 -177
  99. package/dist/cjs/MonthCalendar.native.js +0 -191
  100. package/dist/cjs/MonthCalendar.native.js.map +0 -1
  101. package/dist/cjs/TimeSlots.cjs +0 -119
  102. package/dist/cjs/TimeSlots.native.js +0 -126
  103. package/dist/cjs/TimeSlots.native.js.map +0 -1
  104. package/dist/cjs/client.cjs +0 -136
  105. package/dist/cjs/client.native.js +0 -267
  106. package/dist/cjs/client.native.js.map +0 -1
  107. package/dist/cjs/hooks.cjs +0 -193
  108. package/dist/cjs/hooks.native.js +0 -221
  109. package/dist/cjs/hooks.native.js.map +0 -1
  110. package/dist/cjs/index.cjs +0 -71
  111. package/dist/cjs/index.native.js +0 -74
  112. package/dist/cjs/index.native.js.map +0 -1
  113. package/dist/cjs/time.cjs +0 -145
  114. package/dist/cjs/time.native.js +0 -150
  115. package/dist/cjs/time.native.js.map +0 -1
  116. package/dist/cjs/useBooker.cjs +0 -151
  117. package/dist/cjs/useBooker.native.js +0 -173
  118. package/dist/cjs/useBooker.native.js.map +0 -1
  119. package/dist/esm/Booker.mjs +0 -128
  120. package/dist/esm/Booker.mjs.map +0 -1
  121. package/dist/esm/Booker.native.js +0 -130
  122. package/dist/esm/Booker.native.js.map +0 -1
  123. package/dist/esm/BookingForm.mjs +0 -172
  124. package/dist/esm/BookingForm.mjs.map +0 -1
  125. package/dist/esm/BookingForm.native.js +0 -175
  126. package/dist/esm/BookingForm.native.js.map +0 -1
  127. package/dist/esm/CalendarEmbed.mjs +0 -96
  128. package/dist/esm/CalendarEmbed.mjs.map +0 -1
  129. package/dist/esm/CalendarEmbed.native.js +0 -97
  130. package/dist/esm/CalendarEmbed.native.js.map +0 -1
  131. package/dist/esm/Confirmation.mjs +0 -152
  132. package/dist/esm/Confirmation.mjs.map +0 -1
  133. package/dist/esm/Confirmation.native.js +0 -157
  134. package/dist/esm/Confirmation.native.js.map +0 -1
  135. package/dist/esm/EventHeader.mjs +0 -87
  136. package/dist/esm/EventHeader.mjs.map +0 -1
  137. package/dist/esm/EventHeader.native.js +0 -90
  138. package/dist/esm/EventHeader.native.js.map +0 -1
  139. package/dist/esm/MonthCalendar.mjs +0 -152
  140. package/dist/esm/MonthCalendar.mjs.map +0 -1
  141. package/dist/esm/MonthCalendar.native.js +0 -163
  142. package/dist/esm/MonthCalendar.native.js.map +0 -1
  143. package/dist/esm/TimeSlots.mjs +0 -94
  144. package/dist/esm/TimeSlots.mjs.map +0 -1
  145. package/dist/esm/TimeSlots.native.js +0 -98
  146. package/dist/esm/TimeSlots.native.js.map +0 -1
  147. package/dist/esm/client.mjs +0 -104
  148. package/dist/esm/client.mjs.map +0 -1
  149. package/dist/esm/client.native.js +0 -232
  150. package/dist/esm/client.native.js.map +0 -1
  151. package/dist/esm/hooks.mjs +0 -165
  152. package/dist/esm/hooks.mjs.map +0 -1
  153. package/dist/esm/hooks.native.js +0 -190
  154. package/dist/esm/hooks.native.js.map +0 -1
  155. package/dist/esm/index.mjs +0 -13
  156. package/dist/esm/index.mjs.map +0 -1
  157. package/dist/esm/index.native.js +0 -13
  158. package/dist/esm/index.native.js.map +0 -1
  159. package/dist/esm/time.mjs +0 -107
  160. package/dist/esm/time.mjs.map +0 -1
  161. package/dist/esm/time.native.js +0 -109
  162. package/dist/esm/time.native.js.map +0 -1
  163. package/dist/esm/useBooker.mjs +0 -126
  164. package/dist/esm/useBooker.mjs.map +0 -1
  165. package/dist/esm/useBooker.native.js +0 -145
  166. package/dist/esm/useBooker.native.js.map +0 -1
@@ -1,128 +0,0 @@
1
- import { SizableText, Spinner, XStack, YStack } from "@hanzo/gui";
2
- import { BookingForm } from "./BookingForm.mjs";
3
- import { Confirmation } from "./Confirmation.mjs";
4
- import { EventHeader } from "./EventHeader.mjs";
5
- import { MonthCalendar } from "./MonthCalendar.mjs";
6
- import { TimeSlots } from "./TimeSlots.mjs";
7
- import { useBooker } from "./useBooker.mjs";
8
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
- function Booker(props) {
10
- const m = useBooker(props);
11
- return /* @__PURE__ */jsx(YStack, {
12
- backgroundColor: "$background",
13
- borderColor: "$borderColor",
14
- borderWidth: 1,
15
- borderRadius: "$6",
16
- padding: "$4",
17
- gap: "$4",
18
- width: "100%",
19
- maxWidth: 860,
20
- alignSelf: "center",
21
- children: m.event.loading ? /* @__PURE__ */jsxs(StatePanel, {
22
- children: [/* @__PURE__ */jsx(Spinner, {
23
- size: "large",
24
- color: "$color9"
25
- }), /* @__PURE__ */jsx(SizableText, {
26
- size: "$3",
27
- color: "$color10",
28
- children: "Loading\u2026"
29
- })]
30
- }) : m.event.error || !m.event.data ? /* @__PURE__ */jsxs(StatePanel, {
31
- children: [/* @__PURE__ */jsx(SizableText, {
32
- size: "$5",
33
- fontWeight: "600",
34
- color: "$color12",
35
- children: "Couldn't load this event"
36
- }), /* @__PURE__ */jsx(SizableText, {
37
- size: "$3",
38
- color: "$color10",
39
- textAlign: "center",
40
- children: m.event.error ?? "The event type was not found."
41
- })]
42
- }) : m.phase === "done" && m.booking ? /* @__PURE__ */jsx(Confirmation, {
43
- booking: m.booking,
44
- timeZone: m.timeZone,
45
- onDone: m.reset
46
- }) : /* @__PURE__ */jsxs(YStack, {
47
- gap: "$4",
48
- children: [/* @__PURE__ */jsx(EventHeader, {
49
- event: m.event.data,
50
- host: props.host,
51
- timeZone: m.timeZone,
52
- compact: m.phase === "form"
53
- }), m.phase === "form" && m.selectedSlot ? /* @__PURE__ */jsx(BookingForm, {
54
- slotIso: m.selectedSlot,
55
- timeZone: m.timeZone,
56
- eventLength: m.event.data.length,
57
- submitting: m.submitting,
58
- error: m.error,
59
- onSubmit: m.submit,
60
- onBack: m.back
61
- }) : /* @__PURE__ */jsxs(Fragment, {
62
- children: [m.conflict ? /* @__PURE__ */jsx(JustTakenBanner, {}) : null, m.slots.error ? /* @__PURE__ */jsxs(SizableText, {
63
- size: "$2",
64
- color: "$red10",
65
- children: ["Couldn't load availability: ", m.slots.error]
66
- }) : null, /* @__PURE__ */jsxs(XStack, {
67
- gap: "$5",
68
- flexDirection: "column",
69
- $sm: {
70
- flexDirection: "row"
71
- },
72
- alignItems: "flex-start",
73
- children: [/* @__PURE__ */jsx(MonthCalendar, {
74
- viewDate: m.viewDate,
75
- availableKeys: m.availableKeys,
76
- selectedDay: m.selectedDay,
77
- onSelectDay: m.selectDay,
78
- onPrev: m.goPrevMonth,
79
- onNext: m.goNextMonth,
80
- atFirstMonth: m.atFirstMonth,
81
- weekStartsOn: m.weekStartsOn,
82
- loading: m.slots.loading
83
- }), /* @__PURE__ */jsx(TimeSlots, {
84
- dayKey: m.selectedDay,
85
- slots: m.daySlots,
86
- timeZone: m.timeZone,
87
- onPick: m.selectSlot,
88
- selectedIso: m.selectedSlot,
89
- loading: m.slots.loading && !m.selectedDay
90
- })]
91
- }), m.availableKeys.size === 0 && !m.slots.loading && !m.slots.error ? /* @__PURE__ */jsx(SizableText, {
92
- size: "$3",
93
- color: "$color10",
94
- textAlign: "center",
95
- children: "No availability this month \u2014 try the next month."
96
- }) : null]
97
- })]
98
- })
99
- });
100
- }
101
- function StatePanel({
102
- children
103
- }) {
104
- return /* @__PURE__ */jsx(YStack, {
105
- alignItems: "center",
106
- justifyContent: "center",
107
- gap: "$3",
108
- padding: "$8",
109
- minHeight: 220,
110
- children
111
- });
112
- }
113
- function JustTakenBanner() {
114
- return /* @__PURE__ */jsx(YStack, {
115
- backgroundColor: "$yellow3",
116
- borderColor: "$yellow6",
117
- borderWidth: 1,
118
- borderRadius: "$4",
119
- padding: "$2.5",
120
- children: /* @__PURE__ */jsx(SizableText, {
121
- size: "$2",
122
- color: "$yellow11",
123
- children: "That time was just taken. We refreshed the calendar \u2014 please pick another."
124
- })
125
- });
126
- }
127
- export { Booker };
128
- //# sourceMappingURL=Booker.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["SizableText","Spinner","XStack","YStack","BookingForm","Confirmation","EventHeader","MonthCalendar","TimeSlots","useBooker","Fragment","jsx","jsxs","Booker","props","m","backgroundColor","borderColor","borderWidth","borderRadius","padding","gap","width","maxWidth","alignSelf","children","event","loading","StatePanel","size","color","error","data","fontWeight","textAlign","phase","booking","timeZone","onDone","reset","host","compact","selectedSlot","slotIso","eventLength","length","submitting","onSubmit","submit","onBack","back","conflict","JustTakenBanner","slots","flexDirection","$sm","alignItems","viewDate","availableKeys","selectedDay","onSelectDay","selectDay","onPrev","goPrevMonth","onNext","goNextMonth","atFirstMonth","weekStartsOn","dayKey","daySlots","onPick","selectSlot","selectedIso","justifyContent","minHeight"],"sources":["../../src/Booker.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,130 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { SizableText, Spinner, XStack, YStack } from "@hanzo/gui";
3
- import { BookingForm } from "./BookingForm.native.js";
4
- import { Confirmation } from "./Confirmation.native.js";
5
- import { EventHeader } from "./EventHeader.native.js";
6
- import { MonthCalendar } from "./MonthCalendar.native.js";
7
- import { TimeSlots } from "./TimeSlots.native.js";
8
- import { useBooker } from "./useBooker.native.js";
9
- function Booker(props) {
10
- var m = useBooker(props);
11
- var _m_event_error;
12
- return /* @__PURE__ */_jsx(YStack, {
13
- backgroundColor: "$background",
14
- borderColor: "$borderColor",
15
- borderWidth: 1,
16
- borderRadius: "$6",
17
- padding: "$4",
18
- gap: "$4",
19
- width: "100%",
20
- maxWidth: 860,
21
- alignSelf: "center",
22
- children: m.event.loading ? /* @__PURE__ */_jsxs(StatePanel, {
23
- children: [/* @__PURE__ */_jsx(Spinner, {
24
- size: "large",
25
- color: "$color9"
26
- }), /* @__PURE__ */_jsx(SizableText, {
27
- size: "$3",
28
- color: "$color10",
29
- children: "Loading\u2026"
30
- })]
31
- }) : m.event.error || !m.event.data ? /* @__PURE__ */_jsxs(StatePanel, {
32
- children: [/* @__PURE__ */_jsx(SizableText, {
33
- size: "$5",
34
- fontWeight: "600",
35
- color: "$color12",
36
- children: "Couldn't load this event"
37
- }), /* @__PURE__ */_jsx(SizableText, {
38
- size: "$3",
39
- color: "$color10",
40
- textAlign: "center",
41
- children: (_m_event_error = m.event.error) !== null && _m_event_error !== void 0 ? _m_event_error : "The event type was not found."
42
- })]
43
- }) : m.phase === "done" && m.booking ? /* @__PURE__ */_jsx(Confirmation, {
44
- booking: m.booking,
45
- timeZone: m.timeZone,
46
- onDone: m.reset
47
- }) : /* @__PURE__ */_jsxs(YStack, {
48
- gap: "$4",
49
- children: [/* @__PURE__ */_jsx(EventHeader, {
50
- event: m.event.data,
51
- host: props.host,
52
- timeZone: m.timeZone,
53
- compact: m.phase === "form"
54
- }), m.phase === "form" && m.selectedSlot ? /* @__PURE__ */_jsx(BookingForm, {
55
- slotIso: m.selectedSlot,
56
- timeZone: m.timeZone,
57
- eventLength: m.event.data.length,
58
- submitting: m.submitting,
59
- error: m.error,
60
- onSubmit: m.submit,
61
- onBack: m.back
62
- }) : /* @__PURE__ */_jsxs(_Fragment, {
63
- children: [m.conflict ? /* @__PURE__ */_jsx(JustTakenBanner, {}) : null, m.slots.error ? /* @__PURE__ */_jsxs(SizableText, {
64
- size: "$2",
65
- color: "$red10",
66
- children: ["Couldn't load availability: ", m.slots.error]
67
- }) : null, /* @__PURE__ */_jsxs(XStack, {
68
- gap: "$5",
69
- flexDirection: "column",
70
- $sm: {
71
- flexDirection: "row"
72
- },
73
- alignItems: "flex-start",
74
- children: [/* @__PURE__ */_jsx(MonthCalendar, {
75
- viewDate: m.viewDate,
76
- availableKeys: m.availableKeys,
77
- selectedDay: m.selectedDay,
78
- onSelectDay: m.selectDay,
79
- onPrev: m.goPrevMonth,
80
- onNext: m.goNextMonth,
81
- atFirstMonth: m.atFirstMonth,
82
- weekStartsOn: m.weekStartsOn,
83
- loading: m.slots.loading
84
- }), /* @__PURE__ */_jsx(TimeSlots, {
85
- dayKey: m.selectedDay,
86
- slots: m.daySlots,
87
- timeZone: m.timeZone,
88
- onPick: m.selectSlot,
89
- selectedIso: m.selectedSlot,
90
- loading: m.slots.loading && !m.selectedDay
91
- })]
92
- }), m.availableKeys.size === 0 && !m.slots.loading && !m.slots.error ? /* @__PURE__ */_jsx(SizableText, {
93
- size: "$3",
94
- color: "$color10",
95
- textAlign: "center",
96
- children: "No availability this month \u2014 try the next month."
97
- }) : null]
98
- })]
99
- })
100
- });
101
- }
102
- function StatePanel(param) {
103
- var {
104
- children
105
- } = param;
106
- return /* @__PURE__ */_jsx(YStack, {
107
- alignItems: "center",
108
- justifyContent: "center",
109
- gap: "$3",
110
- padding: "$8",
111
- minHeight: 220,
112
- children
113
- });
114
- }
115
- function JustTakenBanner() {
116
- return /* @__PURE__ */_jsx(YStack, {
117
- backgroundColor: "$yellow3",
118
- borderColor: "$yellow6",
119
- borderWidth: 1,
120
- borderRadius: "$4",
121
- padding: "$2.5",
122
- children: /* @__PURE__ */_jsx(SizableText, {
123
- size: "$2",
124
- color: "$yellow11",
125
- children: "That time was just taken. We refreshed the calendar \u2014 please pick another."
126
- })
127
- });
128
- }
129
- export { Booker };
130
- //# sourceMappingURL=Booker.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SizableText","Spinner","XStack","YStack","BookingForm","Confirmation","EventHeader","MonthCalendar","TimeSlots","useBooker","Booker","props","m","_m_event_error","backgroundColor","borderColor","borderWidth","borderRadius","padding","gap","width","maxWidth","alignSelf","children","event","loading","StatePanel","size","color","error","data","fontWeight","textAlign","phase","booking","timeZone","onDone","reset","host","compact","selectedSlot","slotIso","eventLength","length","submitting","onSubmit","submit","onBack","back","conflict","JustTakenBanner","slots","flexDirection","$sm","alignItems","viewDate","availableKeys","selectedDay","onSelectDay","selectDay","onPrev","goPrevMonth","onNext","goNextMonth","atFirstMonth","weekStartsOn","dayKey","daySlots","onPick","selectSlot","selectedIso","param"],"sources":["../../src/Booker.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,172 +0,0 @@
1
- import { useState } from "react";
2
- import { Button, Input, SizableText, TextArea, XStack, YStack } from "@hanzo/gui";
3
- import { formatBookingWhen } from "./time.mjs";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
- const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
6
- function BookingForm({
7
- slotIso,
8
- timeZone,
9
- eventLength,
10
- submitting,
11
- error,
12
- onSubmit,
13
- onBack
14
- }) {
15
- const [name, setName] = useState("");
16
- const [email, setEmail] = useState("");
17
- const [notes, setNotes] = useState("");
18
- const [touched, setTouched] = useState(false);
19
- const nameValid = name.trim().length > 0;
20
- const emailValid = EMAIL_RE.test(email.trim());
21
- const valid = nameValid && emailValid;
22
- const submit = () => {
23
- setTouched(true);
24
- if (!valid || submitting) return;
25
- onSubmit({
26
- name: name.trim(),
27
- email: email.trim(),
28
- notes: notes.trim() || void 0
29
- });
30
- };
31
- return /* @__PURE__ */jsxs(YStack, {
32
- gap: "$3",
33
- flex: 1,
34
- minWidth: 240,
35
- children: [/* @__PURE__ */jsxs(YStack, {
36
- gap: "$1",
37
- children: [/* @__PURE__ */jsxs(XStack, {
38
- alignItems: "center",
39
- gap: "$2",
40
- children: [/* @__PURE__ */jsx(BackLink, {
41
- onPress: onBack
42
- }), /* @__PURE__ */jsx(SizableText, {
43
- size: "$5",
44
- fontWeight: "700",
45
- color: "$color12",
46
- children: "Enter details"
47
- })]
48
- }), /* @__PURE__ */jsxs(SizableText, {
49
- size: "$3",
50
- color: "$color11",
51
- children: [formatBookingWhen(slotIso, timeZone), " \xB7 ", eventLength, " min"]
52
- })]
53
- }), /* @__PURE__ */jsx(Field, {
54
- label: "Name",
55
- required: true,
56
- invalid: touched && !nameValid,
57
- hint: "Please enter your name",
58
- children: /* @__PURE__ */jsx(Input, {
59
- value: name,
60
- onChangeText: setName,
61
- placeholder: "Ada Lovelace",
62
- autoComplete: "name",
63
- size: "$4"
64
- })
65
- }), /* @__PURE__ */jsx(Field, {
66
- label: "Email",
67
- required: true,
68
- invalid: touched && !emailValid,
69
- hint: "Please enter a valid email",
70
- children: /* @__PURE__ */jsx(Input, {
71
- value: email,
72
- onChangeText: setEmail,
73
- placeholder: "ada@example.com",
74
- keyboardType: "email-address",
75
- autoCapitalize: "none",
76
- autoComplete: "email",
77
- size: "$4"
78
- })
79
- }), /* @__PURE__ */jsx(Field, {
80
- label: "Notes",
81
- hint: "Optional",
82
- children: /* @__PURE__ */jsx(TextArea, {
83
- value: notes,
84
- onChangeText: setNotes,
85
- placeholder: "Anything that would help prepare?",
86
- numberOfLines: 3,
87
- size: "$4"
88
- })
89
- }), error ? /* @__PURE__ */jsx(YStack, {
90
- backgroundColor: "$red3",
91
- borderColor: "$red6",
92
- borderWidth: 1,
93
- borderRadius: "$4",
94
- padding: "$2.5",
95
- children: /* @__PURE__ */jsx(SizableText, {
96
- size: "$2",
97
- color: "$red11",
98
- children: error
99
- })
100
- }) : null, /* @__PURE__ */jsxs(XStack, {
101
- gap: "$2",
102
- justifyContent: "flex-end",
103
- marginTop: "$1",
104
- children: [/* @__PURE__ */jsx(Button, {
105
- size: "$4",
106
- chromeless: true,
107
- onPress: onBack,
108
- disabled: submitting,
109
- children: "Back"
110
- }), /* @__PURE__ */jsx(Button, {
111
- size: "$4",
112
- theme: "blue",
113
- onPress: submit,
114
- disabled: submitting || touched && !valid,
115
- opacity: submitting ? 0.7 : 1,
116
- children: submitting ? "Booking\u2026" : "Confirm booking"
117
- })]
118
- })]
119
- });
120
- }
121
- function Field({
122
- label,
123
- required,
124
- invalid,
125
- hint,
126
- children
127
- }) {
128
- return /* @__PURE__ */jsxs(YStack, {
129
- gap: "$1.5",
130
- children: [/* @__PURE__ */jsxs(SizableText, {
131
- size: "$2",
132
- color: "$color11",
133
- fontWeight: "600",
134
- children: [label, required ? /* @__PURE__ */jsx(SizableText, {
135
- color: "$red10",
136
- children: " *"
137
- }) : null]
138
- }), children, invalid && hint ? /* @__PURE__ */jsx(SizableText, {
139
- size: "$1",
140
- color: "$red10",
141
- children: hint
142
- }) : null]
143
- });
144
- }
145
- function BackLink({
146
- onPress
147
- }) {
148
- return /* @__PURE__ */jsx(YStack, {
149
- width: 30,
150
- height: 30,
151
- alignItems: "center",
152
- justifyContent: "center",
153
- borderRadius: "$4",
154
- cursor: "pointer",
155
- hoverStyle: {
156
- backgroundColor: "$color4"
157
- },
158
- pressStyle: {
159
- backgroundColor: "$color6"
160
- },
161
- onPress,
162
- "aria-label": "Back",
163
- role: "button",
164
- children: /* @__PURE__ */jsx(SizableText, {
165
- size: "$6",
166
- color: "$color11",
167
- children: "\u2039"
168
- })
169
- });
170
- }
171
- export { BookingForm };
172
- //# sourceMappingURL=BookingForm.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useState","Button","Input","SizableText","TextArea","XStack","YStack","formatBookingWhen","jsx","jsxs","EMAIL_RE","BookingForm","slotIso","timeZone","eventLength","submitting","error","onSubmit","onBack","name","setName","email","setEmail","notes","setNotes","touched","setTouched","nameValid","trim","length","emailValid","test","valid","submit","gap","flex","minWidth","children","alignItems","BackLink","onPress","size","fontWeight","color","Field","label","required","invalid","hint","value","onChangeText","placeholder","autoComplete","keyboardType","autoCapitalize","numberOfLines","backgroundColor","borderColor","borderWidth","borderRadius","padding","justifyContent","marginTop","chromeless","disabled","theme","opacity","width","height","cursor","hoverStyle","pressStyle","role"],"sources":["../../src/BookingForm.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,175 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { Button, Input, SizableText, TextArea, XStack, YStack } from "@hanzo/gui";
4
- import { formatBookingWhen } from "./time.native.js";
5
- var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
6
- function BookingForm(param) {
7
- var {
8
- slotIso,
9
- timeZone,
10
- eventLength,
11
- submitting,
12
- error,
13
- onSubmit,
14
- onBack
15
- } = param;
16
- var [name, setName] = useState("");
17
- var [email, setEmail] = useState("");
18
- var [notes, setNotes] = useState("");
19
- var [touched, setTouched] = useState(false);
20
- var nameValid = name.trim().length > 0;
21
- var emailValid = EMAIL_RE.test(email.trim());
22
- var valid = nameValid && emailValid;
23
- var submit = function () {
24
- setTouched(true);
25
- if (!valid || submitting) return;
26
- onSubmit({
27
- name: name.trim(),
28
- email: email.trim(),
29
- notes: notes.trim() || void 0
30
- });
31
- };
32
- return /* @__PURE__ */_jsxs(YStack, {
33
- gap: "$3",
34
- flex: 1,
35
- minWidth: 240,
36
- children: [/* @__PURE__ */_jsxs(YStack, {
37
- gap: "$1",
38
- children: [/* @__PURE__ */_jsxs(XStack, {
39
- alignItems: "center",
40
- gap: "$2",
41
- children: [/* @__PURE__ */_jsx(BackLink, {
42
- onPress: onBack
43
- }), /* @__PURE__ */_jsx(SizableText, {
44
- size: "$5",
45
- fontWeight: "700",
46
- color: "$color12",
47
- children: "Enter details"
48
- })]
49
- }), /* @__PURE__ */_jsxs(SizableText, {
50
- size: "$3",
51
- color: "$color11",
52
- children: [formatBookingWhen(slotIso, timeZone), " \xB7 ", eventLength, " min"]
53
- })]
54
- }), /* @__PURE__ */_jsx(Field, {
55
- label: "Name",
56
- required: true,
57
- invalid: touched && !nameValid,
58
- hint: "Please enter your name",
59
- children: /* @__PURE__ */_jsx(Input, {
60
- value: name,
61
- onChangeText: setName,
62
- placeholder: "Ada Lovelace",
63
- autoComplete: "name",
64
- size: "$4"
65
- })
66
- }), /* @__PURE__ */_jsx(Field, {
67
- label: "Email",
68
- required: true,
69
- invalid: touched && !emailValid,
70
- hint: "Please enter a valid email",
71
- children: /* @__PURE__ */_jsx(Input, {
72
- value: email,
73
- onChangeText: setEmail,
74
- placeholder: "ada@example.com",
75
- keyboardType: "email-address",
76
- autoCapitalize: "none",
77
- autoComplete: "email",
78
- size: "$4"
79
- })
80
- }), /* @__PURE__ */_jsx(Field, {
81
- label: "Notes",
82
- hint: "Optional",
83
- children: /* @__PURE__ */_jsx(TextArea, {
84
- value: notes,
85
- onChangeText: setNotes,
86
- placeholder: "Anything that would help prepare?",
87
- numberOfLines: 3,
88
- size: "$4"
89
- })
90
- }), error ? /* @__PURE__ */_jsx(YStack, {
91
- backgroundColor: "$red3",
92
- borderColor: "$red6",
93
- borderWidth: 1,
94
- borderRadius: "$4",
95
- padding: "$2.5",
96
- children: /* @__PURE__ */_jsx(SizableText, {
97
- size: "$2",
98
- color: "$red11",
99
- children: error
100
- })
101
- }) : null, /* @__PURE__ */_jsxs(XStack, {
102
- gap: "$2",
103
- justifyContent: "flex-end",
104
- marginTop: "$1",
105
- children: [/* @__PURE__ */_jsx(Button, {
106
- size: "$4",
107
- chromeless: true,
108
- onPress: onBack,
109
- disabled: submitting,
110
- children: "Back"
111
- }), /* @__PURE__ */_jsx(Button, {
112
- size: "$4",
113
- theme: "blue",
114
- onPress: submit,
115
- disabled: submitting || touched && !valid,
116
- opacity: submitting ? 0.7 : 1,
117
- children: submitting ? "Booking\u2026" : "Confirm booking"
118
- })]
119
- })]
120
- });
121
- }
122
- function Field(param) {
123
- var {
124
- label,
125
- required,
126
- invalid,
127
- hint,
128
- children
129
- } = param;
130
- return /* @__PURE__ */_jsxs(YStack, {
131
- gap: "$1.5",
132
- children: [/* @__PURE__ */_jsxs(SizableText, {
133
- size: "$2",
134
- color: "$color11",
135
- fontWeight: "600",
136
- children: [label, required ? /* @__PURE__ */_jsx(SizableText, {
137
- color: "$red10",
138
- children: " *"
139
- }) : null]
140
- }), children, invalid && hint ? /* @__PURE__ */_jsx(SizableText, {
141
- size: "$1",
142
- color: "$red10",
143
- children: hint
144
- }) : null]
145
- });
146
- }
147
- function BackLink(param) {
148
- var {
149
- onPress
150
- } = param;
151
- return /* @__PURE__ */_jsx(YStack, {
152
- width: 30,
153
- height: 30,
154
- alignItems: "center",
155
- justifyContent: "center",
156
- borderRadius: "$4",
157
- cursor: "pointer",
158
- hoverStyle: {
159
- backgroundColor: "$color4"
160
- },
161
- pressStyle: {
162
- backgroundColor: "$color6"
163
- },
164
- onPress,
165
- "aria-label": "Back",
166
- role: "button",
167
- children: /* @__PURE__ */_jsx(SizableText, {
168
- size: "$6",
169
- color: "$color11",
170
- children: "\u2039"
171
- })
172
- });
173
- }
174
- export { BookingForm };
175
- //# sourceMappingURL=BookingForm.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","useState","Button","Input","SizableText","TextArea","XStack","YStack","formatBookingWhen","EMAIL_RE","BookingForm","param","slotIso","timeZone","eventLength","submitting","error","onSubmit","onBack","name","setName","email","setEmail","notes","setNotes","touched","setTouched","nameValid","trim","length","emailValid","test","valid","submit","gap","flex","minWidth","children","alignItems","BackLink","onPress","size","fontWeight","color","Field","label","required","invalid","hint","value","onChangeText","placeholder","autoComplete","keyboardType","autoCapitalize","numberOfLines","backgroundColor","borderColor","borderWidth","borderRadius","padding","justifyContent","marginTop","chromeless","disabled","theme","opacity"],"sources":["../../src/BookingForm.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}