frontpage-host 0.3.22 → 0.3.24
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/BOOKING.md
CHANGED
|
@@ -56,7 +56,13 @@ Calendar consent stays with the person connecting the account. Never put OAuth c
|
|
|
56
56
|
|
|
57
57
|
Google and Outlook import busy periods and can receive Frontpage-owned confirmed events when the owner grants write access. Private event details never reach visitors. iCal imports busy times for appointments or stays under either confirmation policy; it does not send bookings back or provide a real-time double-booking guarantee.
|
|
58
58
|
|
|
59
|
-
Website authors use the platform Booking runtime and `data-fp-booking` containers. The agent controls surrounding HTML and CSS; the service controls forms, availability, validation, email verification and reservation state. Read the Booking module docs and use their exact starter markup.
|
|
59
|
+
Website authors use the platform Booking runtime and `data-fp-booking` containers. The agent controls surrounding HTML and CSS; the service controls forms, availability, validation, email verification and reservation state. Read the Booking module docs and use their exact starter markup. The old `data-fp-form="booking"` collector is retired and rejects submissions. Its old confirmation links cannot confirm appointments or send invites. Historical requests remain in the Forms inbox and `frontpage inbox leads --site SITE`; this cleanup does not convert them into native reservations. Customers review the booking, verify their email and submit; verification creates no inventory hold. A customer management link opens a dedicated page. Viewing a link never accepts, declines or cancels a booking.
|
|
60
|
+
|
|
61
|
+
Booking presentation uses Store's soft `fp-defaults` layer. Ordinary site CSS and component/utility layers override its appearance. Match the site's tokens, forms and typography. For runtime-generated nodes, use an authored root class with Astro `<style is:global>` or `:global(...)`; generated controls do not inherit the page's scope attribute. Type, time, member, space and choice menus use the shared custom listbox. Do not show their hidden backing selects or build a second selection system. Labels, selected time ranges and time-zone help render separately.
|
|
62
|
+
|
|
63
|
+
Style `.fp-booking-field`, `.fp-booking-label`, `.fp-booking-control-slot`, `.fp-booking-control`, `.fp-booking-help`, `.fp-booking-error`, `.fp-booking-address`, `.fp-booking-field--checkbox` and `.fp-booking-week`. Dropdown parts use `.fp-booking-select`, `-field`, `-trigger`, `-value`, `-caret`, `-menu`, `-list`, `-option`, `.is-active` and `.is-selected`. Optional tokens include `--fp-booking-control-bg/--fp-booking-control-fg`, `--fp-booking-selected-bg/--fp-booking-selected-fg`, `--fp-booking-border`, `--fp-booking-radius`, `--fp-booking-focus` and `--fp-booking-control-height`. All visual defaults remain overridable; hidden/disabled states remain behavior.
|
|
64
|
+
|
|
65
|
+
An optional `<template data-fp-booking-field-template>` inside the root, outside filled containers, changes field wrapper markup. Its single outer element must contain a `<label data-fp-booking-label>` and `[data-fp-booking-control-slot]`. Optional `[data-fp-booking-label-text]`, `[data-fp-booking-help]` and `[data-fp-booking-error]` preserve authored label content and help/error placement. The runtime fills text, controls, accessible IDs and validation. Preserve those bindings. Inspect every question type, menus, focus/selected/disabled states, loading, empty, errors, review, verification and success on desktop/mobile and with two forms on a page. Build success alone does not verify appearance.
|
|
60
66
|
|
|
61
67
|
Private external event details are available only to the connecting human in the workspace Calendar. CLI/agent calendar output remains busy times only; there is no CLI command for private event content.
|
|
62
68
|
|
package/dist/modules/commands.js
CHANGED
|
@@ -280,11 +280,11 @@ export function formatModuleUsage(key) {
|
|
|
280
280
|
"",
|
|
281
281
|
"Actions (generic):",
|
|
282
282
|
" docs Markup / agent how-to",
|
|
283
|
-
key === "articles"
|
|
284
|
-
|
|
285
|
-
|
|
283
|
+
...(def.genericActions.includes("request-setup") ? [key === "articles"
|
|
284
|
+
? " request-setup No setup needed; makes no changes"
|
|
285
|
+
: " request-setup Amber bar in the editor (CLI cannot show it)"] : []),
|
|
286
286
|
...(def.genericActions.includes("enable") ? [" enable|disable|archive"] : []),
|
|
287
|
-
" config --config '{…}' Whitelisted JSON only",
|
|
287
|
+
...(def.genericActions.includes("config") ? [" config --config '{…}' Whitelisted JSON only"] : []),
|
|
288
288
|
];
|
|
289
289
|
if (def.extraActions.length) {
|
|
290
290
|
lines.push("", "Actions (this module):", ...def.extraActions.map((a) => ` ${a}`));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const TYPED_CONFIG_CLI_KEYS: readonly ["callbar", "forms", "
|
|
1
|
+
export declare const TYPED_CONFIG_CLI_KEYS: readonly ["callbar", "forms", "signups"];
|
|
2
2
|
export type TypedConfigCliKey = (typeof TYPED_CONFIG_CLI_KEYS)[number];
|
|
3
3
|
export declare function isTypedConfigCliKey(key: string): key is TypedConfigCliKey;
|
|
4
4
|
export declare function runTypedConfig(key: TypedConfigCliKey, slug: string, action: string, flags: string[]): Promise<number>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* §CLI-MOD-CFG — typed get/set for callbar, forms,
|
|
2
|
+
* §CLI-MOD-CFG — typed get/set for callbar, forms, signups.
|
|
3
3
|
*/
|
|
4
4
|
import { assertNoUnknownFlags, takeFlag } from "../argv.js";
|
|
5
5
|
import { EXIT_OK, v1Get, v1Post } from "../http/client.js";
|
|
6
6
|
import { emitOk, emitUsage, isJson } from "../runtime.js";
|
|
7
7
|
import { formatModuleUsage } from "./commands.js";
|
|
8
|
-
export const TYPED_CONFIG_CLI_KEYS = ["callbar", "forms", "
|
|
8
|
+
export const TYPED_CONFIG_CLI_KEYS = ["callbar", "forms", "signups"];
|
|
9
9
|
export function isTypedConfigCliKey(key) {
|
|
10
10
|
return TYPED_CONFIG_CLI_KEYS.includes(key);
|
|
11
11
|
}
|
|
@@ -33,10 +33,6 @@ function printCallbar(config) {
|
|
|
33
33
|
printLine("sms", yesNo(config.sms));
|
|
34
34
|
printLine("label", dash(config.label));
|
|
35
35
|
}
|
|
36
|
-
function printBooking(config) {
|
|
37
|
-
printLine("notify", dash(config.notifyEmail));
|
|
38
|
-
printLine("hours", dash(config.hours));
|
|
39
|
-
}
|
|
40
36
|
function printConfirmable(config, confirmations) {
|
|
41
37
|
printLine("notify", dash(config.notifyEmail));
|
|
42
38
|
const on = config.confirmEnabled === true;
|
|
@@ -102,8 +98,6 @@ export async function runTypedConfig(key, slug, action, flags) {
|
|
|
102
98
|
}
|
|
103
99
|
if (key === "callbar")
|
|
104
100
|
printCallbar(data.config ?? {});
|
|
105
|
-
else if (key === "booking")
|
|
106
|
-
printBooking(data.config ?? {});
|
|
107
101
|
else
|
|
108
102
|
printConfirmable(data.config ?? {}, data.confirmations);
|
|
109
103
|
return EXIT_OK;
|
|
@@ -115,7 +109,6 @@ export async function runTypedConfig(key, slug, action, flags) {
|
|
|
115
109
|
const call = takeFlag(work, "--call");
|
|
116
110
|
const label = takeFlag(work, "--label");
|
|
117
111
|
const notifyEmail = takeFlag(work, "--notify-email");
|
|
118
|
-
const hours = takeFlag(work, "--hours");
|
|
119
112
|
const confirmRaw = takeFlag(work, "--confirm");
|
|
120
113
|
const confirmTemplate = takeFlag(work, "--confirm-template");
|
|
121
114
|
assertNoUnknownFlags(work, "modules");
|
|
@@ -139,8 +132,6 @@ export async function runTypedConfig(key, slug, action, flags) {
|
|
|
139
132
|
body.label = label;
|
|
140
133
|
if (notifyEmail !== undefined)
|
|
141
134
|
body.notifyEmail = notifyEmail;
|
|
142
|
-
if (hours !== undefined)
|
|
143
|
-
body.hours = hours;
|
|
144
135
|
if (confirmEnabled !== undefined)
|
|
145
136
|
body.confirmEnabled = confirmEnabled;
|
|
146
137
|
if (confirmTemplate !== undefined) {
|
|
@@ -162,8 +153,6 @@ export async function runTypedConfig(key, slug, action, flags) {
|
|
|
162
153
|
const cfg = data.config ?? {};
|
|
163
154
|
if (key === "callbar")
|
|
164
155
|
printCallbar(cfg);
|
|
165
|
-
else if (key === "booking")
|
|
166
|
-
printBooking(cfg);
|
|
167
156
|
else
|
|
168
157
|
printConfirmable(cfg);
|
|
169
158
|
return EXIT_OK;
|