@wix/himalaya-cli 0.1398.0 → 0.1400.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.
Files changed (76) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +2 -1
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/webview-page/src/capabilities.generated.d.ts +2 -0
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/wix-chat/src/index.d.ts +33 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts +8 -1
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/icon-catalog.generated.d.ts +1 -1
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/members-v1/src/index.d.ts +66 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/site-media/src/index.d.ts +8 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +2 -1
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +2 -1
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +2 -1
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +2 -1
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +41 -0
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/location.mjs +2 -1
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +2 -1
  15. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/photos.mjs +2 -1
  16. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdk-types.mjs +2 -1
  17. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/tasks.mjs +2 -1
  18. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-auth/worker.mjs +9 -0
  19. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-auth.mjs +9 -0
  20. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-chat.mjs +56 -0
  21. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-members.mjs +45 -1
  22. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-site-media.mjs +17 -0
  23. package/dist/authoring-runtime/node_modules/@wix/himalaya/package.json +4 -0
  24. package/dist/cli.mjs +102 -34
  25. package/dist/preview-assets.generated.bin +0 -0
  26. package/guides/app-config.md +1 -1
  27. package/guides/capabilities.md +5 -0
  28. package/guides/headless-loop.md +1 -1
  29. package/guides/importable-sdks.md +1 -0
  30. package/guides/sdk-reference.json +163 -0
  31. package/guides/web-page-sdk-reference.md +1 -0
  32. package/package.json +2 -2
  33. package/templates/beauty-salon-owner/dev/index.ts +304 -7
  34. package/templates/beauty-salon-owner/tier5-src/_shared/aria-chat.ts +39 -33
  35. package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  36. package/templates/beauty-salon-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  37. package/templates/community-club-owner/dev/index.ts +304 -7
  38. package/templates/community-club-owner/tier5-src/_shared/aria-chat.ts +39 -33
  39. package/templates/community-club-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  40. package/templates/community-club-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  41. package/templates/events-meetups-owner/dev/index.ts +304 -7
  42. package/templates/events-meetups-owner/tier5-src/_shared/aria-chat.ts +39 -33
  43. package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  44. package/templates/events-meetups-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  45. package/templates/gym-fitness-owner/dev/index.ts +304 -7
  46. package/templates/gym-fitness-owner/tier5-src/_shared/aria-chat.ts +39 -33
  47. package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  48. package/templates/gym-fitness-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  49. package/templates/nonprofit-cause-owner/dev/index.ts +304 -7
  50. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-chat.ts +39 -33
  51. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  52. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  53. package/templates/owner-lite/dev/index.ts +304 -7
  54. package/templates/owner-lite/tier5-src/_shared/aria-chat.ts +39 -33
  55. package/templates/owner-lite/tier5-src/_shared/aria-widget-model.ts +26 -4
  56. package/templates/owner-lite/tier5-src/_shared/aria-widget-view.ts +63 -16
  57. package/templates/podcast-creator-owner/dev/index.ts +304 -7
  58. package/templates/podcast-creator-owner/tier5-src/_shared/aria-chat.ts +39 -33
  59. package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  60. package/templates/podcast-creator-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  61. package/templates/portfolio-creative-owner/dev/index.ts +304 -7
  62. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-chat.ts +39 -33
  63. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  64. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  65. package/templates/restaurant-owner/dev/index.ts +304 -7
  66. package/templates/restaurant-owner/tier5-src/_shared/aria-chat.ts +39 -33
  67. package/templates/restaurant-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  68. package/templates/restaurant-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  69. package/templates/retail-store-owner/dev/index.ts +304 -7
  70. package/templates/retail-store-owner/tier5-src/_shared/aria-chat.ts +39 -33
  71. package/templates/retail-store-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  72. package/templates/retail-store-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
  73. package/templates/yoga-studio-owner/dev/index.ts +304 -7
  74. package/templates/yoga-studio-owner/tier5-src/_shared/aria-chat.ts +39 -33
  75. package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-model.ts +26 -4
  76. package/templates/yoga-studio-owner/tier5-src/_shared/aria-widget-view.ts +63 -16
@@ -12,10 +12,11 @@
12
12
  // every collapsible element carries its own `*Hidden` boolean — the same shape
13
13
  // the transcript bubbles already use for their three link slots.
14
14
 
15
- import type { NormalizedWidget, WidgetKind, WidgetOption } from "./aria-widget-model.js";
15
+ import type { NormalizedWidget, WidgetBenefit, WidgetKind, WidgetOption } from "./aria-widget-model.js";
16
16
  import { SELECTED_TOKEN, VALUES_TOKEN, isWebUrl, stripMarkdown } from "./aria-widget-model.js";
17
17
  import { oauthView } from "./aria-widget-oauth.js";
18
18
  import { composeGenericCard } from "./aria-generic-widget.js";
19
+ import { formatNumber } from "./engine-intl.js";
19
20
  import { normalizeWidget } from "./aria-widget-kinds.js";
20
21
  import { scanEnvelopes, widgetsOfParts } from "./aria-widgets.js";
21
22
 
@@ -90,9 +91,12 @@ export interface WidgetOptionRow {
90
91
  /** The per-option button's label, already host-disclosed. */
91
92
  buttonLabel: string;
92
93
  buttonHidden: boolean;
93
- /** PLANS' benefit list, joined — an array cannot ride on a templated row. */
94
+ /** PLANS benefit prose plus nested repeater rows carrying each icon. */
94
95
  listText: string;
96
+ benefits: WidgetBenefit[];
95
97
  listHidden: boolean;
98
+ badge: string;
99
+ badgeHidden: boolean;
96
100
  selected: boolean;
97
101
  /** This option's own button `respondText`, before substitution. Carried on
98
102
  * the row because the row is what a tap identifies. */
@@ -114,6 +118,7 @@ export interface WidgetOptionRow {
114
118
  export interface WidgetSlice {
115
119
  label: string;
116
120
  value: number;
121
+ color: string;
117
122
  }
118
123
 
119
124
  /** One step of a TODO_PLAN, shaped for `Timeline`. */
@@ -218,6 +223,9 @@ export interface WidgetView {
218
223
  * negation: an EMPTY chart is neither, so hiding each component on the
219
224
  * other's flag left both on screen as blank boxes. */
220
225
  chartPieHidden: boolean;
226
+ chartRingHidden: boolean;
227
+ chartPlainPieHidden: boolean;
228
+ chartLegend: { label: string; color: string; marker: "dot"; value: string }[];
221
229
  chartSeriesHidden: boolean;
222
230
  chartEmptyHidden: boolean;
223
231
  /** Hide the async spinner. `asyncUntracked` is not the right flag: a TRACKED
@@ -526,7 +534,7 @@ export const NO_WIDGET: WidgetView = {
526
534
  optionsGridHidden: true, optionsListHidden: false,
527
535
  footerRowHidden: false, footerColumnHidden: true,
528
536
  slices: [], values: [], chartIsPie: false, chartIsSeries: false, chartKind: "",
529
- chartPieHidden: true, chartSeriesHidden: true, chartEmptyHidden: true,
537
+ chartPieHidden: true, chartRingHidden: true, chartPlainPieHidden: true, chartLegend: [], chartSeriesHidden: true, chartEmptyHidden: true,
530
538
  asyncSpinnerHidden: true, itemsLoadingHidden: true,
531
539
  chartEmpty: true, description: "", descriptionHidden: true,
532
540
  steps: [], stepsEmpty: true, progress: 0, progressText: "",
@@ -574,11 +582,20 @@ function webOnly(url: string | undefined): string {
574
582
  /** One option, flattened. `selected` is passed in because it is worker state
575
583
  * rather than anything the payload said — except on the first build, where the
576
584
  * service's `isPreselected` seeds it. */
585
+ /** An option that would draw nothing — every line stripped to empty, no picture, badge,
586
+ * benefit or usable button — is dropped rather than rendered as a blank card or an
587
+ * unlabeled row, and does not count toward `renderable`. */
588
+ function hasVisibleContent(row: WidgetOptionRow): boolean {
589
+ return !!(row.title || row.subtitle || row.text || row.pictureUrl || row.badge
590
+ || row.benefits.length || !row.buttonHidden);
591
+ }
592
+
577
593
  function optionRow(
578
594
  o: {
579
595
  value: string; title: string; subtitle: string; text: string;
580
596
  pictureUrl: string; buttonLabel: string; actionUrl: string; listText: string;
581
- respondText: string; actionScreenId?: string; notSupportedText?: string;
597
+ respondText: string; actionScreenId?: string; notSupportedText?: string; badge?: string;
598
+ benefits?: WidgetBenefit[];
582
599
  },
583
600
  i: number,
584
601
  selected: boolean,
@@ -629,22 +646,33 @@ function optionRow(
629
646
  // RADIO_BUTTON option, which may carry `text` and no `title` at all, renders
630
647
  // as an empty row. So fold here rather than in each case's composition: the
631
648
  // raw `text` is still exported below for anything that wants both.
632
- const hasTitle = !!o.title;
633
- const rowTitle = hasTitle ? o.title : (o.text || o.subtitle);
649
+ // "Has a title" is judged on the STRIPPED title: a title of pure markup (`***`) falls back
650
+ // to the option's other prose exactly as a missing one does.
651
+ const strippedTitle = stripMarkdown(o.title);
652
+ const hasTitle = !!strippedTitle;
653
+ const rowTitle = hasTitle ? strippedTitle : stripMarkdown(o.text || o.subtitle);
634
654
  const rowSubtitle = hasTitle
635
- ? (o.subtitle || o.text)
636
- : (o.text && o.subtitle ? o.subtitle : "");
655
+ ? stripMarkdown(o.subtitle || o.text)
656
+ : stripMarkdown(o.text && o.subtitle ? o.subtitle : "");
657
+ // Every `*Hidden` flag follows the STRIPPED value: prose that is only markup
658
+ // (`---`, `***`, an image with empty alt) strips to "" and must not paint an
659
+ // empty node.
660
+ const text = stripMarkdown(o.text);
661
+ const listText = stripMarkdown(o.listText);
662
+ const benefits = (o.benefits ?? []).filter((b) => b.text);
663
+ const badge = stripMarkdown(o.badge || "");
637
664
  return {
638
665
  id: `o${i}`,
639
666
  value: o.value,
640
667
  title: rowTitle,
641
668
  subtitle: rowSubtitle, subtitleHidden: !rowSubtitle,
642
- text: o.text, textHidden: !o.text,
669
+ text, textHidden: !text,
643
670
  pictureUrl, pictureHidden: !pictureUrl,
644
671
  // A label is not enough: the button has to be able to DO something — say
645
672
  // its text, go to its url, or explain why its screen is not here.
646
673
  buttonLabel, buttonHidden: !(buttonLabel && (respondText || actionUrl || actionScreenId)),
647
- listText: o.listText, listHidden: !o.listText,
674
+ listText, benefits, listHidden: !listText && !benefits.length,
675
+ badge, badgeHidden: !badge,
648
676
  selected,
649
677
  respondText,
650
678
  actionUrl,
@@ -757,22 +785,27 @@ export function viewOf(
757
785
  // or screen destination, so that row must be removed.
758
786
  return !rawUrl || isWebUrl(rawUrl);
759
787
  })
760
- : mappedOptions;
788
+ .filter(hasVisibleContent)
789
+ : mappedOptions.filter(hasVisibleContent);
761
790
 
762
791
  // CHART. `pieSlices` is the only shape the catalogue sends, but `chartType`
763
792
  // decides the component: a pie is a `DonutChart` at zero thickness, anything
764
793
  // else a `Chart` over the same magnitudes.
765
794
  const rawSlices = Array.isArray(extra.slices) ? (extra.slices as { label?: unknown; value?: unknown }[]) : [];
766
- const slices: WidgetSlice[] = rawSlices.map((sl) => ({
767
- label: typeof sl.label === "string" ? sl.label : "",
795
+ // The first-party chart cycles the same palette for sectors and legend dots.
796
+ const chartColors = ["ariaChartBlue", "ariaChartGreen", "ariaChartPurple", "ariaChartGray"];
797
+ const slices: WidgetSlice[] = rawSlices.map((sl, i) => ({
798
+ label: typeof sl.label === "string" ? stripMarkdown(sl.label) : "Other",
768
799
  value: typeof sl.value === "number" && Number.isFinite(sl.value) ? sl.value : 0,
800
+ color: chartColors[i % chartColors.length],
769
801
  }));
770
802
  const chartKind = typeof extra.chartType === "string" ? extra.chartType : "";
771
803
  // "doughnut" is the spelling the reference catalogue uses; "donut" is the
772
804
  // component's. Accepting only the component's spelling classified the real
773
805
  // payload as a SERIES and drew it as bars.
774
806
  const isPie = !chartKind || chartKind === "pie" || chartKind === "donut" || chartKind === "doughnut";
775
- const description = typeof extra.description === "string" ? extra.description : "";
807
+ const isRing = chartKind === "donut" || chartKind === "doughnut";
808
+ const description = typeof extra.description === "string" ? stripMarkdown(extra.description) : "";
776
809
 
777
810
  // TODO_PLAN. `status` is the service's word; `done` is what `Timeline` draws.
778
811
  const rawItems = Array.isArray(extra.items) ? (extra.items as { label?: unknown; status?: unknown }[]) : [];
@@ -811,11 +844,16 @@ export function viewOf(
811
844
  // A single-select starts with at most ONE preselected choice, whatever the
812
845
  // payload marked — a radio group showing two ticks is a state the control
813
846
  // cannot otherwise reach.
847
+ // A choice with nothing to show (a markup-only title and no prose) is dropped like any
848
+ // other empty option; the preselection seed counts only choices that are drawn, and each
849
+ // keeps its original index so its id is stable.
814
850
  let seeded = false;
815
- const choices = raw.map((o, j) => {
851
+ const choices: WidgetOptionRow[] = [];
852
+ raw.forEach((o, j) => {
853
+ if (!hasVisibleContent(optionRow(o, j, false, disclose, allowPicture))) return;
816
854
  const pre = !!o.preselected && (type !== "single-select" || !seeded);
817
855
  if (pre) seeded = true;
818
- return optionRow(o, j, pre, disclose, allowPicture);
856
+ choices.push(optionRow(o, j, pre, disclose, allowPicture));
819
857
  });
820
858
  // A question with no choices and no free-text option of its own can still
821
859
  // be answered — text is the only thing it can take — so it gets the field.
@@ -947,6 +985,15 @@ export function viewOf(
947
985
  chartIsPie: w.kind === "CHART" && isPie && slices.length > 0,
948
986
  chartIsSeries: w.kind === "CHART" && !isPie && slices.length > 0,
949
987
  chartPieHidden: !(w.kind === "CHART" && isPie && slices.length > 0),
988
+ chartRingHidden: !(w.kind === "CHART" && isRing && slices.length > 0),
989
+ chartPlainPieHidden: !(w.kind === "CHART" && isPie && !isRing && slices.length > 0),
990
+ // Name AND value per row: the legend is the only place a slice's magnitude
991
+ // is spelled out, and the a11y contract reads both. The worker formats it,
992
+ // not each renderer, through the shared cross-engine formatter.
993
+ // Only the wedges the donut actually draws: every renderer drops a slice
994
+ // whose value is not positive, so its legend row would name nothing.
995
+ chartLegend: slices.filter((s) => s.value > 0).map(({ label, color, value }) => ({ label, color, marker: "dot" as const,
996
+ value: formatNumber(value) })),
950
997
  chartSeriesHidden: !(w.kind === "CHART" && !isPie && slices.length > 0),
951
998
  chartKind,
952
999
  chartEmpty: w.kind === "CHART" && slices.length === 0,
@@ -57627,6 +57627,7 @@ const SCREENS = runtimeSetting({
57627
57627
  "title": "$item.buttonLabel",
57628
57628
  "style": "secondary",
57629
57629
  "size": "sm",
57630
+ "fullWidth": false,
57630
57631
  "action": {
57631
57632
  "actionId": "tier5.himiOwnerLiteAria.widgetRespond",
57632
57633
  "params": {
@@ -58822,15 +58823,95 @@ const SCREENS = runtimeSetting({
58822
58823
  }
58823
58824
  },
58824
58825
  {
58825
- "id": "",
58826
+ "id": "himi_owner_lite_aria.widget.PLANS.benefits_$item.id",
58826
58827
  "body": {
58827
58828
  "package": "himalaya",
58828
- "type": "Text",
58829
+ "type": "LazyList",
58829
58830
  "props": {
58830
- "text": "$item.listText",
58831
- "style": "footnote",
58832
- "color": "textSecondary",
58833
- "maxLines": 8
58831
+ "itemsPath": "$item.benefits",
58832
+ "spacing": 4,
58833
+ "items": [
58834
+ {
58835
+ "id": "",
58836
+ "body": {
58837
+ "package": "himalaya",
58838
+ "type": "HStack",
58839
+ "props": {
58840
+ "spacing": 8,
58841
+ "children": [
58842
+ {
58843
+ "id": "",
58844
+ "body": {
58845
+ "package": "himalaya",
58846
+ "type": "Icon",
58847
+ "props": {
58848
+ "name": "$item.icon",
58849
+ "size": 12,
58850
+ "tint": "success"
58851
+ }
58852
+ },
58853
+ "modifiers": {
58854
+ "accessibilityRole": "decorative",
58855
+ "hiddenPath": "$item.successHidden"
58856
+ }
58857
+ },
58858
+ {
58859
+ "id": "",
58860
+ "body": {
58861
+ "package": "himalaya",
58862
+ "type": "Icon",
58863
+ "props": {
58864
+ "name": "$item.icon",
58865
+ "size": 12,
58866
+ "tint": "textPrimary"
58867
+ }
58868
+ },
58869
+ "modifiers": {
58870
+ "accessibilityRole": "decorative",
58871
+ "hiddenPath": "$item.plainHidden"
58872
+ }
58873
+ },
58874
+ {
58875
+ "id": "",
58876
+ "body": {
58877
+ "package": "himalaya",
58878
+ "type": "Icon",
58879
+ "props": {
58880
+ "name": "$item.icon",
58881
+ "size": 12,
58882
+ "tint": "accentPrimary"
58883
+ }
58884
+ },
58885
+ "modifiers": {
58886
+ "accessibilityRole": "decorative",
58887
+ "theme": {
58888
+ "colors": {
58889
+ "accentPrimary": "$item.colorHex"
58890
+ }
58891
+ },
58892
+ "hiddenPath": "$item.customHidden"
58893
+ }
58894
+ },
58895
+ {
58896
+ "id": "",
58897
+ "body": {
58898
+ "package": "himalaya",
58899
+ "type": "Text",
58900
+ "props": {
58901
+ "text": "$item.text",
58902
+ "style": "footnote",
58903
+ "maxLines": 8
58904
+ }
58905
+ },
58906
+ "modifiers": {
58907
+ "weight": 1
58908
+ }
58909
+ }
58910
+ ]
58911
+ }
58912
+ }
58913
+ }
58914
+ ]
58834
58915
  }
58835
58916
  },
58836
58917
  "modifiers": {
@@ -59230,6 +59311,181 @@ const SCREENS = runtimeSetting({
59230
59311
  }
59231
59312
  }
59232
59313
  },
59314
+ {
59315
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variants",
59316
+ "body": {
59317
+ "package": "himalaya",
59318
+ "type": "LazyList",
59319
+ "props": {
59320
+ "itemsPath": "$service:himiOwnerLiteAria.widget.options",
59321
+ "spacing": 6,
59322
+ "items": [
59323
+ {
59324
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id",
59325
+ "body": {
59326
+ "package": "himalaya",
59327
+ "type": "Card",
59328
+ "props": {
59329
+ "children": [
59330
+ {
59331
+ "id": "",
59332
+ "body": {
59333
+ "package": "himalaya",
59334
+ "type": "VStack",
59335
+ "props": {
59336
+ "spacing": 8,
59337
+ "children": [
59338
+ {
59339
+ "id": "",
59340
+ "body": {
59341
+ "package": "himalaya",
59342
+ "type": "Image",
59343
+ "props": {
59344
+ "url": "$item.pictureUrl",
59345
+ "fillWidth": true,
59346
+ "aspectRatio": 1.5,
59347
+ "contentMode": "fill",
59348
+ "contentDescription": "$item.title"
59349
+ }
59350
+ },
59351
+ "modifiers": {
59352
+ "hiddenPath": "$item.pictureHidden"
59353
+ }
59354
+ },
59355
+ {
59356
+ "id": "",
59357
+ "body": {
59358
+ "package": "himalaya",
59359
+ "type": "HStack",
59360
+ "props": {
59361
+ "spacing": 0,
59362
+ "children": [
59363
+ {
59364
+ "id": "",
59365
+ "body": {
59366
+ "package": "himalaya",
59367
+ "type": "Text",
59368
+ "props": {
59369
+ "text": "$item.badge",
59370
+ "style": "footnote",
59371
+ "color": "surfacePrimary"
59372
+ }
59373
+ },
59374
+ "modifiers": {
59375
+ "background": {
59376
+ "token": "textSecondary"
59377
+ },
59378
+ "cornerRadius": 4,
59379
+ "padding": {
59380
+ "leading": 8,
59381
+ "trailing": 8,
59382
+ "top": 2,
59383
+ "bottom": 2
59384
+ }
59385
+ }
59386
+ },
59387
+ {
59388
+ "id": "",
59389
+ "body": {
59390
+ "package": "himalaya",
59391
+ "type": "Spacer",
59392
+ "props": {}
59393
+ }
59394
+ }
59395
+ ]
59396
+ }
59397
+ },
59398
+ "modifiers": {
59399
+ "hiddenPath": "$item.badgeHidden"
59400
+ }
59401
+ },
59402
+ {
59403
+ "id": "",
59404
+ "body": {
59405
+ "package": "himalaya",
59406
+ "type": "Text",
59407
+ "props": {
59408
+ "text": "$item.title",
59409
+ "style": "bodyEmphasis"
59410
+ }
59411
+ }
59412
+ },
59413
+ {
59414
+ "id": "",
59415
+ "body": {
59416
+ "package": "himalaya",
59417
+ "type": "Text",
59418
+ "props": {
59419
+ "text": "$item.subtitle",
59420
+ "style": "body",
59421
+ "color": "textSecondary"
59422
+ }
59423
+ },
59424
+ "modifiers": {
59425
+ "hiddenPath": "$item.subtitleHidden"
59426
+ }
59427
+ },
59428
+ {
59429
+ "id": "",
59430
+ "body": {
59431
+ "package": "himalaya",
59432
+ "type": "Text",
59433
+ "props": {
59434
+ "text": "$item.text",
59435
+ "style": "body"
59436
+ }
59437
+ },
59438
+ "modifiers": {
59439
+ "hiddenPath": "$item.textHidden"
59440
+ }
59441
+ },
59442
+ {
59443
+ "id": "",
59444
+ "body": {
59445
+ "package": "himalaya",
59446
+ "type": "Text",
59447
+ "props": {
59448
+ "text": "$item.listText",
59449
+ "style": "body"
59450
+ }
59451
+ },
59452
+ "modifiers": {
59453
+ "hiddenPath": "$item.listHidden"
59454
+ }
59455
+ },
59456
+ {
59457
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id.button",
59458
+ "body": {
59459
+ "package": "himalaya",
59460
+ "type": "Button",
59461
+ "props": {
59462
+ "title": "$item.buttonLabel",
59463
+ "style": "secondary",
59464
+ "size": "sm",
59465
+ "action": {
59466
+ "actionId": "tier5.himiOwnerLiteAria.widgetRespond",
59467
+ "params": {
59468
+ "value": "$item.id"
59469
+ }
59470
+ }
59471
+ }
59472
+ },
59473
+ "modifiers": {
59474
+ "hiddenPath": "$item.buttonHidden"
59475
+ }
59476
+ }
59477
+ ]
59478
+ }
59479
+ }
59480
+ }
59481
+ ]
59482
+ }
59483
+ }
59484
+ }
59485
+ ]
59486
+ }
59487
+ }
59488
+ },
59233
59489
  {
59234
59490
  "id": "",
59235
59491
  "body": {
@@ -60461,7 +60717,23 @@ const SCREENS = runtimeSetting({
60461
60717
  },
60462
60718
  "modifiers": {
60463
60719
  "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60464
- "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPieHidden"
60720
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPlainPieHidden"
60721
+ }
60722
+ },
60723
+ {
60724
+ "id": "himi_owner_lite_aria.widget.CHART.doughnut",
60725
+ "body": {
60726
+ "package": "himalaya",
60727
+ "type": "DonutChart",
60728
+ "props": {
60729
+ "slicesPath": "$service:himiOwnerLiteAria.widget.slices",
60730
+ "thickness": 18,
60731
+ "size": 160
60732
+ }
60733
+ },
60734
+ "modifiers": {
60735
+ "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60736
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartRingHidden"
60465
60737
  }
60466
60738
  },
60467
60739
  {
@@ -60480,6 +60752,21 @@ const SCREENS = runtimeSetting({
60480
60752
  "hiddenPath": "$service:himiOwnerLiteAria.widget.chartSeriesHidden"
60481
60753
  }
60482
60754
  },
60755
+ {
60756
+ "id": "himi_owner_lite_aria.widget.CHART.legend",
60757
+ "body": {
60758
+ "package": "himalaya",
60759
+ "type": "Legend",
60760
+ "props": {
60761
+ "itemsPath": "$service:himiOwnerLiteAria.widget.chartLegend",
60762
+ "orientation": "vertical"
60763
+ }
60764
+ },
60765
+ "modifiers": {
60766
+ "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60767
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPieHidden"
60768
+ }
60769
+ },
60483
60770
  {
60484
60771
  "id": "",
60485
60772
  "body": {
@@ -60572,6 +60859,16 @@ const SCREENS = runtimeSetting({
60572
60859
  }
60573
60860
  ]
60574
60861
  }
60862
+ },
60863
+ "modifiers": {
60864
+ "theme": {
60865
+ "colors": {
60866
+ "ariaChartBlue": "#126EFF",
60867
+ "ariaChartGreen": "#26A659",
60868
+ "ariaChartPurple": "#9926D6",
60869
+ "ariaChartGray": "#878AA6"
60870
+ }
60871
+ }
60575
60872
  }
60576
60873
  },
60577
60874
  "accessibilityAnnouncement": "$service:himiOwnerLiteAria.widget.text"