@hanzo/booker 0.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.
Files changed (124) hide show
  1. package/README.md +78 -0
  2. package/dist/cjs/Booker.cjs +153 -0
  3. package/dist/cjs/Booker.native.js +158 -0
  4. package/dist/cjs/Booker.native.js.map +1 -0
  5. package/dist/cjs/BookingForm.cjs +197 -0
  6. package/dist/cjs/BookingForm.native.js +203 -0
  7. package/dist/cjs/BookingForm.native.js.map +1 -0
  8. package/dist/cjs/CalendarEmbed.cjs +121 -0
  9. package/dist/cjs/CalendarEmbed.native.js +125 -0
  10. package/dist/cjs/CalendarEmbed.native.js.map +1 -0
  11. package/dist/cjs/Confirmation.cjs +177 -0
  12. package/dist/cjs/Confirmation.native.js +185 -0
  13. package/dist/cjs/Confirmation.native.js.map +1 -0
  14. package/dist/cjs/EventHeader.cjs +112 -0
  15. package/dist/cjs/EventHeader.native.js +118 -0
  16. package/dist/cjs/EventHeader.native.js.map +1 -0
  17. package/dist/cjs/MonthCalendar.cjs +177 -0
  18. package/dist/cjs/MonthCalendar.native.js +191 -0
  19. package/dist/cjs/MonthCalendar.native.js.map +1 -0
  20. package/dist/cjs/TimeSlots.cjs +119 -0
  21. package/dist/cjs/TimeSlots.native.js +126 -0
  22. package/dist/cjs/TimeSlots.native.js.map +1 -0
  23. package/dist/cjs/client.cjs +136 -0
  24. package/dist/cjs/client.native.js +267 -0
  25. package/dist/cjs/client.native.js.map +1 -0
  26. package/dist/cjs/hooks.cjs +193 -0
  27. package/dist/cjs/hooks.native.js +221 -0
  28. package/dist/cjs/hooks.native.js.map +1 -0
  29. package/dist/cjs/index.cjs +71 -0
  30. package/dist/cjs/index.native.js +74 -0
  31. package/dist/cjs/index.native.js.map +1 -0
  32. package/dist/cjs/time.cjs +145 -0
  33. package/dist/cjs/time.native.js +150 -0
  34. package/dist/cjs/time.native.js.map +1 -0
  35. package/dist/cjs/useBooker.cjs +151 -0
  36. package/dist/cjs/useBooker.native.js +173 -0
  37. package/dist/cjs/useBooker.native.js.map +1 -0
  38. package/dist/esm/Booker.mjs +128 -0
  39. package/dist/esm/Booker.mjs.map +1 -0
  40. package/dist/esm/Booker.native.js +130 -0
  41. package/dist/esm/Booker.native.js.map +1 -0
  42. package/dist/esm/BookingForm.mjs +172 -0
  43. package/dist/esm/BookingForm.mjs.map +1 -0
  44. package/dist/esm/BookingForm.native.js +175 -0
  45. package/dist/esm/BookingForm.native.js.map +1 -0
  46. package/dist/esm/CalendarEmbed.mjs +96 -0
  47. package/dist/esm/CalendarEmbed.mjs.map +1 -0
  48. package/dist/esm/CalendarEmbed.native.js +97 -0
  49. package/dist/esm/CalendarEmbed.native.js.map +1 -0
  50. package/dist/esm/Confirmation.mjs +152 -0
  51. package/dist/esm/Confirmation.mjs.map +1 -0
  52. package/dist/esm/Confirmation.native.js +157 -0
  53. package/dist/esm/Confirmation.native.js.map +1 -0
  54. package/dist/esm/EventHeader.mjs +87 -0
  55. package/dist/esm/EventHeader.mjs.map +1 -0
  56. package/dist/esm/EventHeader.native.js +90 -0
  57. package/dist/esm/EventHeader.native.js.map +1 -0
  58. package/dist/esm/MonthCalendar.mjs +152 -0
  59. package/dist/esm/MonthCalendar.mjs.map +1 -0
  60. package/dist/esm/MonthCalendar.native.js +163 -0
  61. package/dist/esm/MonthCalendar.native.js.map +1 -0
  62. package/dist/esm/TimeSlots.mjs +94 -0
  63. package/dist/esm/TimeSlots.mjs.map +1 -0
  64. package/dist/esm/TimeSlots.native.js +98 -0
  65. package/dist/esm/TimeSlots.native.js.map +1 -0
  66. package/dist/esm/client.mjs +104 -0
  67. package/dist/esm/client.mjs.map +1 -0
  68. package/dist/esm/client.native.js +232 -0
  69. package/dist/esm/client.native.js.map +1 -0
  70. package/dist/esm/hooks.mjs +165 -0
  71. package/dist/esm/hooks.mjs.map +1 -0
  72. package/dist/esm/hooks.native.js +190 -0
  73. package/dist/esm/hooks.native.js.map +1 -0
  74. package/dist/esm/index.js +13 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/index.mjs +13 -0
  77. package/dist/esm/index.mjs.map +1 -0
  78. package/dist/esm/index.native.js +13 -0
  79. package/dist/esm/index.native.js.map +1 -0
  80. package/dist/esm/time.mjs +107 -0
  81. package/dist/esm/time.mjs.map +1 -0
  82. package/dist/esm/time.native.js +109 -0
  83. package/dist/esm/time.native.js.map +1 -0
  84. package/dist/esm/useBooker.mjs +126 -0
  85. package/dist/esm/useBooker.mjs.map +1 -0
  86. package/dist/esm/useBooker.native.js +145 -0
  87. package/dist/esm/useBooker.native.js.map +1 -0
  88. package/package.json +61 -0
  89. package/src/Booker.tsx +152 -0
  90. package/src/BookingForm.tsx +180 -0
  91. package/src/CalendarEmbed.tsx +111 -0
  92. package/src/Confirmation.tsx +145 -0
  93. package/src/EventHeader.tsx +85 -0
  94. package/src/MonthCalendar.tsx +179 -0
  95. package/src/TimeSlots.tsx +102 -0
  96. package/src/client.ts +218 -0
  97. package/src/hooks.ts +180 -0
  98. package/src/index.ts +72 -0
  99. package/src/time.ts +131 -0
  100. package/src/useBooker.ts +187 -0
  101. package/types/Booker.d.ts +16 -0
  102. package/types/Booker.d.ts.map +1 -0
  103. package/types/BookingForm.d.ts +13 -0
  104. package/types/BookingForm.d.ts.map +1 -0
  105. package/types/CalendarEmbed.d.ts +15 -0
  106. package/types/CalendarEmbed.d.ts.map +1 -0
  107. package/types/Confirmation.d.ts +12 -0
  108. package/types/Confirmation.d.ts.map +1 -0
  109. package/types/EventHeader.d.ts +10 -0
  110. package/types/EventHeader.d.ts.map +1 -0
  111. package/types/MonthCalendar.d.ts +14 -0
  112. package/types/MonthCalendar.d.ts.map +1 -0
  113. package/types/TimeSlots.d.ts +15 -0
  114. package/types/TimeSlots.d.ts.map +1 -0
  115. package/types/client.d.ts +77 -0
  116. package/types/client.d.ts.map +1 -0
  117. package/types/hooks.d.ts +43 -0
  118. package/types/hooks.d.ts.map +1 -0
  119. package/types/index.d.ts +12 -0
  120. package/types/index.d.ts.map +1 -0
  121. package/types/time.d.ts +38 -0
  122. package/types/time.d.ts.map +1 -0
  123. package/types/useBooker.d.ts +41 -0
  124. package/types/useBooker.d.ts.map +1 -0
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var BookingForm_exports = {};
26
+ __export(BookingForm_exports, {
27
+ BookingForm: () => BookingForm
28
+ });
29
+ module.exports = __toCommonJS(BookingForm_exports);
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var import_react = require("react");
32
+ var import_hanzogui = require("hanzogui");
33
+ var import_time = require("./time.native.js");
34
+ var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
35
+ function BookingForm(param) {
36
+ var {
37
+ slotIso,
38
+ timeZone,
39
+ eventLength,
40
+ submitting,
41
+ error,
42
+ onSubmit,
43
+ onBack
44
+ } = param;
45
+ var [name, setName] = (0, import_react.useState)("");
46
+ var [email, setEmail] = (0, import_react.useState)("");
47
+ var [notes, setNotes] = (0, import_react.useState)("");
48
+ var [touched, setTouched] = (0, import_react.useState)(false);
49
+ var nameValid = name.trim().length > 0;
50
+ var emailValid = EMAIL_RE.test(email.trim());
51
+ var valid = nameValid && emailValid;
52
+ var submit = function () {
53
+ setTouched(true);
54
+ if (!valid || submitting) return;
55
+ onSubmit({
56
+ name: name.trim(),
57
+ email: email.trim(),
58
+ notes: notes.trim() || void 0
59
+ });
60
+ };
61
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
62
+ gap: "$3",
63
+ flex: 1,
64
+ minWidth: 240,
65
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
66
+ gap: "$1",
67
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.XStack, {
68
+ alignItems: "center",
69
+ gap: "$2",
70
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(BackLink, {
71
+ onPress: onBack
72
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
73
+ size: "$5",
74
+ fontWeight: "700",
75
+ color: "$color12",
76
+ children: "Enter details"
77
+ })]
78
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.SizableText, {
79
+ size: "$3",
80
+ color: "$color11",
81
+ children: [(0, import_time.formatBookingWhen)(slotIso, timeZone), " \xB7 ", eventLength, " min"]
82
+ })]
83
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(Field, {
84
+ label: "Name",
85
+ required: true,
86
+ invalid: touched && !nameValid,
87
+ hint: "Please enter your name",
88
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Input, {
89
+ value: name,
90
+ onChangeText: setName,
91
+ placeholder: "Ada Lovelace",
92
+ autoComplete: "name",
93
+ size: "$4"
94
+ })
95
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(Field, {
96
+ label: "Email",
97
+ required: true,
98
+ invalid: touched && !emailValid,
99
+ hint: "Please enter a valid email",
100
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Input, {
101
+ value: email,
102
+ onChangeText: setEmail,
103
+ placeholder: "ada@example.com",
104
+ keyboardType: "email-address",
105
+ autoCapitalize: "none",
106
+ autoComplete: "email",
107
+ size: "$4"
108
+ })
109
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(Field, {
110
+ label: "Notes",
111
+ hint: "Optional",
112
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.TextArea, {
113
+ value: notes,
114
+ onChangeText: setNotes,
115
+ placeholder: "Anything that would help prepare?",
116
+ numberOfLines: 3,
117
+ size: "$4"
118
+ })
119
+ }), error ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
120
+ backgroundColor: "$red3",
121
+ borderColor: "$red6",
122
+ borderWidth: 1,
123
+ borderRadius: "$4",
124
+ padding: "$2.5",
125
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
126
+ size: "$2",
127
+ color: "$red11",
128
+ children: error
129
+ })
130
+ }) : null, /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.XStack, {
131
+ gap: "$2",
132
+ justifyContent: "flex-end",
133
+ marginTop: "$1",
134
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Button, {
135
+ size: "$4",
136
+ chromeless: true,
137
+ onPress: onBack,
138
+ disabled: submitting,
139
+ children: "Back"
140
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Button, {
141
+ size: "$4",
142
+ theme: "blue",
143
+ onPress: submit,
144
+ disabled: submitting || touched && !valid,
145
+ opacity: submitting ? 0.7 : 1,
146
+ children: submitting ? "Booking\u2026" : "Confirm booking"
147
+ })]
148
+ })]
149
+ });
150
+ }
151
+ function Field(param) {
152
+ var {
153
+ label,
154
+ required,
155
+ invalid,
156
+ hint,
157
+ children
158
+ } = param;
159
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
160
+ gap: "$1.5",
161
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.SizableText, {
162
+ size: "$2",
163
+ color: "$color11",
164
+ fontWeight: "600",
165
+ children: [label, required ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
166
+ color: "$red10",
167
+ children: " *"
168
+ }) : null]
169
+ }), children, invalid && hint ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
170
+ size: "$1",
171
+ color: "$red10",
172
+ children: hint
173
+ }) : null]
174
+ });
175
+ }
176
+ function BackLink(param) {
177
+ var {
178
+ onPress
179
+ } = param;
180
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
181
+ width: 30,
182
+ height: 30,
183
+ alignItems: "center",
184
+ justifyContent: "center",
185
+ borderRadius: "$4",
186
+ cursor: "pointer",
187
+ hoverStyle: {
188
+ backgroundColor: "$color4"
189
+ },
190
+ pressStyle: {
191
+ backgroundColor: "$color6"
192
+ },
193
+ onPress,
194
+ "aria-label": "Back",
195
+ role: "button",
196
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
197
+ size: "$6",
198
+ color: "$color11",
199
+ children: "\u2039"
200
+ })
201
+ });
202
+ }
203
+ //# sourceMappingURL=BookingForm.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","BookingForm_exports","__export","BookingForm","module","exports","import_jsx_runtime","require","import_react","import_hanzogui","import_time","EMAIL_RE","param","slotIso","timeZone","eventLength","submitting","error","onSubmit","onBack","name","setName","useState","email","setEmail","notes","setNotes","touched","setTouched","nameValid","trim","length","emailValid","test","valid","submit","jsxs","YStack","gap","flex","minWidth","children","XStack","alignItems","jsx","BackLink","onPress","SizableText","size","fontWeight","color","formatBookingWhen","Field","label","required","invalid","hint","Input","onChangeText","placeholder","autoComplete","keyboardType","autoCapitalize","TextArea","numberOfLines","backgroundColor","borderColor","borderWidth","borderRadius","padding","justifyContent","marginTop","Button","chromeless","disabled","theme","opacity"],"sources":["../../src/BookingForm.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var CalendarEmbed_exports = {};
24
+ __export(CalendarEmbed_exports, {
25
+ CalendarEmbed: () => CalendarEmbed
26
+ });
27
+ module.exports = __toCommonJS(CalendarEmbed_exports);
28
+ var import_hanzogui = require("hanzogui");
29
+ var import_BookingForm = require("./BookingForm.cjs");
30
+ var import_Confirmation = require("./Confirmation.cjs");
31
+ var import_EventHeader = require("./EventHeader.cjs");
32
+ var import_TimeSlots = require("./TimeSlots.cjs");
33
+ var import_time = require("./time.cjs");
34
+ var import_useBooker = require("./useBooker.cjs");
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ function CalendarEmbed(props) {
37
+ const m = (0, import_useBooker.useBooker)({
38
+ ...props,
39
+ autoSelectFirst: true
40
+ });
41
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
42
+ backgroundColor: "$background",
43
+ borderColor: "$borderColor",
44
+ borderWidth: 1,
45
+ borderRadius: "$6",
46
+ padding: "$4",
47
+ gap: "$3",
48
+ width: "100%",
49
+ maxWidth: 420,
50
+ children: m.event.loading ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
51
+ alignItems: "center",
52
+ justifyContent: "center",
53
+ gap: "$2",
54
+ padding: "$6",
55
+ minHeight: 160,
56
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Spinner, {
57
+ size: "large",
58
+ color: "$color9"
59
+ })
60
+ }) : m.event.error || !m.event.data ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
61
+ alignItems: "center",
62
+ justifyContent: "center",
63
+ padding: "$5",
64
+ minHeight: 140,
65
+ gap: "$1",
66
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
67
+ size: "$4",
68
+ fontWeight: "600",
69
+ color: "$color12",
70
+ children: "Unavailable"
71
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
72
+ size: "$2",
73
+ color: "$color10",
74
+ textAlign: "center",
75
+ children: m.event.error ?? "Event not found."
76
+ })]
77
+ }) : m.phase === "done" && m.booking ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Confirmation.Confirmation, {
78
+ booking: m.booking,
79
+ timeZone: m.timeZone,
80
+ onDone: m.reset
81
+ }) : m.phase === "form" && m.selectedSlot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_BookingForm.BookingForm, {
82
+ slotIso: m.selectedSlot,
83
+ timeZone: m.timeZone,
84
+ eventLength: m.event.data.length,
85
+ submitting: m.submitting,
86
+ error: m.error,
87
+ onSubmit: m.submit,
88
+ onBack: m.back
89
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
90
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_EventHeader.EventHeader, {
91
+ event: m.event.data,
92
+ host: props.host,
93
+ timeZone: m.timeZone,
94
+ compact: true
95
+ }), m.conflict ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
96
+ size: "$1",
97
+ color: "$yellow11",
98
+ children: "That time was just taken \u2014 pick another."
99
+ }) : null, m.slots.loading && m.availableKeys.size === 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
100
+ alignItems: "center",
101
+ padding: "$4",
102
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Spinner, {
103
+ color: "$color9"
104
+ })
105
+ }) : m.availableKeys.size === 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.SizableText, {
106
+ size: "$2",
107
+ color: "$color10",
108
+ children: ["No availability in ", (0, import_time.formatMonthLabel)(m.viewDate), "."]
109
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_TimeSlots.TimeSlots, {
110
+ dayKey: m.selectedDay,
111
+ slots: m.daySlots,
112
+ timeZone: m.timeZone,
113
+ onPick: m.selectSlot,
114
+ selectedIso: m.selectedSlot,
115
+ loading: m.slots.loading,
116
+ compact: true,
117
+ maxHeight: 220
118
+ })]
119
+ })
120
+ });
121
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var CalendarEmbed_exports = {};
26
+ __export(CalendarEmbed_exports, {
27
+ CalendarEmbed: () => CalendarEmbed
28
+ });
29
+ module.exports = __toCommonJS(CalendarEmbed_exports);
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var import_hanzogui = require("hanzogui");
32
+ var import_BookingForm = require("./BookingForm.native.js");
33
+ var import_Confirmation = require("./Confirmation.native.js");
34
+ var import_EventHeader = require("./EventHeader.native.js");
35
+ var import_TimeSlots = require("./TimeSlots.native.js");
36
+ var import_time = require("./time.native.js");
37
+ var import_useBooker = require("./useBooker.native.js");
38
+ function CalendarEmbed(props) {
39
+ var m = (0, import_useBooker.useBooker)({
40
+ ...props,
41
+ autoSelectFirst: true
42
+ });
43
+ var _m_event_error;
44
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
45
+ backgroundColor: "$background",
46
+ borderColor: "$borderColor",
47
+ borderWidth: 1,
48
+ borderRadius: "$6",
49
+ padding: "$4",
50
+ gap: "$3",
51
+ width: "100%",
52
+ maxWidth: 420,
53
+ children: m.event.loading ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
54
+ alignItems: "center",
55
+ justifyContent: "center",
56
+ gap: "$2",
57
+ padding: "$6",
58
+ minHeight: 160,
59
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Spinner, {
60
+ size: "large",
61
+ color: "$color9"
62
+ })
63
+ }) : m.event.error || !m.event.data ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
64
+ alignItems: "center",
65
+ justifyContent: "center",
66
+ padding: "$5",
67
+ minHeight: 140,
68
+ gap: "$1",
69
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
70
+ size: "$4",
71
+ fontWeight: "600",
72
+ color: "$color12",
73
+ children: "Unavailable"
74
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
75
+ size: "$2",
76
+ color: "$color10",
77
+ textAlign: "center",
78
+ children: (_m_event_error = m.event.error) !== null && _m_event_error !== void 0 ? _m_event_error : "Event not found."
79
+ })]
80
+ }) : m.phase === "done" && m.booking ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Confirmation.Confirmation, {
81
+ booking: m.booking,
82
+ timeZone: m.timeZone,
83
+ onDone: m.reset
84
+ }) : m.phase === "form" && m.selectedSlot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_BookingForm.BookingForm, {
85
+ slotIso: m.selectedSlot,
86
+ timeZone: m.timeZone,
87
+ eventLength: m.event.data.length,
88
+ submitting: m.submitting,
89
+ error: m.error,
90
+ onSubmit: m.submit,
91
+ onBack: m.back
92
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
93
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_EventHeader.EventHeader, {
94
+ event: m.event.data,
95
+ host: props.host,
96
+ timeZone: m.timeZone,
97
+ compact: true
98
+ }), m.conflict ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
99
+ size: "$1",
100
+ color: "$yellow11",
101
+ children: "That time was just taken \u2014 pick another."
102
+ }) : null, m.slots.loading && m.availableKeys.size === 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
103
+ alignItems: "center",
104
+ padding: "$4",
105
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Spinner, {
106
+ color: "$color9"
107
+ })
108
+ }) : m.availableKeys.size === 0 ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.SizableText, {
109
+ size: "$2",
110
+ color: "$color10",
111
+ children: ["No availability in ", (0, import_time.formatMonthLabel)(m.viewDate), "."]
112
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_TimeSlots.TimeSlots, {
113
+ dayKey: m.selectedDay,
114
+ slots: m.daySlots,
115
+ timeZone: m.timeZone,
116
+ onPick: m.selectSlot,
117
+ selectedIso: m.selectedSlot,
118
+ loading: m.slots.loading,
119
+ compact: true,
120
+ maxHeight: 220
121
+ })]
122
+ })
123
+ });
124
+ }
125
+ //# sourceMappingURL=CalendarEmbed.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","CalendarEmbed_exports","__export","CalendarEmbed","module","exports","import_jsx_runtime","require","import_hanzogui","import_BookingForm","import_Confirmation","import_EventHeader","import_TimeSlots","import_time","import_useBooker","props","m","useBooker","autoSelectFirst","_m_event_error","jsx","YStack","backgroundColor","borderColor","borderWidth","borderRadius","padding","gap","width","maxWidth","children","event","loading","alignItems","justifyContent","minHeight","Spinner","size","color","error","data","jsxs","SizableText","fontWeight","textAlign","phase","booking","Confirmation","timeZone","onDone","reset","selectedSlot","BookingForm","slotIso","eventLength","length","submitting","onSubmit","submit","onBack","back","Fragment","EventHeader","host","compact","conflict","slots","availableKeys"],"sources":["../../src/CalendarEmbed.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAqD,CAAAK,qBAAA;AAErD,IAAAK,kBAAA,GAA4BC,OAAA;AAC5B,IAAAC,eAAA,GAAAD,OAA6B;AAC7B,IAAAE,kBAAA,GAA4BF,OAAA;AAC5B,IAAAG,mBAA0B,GAAAH,OAAA;AAC1B,IAAAI,kBAAiC,GAAAJ,OAAA;AACjC,IAAAK,gBAAA,GAA0BL,OAAA;AAqChB,IAAAM,WAAA,GAAAN,OAAA;AAtBH,IAAAO,gBAAS,GAAcP,OAA2B;AACvD,SAAMJ,aAAIA,CAAAY,KAAA;EAEV,IAAAC,CAAA,GACE,IAAAF,gBAAA,CAAAG,SAAA;IAAC,GAAAF,KAAA;IAAAG,eAAA;EAAA;EACiB,IAChBC,cAAY;EAAA,OACZ,eAAa,IAAAb,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAAa,MAAA;IAAAC,eACb,EAAa;IAAAC,WACL;IAAAC,WACJ;IAAAC,YACE;IAAAC,OACN,MAAU;IAAAC,GAET;IACCC,KAAC;IAAAC,QAAA;IAAAC,QACC,EAAAd,CAAA,CAAAe,KAAA,CAAWC,OAAA,sBAAA1B,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAAa,MAAA;MAAAY,UACX,UAAe;MAAAC,cACX;MAAAP,GAAA,EACJ;MAAQD,OACR;MAAWS,SAEX;MAAsCL,QAAA,qBAAAxB,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAA4B,OAAA;QACxCC,IACI,SAAM;QACTC,KAAA;MAAA;IAAA,KAAAtB,CACC,CAAAe,KAAA,CAAAQ,KAAW,KAAAvB,CAAA,CAAAe,KAAA,CAAAS,IAAA,sBAAAlC,kBAAA,CAAAmC,IAAA,EAAAjC,eAAA,CAAAa,MAAA;MAAAY,UACX,UAAe;MAAAC,cACP;MAAAR,OACR;MAAWS,SACP;MAAAR,GAAA,EAEJ;MAAAG,QAAA,GAEA,eACA,IAAAxB,kBAAA,CAAAc,GAAA,EAAAZ,eAAC,CAAAkC,WAAA;QAEDL,IAAA;QAAAM,UAAA;QAEAL,KAAE,YAAU;QAGbR,QAAA;MAAA,mBACY,IAAAxB,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAAkC,WAAA;QACXL,IAAA,MAAU;QACVC,KAAA,YAAe;QACfM,SAAA,UAAc;QACdd,QAAO,EAAE,CAAAX,cAAA,GAAAH,CAAA,CAAAe,KAAA,CAAAQ,KAAA,cAAApB,cAAA,cAAAA,cAAA;MAAA,EACT;IACU,KAAAH,CAAA,CAAA6B,KAAA,eAAA7B,CAAA,CAAA8B,OAAA,sBAAAxC,kBAAA,CAAAc,GAAA,EAAAV,mBAAA,CAAAqC,YAAA;MACZD,OAEA,EAAA9B,CAAA,CAAA8B,OAAA;MACEE,QAAA,EAAAhC,CAAA,CAAAgC,QAAA;MAAAC,MAAC,EAAAjC,CAAA,CAAAkC;IAAA,KAAAlC,CAAA,CAAA6B,KAAA,eAAA7B,CAAA,CAAAmC,YAAA,sBAAA7C,kBAAA,CAAAc,GAAA,EAAAX,kBAAA,CAAA2C,WAAA;MAAAC,OACC,EAAArC,CAAA,CAAAmC,YAAe;MAAAH,QACf,EAAAhC,CAAA,CAAMgC,QAAM;MAAAM,WACZ,EAAAtC,CAAA,CAAAe,KAAY,CAAAS,IAAA,CAAAe,MAAA;MAAAC,UACZ,EAAAxC,CAAA,CAAAwC,UAAO;MAAAjB,KAAA,EAAAvB,CAAA,CAAAuB,KAAA;MAAAkB,QACT,EAAAzC,CAAA,CAAA0C,MAAA;MAAAC,MACG,EAAA3C,CAAA,CAAA4C;IAIC,KACH,eAAQ,EAAW,EAAEtD,kBAAc,CAAAmC,IAAS,EAAAnC,kBAC3C,CAAAuD,QAAA;MAIwC/B,QAAA,kBAClB,IAAAxB,kBAAmB,CAAAc,GAAA,EAAAT,kBAAQ,CAAAmD,WAAA;QAAE/B,KAAA,EAAAf,CAAA,CAAAe,KAAA,CAAAS,IAAA;QAAAuB,IACnD,EAEAhD,KAAA,CAAAgD,IAAA;QAACf,QAAA,EAAAhC,CAAA,CAAAgC,QAAA;QAAAgB,OAAA;MAAA,IACWhD,CAAA,CAAAiD,QACV,GAAS,mBAAA3D,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAAkC,WAAA;QAAAL,IACT;QAAYC,KACZ,aAAU;QAAAR,QACV;MAAe,KACf,MAAiBd,CAAA,CAAAkD,KACjB,CAAAlC,OAAO,IAAAhB,CAAA,CAAAmD,aAAA,CAAA9B,IAAA,4BAAA/B,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAAa,MAAA;QAAAY,UACP,UAAW;QAAAP,OAAA;QACbI,QAAA,qBAAAxB,kBAAA,CAAAc,GAAA,EAAAZ,eAAA,CAAA4B,OAAA;UAEJE,KAAA;QAAA;MAEJ,KAAAtB,CAAA,CAAAmD,aAAA,CAAA9B,IAAA,4BAAA/B,kBAAA,CAAAmC,IAAA,EAAAjC,eAAA,CAAAkC,WAAA;QAEJL,IAAA","ignoreList":[]}
@@ -0,0 +1,177 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var Confirmation_exports = {};
24
+ __export(Confirmation_exports, {
25
+ Confirmation: () => Confirmation
26
+ });
27
+ module.exports = __toCommonJS(Confirmation_exports);
28
+ var import_hanzogui = require("hanzogui");
29
+ var import_client = require("./client.cjs");
30
+ var import_hooks = require("./hooks.cjs");
31
+ var import_time = require("./time.cjs");
32
+ var import_time2 = require("./time.cjs");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
34
+ function Confirmation({
35
+ booking,
36
+ uid,
37
+ apiUrl,
38
+ timeZone,
39
+ onDone
40
+ }) {
41
+ const api = apiUrl ?? import_client.DEFAULT_API_URL;
42
+ const tz = timeZone ?? (0, import_time.visitorTimeZone)();
43
+ const fetched = (0, import_hooks.useBooking)(api, booking ? void 0 : uid);
44
+ const data = booking ?? fetched.data;
45
+ if (!data && fetched.loading) {
46
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
47
+ alignItems: "center",
48
+ justifyContent: "center",
49
+ padding: "$6",
50
+ gap: "$3",
51
+ minHeight: 200,
52
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Spinner, {
53
+ size: "large",
54
+ color: "$color9"
55
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
56
+ size: "$3",
57
+ color: "$color10",
58
+ children: "Loading your booking\u2026"
59
+ })]
60
+ });
61
+ }
62
+ if (!data) {
63
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
64
+ alignItems: "center",
65
+ justifyContent: "center",
66
+ padding: "$6",
67
+ gap: "$2",
68
+ minHeight: 200,
69
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
70
+ size: "$4",
71
+ fontWeight: "600",
72
+ color: "$color12",
73
+ children: "Booking not found"
74
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
75
+ size: "$3",
76
+ color: "$color10",
77
+ textAlign: "center",
78
+ children: fetched.error ?? "We could not load this booking."
79
+ })]
80
+ });
81
+ }
82
+ const attendee = data.attendees?.[0];
83
+ const location = data.location;
84
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
85
+ gap: "$3",
86
+ padding: "$1",
87
+ alignItems: "center",
88
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.YStack, {
89
+ width: 52,
90
+ height: 52,
91
+ borderRadius: 9999,
92
+ backgroundColor: "$green4",
93
+ alignItems: "center",
94
+ justifyContent: "center",
95
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
96
+ size: "$8",
97
+ color: "$green11",
98
+ children: "\u2713"
99
+ })
100
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
101
+ gap: "$1",
102
+ alignItems: "center",
103
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
104
+ size: "$7",
105
+ fontWeight: "700",
106
+ color: "$color12",
107
+ textAlign: "center",
108
+ children: "You're booked"
109
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
110
+ size: "$4",
111
+ color: "$color11",
112
+ textAlign: "center",
113
+ children: data.title
114
+ })]
115
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Separator, {
116
+ width: "100%"
117
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.YStack, {
118
+ gap: "$2.5",
119
+ width: "100%",
120
+ maxWidth: 420,
121
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
122
+ label: "When",
123
+ value: (0, import_time2.formatBookingWhen)(data.start, tz)
124
+ }), location ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
125
+ label: "Where",
126
+ value: location
127
+ }) : null, attendee?.email ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
128
+ label: "Guest",
129
+ value: attendee.email
130
+ }) : null, /* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
131
+ label: "Status",
132
+ value: titleCase(data.status)
133
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(Row, {
134
+ label: "Reference",
135
+ value: data.uid
136
+ })]
137
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.Paragraph, {
138
+ size: "$2",
139
+ color: "$color10",
140
+ textAlign: "center",
141
+ marginTop: "$1",
142
+ children: ["A calendar invite is on its way to ", attendee?.email ?? "your inbox", "."]
143
+ }), onDone ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.Button, {
144
+ size: "$3",
145
+ chromeless: true,
146
+ onPress: onDone,
147
+ marginTop: "$1",
148
+ children: "Book another time"
149
+ }) : null]
150
+ });
151
+ }
152
+ function Row({
153
+ label,
154
+ value
155
+ }) {
156
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_hanzogui.XStack, {
157
+ justifyContent: "space-between",
158
+ gap: "$3",
159
+ alignItems: "flex-start",
160
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
161
+ size: "$3",
162
+ color: "$color10",
163
+ children: label
164
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_hanzogui.SizableText, {
165
+ size: "$3",
166
+ color: "$color12",
167
+ fontWeight: "500",
168
+ textAlign: "right",
169
+ flexShrink: 1,
170
+ children: value
171
+ })]
172
+ });
173
+ }
174
+ function titleCase(s) {
175
+ if (!s) return "";
176
+ return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
177
+ }