@asksable/site-connector 0.1.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -1
- package/dist/bones/booking-widget.bones.json +495 -0
- package/dist/bones/registry.d.ts +2 -0
- package/dist/bones/registry.d.ts.map +1 -0
- package/dist/bones/registry.js +10 -0
- package/dist/bones/registry.js.map +1 -0
- package/dist/booking-widget.d.ts +76 -1
- package/dist/booking-widget.d.ts.map +1 -1
- package/dist/booking-widget.js +1362 -199
- package/dist/booking-widget.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +9 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +20 -1
- package/dist/provider.js.map +1 -1
- package/dist/styles.css +2173 -191
- package/dist/translations.d.ts +282 -0
- package/dist/translations.d.ts.map +1 -0
- package/dist/translations.js +348 -0
- package/dist/translations.js.map +1 -0
- package/dist/types.d.ts +108 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
import type { Locale, TranslationOverrides } from './translations.js';
|
|
1
2
|
export type SableSiteConfig = {
|
|
2
3
|
apiUrl: string;
|
|
3
4
|
siteSlug: string;
|
|
5
|
+
/**
|
|
6
|
+
* UI language for the booking widget. Defaults to 'en' if omitted.
|
|
7
|
+
* Pass a reactive value (driven by your i18n state) if your site has
|
|
8
|
+
* a language toggle. See README for the full contract.
|
|
9
|
+
*/
|
|
10
|
+
language?: Locale;
|
|
11
|
+
/**
|
|
12
|
+
* Optional per-locale string overrides. Use sparingly when a client
|
|
13
|
+
* needs custom wording (e.g. "Reserva mi entrega" instead of
|
|
14
|
+
* "Confirmar reserva"). Prefer extending the canonical dictionary
|
|
15
|
+
* when the change benefits all customers.
|
|
16
|
+
*/
|
|
17
|
+
translationOverrides?: TranslationOverrides;
|
|
4
18
|
};
|
|
5
19
|
export type PublicSiteProfile = {
|
|
6
20
|
site: {
|
|
@@ -63,15 +77,97 @@ export type PublicBookingSetup = {
|
|
|
63
77
|
durationMinutes: number;
|
|
64
78
|
priceCents: number;
|
|
65
79
|
currency: string;
|
|
80
|
+
paymentMode?: 'tenant-default' | 'none' | 'full' | 'deposit';
|
|
81
|
+
depositCents?: number;
|
|
82
|
+
requiresPayment?: boolean;
|
|
83
|
+
publicBookingMode?: 'scheduled' | 'async';
|
|
84
|
+
pricingMode?: 'fixed' | 'calculated';
|
|
85
|
+
pricingConfig?: Record<string, unknown>;
|
|
86
|
+
intakeForm?: PublicIntakeForm;
|
|
87
|
+
publicCopy?: Record<string, unknown>;
|
|
66
88
|
deliveryMethods: Array<'in-person' | 'video' | 'phone'>;
|
|
67
89
|
assignedStaffIds: string[];
|
|
90
|
+
/** Optional category linkage (matches the host's Services
|
|
91
|
+
* management grouping). Undefined when the service hasn't been
|
|
92
|
+
* filed under a category. */
|
|
93
|
+
categoryId?: string;
|
|
94
|
+
/** Optional service thumbnail (Fresha/Square pattern). Resolved
|
|
95
|
+
* on the server to a plain URL — the widget renders it as a
|
|
96
|
+
* rounded square on the left of the row, replacing the checkbox
|
|
97
|
+
* slot. `null` when the service has no image, in which case the
|
|
98
|
+
* widget falls back to the checkbox affordance. */
|
|
99
|
+
image?: {
|
|
100
|
+
url: string;
|
|
101
|
+
alt?: string;
|
|
102
|
+
} | null;
|
|
68
103
|
}>;
|
|
69
104
|
staff: Array<{
|
|
70
105
|
_id: string;
|
|
71
106
|
name: string;
|
|
72
107
|
email: string;
|
|
73
108
|
timezone: string;
|
|
109
|
+
/** Resolved staff avatar (from staffMembers.photo). Null when
|
|
110
|
+
* the staff member has no avatar set; the widget falls back
|
|
111
|
+
* to initials. */
|
|
112
|
+
image?: {
|
|
113
|
+
url: string;
|
|
114
|
+
alt?: string;
|
|
115
|
+
} | null;
|
|
116
|
+
}>;
|
|
117
|
+
/** All categories that contain at least one active service.
|
|
118
|
+
* Sorted by `sortOrder` so widgets can render groups in the same
|
|
119
|
+
* order the host configured. Empty when no categories exist on
|
|
120
|
+
* the workspace yet — widgets must fall back to a flat list in
|
|
121
|
+
* that case. */
|
|
122
|
+
categories: Array<{
|
|
123
|
+
_id: string;
|
|
124
|
+
name: string;
|
|
125
|
+
sortOrder: number;
|
|
126
|
+
}>;
|
|
127
|
+
/** Workspace's primary timezone (set on the businessProfile). Used
|
|
128
|
+
* as the default timezone label in the widget chrome before a slot
|
|
129
|
+
* or staff is selected. `null` when the workspace hasn't set one;
|
|
130
|
+
* callers should fall back to `staff[0]?.timezone` then a hard
|
|
131
|
+
* fallback like browser tz before showing UTC. */
|
|
132
|
+
workspaceTimezone: string | null;
|
|
133
|
+
};
|
|
134
|
+
export type PublicIntakeForm = {
|
|
135
|
+
sections: Array<{
|
|
136
|
+
id: string;
|
|
137
|
+
title?: string;
|
|
138
|
+
titleEs?: string;
|
|
139
|
+
titleEn?: string;
|
|
140
|
+
fields: PublicIntakeField[];
|
|
141
|
+
showWhenPath?: 'scheduled' | 'async';
|
|
142
|
+
}>;
|
|
143
|
+
};
|
|
144
|
+
export type PublicIntakeField = {
|
|
145
|
+
id: string;
|
|
146
|
+
label?: string;
|
|
147
|
+
labelEs?: string;
|
|
148
|
+
labelEn?: string;
|
|
149
|
+
type: 'text' | 'email' | 'phone' | 'number' | 'select' | 'textarea' | 'checkbox' | 'repeatable-group';
|
|
150
|
+
required?: boolean;
|
|
151
|
+
placeholder?: string;
|
|
152
|
+
helpText?: string;
|
|
153
|
+
options?: Array<{
|
|
154
|
+
value: string;
|
|
155
|
+
label: string;
|
|
156
|
+
labelEs?: string;
|
|
157
|
+
labelEn?: string;
|
|
74
158
|
}>;
|
|
159
|
+
min?: number;
|
|
160
|
+
max?: number;
|
|
161
|
+
fields?: PublicIntakeField[];
|
|
162
|
+
};
|
|
163
|
+
export type PublicBookingQuote = {
|
|
164
|
+
currency: string;
|
|
165
|
+
subtotalCents: number;
|
|
166
|
+
discountCents: number;
|
|
167
|
+
insuranceCents: number;
|
|
168
|
+
additionalFeesCents: number;
|
|
169
|
+
totalCents: number;
|
|
170
|
+
rateSnapshot: Record<string, unknown>;
|
|
75
171
|
};
|
|
76
172
|
export type PublicBookingSlots = {
|
|
77
173
|
dates: Array<{
|
|
@@ -96,6 +192,18 @@ export type ContactSubmissionResult = {
|
|
|
96
192
|
};
|
|
97
193
|
export type PublicBookingCreateResult = {
|
|
98
194
|
appointmentId: string;
|
|
195
|
+
clientId?: string;
|
|
196
|
+
clientNoteId?: string;
|
|
197
|
+
requiresPayment?: boolean;
|
|
198
|
+
quote?: PublicBookingQuote;
|
|
199
|
+
payment?: {
|
|
200
|
+
clientSecret: string;
|
|
201
|
+
publishableKey: string;
|
|
202
|
+
connectAccountId: string;
|
|
203
|
+
amountCents: number;
|
|
204
|
+
currency: string;
|
|
205
|
+
paymentIntentId: string;
|
|
206
|
+
};
|
|
99
207
|
};
|
|
100
208
|
export type ResolvedSiteProfile = {
|
|
101
209
|
businessName: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;QAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;QAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,WAAW,EAAE;YACX,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,wBAAwB,CAAC,EAAE,MAAM,CAAA;YACjC,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,OAAO,CAAC,EAAE,MAAM,CAAA;SACjB,GAAG,IAAI,CAAA;QACR,aAAa,EAAE,KAAK,CAAC;YACnB,GAAG,EAAE,MAAM,CAAA;YACX,MAAM,EAAE,OAAO,CAAA;YACf,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,SAAS,CAAC,EAAE,MAAM,CAAA;SACnB,CAAC,CAAA;QACF,cAAc,EAAE,OAAO,CAAA;QACvB,eAAe,EAAE;YACf,oBAAoB,EAAE,OAAO,CAAA;YAC7B,2BAA2B,EAAE,MAAM,CAAA;YACnC,4BAA4B,EAAE,MAAM,CAAA;YACpC,mBAAmB,EAAE,OAAO,CAAA;YAC5B,qBAAqB,EAAE,OAAO,CAAA;YAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAA;SAChC,GAAG,IAAI,CAAA;KACT,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,QAAQ,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;QACvB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;QAC5D,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,iBAAiB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;QACzC,WAAW,CAAC,EAAE,OAAO,GAAG,YAAY,CAAA;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACvC,UAAU,CAAC,EAAE,gBAAgB,CAAA;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACpC,eAAe,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;QACvD,gBAAgB,EAAE,MAAM,EAAE,CAAA;QAC1B;;sCAE8B;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB;;;;4DAIoD;QACpD,KAAK,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAC7C,CAAC,CAAA;IACF,KAAK,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB;;2BAEmB;QACnB,KAAK,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAC7C,CAAC,CAAA;IACF;;;;qBAIiB;IACjB,UAAU,EAAE,KAAK,CAAC;QAChB,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;IACF;;;;uDAImD;IACnD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,iBAAiB,EAAE,CAAA;QAC3B,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;KACrC,CAAC,CAAA;CACH,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EACA,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,kBAAkB,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAA;YACf,iBAAiB,EAAE,MAAM,EAAE,CAAA;SAC5B,CAAC,CAAA;KACH,CAAC,CAAA;CACH,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAA;QACpB,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;QACxB,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asksable/site-connector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -34,5 +34,10 @@
|
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"react": "^19.0.0",
|
|
36
36
|
"react-dom": "^19.0.0"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@stripe/react-stripe-js": "^5.4.0",
|
|
40
|
+
"@stripe/stripe-js": "^8.5.2",
|
|
41
|
+
"boneyard-js": "^1.8.1"
|
|
37
42
|
}
|
|
38
43
|
}
|