@wix/himalaya-cli 0.1569.0 → 0.1570.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/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/l10n-strings.d.ts +3 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact-service.d.ts +17 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/business-contact.d.ts +73 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/index.d.ts +3 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite-target.d.ts +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/screens/src/invite.d.ts +148 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +558 -84
- package/dist/cli.mjs +232 -27
- package/guides/getting-started.md +5 -0
- package/guides/himi-skill.md +5 -0
- package/guides/one-app-to-himi-app.md +145 -4
- package/guides/skill.md +5 -0
- package/guides/tier-5-add-a-screen.md +20 -0
- package/package.json +2 -2
- package/templates/beauty-salon/config.ts +7 -0
- package/templates/beauty-salon/dev/index.ts +213 -0
- package/templates/beauty-salon/himalaya.content.json +3 -0
- package/templates/beauty-salon/tier5-src/business-contact/index.ts +6 -0
- package/templates/branded-lite/config.ts +7 -0
- package/templates/branded-lite/dev/index.ts +246 -0
- package/templates/branded-lite/himalaya.content.json +3 -0
- package/templates/branded-lite/tier5-src/business-contact/index.ts +6 -0
- package/templates/branded-lite/tier5-src/himi-branded-lite-notifsettings/index.ts +39 -11
- package/templates/community-club/config.ts +7 -0
- package/templates/community-club/dev/index.ts +213 -0
- package/templates/community-club/himalaya.content.json +3 -0
- package/templates/community-club/tier5-src/business-contact/index.ts +6 -0
- package/templates/events-meetups/config.ts +7 -0
- package/templates/events-meetups/dev/index.ts +213 -0
- package/templates/events-meetups/himalaya.content.json +3 -0
- package/templates/events-meetups/tier5-src/business-contact/index.ts +6 -0
- package/templates/gym-fitness/config.ts +7 -0
- package/templates/gym-fitness/dev/index.ts +213 -0
- package/templates/gym-fitness/himalaya.content.json +3 -0
- package/templates/gym-fitness/tier5-src/business-contact/index.ts +6 -0
- package/templates/nonprofit-cause/config.ts +7 -0
- package/templates/nonprofit-cause/dev/index.ts +213 -0
- package/templates/nonprofit-cause/himalaya.content.json +3 -0
- package/templates/nonprofit-cause/tier5-src/business-contact/index.ts +6 -0
- package/templates/podcast-creator/config.ts +7 -0
- package/templates/podcast-creator/dev/index.ts +213 -0
- package/templates/podcast-creator/himalaya.content.json +3 -0
- package/templates/podcast-creator/tier5-src/business-contact/index.ts +6 -0
- package/templates/portfolio-creative/config.ts +7 -0
- package/templates/portfolio-creative/dev/index.ts +213 -0
- package/templates/portfolio-creative/himalaya.content.json +3 -0
- package/templates/portfolio-creative/tier5-src/business-contact/index.ts +6 -0
- package/templates/restaurant/config.ts +7 -0
- package/templates/restaurant/dev/index.ts +213 -0
- package/templates/restaurant/himalaya.content.json +3 -0
- package/templates/restaurant/tier5-src/business-contact/index.ts +6 -0
- package/templates/retail-store/config.ts +7 -0
- package/templates/retail-store/dev/index.ts +213 -0
- package/templates/retail-store/himalaya.content.json +3 -0
- package/templates/retail-store/tier5-src/business-contact/index.ts +6 -0
- package/templates/yoga-studio/config.ts +7 -0
- package/templates/yoga-studio/dev/index.ts +213 -0
- package/templates/yoga-studio/himalaya.content.json +3 -0
- package/templates/yoga-studio/tier5-src/business-contact/index.ts +6 -0
|
@@ -50,8 +50,9 @@ export interface L10nStringFinding {
|
|
|
50
50
|
export declare function collectDescriptorStrings(descriptor: unknown, options?: {
|
|
51
51
|
/**
|
|
52
52
|
* Values the app has DECLARED as copy (its `strings/<locale>.json` table), for which
|
|
53
|
-
* the "has a letter"
|
|
54
|
-
*
|
|
53
|
+
* the "has a letter" and lowercase-word heuristics are waived: a declared unit
|
|
54
|
+
* such as "member" is copy despite looking like an id. Binding/id/url/hex/length
|
|
55
|
+
* filters still apply, and only copy fields are collected. Exists for letterless copy — a phone
|
|
55
56
|
* or number format such as "+1 555 0100" has no letter, so the heuristic calls it
|
|
56
57
|
* noise, and the extractor dropped `reserve.phonePlaceholder` (#3320). Only exact
|
|
57
58
|
* table values qualify, so an arbitrary "4.8" in sample data stays out.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface BusinessContactServiceOptions {
|
|
2
|
+
service?: string;
|
|
3
|
+
/** Must read an allowed, site-bound public total. Never use a preview/page length. */
|
|
4
|
+
loadMemberCount?: () => Promise<unknown>;
|
|
5
|
+
}
|
|
6
|
+
/** Shared worker half of businessContactSection. The caller supplies its allowed count read. */
|
|
7
|
+
export declare function createBusinessContactService(opts?: BusinessContactServiceOptions): import("@wix/himalaya/state", { with: { "resolution-mode": "import" } }).ServiceHandle<any> & {
|
|
8
|
+
load: (arg?: {
|
|
9
|
+
showMemberCount?: boolean;
|
|
10
|
+
memberCount?: number;
|
|
11
|
+
}) => Promise<any>;
|
|
12
|
+
open: (arg?: {
|
|
13
|
+
kind?: string;
|
|
14
|
+
value?: string;
|
|
15
|
+
failureLabel?: string;
|
|
16
|
+
}) => Promise<any>;
|
|
17
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** Public, build-time business evidence. Coordinates describe the business, never the device. */
|
|
2
|
+
export interface BusinessContact {
|
|
3
|
+
address?: string;
|
|
4
|
+
phone?: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
website?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
isPhysical?: boolean;
|
|
9
|
+
coordinates?: {
|
|
10
|
+
latitude: number;
|
|
11
|
+
longitude: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface BusinessContactSettings {
|
|
15
|
+
isBusinessProfile?: boolean;
|
|
16
|
+
isAddressVisible?: boolean;
|
|
17
|
+
showMap?: boolean;
|
|
18
|
+
isPhoneVisible?: boolean;
|
|
19
|
+
isWebSiteLinkVisible?: boolean;
|
|
20
|
+
isEmailVisible?: boolean;
|
|
21
|
+
isDescriptionVisible?: boolean;
|
|
22
|
+
isGetInTouchVisible?: boolean;
|
|
23
|
+
getInTouchTitle?: string;
|
|
24
|
+
getInTouchDescription?: string;
|
|
25
|
+
getInTouchButton?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface BusinessContactCopy {
|
|
28
|
+
title: string;
|
|
29
|
+
message: string;
|
|
30
|
+
directions: string;
|
|
31
|
+
unavailable: string;
|
|
32
|
+
memberCountUnavailable: string;
|
|
33
|
+
member: string;
|
|
34
|
+
members: string;
|
|
35
|
+
}
|
|
36
|
+
export interface BusinessContactOptions {
|
|
37
|
+
id?: string;
|
|
38
|
+
contact?: BusinessContact;
|
|
39
|
+
/** Raw One App contact settings, including the Business Profile discriminator when applicable. */
|
|
40
|
+
settings?: BusinessContactSettings;
|
|
41
|
+
copy?: Partial<BusinessContactCopy>;
|
|
42
|
+
service?: string;
|
|
43
|
+
/** Omit when this app has no business-chat destination. The chat owns its normal auth flow. */
|
|
44
|
+
chatScreenId?: string;
|
|
45
|
+
/** Present a source-requested count. False keeps copy extractable in a hidden fragment. */
|
|
46
|
+
showMemberCount?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** Optional build-time source evidence shared by a provisioned app and a migration recipe. */
|
|
49
|
+
export interface BusinessContactContent {
|
|
50
|
+
contact?: BusinessContact;
|
|
51
|
+
settings?: BusinessContactSettings;
|
|
52
|
+
showMemberCount?: boolean;
|
|
53
|
+
/** Public source total, when collected. Missing is unknown, not zero. */
|
|
54
|
+
memberCount?: number;
|
|
55
|
+
}
|
|
56
|
+
type Node = {
|
|
57
|
+
id: string;
|
|
58
|
+
body: {
|
|
59
|
+
package: string;
|
|
60
|
+
type: string;
|
|
61
|
+
props: Record<string, unknown>;
|
|
62
|
+
};
|
|
63
|
+
modifiers?: Record<string, unknown>;
|
|
64
|
+
};
|
|
65
|
+
/** Mirrors mapContactUsSettingsByApp: empty normal settings get defaults; partial settings do not. */
|
|
66
|
+
export declare function businessContactSettings(source?: BusinessContactSettings): BusinessContactSettings;
|
|
67
|
+
/** Return only a complete, finite physical business point, preserving valid zero coordinates. */
|
|
68
|
+
export declare function businessContactPoint(contact: BusinessContact): BusinessContact["coordinates"];
|
|
69
|
+
/** Typed link inputs, shared by the descriptor and worker. No arbitrary source URL or scheme dispatch. */
|
|
70
|
+
export declare function businessContactLink(kind: string, value: unknown): string;
|
|
71
|
+
/** A content section made of standard primitives. Native shells own navigation bars and bottom tabs. */
|
|
72
|
+
export declare function businessContactSection(opts?: BusinessContactOptions): Node;
|
|
73
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function inviteTarget(identity: string): string;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/** Resolved for the current app/site. A website URL is not an invitation.
|
|
2
|
+
* Use the source invite response or a verified published target-app link. */
|
|
3
|
+
export interface InviteMetadata {
|
|
4
|
+
showInviteButton: boolean;
|
|
5
|
+
/** Collected manifest.source.metaSiteId. The bound Wix transport mints the
|
|
6
|
+
* site's instance; this recipe never supplies credentials. */
|
|
7
|
+
businessId?: string;
|
|
8
|
+
url?: string;
|
|
9
|
+
text?: string;
|
|
10
|
+
subject?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface InviteControlOptions {
|
|
13
|
+
id?: string;
|
|
14
|
+
service?: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Native action opens the shared flow. The nav worker owns its visibility;
|
|
18
|
+
* the screen worker owns login and sharing. Register the same ID/binding in
|
|
19
|
+
* topBarDefault and any complete screen override that shows this action. */
|
|
20
|
+
export declare function inviteAction(opts: InviteControlOptions & {
|
|
21
|
+
screenId: string;
|
|
22
|
+
}): {
|
|
23
|
+
id: string;
|
|
24
|
+
icon: string;
|
|
25
|
+
label: string;
|
|
26
|
+
accessibilityLabel: string;
|
|
27
|
+
hiddenPath: string;
|
|
28
|
+
onTap: {
|
|
29
|
+
actionId: string;
|
|
30
|
+
params: {
|
|
31
|
+
screenId: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/** Standard Share button inside the screen that owns createInviteService. */
|
|
36
|
+
export declare function inviteButton(opts?: InviteControlOptions): {
|
|
37
|
+
id: string;
|
|
38
|
+
body: {
|
|
39
|
+
package: string;
|
|
40
|
+
type: string;
|
|
41
|
+
props: {
|
|
42
|
+
title: string;
|
|
43
|
+
style: string;
|
|
44
|
+
fullWidth: boolean;
|
|
45
|
+
action: {
|
|
46
|
+
actionId: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
modifiers: {
|
|
51
|
+
hiddenPath: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/** Shared source-style Invite modal/page, using ordinary native navigation. */
|
|
55
|
+
export declare function inviteScreen(opts: {
|
|
56
|
+
screenId: string;
|
|
57
|
+
bundleUrl: string;
|
|
58
|
+
service?: string;
|
|
59
|
+
title?: string;
|
|
60
|
+
shareLabel?: string;
|
|
61
|
+
}): {
|
|
62
|
+
screenId: string;
|
|
63
|
+
renderer: string;
|
|
64
|
+
title: string;
|
|
65
|
+
schemaVersion: number;
|
|
66
|
+
cacheControl: {
|
|
67
|
+
maxAge: number;
|
|
68
|
+
staleWhileRevalidate: number;
|
|
69
|
+
};
|
|
70
|
+
topBar: {
|
|
71
|
+
actions: any[];
|
|
72
|
+
};
|
|
73
|
+
logicBundle: {
|
|
74
|
+
url: string;
|
|
75
|
+
integrity: string;
|
|
76
|
+
declaredCapabilities: string[];
|
|
77
|
+
};
|
|
78
|
+
payload: {
|
|
79
|
+
id: string;
|
|
80
|
+
body: {
|
|
81
|
+
package: string;
|
|
82
|
+
type: string;
|
|
83
|
+
props: {
|
|
84
|
+
spacing: number;
|
|
85
|
+
alignment: string;
|
|
86
|
+
children: ({
|
|
87
|
+
id: string;
|
|
88
|
+
body: {
|
|
89
|
+
package: string;
|
|
90
|
+
type: string;
|
|
91
|
+
props: {
|
|
92
|
+
title: string;
|
|
93
|
+
style: string;
|
|
94
|
+
fullWidth: boolean;
|
|
95
|
+
action: {
|
|
96
|
+
actionId: string;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
modifiers: {
|
|
101
|
+
hiddenPath: string;
|
|
102
|
+
};
|
|
103
|
+
} | {
|
|
104
|
+
id: string;
|
|
105
|
+
body: {
|
|
106
|
+
package: string;
|
|
107
|
+
type: string;
|
|
108
|
+
props: {
|
|
109
|
+
text: string;
|
|
110
|
+
style: string;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
})[];
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export interface InviteSourceOptions {
|
|
119
|
+
service?: string;
|
|
120
|
+
/** Read current bound metadata; never use route parameters as a share target. */
|
|
121
|
+
source: () => InviteMetadata | undefined | Promise<InviteMetadata | undefined>;
|
|
122
|
+
}
|
|
123
|
+
export interface InviteServiceOptions extends InviteSourceOptions {
|
|
124
|
+
/** Existing shared consumer sign-in screen, linked in navigation. It must forward
|
|
125
|
+
* the host continuation token with signInDirect/registerDirect. */
|
|
126
|
+
signInScreenId: string;
|
|
127
|
+
}
|
|
128
|
+
interface InviteState {
|
|
129
|
+
hidden: boolean;
|
|
130
|
+
error: string;
|
|
131
|
+
}
|
|
132
|
+
/** Read-only native action visibility. Mount in navLogicBundle; never creates
|
|
133
|
+
* an invitation, opens login, or consumes a pending screen-owned intent. */
|
|
134
|
+
export declare function createInviteAvailabilityService(opts: InviteSourceOptions): import("@wix/himalaya/state", { with: { "resolution-mode": "import" } }).ServiceHandle<{
|
|
135
|
+
hidden: boolean;
|
|
136
|
+
}> & {
|
|
137
|
+
load: (...args: never[]) => Promise<{
|
|
138
|
+
hidden: boolean;
|
|
139
|
+
}>;
|
|
140
|
+
};
|
|
141
|
+
/** Screen-owned Invite flow. Only an explicit Share tap or its once-consumed,
|
|
142
|
+
* host-confirmed login continuation can create an invitation. Ordinary loads,
|
|
143
|
+
* routes, hydration and native action visibility never authorize a write. */
|
|
144
|
+
export declare function createInviteService(opts: InviteServiceOptions): import("@wix/himalaya/state", { with: { "resolution-mode": "import" } }).ServiceHandle<InviteState> & {
|
|
145
|
+
load: (...args: never[]) => Promise<InviteState>;
|
|
146
|
+
invite: (...args: never[]) => Promise<InviteState>;
|
|
147
|
+
};
|
|
148
|
+
export {};
|