@wix/himalaya-cli 0.1209.0 → 0.1211.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/cli.mjs +112 -18
- package/dist/preview-assets.generated.bin +0 -0
- package/package.json +2 -2
- package/templates/beauty-salon/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/beauty-salon-owner/dev/index.ts +80 -50
- package/templates/beauty-salon-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/beauty-salon-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/beauty-salon-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/beauty-salon-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/beauty-salon-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/branded-lite/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/community-club/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/community-club-owner/dev/index.ts +80 -50
- package/templates/community-club-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/community-club-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/community-club-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/community-club-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/community-club-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/community-club-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/community-club-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/community-club-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/community-club-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/community-club-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/community-club-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/community-club-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/community-club-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/community-club-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/events-meetups/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/events-meetups-owner/dev/index.ts +80 -50
- package/templates/events-meetups-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/events-meetups-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/events-meetups-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/events-meetups-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/events-meetups-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/events-meetups-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/events-meetups-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/events-meetups-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/gym-fitness/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/gym-fitness-owner/dev/index.ts +80 -50
- package/templates/gym-fitness-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/gym-fitness-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/gym-fitness-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/gym-fitness-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/gym-fitness-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/nonprofit-cause/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/nonprofit-cause-owner/dev/index.ts +80 -50
- package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/nonprofit-cause-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/nonprofit-cause-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/nonprofit-cause-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/owner-lite/dev/index.ts +81 -51
- package/templates/owner-lite/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/owner-lite/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/owner-lite/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/owner-lite/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/owner-lite/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/owner-lite/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/owner-lite/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/owner-lite/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/owner-lite/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/owner-lite/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/owner-lite/tier5-src/himi-owner-lite-faq/index.ts +8 -2
- package/templates/owner-lite/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/owner-lite/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/owner-lite/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/owner-lite/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/podcast-creator/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/podcast-creator-owner/dev/index.ts +80 -50
- package/templates/podcast-creator-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/podcast-creator-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/podcast-creator-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/podcast-creator-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/podcast-creator-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/podcast-creator-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/podcast-creator-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/portfolio-creative/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/portfolio-creative-owner/dev/index.ts +80 -50
- package/templates/portfolio-creative-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/portfolio-creative-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/portfolio-creative-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/portfolio-creative-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/portfolio-creative-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/restaurant/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/restaurant-owner/dev/index.ts +80 -50
- package/templates/restaurant-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/restaurant-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/restaurant-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/restaurant-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/restaurant-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/restaurant-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/restaurant-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/restaurant-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/retail-store/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/retail-store-owner/dev/index.ts +80 -50
- package/templates/retail-store-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/retail-store-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/retail-store-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/retail-store-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/retail-store-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/retail-store-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/retail-store-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/retail-store-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
- package/templates/yoga-studio/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/yoga-studio-owner/dev/index.ts +80 -50
- package/templates/yoga-studio-owner/tier5-src/_shared/aria-chat.ts +31 -16
- package/templates/yoga-studio-owner/tier5-src/_shared/engine-intl.ts +57 -16
- package/templates/yoga-studio-owner/tier5-src/_shared/himi-text.ts +24 -0
- package/templates/yoga-studio-owner/tier5-src/_shared/owner-account.ts +4 -0
- package/templates/yoga-studio-owner/tier5-src/_shared/owner-module-data.ts +105 -37
- package/templates/yoga-studio-owner/tier5-src/_shared/owner-selected-site.ts +103 -0
- package/templates/yoga-studio-owner/tier5-src/_shared/owner-site-pick.ts +74 -0
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-account/index.ts +12 -2
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-aria-history/index.ts +1 -0
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-drawer/index.ts +21 -2
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-home/index.ts +29 -1
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-manage/index.ts +25 -5
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-overview/index.ts +8 -0
- package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-sites/index.ts +14 -31
|
@@ -21,6 +21,8 @@ import { getSiteAnalytics, getSiteTimeZone, localDateRange, localDateOf, localMi
|
|
|
21
21
|
import { ownerDisplayError, isBridgeUnavailable, isOwnerPreviewDemo } from "../_shared/owner-load-error.js";
|
|
22
22
|
import { DEMO_DASHBOARD, DEMO_NOTE, DEMO_TODAY } from "../_shared/owner-preview-demo.js";
|
|
23
23
|
import { stashCopy, copyParam, copyTemplate } from "../_shared/himi-copy.js";
|
|
24
|
+
import { fallbackNameFrom, selectedSiteName } from "../_shared/owner-selected-site.js";
|
|
25
|
+
import { settleBusinessSwitch } from "../_shared/owner-site-pick.js";
|
|
24
26
|
import { formatCurrency } from "../_shared/engine-intl.js";
|
|
25
27
|
import {
|
|
26
28
|
attentionRecords,
|
|
@@ -51,6 +53,9 @@ interface SourceState {
|
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
interface HomeState {
|
|
56
|
+
/** The business the header names: the one picked on Sites, else the descriptor's
|
|
57
|
+
* build-time fallback. */
|
|
58
|
+
businessName: string;
|
|
54
59
|
attention: TodayRecord[];
|
|
55
60
|
schedule: TodayRecord[];
|
|
56
61
|
allSchedule: TodayRecord[];
|
|
@@ -79,6 +84,10 @@ interface HomeState {
|
|
|
79
84
|
notLoading: boolean;
|
|
80
85
|
notErrored: boolean;
|
|
81
86
|
hideContent: boolean;
|
|
87
|
+
/** The retry cards' list is hidden unless the dashboard is ready AND a source failed.
|
|
88
|
+
* An empty list still costs its parent stack a gap, which on iOS read as a blank
|
|
89
|
+
* band under the header; gating on `hideContent` alone left it mounted. */
|
|
90
|
+
hideSourceFailures: boolean;
|
|
82
91
|
demoNote: string;
|
|
83
92
|
notDemo: boolean;
|
|
84
93
|
}
|
|
@@ -101,11 +110,18 @@ const SOURCE_LABELS: Record<HomeSourceId, string> = {
|
|
|
101
110
|
reviews: "Reviews", reservations: "Reservations",
|
|
102
111
|
};
|
|
103
112
|
|
|
113
|
+
/** Cold-start name from the descriptor's onAppear params (provisioning identity). */
|
|
114
|
+
let fallbackBusinessName = "";
|
|
115
|
+
/** Resolved once per load, not per shape: a storage read is a host round-trip, and the
|
|
116
|
+
* picked business only changes between loads (the picker is another screen). */
|
|
117
|
+
let currentBusinessName = selectedSiteName("");
|
|
118
|
+
|
|
104
119
|
function shape(s: Partial<HomeState>): HomeState {
|
|
105
120
|
const status = s.status ?? "ready";
|
|
106
121
|
const isLoading = status === "loading";
|
|
107
122
|
return {
|
|
108
123
|
status,
|
|
124
|
+
businessName: currentBusinessName,
|
|
109
125
|
attention: s.attention ?? [],
|
|
110
126
|
schedule: s.schedule ?? [],
|
|
111
127
|
allSchedule: s.allSchedule ?? s.schedule ?? [],
|
|
@@ -133,6 +149,7 @@ function shape(s: Partial<HomeState>): HomeState {
|
|
|
133
149
|
notLoading: !isLoading,
|
|
134
150
|
notErrored: status !== "error",
|
|
135
151
|
hideContent: status !== "ready",
|
|
152
|
+
hideSourceFailures: status !== "ready" || !(s.sourceFailures?.length),
|
|
136
153
|
demoNote: s.demoNote ?? "",
|
|
137
154
|
notDemo: !s.demoNote,
|
|
138
155
|
};
|
|
@@ -834,8 +851,19 @@ const svc = defineService<HomeState, {
|
|
|
834
851
|
})) }),
|
|
835
852
|
actions: {
|
|
836
853
|
load: async (s, arg) => {
|
|
854
|
+
// FIRST, before anything reads the catalog: a business pick `replace`s onto
|
|
855
|
+
// Home, and the shell scopes the bridge to the picked business before it
|
|
856
|
+
// navigates, so this load is the first code that runs on the new site. A Stores
|
|
857
|
+
// catalog version persisted from the OLD site during that gap is dropped here.
|
|
858
|
+
settleBusinessSwitch();
|
|
837
859
|
stashCopy(arg);
|
|
838
|
-
|
|
860
|
+
fallbackBusinessName = fallbackNameFrom(arg, fallbackBusinessName);
|
|
861
|
+
// Re-read here: Home's root is not remounted when the owner switches business,
|
|
862
|
+
// and the picker records the selection from a different worker.
|
|
863
|
+
currentBusinessName = selectedSiteName(fallbackBusinessName);
|
|
864
|
+
// An argless re-load (the host refreshing a warm root after the owner switches
|
|
865
|
+
// business) keeps the sources the descriptor enabled rather than widening to all.
|
|
866
|
+
const sources = enabledSourcesFrom(arg) ?? activeSources;
|
|
839
867
|
return loadDashboard(shape({ ...s, status: "loading" }), sources);
|
|
840
868
|
},
|
|
841
869
|
retry: async (s) => loadDashboard(shape({ ...s, status: "loading" }), activeSources),
|
|
@@ -16,9 +16,13 @@ import { queryOwnerModule } from '../_shared/owner-module-data.js';
|
|
|
16
16
|
import { OWNER_MODULES, ownerModuleId } from '../_shared/owner-modules.js';
|
|
17
17
|
import { localPreferences } from '../_shared/local-preferences.js';
|
|
18
18
|
import { stashCopy, copyParam, copyTemplate } from '../_shared/himi-copy.js';
|
|
19
|
+
import { fallbackNameFrom, selectedSiteName } from '../_shared/owner-selected-site.js';
|
|
19
20
|
import { DASHBOARD_PATHS, deriveManage, parseAreas, recentAreas, rememberArea, withMetrics, type ManageArea, type Metric } from './logic.js';
|
|
20
21
|
|
|
21
22
|
interface State {
|
|
23
|
+
/** The business the header names: the one picked on Sites, else the descriptor's
|
|
24
|
+
* build-time fallback. */
|
|
25
|
+
businessName: string;
|
|
22
26
|
/** `loading` until the descriptor has delivered the areas, then
|
|
23
27
|
* `ready`. The descriptor keys a FragmentSlot on it whose DEFAULT case is the
|
|
24
28
|
* skeleton, so an unresolved path (worker not booted yet) is loading too —
|
|
@@ -35,6 +39,8 @@ interface State {
|
|
|
35
39
|
noEmpty: boolean;
|
|
36
40
|
hasRecents: boolean;
|
|
37
41
|
noRecents: boolean;
|
|
42
|
+
/** True while `sections` is empty — gates the list so an empty one costs no gap. */
|
|
43
|
+
noSections: boolean;
|
|
38
44
|
isLoading: boolean;
|
|
39
45
|
notLoading: boolean;
|
|
40
46
|
summaryNote: string;
|
|
@@ -178,6 +184,11 @@ async function metricFor(metricKey: string): Promise<Metric> {
|
|
|
178
184
|
}
|
|
179
185
|
}
|
|
180
186
|
|
|
187
|
+
/** Cold-start name from the descriptor's onAppear params (provisioning identity). */
|
|
188
|
+
let fallbackBusinessName = '';
|
|
189
|
+
/** Resolved per load/refresh, not per derive (a storage read is a host round-trip). */
|
|
190
|
+
let currentBusinessName = selectedSiteName('');
|
|
191
|
+
|
|
181
192
|
function derive(state: State, areas = state.areas): State {
|
|
182
193
|
const next = deriveManage(
|
|
183
194
|
areas,
|
|
@@ -191,7 +202,7 @@ function derive(state: State, areas = state.areas): State {
|
|
|
191
202
|
// areas arrive — or when this app provisions none at all — there is nothing a
|
|
192
203
|
// filter could have excluded, so "Clear filters" would be a lie.
|
|
193
204
|
const noEmpty = next.noEmpty || state.status !== 'ready' || areas.length === 0;
|
|
194
|
-
return { ...state, ...next, noEmpty, recents, hasRecents: recents.length > 0, noRecents: recents.length === 0 };
|
|
205
|
+
return { ...state, ...next, noEmpty, recents, hasRecents: recents.length > 0, noRecents: recents.length === 0, noSections: next.sections.length === 0, businessName: currentBusinessName };
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
// Loads are not serialized: on a warm reappearance the host's bare refresh and
|
|
@@ -261,16 +272,21 @@ const svc = defineService<State, {
|
|
|
261
272
|
handoff: (s: State, arg?: unknown) => Promise<State>;
|
|
262
273
|
}>('himiOwnerLiteManage', {
|
|
263
274
|
state: {
|
|
275
|
+
businessName: currentBusinessName,
|
|
264
276
|
status: 'loading',
|
|
265
277
|
areas: [], results: [], sections: [], recents: [], query: '', group: 'all',
|
|
266
278
|
// 'All' is always a valid filter, so the chip row paints from the first frame
|
|
267
279
|
// instead of appearing (and shifting the layout) when the areas arrive.
|
|
268
280
|
groups: [{ id: 'all', label: allLabel() }], summary: '', noEmpty: true,
|
|
269
|
-
hasRecents: false, noRecents: true, isLoading: true, notLoading: false, summaryNote: '', handoffError: '',
|
|
281
|
+
hasRecents: false, noRecents: true, noSections: true, isLoading: true, notLoading: false, summaryNote: '', handoffError: '',
|
|
270
282
|
},
|
|
271
283
|
actions: {
|
|
272
284
|
load: async (state, arg) => {
|
|
273
285
|
stashCopy(arg);
|
|
286
|
+
fallbackBusinessName = fallbackNameFrom(arg, fallbackBusinessName);
|
|
287
|
+
// Re-read on every load: this worker stays warm across tab switches, and the
|
|
288
|
+
// picker records the selection from another worker.
|
|
289
|
+
currentBusinessName = selectedSiteName(fallbackBusinessName);
|
|
274
290
|
// A `load` with no areas comes from the host, not the descriptor: the
|
|
275
291
|
// warm-worker refresh lifecycle calls it bare. Before the areas are known
|
|
276
292
|
// it must not settle (that derived "0 business areas" and painted the
|
|
@@ -278,7 +294,7 @@ const svc = defineService<State, {
|
|
|
278
294
|
if (!('areas' in read(arg))) {
|
|
279
295
|
return state.status === 'ready'
|
|
280
296
|
? loadMetrics(derive({ ...state, isLoading: true, notLoading: false, summaryNote: '', handoffError: '' }))
|
|
281
|
-
: state;
|
|
297
|
+
: { ...state, businessName: currentBusinessName };
|
|
282
298
|
}
|
|
283
299
|
const parsed = (() => { try { return JSON.parse(str(arg, 'areas') || '[]'); } catch { return []; } })();
|
|
284
300
|
const areas = parseAreas(parsed);
|
|
@@ -286,8 +302,12 @@ const svc = defineService<State, {
|
|
|
286
302
|
},
|
|
287
303
|
// Refresh re-reads summaries for KNOWN areas. Before the descriptor has
|
|
288
304
|
// delivered them there is nothing to refresh, and settling here would open
|
|
289
|
-
// the skeleton gate over an empty hub.
|
|
290
|
-
|
|
305
|
+
// the skeleton gate over an empty hub. The business name is a local read, so
|
|
306
|
+
// it is re-read either way.
|
|
307
|
+
refresh: async state => {
|
|
308
|
+
currentBusinessName = selectedSiteName(fallbackBusinessName);
|
|
309
|
+
return state.status !== 'ready' ? { ...state, businessName: currentBusinessName } : loadMetrics(derive({ ...state, isLoading: true, notLoading: false, summaryNote: '', handoffError: '' }));
|
|
310
|
+
},
|
|
291
311
|
search: (state, arg) => derive({ ...state, query: str(arg, 'value').slice(0, 256) }),
|
|
292
312
|
filter: (state, arg) => {
|
|
293
313
|
const ids = read(arg).selectedIds;
|
|
@@ -30,6 +30,7 @@ import { searchOrders } from "@himalaya/wix-ecom";
|
|
|
30
30
|
import { ownerLoadError, isBridgeUnavailable, isOwnerPreviewDemo } from "../_shared/owner-load-error.js";
|
|
31
31
|
import { DEMO_SITES, DEMO_NOTE } from "../_shared/owner-preview-demo.js";
|
|
32
32
|
import { stashCopy, copyParam } from "../_shared/himi-copy.js";
|
|
33
|
+
import { pickSite, pickedSite } from "../_shared/owner-site-pick.js";
|
|
33
34
|
|
|
34
35
|
/** Mirrors the Home dashboard's "needs attention" definition, so a number here means the
|
|
35
36
|
* same thing it means after the owner drills into that business. */
|
|
@@ -205,6 +206,7 @@ async function loadRollup(): Promise<OverviewState> {
|
|
|
205
206
|
const svc = defineService<OverviewState, {
|
|
206
207
|
load: (s: OverviewState, arg?: unknown) => Promise<OverviewState>;
|
|
207
208
|
retry: (s: OverviewState) => Promise<OverviewState>;
|
|
209
|
+
pick: (s: OverviewState, arg?: unknown) => OverviewState;
|
|
208
210
|
}>("himiOwnerLiteOverview", {
|
|
209
211
|
state: shape({ status: "loading" }),
|
|
210
212
|
actions: {
|
|
@@ -213,6 +215,12 @@ const svc = defineService<OverviewState, {
|
|
|
213
215
|
return loadRollup();
|
|
214
216
|
},
|
|
215
217
|
retry: async () => loadRollup(),
|
|
218
|
+
// Drilling into one business is the ONLY thing that moves the active business —
|
|
219
|
+
// the same switch the Sites list makes (scope, name it, reset to Home).
|
|
220
|
+
pick: (s, arg) => {
|
|
221
|
+
const { msid, name } = pickedSite(arg);
|
|
222
|
+
return pickSite(s, msid, name || s.rows.find((r) => r.id === msid)?.name || "");
|
|
223
|
+
},
|
|
216
224
|
},
|
|
217
225
|
});
|
|
218
226
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// Tier-5 bundle: __HIMI_APP_NAME__ — Sites List (multi-site chooser).
|
|
2
2
|
// ACCOUNT-level: `site-list/v2/sites/query` authorizes on the owner wixSession2
|
|
3
3
|
// cookie alone (no per-site signed-instance), so this loads before any business
|
|
4
|
-
// is picked. Each row's `id` IS the site's metaSiteId — the
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// is picked. Each row's `id` IS the site's metaSiteId — `pick` records the row's
|
|
5
|
+
// name for the chrome and hands the shell a `business`-carrying `replace` onto Home;
|
|
6
|
+
// the shell's Router scopes the Wix bridge to it (SiteInstanceStore mints that site's
|
|
7
|
+
// User signed-instance for the management verticals).
|
|
7
8
|
|
|
8
9
|
import { defineService } from "@himalaya/state";
|
|
9
10
|
import { querySites, type WixSite } from "@himalaya/wix-site-list";
|
|
10
|
-
import { site } from "@himalaya/wix-platform";
|
|
11
11
|
import { ownerLoadError, isBridgeUnavailable, isOwnerPreviewDemo } from "../_shared/owner-load-error.js";
|
|
12
12
|
import { DEMO_SITES, DEMO_NOTE } from "../_shared/owner-preview-demo.js";
|
|
13
13
|
import { stashCopy, copyParam } from "../_shared/himi-copy.js";
|
|
14
14
|
import { getAll, upsert, type DbEntity } from "../_shared/owner-local-db.js";
|
|
15
|
-
import {
|
|
15
|
+
import { pickSite, pickedSite } from "../_shared/owner-site-pick.js";
|
|
16
16
|
|
|
17
17
|
// Offline-first (data-offline): the owner's last-synced businesses are the
|
|
18
18
|
// READ-THROUGH cache for the `sites` entity — paint them instantly (works
|
|
@@ -139,17 +139,16 @@ async function loadList(s: SitesState): Promise<SitesState> {
|
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
: String((arg as { business?: string; id?: string })?.business ?? (arg as { id?: string })?.id ?? "");
|
|
142
|
+
/** The picked row's display name: the row passes it, else it is looked up in the list. */
|
|
143
|
+
function nameFor(s: SitesState, msid: string, passed: string): string {
|
|
144
|
+
return passed || s.allSites.find((r) => r.id === msid)?.name || "";
|
|
146
145
|
}
|
|
147
146
|
|
|
148
147
|
const svc = defineService<SitesState, {
|
|
149
148
|
load: (s: SitesState, arg?: unknown) => Promise<SitesState>;
|
|
150
149
|
retry: (s: SitesState) => Promise<SitesState>;
|
|
151
150
|
search: (s: SitesState, arg?: unknown) => Promise<SitesState>;
|
|
152
|
-
pick: (s: SitesState, arg?: unknown) =>
|
|
151
|
+
pick: (s: SitesState, arg?: unknown) => SitesState;
|
|
153
152
|
}>("himiOwnerLiteSites", {
|
|
154
153
|
state: shape({ status: "loading" }),
|
|
155
154
|
actions: {
|
|
@@ -158,27 +157,11 @@ const svc = defineService<SitesState, {
|
|
|
158
157
|
return loadList(shape({ ...s, status: "loading" }));
|
|
159
158
|
},
|
|
160
159
|
retry: async (s) => loadList(shape({ ...s, status: "loading" })),
|
|
161
|
-
//
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const msid = msidFrom(arg);
|
|
167
|
-
if (msid) {
|
|
168
|
-
// Scoping the bridge to another business points it at another SITE, which may
|
|
169
|
-
// run the other Stores catalog. The resolved version is persisted app-wide and
|
|
170
|
-
// routes WRITES, which have no 428 retry — so it has to be dropped here, not
|
|
171
|
-
// just on the consumer-side site picker.
|
|
172
|
-
//
|
|
173
|
-
// Cleared on BOTH sides of the await: before, in case native remounts us
|
|
174
|
-
// before it settles; after, because a read interleaving it would re-resolve
|
|
175
|
-
// against the bridge that has not been re-scoped yet and re-persist the value
|
|
176
|
-
// we just dropped.
|
|
177
|
-
forgetCatalogVersion();
|
|
178
|
-
await site.setActiveSite(msid);
|
|
179
|
-
forgetCatalogVersion();
|
|
180
|
-
}
|
|
181
|
-
return s;
|
|
160
|
+
// Picking a business (every Sites row dispatches this): record its name for the
|
|
161
|
+
// chrome, then reset to the Home root; the shell scopes the bridge.
|
|
162
|
+
pick: (s, arg) => {
|
|
163
|
+
const { msid, name } = pickedSite(arg);
|
|
164
|
+
return pickSite(s, msid, nameFor(s, msid, name));
|
|
182
165
|
},
|
|
183
166
|
search: async (s, arg) => {
|
|
184
167
|
const q = typeof arg === "string" ? arg : String((arg as { value?: string; query?: string })?.value ?? (arg as { query?: string })?.query ?? "");
|
|
@@ -48568,7 +48568,7 @@ const SCREENS = runtimeSetting({
|
|
|
48568
48568
|
"package": "himalaya",
|
|
48569
48569
|
"type": "Text",
|
|
48570
48570
|
"props": {
|
|
48571
|
-
"text": "
|
|
48571
|
+
"text": "$service:himiOwnerLiteHome.businessName",
|
|
48572
48572
|
"style": "footnote",
|
|
48573
48573
|
"color": "textSecondary",
|
|
48574
48574
|
"collapseWhenEmpty": true
|
|
@@ -48953,7 +48953,7 @@ const SCREENS = runtimeSetting({
|
|
|
48953
48953
|
}
|
|
48954
48954
|
},
|
|
48955
48955
|
"modifiers": {
|
|
48956
|
-
"hiddenPath": "$service:himiOwnerLiteHome.
|
|
48956
|
+
"hiddenPath": "$service:himiOwnerLiteHome.hideSourceFailures"
|
|
48957
48957
|
}
|
|
48958
48958
|
},
|
|
48959
48959
|
{
|
|
@@ -50776,7 +50776,8 @@ const SCREENS = runtimeSetting({
|
|
|
50776
50776
|
"actionId": "tier5.himiOwnerLiteHome.load",
|
|
50777
50777
|
"params": {
|
|
50778
50778
|
"homeModules": "[{\"id\":\"attention\",\"label\":\"Needs attention\",\"dataSource\":\"owner-today\",\"emptyWhen\":[\"hideContent\"]},{\"id\":\"schedule\",\"label\":\"Up next\",\"dataSource\":\"owner-schedule\",\"emptyWhen\":[\"hideContent\"]},{\"id\":\"shortcuts\",\"label\":\"Quick actions\",\"dataSource\":\"owner-actions\"},{\"id\":\"metrics\",\"label\":\"Business overview\",\"dataSource\":\"dashboard\",\"emptyWhen\":[\"hideContent\"]},{\"id\":\"brief\",\"label\":\"Daily brief\",\"dataSource\":\"brief\"}]",
|
|
50779
|
-
"enabledSources": "[\"products\",\"posts\",\"sites\",\"orders\",\"bookings\",\"events\",\"members\",\"reviews\",\"reservations\"]"
|
|
50779
|
+
"enabledSources": "[\"products\",\"posts\",\"sites\",\"orders\",\"bookings\",\"events\",\"members\",\"reviews\",\"reservations\"]",
|
|
50780
|
+
"businessName": "__HIMI_APP_NAME__"
|
|
50780
50781
|
}
|
|
50781
50782
|
}
|
|
50782
50783
|
}
|
|
@@ -50845,7 +50846,7 @@ const SCREENS = runtimeSetting({
|
|
|
50845
50846
|
"package": "himalaya",
|
|
50846
50847
|
"type": "Text",
|
|
50847
50848
|
"props": {
|
|
50848
|
-
"text": "
|
|
50849
|
+
"text": "$service:himiOwnerLiteManage.businessName",
|
|
50849
50850
|
"style": "footnote",
|
|
50850
50851
|
"color": "textSecondary",
|
|
50851
50852
|
"collapseWhenEmpty": true
|
|
@@ -51038,7 +51039,8 @@ const SCREENS = runtimeSetting({
|
|
|
51038
51039
|
"props": {
|
|
51039
51040
|
"text": "$service:himiOwnerLiteManage.summary",
|
|
51040
51041
|
"style": "caption",
|
|
51041
|
-
"color": "textSecondary"
|
|
51042
|
+
"color": "textSecondary",
|
|
51043
|
+
"collapseWhenEmpty": true
|
|
51042
51044
|
}
|
|
51043
51045
|
}
|
|
51044
51046
|
},
|
|
@@ -51633,6 +51635,9 @@ const SCREENS = runtimeSetting({
|
|
|
51633
51635
|
}
|
|
51634
51636
|
]
|
|
51635
51637
|
}
|
|
51638
|
+
},
|
|
51639
|
+
"modifiers": {
|
|
51640
|
+
"hiddenPath": "$service:himiOwnerLiteManage.noSections"
|
|
51636
51641
|
}
|
|
51637
51642
|
},
|
|
51638
51643
|
{
|
|
@@ -52015,7 +52020,8 @@ const SCREENS = runtimeSetting({
|
|
|
52015
52020
|
"onAppear": {
|
|
52016
52021
|
"actionId": "tier5.himiOwnerLiteManage.load",
|
|
52017
52022
|
"params": {
|
|
52018
|
-
"areas": "[{\"id\":\"store\",\"title\":\"Store\",\"subtitle\":\"Products, inventory and sales\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_products\",\"icon\":\"bag\",\"metricKey\":\"products\",\"countLabel\":\"products\",\"createScreenId\":\"himi_owner_lite_product_new\",\"createLabel\":\"Create product\"},{\"id\":\"himi_owner_lite_orders\",\"title\":\"Orders\",\"subtitle\":\"Review and complete customer orders\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_orders\",\"icon\":\"cart\",\"metricKey\":\"orders\",\"countLabel\":\"orders\"},{\"id\":\"bookings\",\"title\":\"Bookings\",\"subtitle\":\"Services and your schedule\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_services\",\"icon\":\"calendar\",\"metricKey\":\"services\",\"countLabel\":\"services\"},{\"id\":\"himi_owner_lite_appointments\",\"title\":\"Appointments\",\"subtitle\":\"Your upcoming appointments\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_appointments\",\"icon\":\"clock\",\"metricKey\":\"appointments\",\"countLabel\":\"appointments\"},{\"id\":\"events\",\"title\":\"Events\",\"subtitle\":\"Events and attendance\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_events\",\"icon\":\"calendar\",\"metricKey\":\"events\",\"countLabel\":\"events\"},{\"id\":\"blog\",\"title\":\"Blog\",\"subtitle\":\"Stories and publishing\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_posts\",\"icon\":\"newspaper\",\"metricKey\":\"posts\",\"countLabel\":\"posts\",\"createScreenId\":\"himi_owner_lite_post_new\",\"createLabel\":\"Write post\"},{\"id\":\"faq\",\"title\":\"FAQ\",\"subtitle\":\"Questions, answers and categories\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_faq\",\"icon\":\"question\",\"metricKey\":\"faq\",\"countLabel\":\"questions\",\"createScreenId\":\"himi_owner_lite_faq_question_new\",\"createLabel\":\"Add question\"},{\"id\":\"coupons\",\"title\":\"Coupons\",\"subtitle\":\"Offers, codes and usage\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_coupons\",\"icon\":\"tag\",\"metricKey\":\"module:coupons\",\"countLabel\":\"coupons\"},{\"id\":\"invoices\",\"title\":\"Invoices\",\"subtitle\":\"Customers, balances and payment status\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_invoices\",\"icon\":\"document\",\"metricKey\":\"module:invoices\",\"countLabel\":\"invoices\"},{\"id\":\"giftCards\",\"title\":\"Gift cards\",\"subtitle\":\"Balances, recipients and expiration\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_giftCards\",\"icon\":\"ticket\",\"metricKey\":\"module:giftCards\",\"countLabel\":\"gift cards\"},{\"id\":\"contacts\",\"title\":\"Contacts\",\"subtitle\":\"Your customer relationships\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_contacts\",\"icon\":\"person\",\"metricKey\":\"module:contacts\",\"countLabel\":\"contacts\"},{\"id\":\"members\",\"title\":\"Members\",\"subtitle\":\"Membership access and profiles\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_members\",\"icon\":\"person\",\"metricKey\":\"module:members\",\"countLabel\":\"members\"},{\"id\":\"groups\",\"title\":\"Groups\",\"subtitle\":\"Communities and conversations\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_groups\",\"icon\":\"person\",\"metricKey\":\"module:groups\",\"countLabel\":\"groups\"},{\"id\":\"reviews\",\"title\":\"Reviews\",\"subtitle\":\"Published and pending customer feedback\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_reviews\",\"icon\":\"star\",\"metricKey\":\"module:reviews\",\"countLabel\":\"reviews\"},{\"id\":\"plans\",\"title\":\"Plans\",\"subtitle\":\"Pricing, benefits and visibility\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_plans\",\"icon\":\"bookmark\",\"metricKey\":\"module:plans\",\"countLabel\":\"plans\"},{\"id\":\"subscriptions\",\"title\":\"Subscriptions\",\"subtitle\":\"Member plans and subscription status\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_subscriptions\",\"icon\":\"bookmark\",\"metricKey\":\"module:subscriptions\",\"countLabel\":\"subscriptions\"},{\"id\":\"programs\",\"title\":\"Programs\",\"subtitle\":\"Learning experiences and participation\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_programs\",\"icon\":\"play\",\"metricKey\":\"module:programs\",\"countLabel\":\"programs\"},{\"id\":\"badges\",\"title\":\"Badges\",\"subtitle\":\"Recognition, access and member badges\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_badges\",\"icon\":\"star\",\"metricKey\":\"module:badges\",\"countLabel\":\"badges\"},{\"id\":\"reservations\",\"title\":\"Reservations\",\"subtitle\":\"Guests, tables and arrival times\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_module_reservations\",\"icon\":\"calendar\",\"metricKey\":\"module:reservations\",\"countLabel\":\"reservations\"},{\"id\":\"forms\",\"title\":\"Forms\",\"subtitle\":\"Forms and their configuration\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_forms\",\"icon\":\"document\",\"metricKey\":\"module:forms\",\"countLabel\":\"forms\"},{\"id\":\"portfolio\",\"title\":\"Portfolio\",\"subtitle\":\"Projects, stories and galleries\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_portfolio\",\"icon\":\"image\",\"metricKey\":\"module:portfolio\",\"countLabel\":\"portfolio\"},{\"id\":\"donationCampaigns\",\"title\":\"Donation campaigns\",\"subtitle\":\"Campaign goals, status and fundraising\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_donationCampaigns\",\"icon\":\"heart\",\"metricKey\":\"module:donationCampaigns\",\"countLabel\":\"donation campaigns\"}]"
|
|
52023
|
+
"areas": "[{\"id\":\"store\",\"title\":\"Store\",\"subtitle\":\"Products, inventory and sales\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_products\",\"icon\":\"bag\",\"metricKey\":\"products\",\"countLabel\":\"products\",\"createScreenId\":\"himi_owner_lite_product_new\",\"createLabel\":\"Create product\"},{\"id\":\"himi_owner_lite_orders\",\"title\":\"Orders\",\"subtitle\":\"Review and complete customer orders\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_orders\",\"icon\":\"cart\",\"metricKey\":\"orders\",\"countLabel\":\"orders\"},{\"id\":\"bookings\",\"title\":\"Bookings\",\"subtitle\":\"Services and your schedule\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_services\",\"icon\":\"calendar\",\"metricKey\":\"services\",\"countLabel\":\"services\"},{\"id\":\"himi_owner_lite_appointments\",\"title\":\"Appointments\",\"subtitle\":\"Your upcoming appointments\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_appointments\",\"icon\":\"clock\",\"metricKey\":\"appointments\",\"countLabel\":\"appointments\"},{\"id\":\"events\",\"title\":\"Events\",\"subtitle\":\"Events and attendance\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_events\",\"icon\":\"calendar\",\"metricKey\":\"events\",\"countLabel\":\"events\"},{\"id\":\"blog\",\"title\":\"Blog\",\"subtitle\":\"Stories and publishing\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_posts\",\"icon\":\"newspaper\",\"metricKey\":\"posts\",\"countLabel\":\"posts\",\"createScreenId\":\"himi_owner_lite_post_new\",\"createLabel\":\"Write post\"},{\"id\":\"faq\",\"title\":\"FAQ\",\"subtitle\":\"Questions, answers and categories\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_faq\",\"icon\":\"question\",\"metricKey\":\"faq\",\"countLabel\":\"questions\",\"createScreenId\":\"himi_owner_lite_faq_question_new\",\"createLabel\":\"Add question\"},{\"id\":\"coupons\",\"title\":\"Coupons\",\"subtitle\":\"Offers, codes and usage\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_coupons\",\"icon\":\"tag\",\"metricKey\":\"module:coupons\",\"countLabel\":\"coupons\"},{\"id\":\"invoices\",\"title\":\"Invoices\",\"subtitle\":\"Customers, balances and payment status\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_invoices\",\"icon\":\"document\",\"metricKey\":\"module:invoices\",\"countLabel\":\"invoices\"},{\"id\":\"giftCards\",\"title\":\"Gift cards\",\"subtitle\":\"Balances, recipients and expiration\",\"groupId\":\"commerce\",\"group\":\"Commerce\",\"screenId\":\"himi_owner_lite_module_giftCards\",\"icon\":\"ticket\",\"metricKey\":\"module:giftCards\",\"countLabel\":\"gift cards\"},{\"id\":\"contacts\",\"title\":\"Contacts\",\"subtitle\":\"Your customer relationships\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_contacts\",\"icon\":\"person\",\"metricKey\":\"module:contacts\",\"countLabel\":\"contacts\"},{\"id\":\"members\",\"title\":\"Members\",\"subtitle\":\"Membership access and profiles\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_members\",\"icon\":\"person\",\"metricKey\":\"module:members\",\"countLabel\":\"members\"},{\"id\":\"groups\",\"title\":\"Groups\",\"subtitle\":\"Communities and conversations\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_groups\",\"icon\":\"person\",\"metricKey\":\"module:groups\",\"countLabel\":\"groups\"},{\"id\":\"reviews\",\"title\":\"Reviews\",\"subtitle\":\"Published and pending customer feedback\",\"groupId\":\"people-and-community\",\"group\":\"People and community\",\"screenId\":\"himi_owner_lite_module_reviews\",\"icon\":\"star\",\"metricKey\":\"module:reviews\",\"countLabel\":\"reviews\"},{\"id\":\"plans\",\"title\":\"Plans\",\"subtitle\":\"Pricing, benefits and visibility\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_plans\",\"icon\":\"bookmark\",\"metricKey\":\"module:plans\",\"countLabel\":\"plans\"},{\"id\":\"subscriptions\",\"title\":\"Subscriptions\",\"subtitle\":\"Member plans and subscription status\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_subscriptions\",\"icon\":\"bookmark\",\"metricKey\":\"module:subscriptions\",\"countLabel\":\"subscriptions\"},{\"id\":\"programs\",\"title\":\"Programs\",\"subtitle\":\"Learning experiences and participation\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_programs\",\"icon\":\"play\",\"metricKey\":\"module:programs\",\"countLabel\":\"programs\"},{\"id\":\"badges\",\"title\":\"Badges\",\"subtitle\":\"Recognition, access and member badges\",\"groupId\":\"membership-and-learning\",\"group\":\"Membership and learning\",\"screenId\":\"himi_owner_lite_module_badges\",\"icon\":\"star\",\"metricKey\":\"module:badges\",\"countLabel\":\"badges\"},{\"id\":\"reservations\",\"title\":\"Reservations\",\"subtitle\":\"Guests, tables and arrival times\",\"groupId\":\"scheduling\",\"group\":\"Scheduling\",\"screenId\":\"himi_owner_lite_module_reservations\",\"icon\":\"calendar\",\"metricKey\":\"module:reservations\",\"countLabel\":\"reservations\"},{\"id\":\"forms\",\"title\":\"Forms\",\"subtitle\":\"Forms and their configuration\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_forms\",\"icon\":\"document\",\"metricKey\":\"module:forms\",\"countLabel\":\"forms\"},{\"id\":\"portfolio\",\"title\":\"Portfolio\",\"subtitle\":\"Projects, stories and galleries\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_portfolio\",\"icon\":\"image\",\"metricKey\":\"module:portfolio\",\"countLabel\":\"portfolio\"},{\"id\":\"donationCampaigns\",\"title\":\"Donation campaigns\",\"subtitle\":\"Campaign goals, status and fundraising\",\"groupId\":\"content\",\"group\":\"Content\",\"screenId\":\"himi_owner_lite_module_donationCampaigns\",\"icon\":\"heart\",\"metricKey\":\"module:donationCampaigns\",\"countLabel\":\"donation campaigns\"}]",
|
|
52024
|
+
"businessName": "__HIMI_APP_NAME__"
|
|
52019
52025
|
}
|
|
52020
52026
|
}
|
|
52021
52027
|
}
|
|
@@ -52134,7 +52140,7 @@ const SCREENS = runtimeSetting({
|
|
|
52134
52140
|
"package": "himalaya",
|
|
52135
52141
|
"type": "Text",
|
|
52136
52142
|
"props": {
|
|
52137
|
-
"text": "
|
|
52143
|
+
"text": "$service:himiOwnerLiteAccount.businessName",
|
|
52138
52144
|
"style": "bodyEmphasis",
|
|
52139
52145
|
"maxLines": 1
|
|
52140
52146
|
}
|
|
@@ -52396,7 +52402,8 @@ const SCREENS = runtimeSetting({
|
|
|
52396
52402
|
"params": {
|
|
52397
52403
|
"supportUrl": "https://www.wix.com/support",
|
|
52398
52404
|
"privacyUrl": "https://www.wix.com/about/privacy",
|
|
52399
|
-
"termsUrl": "https://www.wix.com/about/terms-of-use"
|
|
52405
|
+
"termsUrl": "https://www.wix.com/about/terms-of-use",
|
|
52406
|
+
"businessName": "__HIMI_APP_NAME__"
|
|
52400
52407
|
}
|
|
52401
52408
|
}
|
|
52402
52409
|
}
|
|
@@ -52943,7 +52950,10 @@ const SCREENS = runtimeSetting({
|
|
|
52943
52950
|
},
|
|
52944
52951
|
"fillMaxWidth": true,
|
|
52945
52952
|
"onAppear": {
|
|
52946
|
-
"actionId": "tier5.drawer.
|
|
52953
|
+
"actionId": "tier5.drawer.refresh",
|
|
52954
|
+
"params": {
|
|
52955
|
+
"businessName": "__HIMI_APP_NAME__"
|
|
52956
|
+
}
|
|
52947
52957
|
}
|
|
52948
52958
|
}
|
|
52949
52959
|
},
|
|
@@ -56465,7 +56475,7 @@ const SCREENS = runtimeSetting({
|
|
|
56465
56475
|
"package": "himalaya",
|
|
56466
56476
|
"type": "HStack",
|
|
56467
56477
|
"props": {
|
|
56468
|
-
"spacing":
|
|
56478
|
+
"spacing": 0,
|
|
56469
56479
|
"children": [
|
|
56470
56480
|
{
|
|
56471
56481
|
"id": "",
|
|
@@ -56476,43 +56486,57 @@ const SCREENS = runtimeSetting({
|
|
|
56476
56486
|
}
|
|
56477
56487
|
},
|
|
56478
56488
|
{
|
|
56479
|
-
"id": "
|
|
56480
|
-
"body": {
|
|
56481
|
-
"package": "himalaya",
|
|
56482
|
-
"type": "Text",
|
|
56483
|
-
"props": {
|
|
56484
|
-
"text": "History",
|
|
56485
|
-
"style": "bodyEmphasis",
|
|
56486
|
-
"color": "accentPrimary",
|
|
56487
|
-
"maxLines": 1
|
|
56488
|
-
}
|
|
56489
|
-
},
|
|
56490
|
-
"modifiers": {
|
|
56491
|
-
"onTap": {
|
|
56492
|
-
"actionId": "himi.open",
|
|
56493
|
-
"params": {
|
|
56494
|
-
"screenId": "himi_owner_lite_aria_history"
|
|
56495
|
-
}
|
|
56496
|
-
}
|
|
56497
|
-
}
|
|
56498
|
-
},
|
|
56499
|
-
{
|
|
56500
|
-
"id": "himi_owner_lite_aria.newchat",
|
|
56489
|
+
"id": "",
|
|
56501
56490
|
"body": {
|
|
56502
56491
|
"package": "himalaya",
|
|
56503
|
-
"type": "
|
|
56492
|
+
"type": "HStack",
|
|
56504
56493
|
"props": {
|
|
56505
|
-
"
|
|
56506
|
-
"
|
|
56507
|
-
|
|
56494
|
+
"spacing": 16,
|
|
56495
|
+
"children": [
|
|
56496
|
+
{
|
|
56497
|
+
"id": "himi_owner_lite_aria.history",
|
|
56498
|
+
"body": {
|
|
56499
|
+
"package": "himalaya",
|
|
56500
|
+
"type": "Text",
|
|
56501
|
+
"props": {
|
|
56502
|
+
"text": "History",
|
|
56503
|
+
"style": "bodyEmphasis",
|
|
56504
|
+
"color": "accentPrimary",
|
|
56505
|
+
"maxLines": 1
|
|
56506
|
+
}
|
|
56507
|
+
},
|
|
56508
|
+
"modifiers": {
|
|
56509
|
+
"onTap": {
|
|
56510
|
+
"actionId": "himi.open",
|
|
56511
|
+
"params": {
|
|
56512
|
+
"screenId": "himi_owner_lite_aria_history"
|
|
56513
|
+
}
|
|
56514
|
+
}
|
|
56515
|
+
}
|
|
56516
|
+
},
|
|
56517
|
+
{
|
|
56518
|
+
"id": "himi_owner_lite_aria.newchat",
|
|
56519
|
+
"body": {
|
|
56520
|
+
"package": "himalaya",
|
|
56521
|
+
"type": "Icon",
|
|
56522
|
+
"props": {
|
|
56523
|
+
"name": "edit",
|
|
56524
|
+
"size": 22,
|
|
56525
|
+
"tint": "accentPrimary"
|
|
56526
|
+
}
|
|
56527
|
+
},
|
|
56528
|
+
"modifiers": {
|
|
56529
|
+
"onTap": {
|
|
56530
|
+
"actionId": "tier5.himiOwnerLiteAria.newChat"
|
|
56531
|
+
},
|
|
56532
|
+
"accessibilityLabel": "New chat",
|
|
56533
|
+
"accessibilityRole": "button",
|
|
56534
|
+
"width": 44,
|
|
56535
|
+
"height": 44
|
|
56536
|
+
}
|
|
56537
|
+
}
|
|
56538
|
+
]
|
|
56508
56539
|
}
|
|
56509
|
-
},
|
|
56510
|
-
"modifiers": {
|
|
56511
|
-
"onTap": {
|
|
56512
|
-
"actionId": "tier5.himiOwnerLiteAria.newChat"
|
|
56513
|
-
},
|
|
56514
|
-
"accessibilityLabel": "New chat",
|
|
56515
|
-
"accessibilityRole": "button"
|
|
56516
56540
|
}
|
|
56517
56541
|
}
|
|
56518
56542
|
]
|
|
@@ -56873,6 +56897,9 @@ const SCREENS = runtimeSetting({
|
|
|
56873
56897
|
}
|
|
56874
56898
|
]
|
|
56875
56899
|
}
|
|
56900
|
+
},
|
|
56901
|
+
"modifiers": {
|
|
56902
|
+
"hiddenPath": "$service:himiOwnerLiteAria.messagesHidden"
|
|
56876
56903
|
}
|
|
56877
56904
|
},
|
|
56878
56905
|
{
|
|
@@ -57171,7 +57198,8 @@ const SCREENS = runtimeSetting({
|
|
|
57171
57198
|
"text": "$service:himiOwnerLiteAria.error",
|
|
57172
57199
|
"style": "footnote",
|
|
57173
57200
|
"color": "danger",
|
|
57174
|
-
"maxLines": 3
|
|
57201
|
+
"maxLines": 3,
|
|
57202
|
+
"collapseWhenEmpty": true
|
|
57175
57203
|
}
|
|
57176
57204
|
},
|
|
57177
57205
|
"modifiers": {
|
|
@@ -61408,6 +61436,9 @@ const SCREENS = runtimeSetting({
|
|
|
61408
61436
|
}
|
|
61409
61437
|
]
|
|
61410
61438
|
}
|
|
61439
|
+
},
|
|
61440
|
+
"modifiers": {
|
|
61441
|
+
"hiddenPath": "$service:himiOwnerLiteAriaHistory.itemsHidden"
|
|
61411
61442
|
}
|
|
61412
61443
|
}
|
|
61413
61444
|
]
|
|
@@ -61914,10 +61945,10 @@ const SCREENS = runtimeSetting({
|
|
|
61914
61945
|
},
|
|
61915
61946
|
"fillMaxWidth": true,
|
|
61916
61947
|
"onTap": {
|
|
61917
|
-
"actionId": "
|
|
61948
|
+
"actionId": "tier5.himiOwnerLiteSites.pick",
|
|
61918
61949
|
"params": {
|
|
61919
|
-
"
|
|
61920
|
-
"
|
|
61950
|
+
"id": "$item.id",
|
|
61951
|
+
"name": "$item.name"
|
|
61921
61952
|
}
|
|
61922
61953
|
},
|
|
61923
61954
|
"pressFeedback": "scale",
|
|
@@ -62011,7 +62042,6 @@ const SCREENS = runtimeSetting({
|
|
|
62011
62042
|
"contentType": "application/javascript+ts-bundle",
|
|
62012
62043
|
"declaredCapabilities": [
|
|
62013
62044
|
"wix_api",
|
|
62014
|
-
"wix_platform",
|
|
62015
62045
|
"local_database"
|
|
62016
62046
|
],
|
|
62017
62047
|
"minBinaryVersion": "0.1.0",
|
|
@@ -62472,10 +62502,10 @@ const SCREENS = runtimeSetting({
|
|
|
62472
62502
|
},
|
|
62473
62503
|
"fillMaxWidth": true,
|
|
62474
62504
|
"onTap": {
|
|
62475
|
-
"actionId": "
|
|
62505
|
+
"actionId": "tier5.himiOwnerLiteOverview.pick",
|
|
62476
62506
|
"params": {
|
|
62477
|
-
"
|
|
62478
|
-
"
|
|
62507
|
+
"id": "$item.id",
|
|
62508
|
+
"name": "$item.name"
|
|
62479
62509
|
}
|
|
62480
62510
|
},
|
|
62481
62511
|
"pressFeedback": "scale",
|