@businessdash/sdk 0.9.60 → 0.9.70
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 +1012 -186
- package/assets/biab-sw.js +92 -0
- package/dist/account-core/index.d.ts +126 -0
- package/dist/account-core/index.d.ts.map +1 -0
- package/dist/account-core/index.js +191 -0
- package/dist/account-core/index.js.map +1 -0
- package/dist/account.d.ts +11 -0
- package/dist/account.d.ts.map +1 -0
- package/dist/account.js +11 -0
- package/dist/account.js.map +1 -0
- package/dist/auth-handler.d.ts +1 -1
- package/dist/auth-links.d.ts +33 -0
- package/dist/auth-links.d.ts.map +1 -0
- package/dist/auth-links.js +64 -0
- package/dist/auth-links.js.map +1 -0
- package/dist/blog-core/index.d.ts +112 -0
- package/dist/blog-core/index.d.ts.map +1 -0
- package/dist/blog-core/index.js +330 -0
- package/dist/blog-core/index.js.map +1 -0
- package/dist/blog.d.ts +11 -0
- package/dist/blog.d.ts.map +1 -0
- package/dist/blog.js +11 -0
- package/dist/blog.js.map +1 -0
- package/dist/chat-core/index.d.ts +97 -0
- package/dist/chat-core/index.d.ts.map +1 -0
- package/dist/chat-core/index.js +237 -0
- package/dist/chat-core/index.js.map +1 -0
- package/dist/chat.d.ts +11 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +11 -0
- package/dist/chat.js.map +1 -0
- package/dist/checkout-core/index.d.ts +65 -0
- package/dist/checkout-core/index.d.ts.map +1 -0
- package/dist/checkout-core/index.js +159 -0
- package/dist/checkout-core/index.js.map +1 -0
- package/dist/checkout.d.ts +10 -0
- package/dist/checkout.d.ts.map +1 -0
- package/dist/checkout.js +10 -0
- package/dist/checkout.js.map +1 -0
- package/dist/cli.js +133 -25
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +567 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +807 -1
- package/dist/client.js.map +1 -1
- package/dist/contracts.d.ts +3309 -761
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +541 -4
- package/dist/contracts.js.map +1 -1
- package/dist/data-model-schema.d.ts +1 -1
- package/dist/data-model-schema.d.ts.map +1 -1
- package/dist/element.d.ts +30 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +56 -0
- package/dist/element.js.map +1 -1
- package/dist/embed-protocol.d.ts +86 -0
- package/dist/embed-protocol.d.ts.map +1 -0
- package/dist/embed-protocol.js +60 -0
- package/dist/embed-protocol.js.map +1 -0
- package/dist/framework-support.d.ts +122 -0
- package/dist/framework-support.d.ts.map +1 -0
- package/dist/framework-support.js +323 -0
- package/dist/framework-support.js.map +1 -0
- package/dist/index.cjs +1244 -5
- package/dist/legal-core/index.cjs +115 -0
- package/dist/legal-core/index.d.ts +160 -0
- package/dist/legal-core/index.d.ts.map +1 -0
- package/dist/legal-core/index.js +220 -0
- package/dist/legal-core/index.js.map +1 -0
- package/dist/marketing-core/index.d.ts +66 -0
- package/dist/marketing-core/index.d.ts.map +1 -0
- package/dist/marketing-core/index.js +154 -0
- package/dist/marketing-core/index.js.map +1 -0
- package/dist/marketing.d.ts +7 -0
- package/dist/marketing.d.ts.map +1 -0
- package/dist/marketing.js +7 -0
- package/dist/marketing.js.map +1 -0
- package/dist/mcp-adapters/index.d.ts +135 -0
- package/dist/mcp-adapters/index.d.ts.map +1 -0
- package/dist/mcp-adapters/index.js +187 -0
- package/dist/mcp-adapters/index.js.map +1 -0
- package/dist/mcp-adapters.d.ts +7 -0
- package/dist/mcp-adapters.d.ts.map +1 -0
- package/dist/mcp-adapters.js +7 -0
- package/dist/mcp-adapters.js.map +1 -0
- package/dist/model3d-core/index.cjs +95 -0
- package/dist/model3d-core/index.d.ts +167 -0
- package/dist/model3d-core/index.d.ts.map +1 -0
- package/dist/model3d-core/index.js +158 -0
- package/dist/model3d-core/index.js.map +1 -0
- package/dist/notifications-core/index.cjs +315 -0
- package/dist/notifications-core/index.d.ts +229 -0
- package/dist/notifications-core/index.d.ts.map +1 -0
- package/dist/notifications-core/index.js +445 -0
- package/dist/notifications-core/index.js.map +1 -0
- package/dist/portal-core/index.d.ts +451 -0
- package/dist/portal-core/index.d.ts.map +1 -0
- package/dist/portal-core/index.js +819 -0
- package/dist/portal-core/index.js.map +1 -0
- package/dist/portal.d.ts +7 -0
- package/dist/portal.d.ts.map +1 -0
- package/dist/portal.js +7 -0
- package/dist/portal.js.map +1 -0
- package/dist/push-core/index.cjs +171 -0
- package/dist/push-core/index.d.ts +149 -0
- package/dist/push-core/index.d.ts.map +1 -0
- package/dist/push-core/index.js +231 -0
- package/dist/push-core/index.js.map +1 -0
- package/dist/react-marketing.d.ts +1 -17
- package/dist/react-marketing.d.ts.map +1 -1
- package/dist/react-marketing.js +4 -0
- package/dist/react-marketing.js.map +1 -1
- package/dist/react.d.ts +294 -101
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +302 -246
- package/dist/react.js.map +1 -1
- package/dist/seed-core/index.d.ts +354 -0
- package/dist/seed-core/index.d.ts.map +1 -0
- package/dist/seed-core/index.js +420 -0
- package/dist/seed-core/index.js.map +1 -0
- package/dist/seed.d.ts +7 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +7 -0
- package/dist/seed.js.map +1 -0
- package/dist/seo-core/blog.d.ts +94 -0
- package/dist/seo-core/blog.d.ts.map +1 -0
- package/dist/seo-core/blog.js +149 -0
- package/dist/seo-core/blog.js.map +1 -0
- package/dist/seo-core/commerce.d.ts +64 -0
- package/dist/seo-core/commerce.d.ts.map +1 -0
- package/dist/seo-core/commerce.js +87 -0
- package/dist/seo-core/commerce.js.map +1 -0
- package/dist/seo-core/index.cjs +751 -0
- package/dist/seo-core/index.d.ts +226 -0
- package/dist/seo-core/index.d.ts.map +1 -0
- package/dist/seo-core/index.js +455 -0
- package/dist/seo-core/index.js.map +1 -0
- package/dist/seo-core/local.d.ts +181 -0
- package/dist/seo-core/local.d.ts.map +1 -0
- package/dist/seo-core/local.js +193 -0
- package/dist/seo-core/local.js.map +1 -0
- package/dist/sitemap-core/index.cjs +167 -0
- package/dist/sitemap-core/index.d.ts +155 -0
- package/dist/sitemap-core/index.d.ts.map +1 -0
- package/dist/sitemap-core/index.js +195 -0
- package/dist/sitemap-core/index.js.map +1 -0
- package/dist/social-core/index.d.ts +74 -0
- package/dist/social-core/index.d.ts.map +1 -0
- package/dist/social-core/index.js +72 -0
- package/dist/social-core/index.js.map +1 -0
- package/dist/social.d.ts +7 -0
- package/dist/social.d.ts.map +1 -0
- package/dist/social.js +7 -0
- package/dist/social.js.map +1 -0
- package/dist/solid-compat.d.ts +204 -0
- package/dist/solid-compat.d.ts.map +1 -0
- package/dist/solid-compat.js +221 -0
- package/dist/solid-compat.js.map +1 -0
- package/dist/store-core/index.d.ts +141 -0
- package/dist/store-core/index.d.ts.map +1 -0
- package/dist/store-core/index.js +277 -0
- package/dist/store-core/index.js.map +1 -0
- package/dist/store.d.ts +12 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +12 -0
- package/dist/store.js.map +1 -0
- package/dist/vanilla.d.ts +111 -0
- package/dist/vanilla.d.ts.map +1 -1
- package/dist/vanilla.js +206 -0
- package/dist/vanilla.js.map +1 -1
- package/dist/verify-core/index.d.ts +98 -0
- package/dist/verify-core/index.d.ts.map +1 -0
- package/dist/verify-core/index.js +186 -0
- package/dist/verify-core/index.js.map +1 -0
- package/dist/verify.d.ts +8 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +8 -0
- package/dist/verify.js.map +1 -0
- package/openapi.json +4316 -1313
- package/package.json +121 -9
- package/src/account-core/index.ts +309 -0
- package/src/account.ts +11 -0
- package/src/angular/headless.ts +519 -0
- package/src/angular/index.ts +3 -0
- package/src/auth-links.ts +76 -0
- package/src/blog-core/index.ts +423 -0
- package/src/blog.ts +11 -0
- package/src/chat-core/index.ts +335 -0
- package/src/chat.ts +11 -0
- package/src/checkout-core/index.ts +225 -0
- package/src/checkout.ts +10 -0
- package/src/cli.ts +184 -28
- package/src/client.ts +998 -0
- package/src/contracts.ts +730 -11
- package/src/data-model-schema.ts +1 -1
- package/src/element.ts +102 -0
- package/src/embed-protocol.ts +100 -0
- package/src/framework-support.ts +440 -0
- package/src/legal-core/index.ts +276 -0
- package/src/marketing-core/index.ts +209 -0
- package/src/marketing.ts +7 -0
- package/src/mcp-adapters/index.ts +264 -0
- package/src/mcp-adapters.ts +7 -0
- package/src/model3d-core/index.ts +248 -0
- package/src/notifications-core/index.ts +650 -0
- package/src/portal-core/index.ts +1564 -0
- package/src/portal.ts +7 -0
- package/src/push-core/index.ts +335 -0
- package/src/qwik.tsx +602 -2
- package/src/react-marketing.tsx +5 -0
- package/src/react.tsx +434 -319
- package/src/seed-core/index.ts +735 -0
- package/src/seed.ts +7 -0
- package/src/seo-core/blog.ts +216 -0
- package/src/seo-core/commerce.ts +138 -0
- package/src/seo-core/index.ts +605 -0
- package/src/seo-core/local.ts +333 -0
- package/src/sitemap-core/index.ts +296 -0
- package/src/social-core/index.ts +103 -0
- package/src/social.ts +7 -0
- package/src/solid-compat.tsx +347 -0
- package/src/solid-surfaces.tsx +1311 -0
- package/src/solid.tsx +82 -60
- package/src/store-core/index.ts +426 -0
- package/src/store.ts +12 -0
- package/src/svelte/SocialLinks.svelte +84 -0
- package/src/svelte/headless.ts +435 -0
- package/src/svelte/index.ts +9 -0
- package/src/vanilla.ts +367 -0
- package/src/verify-core/index.ts +288 -0
- package/src/verify.ts +8 -0
- package/src/vue/headless.ts +527 -0
- package/src/vue/index.ts +3 -0
package/src/solid.tsx
CHANGED
|
@@ -27,22 +27,32 @@
|
|
|
27
27
|
* @module
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
// Only the primitives that exist UNCHANGED in both Solid 1 and Solid 2.
|
|
31
|
+
// Everything Solid 2 moved or dropped comes from `solid-compat` instead, so
|
|
32
|
+
// this one binding compiles and runs on either version. See that module for
|
|
33
|
+
// the measured API differences.
|
|
34
|
+
import {
|
|
35
|
+
createContext,
|
|
36
|
+
createMemo,
|
|
37
|
+
createSignal,
|
|
38
|
+
onCleanup,
|
|
39
|
+
useContext,
|
|
40
|
+
} from "solid-js";
|
|
41
|
+
|
|
31
42
|
import {
|
|
32
43
|
type Accessor,
|
|
33
44
|
For,
|
|
34
45
|
Match,
|
|
35
46
|
Show,
|
|
47
|
+
type SolidNode,
|
|
36
48
|
Switch,
|
|
37
|
-
createContext,
|
|
38
|
-
createMemo,
|
|
39
|
-
createSignal,
|
|
40
49
|
createUniqueId,
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
cx,
|
|
51
|
+
fromStore,
|
|
43
52
|
onMount,
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
providerFor,
|
|
54
|
+
renderNode,
|
|
55
|
+
} from "./solid-compat.js";
|
|
46
56
|
|
|
47
57
|
import type {
|
|
48
58
|
BiabClient,
|
|
@@ -72,11 +82,15 @@ import {
|
|
|
72
82
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
73
83
|
|
|
74
84
|
const BiabClientContext = createContext<Accessor<BiabClient | undefined>>();
|
|
85
|
+
/** Solid 1 exposes `.Provider`; Solid 2 makes the context its own provider. */
|
|
86
|
+
const BiabClientProvider = providerFor<Accessor<BiabClient | undefined>>(
|
|
87
|
+
BiabClientContext,
|
|
88
|
+
);
|
|
75
89
|
|
|
76
90
|
export interface BiabProviderProps {
|
|
77
91
|
/** The SDK client shared with descendant `<BiabForm>`s. */
|
|
78
92
|
client: BiabClient;
|
|
79
|
-
children?:
|
|
93
|
+
children?: SolidNode;
|
|
80
94
|
}
|
|
81
95
|
|
|
82
96
|
/**
|
|
@@ -84,12 +98,12 @@ export interface BiabProviderProps {
|
|
|
84
98
|
* doesn't get its own `client` prop falls back to this one. Optional — passing
|
|
85
99
|
* `client` directly to `<BiabForm>` works without a provider.
|
|
86
100
|
*/
|
|
87
|
-
export function BiabProvider(props: BiabProviderProps)
|
|
101
|
+
export function BiabProvider(props: BiabProviderProps) {
|
|
88
102
|
const value = createMemo(() => props.client);
|
|
89
103
|
return (
|
|
90
|
-
<
|
|
91
|
-
{props.children}
|
|
92
|
-
</
|
|
104
|
+
<BiabClientProvider value={value}>
|
|
105
|
+
{renderNode(props.children)}
|
|
106
|
+
</BiabClientProvider>
|
|
93
107
|
);
|
|
94
108
|
}
|
|
95
109
|
|
|
@@ -126,17 +140,12 @@ export function createFormStore(
|
|
|
126
140
|
): BiabFormStore {
|
|
127
141
|
const controller = createFormController(options);
|
|
128
142
|
|
|
129
|
-
// `
|
|
130
|
-
//
|
|
131
|
-
// subscribe
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
});
|
|
136
|
-
// `from` accessors are `T | undefined` until the first emit; the seed above
|
|
137
|
-
// makes that window empty, but narrow it for callers regardless.
|
|
138
|
-
const snapshot: Accessor<FormSnapshot> = () =>
|
|
139
|
-
tracked() ?? controller.snapshot();
|
|
143
|
+
// `fromStore` bridges the controller's snapshot/subscribe contract into a
|
|
144
|
+
// Solid accessor. It reads `snapshot()` up front because the core does NOT
|
|
145
|
+
// replay on subscribe — waiting for the first notification would render an
|
|
146
|
+
// empty form until something happened to change, which on an untouched form
|
|
147
|
+
// is forever. Unlike Solid 1's `from`, it is never `undefined`.
|
|
148
|
+
const snapshot: Accessor<FormSnapshot> = fromStore(controller);
|
|
140
149
|
|
|
141
150
|
onMount(() => {
|
|
142
151
|
void controller.load();
|
|
@@ -205,7 +214,7 @@ function asString(v: unknown): string {
|
|
|
205
214
|
return typeof v === "string" ? v : "";
|
|
206
215
|
}
|
|
207
216
|
|
|
208
|
-
function FieldInput(props: FieldInputProps)
|
|
217
|
+
function FieldInput(props: FieldInputProps) {
|
|
209
218
|
const t = () => props.field.type;
|
|
210
219
|
const field = () => props.field;
|
|
211
220
|
// Resolved HTML autofill token for this field (or undefined to omit the
|
|
@@ -415,11 +424,10 @@ function FieldInput(props: FieldInputProps): JSX.Element {
|
|
|
415
424
|
{(color) => (
|
|
416
425
|
<button
|
|
417
426
|
type="button"
|
|
418
|
-
class="biab-color-swatch"
|
|
419
|
-
classList={{
|
|
427
|
+
class={cx("biab-color-swatch", {
|
|
420
428
|
"biab-color-swatch--selected":
|
|
421
429
|
asString(props.value()) === color,
|
|
422
|
-
}}
|
|
430
|
+
})}
|
|
423
431
|
style={{ "background-color": color }}
|
|
424
432
|
title={color}
|
|
425
433
|
onClick={() => props.set(color)}
|
|
@@ -508,8 +516,7 @@ function FieldInput(props: FieldInputProps): JSX.Element {
|
|
|
508
516
|
{(_, i) => (
|
|
509
517
|
<button
|
|
510
518
|
type="button"
|
|
511
|
-
class="biab-stars__star"
|
|
512
|
-
classList={{ "biab-stars__star--on": i() < cur() }}
|
|
519
|
+
class={cx("biab-stars__star", { "biab-stars__star--on": i() < cur() })}
|
|
513
520
|
aria-label={`${i() + 1} star`}
|
|
514
521
|
onClick={() => props.set(i() + 1)}
|
|
515
522
|
>
|
|
@@ -533,8 +540,7 @@ function FieldInput(props: FieldInputProps): JSX.Element {
|
|
|
533
540
|
{(emoji, i) => (
|
|
534
541
|
<button
|
|
535
542
|
type="button"
|
|
536
|
-
class="biab-happiness__face"
|
|
537
|
-
classList={{ "biab-happiness__face--on": i() === cur() }}
|
|
543
|
+
class={cx("biab-happiness__face", { "biab-happiness__face--on": i() === cur() })}
|
|
538
544
|
onClick={() => props.set(i())}
|
|
539
545
|
>
|
|
540
546
|
{emoji}
|
|
@@ -754,10 +760,15 @@ function FieldInput(props: FieldInputProps): JSX.Element {
|
|
|
754
760
|
};
|
|
755
761
|
const maxFiles = () => cfg().maxFiles ?? 1;
|
|
756
762
|
const remaining = () => Math.max(maxFiles() - files().length, 0);
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
763
|
+
// Read the accessor ONCE. Calling `cfg()` again inside the branch
|
|
764
|
+
// starts a fresh, un-narrowed read, so the guard above buys
|
|
765
|
+
// nothing and `allowedTypes` is still possibly-undefined.
|
|
766
|
+
const accept = () => {
|
|
767
|
+
const allowed = cfg().allowedTypes;
|
|
768
|
+
return allowed && allowed.length > 0
|
|
769
|
+
? allowed.join(",")
|
|
760
770
|
: undefined;
|
|
771
|
+
};
|
|
761
772
|
let inputRef: HTMLInputElement | undefined;
|
|
762
773
|
const [localError, setLocalError] = createSignal<string | null>(null);
|
|
763
774
|
|
|
@@ -882,7 +893,7 @@ interface RenderCtx {
|
|
|
882
893
|
setValue: (id: string, value: unknown) => void;
|
|
883
894
|
upload: (fieldId: string, file: File, filename?: string) => Promise<FormFileValue>;
|
|
884
895
|
/** Optional consumer render override, per field. */
|
|
885
|
-
fieldSlot?: (args: FieldSlotArgs) =>
|
|
896
|
+
fieldSlot?: (args: FieldSlotArgs) => SolidNode;
|
|
886
897
|
/** Resolve the HTML autofill token for a field (or `undefined` to omit). */
|
|
887
898
|
autocomplete: (field: FormCoreField) => string | undefined;
|
|
888
899
|
}
|
|
@@ -894,7 +905,7 @@ export interface FieldSlotArgs {
|
|
|
894
905
|
setValue: (value: unknown) => void;
|
|
895
906
|
}
|
|
896
907
|
|
|
897
|
-
function FieldRow(props: { field: FormCoreField; ctx: RenderCtx })
|
|
908
|
+
function FieldRow(props: { field: FormCoreField; ctx: RenderCtx }) {
|
|
898
909
|
const field = () => props.field;
|
|
899
910
|
const value = () => props.ctx.snapshot().values[field().id];
|
|
900
911
|
const error = () => props.ctx.snapshot().errors[field().id];
|
|
@@ -914,12 +925,11 @@ function FieldRow(props: { field: FormCoreField; ctx: RenderCtx }): JSX.Element
|
|
|
914
925
|
data-field-id={field().id}
|
|
915
926
|
data-biab-field={fieldCssKey(field())}
|
|
916
927
|
data-biab-type={field().type}
|
|
917
|
-
class="biab-field"
|
|
918
|
-
classList={{
|
|
928
|
+
class={cx("biab-field", {
|
|
919
929
|
[`biab-field--${field().type}`]: true,
|
|
920
930
|
"biab-field--required": field().required === true,
|
|
921
931
|
"biab-field--error": Boolean(error()),
|
|
922
|
-
}}
|
|
932
|
+
})}
|
|
923
933
|
>
|
|
924
934
|
<Show when={showLabel() && (field().label || field().required)}>
|
|
925
935
|
<label class="biab-field__label">
|
|
@@ -961,7 +971,7 @@ function RenderTree(props: {
|
|
|
961
971
|
fields: FormCoreField[];
|
|
962
972
|
ctx: RenderCtx;
|
|
963
973
|
flat?: boolean;
|
|
964
|
-
})
|
|
974
|
+
}) {
|
|
965
975
|
return (
|
|
966
976
|
<div class="biab-tree">
|
|
967
977
|
<For each={props.fields}>
|
|
@@ -981,8 +991,7 @@ function RenderTree(props: {
|
|
|
981
991
|
return (
|
|
982
992
|
<div
|
|
983
993
|
data-biab-group={fieldCssKey(node)}
|
|
984
|
-
class="biab-group"
|
|
985
|
-
classList={{ "biab-group--bordered": !props.flat }}
|
|
994
|
+
class={cx("biab-group", { "biab-group--bordered": !props.flat })}
|
|
986
995
|
>
|
|
987
996
|
<Show
|
|
988
997
|
when={node.label && node.showGroupLabel === true}
|
|
@@ -1035,8 +1044,7 @@ function RenderTree(props: {
|
|
|
1035
1044
|
};
|
|
1036
1045
|
return (
|
|
1037
1046
|
<div
|
|
1038
|
-
class="biab-or"
|
|
1039
|
-
classList={{ "biab-or--error": errored() }}
|
|
1047
|
+
class={cx("biab-or", { "biab-or--error": errored() })}
|
|
1040
1048
|
>
|
|
1041
1049
|
<Show when={node.label}>
|
|
1042
1050
|
<div class="biab-or__label">
|
|
@@ -1101,7 +1109,7 @@ function RenderTree(props: {
|
|
|
1101
1109
|
// Progress — labeled "steps" or thin "bar". Mirrors FormPreview's two indicators.
|
|
1102
1110
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
1103
1111
|
|
|
1104
|
-
function StepProgress(props: { snapshot: Accessor<FormSnapshot> })
|
|
1112
|
+
function StepProgress(props: { snapshot: Accessor<FormSnapshot> }) {
|
|
1105
1113
|
const steps = () => props.snapshot().steps;
|
|
1106
1114
|
const current = () => props.snapshot().step;
|
|
1107
1115
|
return (
|
|
@@ -1119,27 +1127,24 @@ function StepProgress(props: { snapshot: Accessor<FormSnapshot> }): JSX.Element
|
|
|
1119
1127
|
<>
|
|
1120
1128
|
<Show when={i() > 0}>
|
|
1121
1129
|
<div
|
|
1122
|
-
class="biab-progress__line"
|
|
1123
|
-
classList={{
|
|
1130
|
+
class={cx("biab-progress__line", {
|
|
1124
1131
|
"biab-progress__line--filled": i() <= current(),
|
|
1125
|
-
}}
|
|
1132
|
+
})}
|
|
1126
1133
|
/>
|
|
1127
1134
|
</Show>
|
|
1128
1135
|
<div class="biab-progress__node">
|
|
1129
1136
|
<span
|
|
1130
|
-
class="biab-progress__dot"
|
|
1131
|
-
classList={{
|
|
1137
|
+
class={cx("biab-progress__dot", {
|
|
1132
1138
|
"biab-progress__dot--current": isCurrent(),
|
|
1133
1139
|
"biab-progress__dot--done": done(),
|
|
1134
|
-
}}
|
|
1140
|
+
})}
|
|
1135
1141
|
>
|
|
1136
1142
|
{done() ? "✓" : i() + 1}
|
|
1137
1143
|
</span>
|
|
1138
1144
|
<span
|
|
1139
|
-
class="biab-progress__step-label"
|
|
1140
|
-
classList={{
|
|
1145
|
+
class={cx("biab-progress__step-label", {
|
|
1141
1146
|
"biab-progress__step-label--current": isCurrent(),
|
|
1142
|
-
}}
|
|
1147
|
+
})}
|
|
1143
1148
|
>
|
|
1144
1149
|
{title()}
|
|
1145
1150
|
</span>
|
|
@@ -1153,7 +1158,7 @@ function StepProgress(props: { snapshot: Accessor<FormSnapshot> }): JSX.Element
|
|
|
1153
1158
|
);
|
|
1154
1159
|
}
|
|
1155
1160
|
|
|
1156
|
-
function BarProgress(props: { snapshot: Accessor<FormSnapshot> })
|
|
1161
|
+
function BarProgress(props: { snapshot: Accessor<FormSnapshot> }) {
|
|
1157
1162
|
return (
|
|
1158
1163
|
<div class="biab-progress biab-progress--bar">
|
|
1159
1164
|
<span class="biab-progress__count">
|
|
@@ -1194,7 +1199,7 @@ export interface BiabFormProps {
|
|
|
1194
1199
|
/** Fired only on a failed submit. */
|
|
1195
1200
|
onError?: (result: Extract<FormSubmitResult, { ok: false }>) => void;
|
|
1196
1201
|
/** Per-field render override; return your own markup for any field. */
|
|
1197
|
-
field?: (args: FieldSlotArgs) =>
|
|
1202
|
+
field?: (args: FieldSlotArgs) => SolidNode;
|
|
1198
1203
|
/** Global HTML autofill switch. Defaults to inferring a token per field;
|
|
1199
1204
|
* `false` emits `autocomplete="off"` on every input. Override individual
|
|
1200
1205
|
* fields with `fieldAutoComplete`. */
|
|
@@ -1205,7 +1210,10 @@ export interface BiabFormProps {
|
|
|
1205
1210
|
/** Extra class on the form root (alias: `className`). */
|
|
1206
1211
|
class?: string;
|
|
1207
1212
|
className?: string;
|
|
1208
|
-
|
|
1213
|
+
// `string` or a style object. Not `JSX.CSSProperties`: that type lives in
|
|
1214
|
+
// `solid-js` on Solid 1 and `@solidjs/web` on Solid 2, and naming it would
|
|
1215
|
+
// reintroduce the version split `solid-compat` exists to remove.
|
|
1216
|
+
style?: Record<string, string | number> | string;
|
|
1209
1217
|
}
|
|
1210
1218
|
|
|
1211
1219
|
/**
|
|
@@ -1217,13 +1225,19 @@ export interface BiabFormProps {
|
|
|
1217
1225
|
* All visual classes are `biab-*` on light DOM, so consumer CSS cascades. The
|
|
1218
1226
|
* component ships no styles of its own.
|
|
1219
1227
|
*/
|
|
1220
|
-
export function BiabForm(props: BiabFormProps)
|
|
1228
|
+
export function BiabForm(props: BiabFormProps) {
|
|
1221
1229
|
const providerClient = useBiabClient();
|
|
1222
1230
|
const resolvedClient = () => props.client ?? providerClient;
|
|
1223
1231
|
const formId = createUniqueId();
|
|
1224
1232
|
|
|
1233
|
+
// Resolved once, for the same reason as `accept` above: the ternary narrows
|
|
1234
|
+
// the FIRST call, and the second call in the branch is a fresh read that TS
|
|
1235
|
+
// still types as possibly-undefined — which is also what would reach the
|
|
1236
|
+
// controller if the provider ever changed between the two reads.
|
|
1237
|
+
const initialClient = resolvedClient();
|
|
1238
|
+
|
|
1225
1239
|
const store = createFormStore({
|
|
1226
|
-
...(
|
|
1240
|
+
...(initialClient ? { client: initialClient } : {}),
|
|
1227
1241
|
...(props.slug ? { slug: props.slug } : {}),
|
|
1228
1242
|
...(props.schema ? { schema: props.schema } : {}),
|
|
1229
1243
|
submitOptions: {
|
|
@@ -1464,3 +1478,11 @@ export type {
|
|
|
1464
1478
|
FormSubmitOptions,
|
|
1465
1479
|
} from "./forms-core/index.js";
|
|
1466
1480
|
export { createFormController } from "./forms-core/index.js";
|
|
1481
|
+
|
|
1482
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
1483
|
+
// The rest of the product surface — storefront, cart, checkout, blog, chat,
|
|
1484
|
+
// the customer portal, auth, followers and social links. Split into its own
|
|
1485
|
+
// file to keep this one about forms; re-exported here so `/solid` stays a
|
|
1486
|
+
// single entry point.
|
|
1487
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
1488
|
+
export * from "./solid-surfaces.js";
|