@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,
@@ -57330,6 +57330,7 @@ const SCREENS = runtimeSetting({
57330
57330
  "title": "$item.buttonLabel",
57331
57331
  "style": "secondary",
57332
57332
  "size": "sm",
57333
+ "fullWidth": false,
57333
57334
  "action": {
57334
57335
  "actionId": "tier5.himiOwnerLiteAria.widgetRespond",
57335
57336
  "params": {
@@ -58525,15 +58526,95 @@ const SCREENS = runtimeSetting({
58525
58526
  }
58526
58527
  },
58527
58528
  {
58528
- "id": "",
58529
+ "id": "himi_owner_lite_aria.widget.PLANS.benefits_$item.id",
58529
58530
  "body": {
58530
58531
  "package": "himalaya",
58531
- "type": "Text",
58532
+ "type": "LazyList",
58532
58533
  "props": {
58533
- "text": "$item.listText",
58534
- "style": "footnote",
58535
- "color": "textSecondary",
58536
- "maxLines": 8
58534
+ "itemsPath": "$item.benefits",
58535
+ "spacing": 4,
58536
+ "items": [
58537
+ {
58538
+ "id": "",
58539
+ "body": {
58540
+ "package": "himalaya",
58541
+ "type": "HStack",
58542
+ "props": {
58543
+ "spacing": 8,
58544
+ "children": [
58545
+ {
58546
+ "id": "",
58547
+ "body": {
58548
+ "package": "himalaya",
58549
+ "type": "Icon",
58550
+ "props": {
58551
+ "name": "$item.icon",
58552
+ "size": 12,
58553
+ "tint": "success"
58554
+ }
58555
+ },
58556
+ "modifiers": {
58557
+ "accessibilityRole": "decorative",
58558
+ "hiddenPath": "$item.successHidden"
58559
+ }
58560
+ },
58561
+ {
58562
+ "id": "",
58563
+ "body": {
58564
+ "package": "himalaya",
58565
+ "type": "Icon",
58566
+ "props": {
58567
+ "name": "$item.icon",
58568
+ "size": 12,
58569
+ "tint": "textPrimary"
58570
+ }
58571
+ },
58572
+ "modifiers": {
58573
+ "accessibilityRole": "decorative",
58574
+ "hiddenPath": "$item.plainHidden"
58575
+ }
58576
+ },
58577
+ {
58578
+ "id": "",
58579
+ "body": {
58580
+ "package": "himalaya",
58581
+ "type": "Icon",
58582
+ "props": {
58583
+ "name": "$item.icon",
58584
+ "size": 12,
58585
+ "tint": "accentPrimary"
58586
+ }
58587
+ },
58588
+ "modifiers": {
58589
+ "accessibilityRole": "decorative",
58590
+ "theme": {
58591
+ "colors": {
58592
+ "accentPrimary": "$item.colorHex"
58593
+ }
58594
+ },
58595
+ "hiddenPath": "$item.customHidden"
58596
+ }
58597
+ },
58598
+ {
58599
+ "id": "",
58600
+ "body": {
58601
+ "package": "himalaya",
58602
+ "type": "Text",
58603
+ "props": {
58604
+ "text": "$item.text",
58605
+ "style": "footnote",
58606
+ "maxLines": 8
58607
+ }
58608
+ },
58609
+ "modifiers": {
58610
+ "weight": 1
58611
+ }
58612
+ }
58613
+ ]
58614
+ }
58615
+ }
58616
+ }
58617
+ ]
58537
58618
  }
58538
58619
  },
58539
58620
  "modifiers": {
@@ -58933,6 +59014,181 @@ const SCREENS = runtimeSetting({
58933
59014
  }
58934
59015
  }
58935
59016
  },
59017
+ {
59018
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variants",
59019
+ "body": {
59020
+ "package": "himalaya",
59021
+ "type": "LazyList",
59022
+ "props": {
59023
+ "itemsPath": "$service:himiOwnerLiteAria.widget.options",
59024
+ "spacing": 6,
59025
+ "items": [
59026
+ {
59027
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id",
59028
+ "body": {
59029
+ "package": "himalaya",
59030
+ "type": "Card",
59031
+ "props": {
59032
+ "children": [
59033
+ {
59034
+ "id": "",
59035
+ "body": {
59036
+ "package": "himalaya",
59037
+ "type": "VStack",
59038
+ "props": {
59039
+ "spacing": 8,
59040
+ "children": [
59041
+ {
59042
+ "id": "",
59043
+ "body": {
59044
+ "package": "himalaya",
59045
+ "type": "Image",
59046
+ "props": {
59047
+ "url": "$item.pictureUrl",
59048
+ "fillWidth": true,
59049
+ "aspectRatio": 1.5,
59050
+ "contentMode": "fill",
59051
+ "contentDescription": "$item.title"
59052
+ }
59053
+ },
59054
+ "modifiers": {
59055
+ "hiddenPath": "$item.pictureHidden"
59056
+ }
59057
+ },
59058
+ {
59059
+ "id": "",
59060
+ "body": {
59061
+ "package": "himalaya",
59062
+ "type": "HStack",
59063
+ "props": {
59064
+ "spacing": 0,
59065
+ "children": [
59066
+ {
59067
+ "id": "",
59068
+ "body": {
59069
+ "package": "himalaya",
59070
+ "type": "Text",
59071
+ "props": {
59072
+ "text": "$item.badge",
59073
+ "style": "footnote",
59074
+ "color": "surfacePrimary"
59075
+ }
59076
+ },
59077
+ "modifiers": {
59078
+ "background": {
59079
+ "token": "textSecondary"
59080
+ },
59081
+ "cornerRadius": 4,
59082
+ "padding": {
59083
+ "leading": 8,
59084
+ "trailing": 8,
59085
+ "top": 2,
59086
+ "bottom": 2
59087
+ }
59088
+ }
59089
+ },
59090
+ {
59091
+ "id": "",
59092
+ "body": {
59093
+ "package": "himalaya",
59094
+ "type": "Spacer",
59095
+ "props": {}
59096
+ }
59097
+ }
59098
+ ]
59099
+ }
59100
+ },
59101
+ "modifiers": {
59102
+ "hiddenPath": "$item.badgeHidden"
59103
+ }
59104
+ },
59105
+ {
59106
+ "id": "",
59107
+ "body": {
59108
+ "package": "himalaya",
59109
+ "type": "Text",
59110
+ "props": {
59111
+ "text": "$item.title",
59112
+ "style": "bodyEmphasis"
59113
+ }
59114
+ }
59115
+ },
59116
+ {
59117
+ "id": "",
59118
+ "body": {
59119
+ "package": "himalaya",
59120
+ "type": "Text",
59121
+ "props": {
59122
+ "text": "$item.subtitle",
59123
+ "style": "body",
59124
+ "color": "textSecondary"
59125
+ }
59126
+ },
59127
+ "modifiers": {
59128
+ "hiddenPath": "$item.subtitleHidden"
59129
+ }
59130
+ },
59131
+ {
59132
+ "id": "",
59133
+ "body": {
59134
+ "package": "himalaya",
59135
+ "type": "Text",
59136
+ "props": {
59137
+ "text": "$item.text",
59138
+ "style": "body"
59139
+ }
59140
+ },
59141
+ "modifiers": {
59142
+ "hiddenPath": "$item.textHidden"
59143
+ }
59144
+ },
59145
+ {
59146
+ "id": "",
59147
+ "body": {
59148
+ "package": "himalaya",
59149
+ "type": "Text",
59150
+ "props": {
59151
+ "text": "$item.listText",
59152
+ "style": "body"
59153
+ }
59154
+ },
59155
+ "modifiers": {
59156
+ "hiddenPath": "$item.listHidden"
59157
+ }
59158
+ },
59159
+ {
59160
+ "id": "himi_owner_lite_aria.widget.VISUAL_DISPLAY.variant_$item.id.button",
59161
+ "body": {
59162
+ "package": "himalaya",
59163
+ "type": "Button",
59164
+ "props": {
59165
+ "title": "$item.buttonLabel",
59166
+ "style": "secondary",
59167
+ "size": "sm",
59168
+ "action": {
59169
+ "actionId": "tier5.himiOwnerLiteAria.widgetRespond",
59170
+ "params": {
59171
+ "value": "$item.id"
59172
+ }
59173
+ }
59174
+ }
59175
+ },
59176
+ "modifiers": {
59177
+ "hiddenPath": "$item.buttonHidden"
59178
+ }
59179
+ }
59180
+ ]
59181
+ }
59182
+ }
59183
+ }
59184
+ ]
59185
+ }
59186
+ }
59187
+ }
59188
+ ]
59189
+ }
59190
+ }
59191
+ },
58936
59192
  {
58937
59193
  "id": "",
58938
59194
  "body": {
@@ -60164,7 +60420,23 @@ const SCREENS = runtimeSetting({
60164
60420
  },
60165
60421
  "modifiers": {
60166
60422
  "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60167
- "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPieHidden"
60423
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPlainPieHidden"
60424
+ }
60425
+ },
60426
+ {
60427
+ "id": "himi_owner_lite_aria.widget.CHART.doughnut",
60428
+ "body": {
60429
+ "package": "himalaya",
60430
+ "type": "DonutChart",
60431
+ "props": {
60432
+ "slicesPath": "$service:himiOwnerLiteAria.widget.slices",
60433
+ "thickness": 18,
60434
+ "size": 160
60435
+ }
60436
+ },
60437
+ "modifiers": {
60438
+ "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60439
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartRingHidden"
60168
60440
  }
60169
60441
  },
60170
60442
  {
@@ -60183,6 +60455,21 @@ const SCREENS = runtimeSetting({
60183
60455
  "hiddenPath": "$service:himiOwnerLiteAria.widget.chartSeriesHidden"
60184
60456
  }
60185
60457
  },
60458
+ {
60459
+ "id": "himi_owner_lite_aria.widget.CHART.legend",
60460
+ "body": {
60461
+ "package": "himalaya",
60462
+ "type": "Legend",
60463
+ "props": {
60464
+ "itemsPath": "$service:himiOwnerLiteAria.widget.chartLegend",
60465
+ "orientation": "vertical"
60466
+ }
60467
+ },
60468
+ "modifiers": {
60469
+ "accessibilityLabel": "$service:himiOwnerLiteAria.widget.text",
60470
+ "hiddenPath": "$service:himiOwnerLiteAria.widget.chartPieHidden"
60471
+ }
60472
+ },
60186
60473
  {
60187
60474
  "id": "",
60188
60475
  "body": {
@@ -60275,6 +60562,16 @@ const SCREENS = runtimeSetting({
60275
60562
  }
60276
60563
  ]
60277
60564
  }
60565
+ },
60566
+ "modifiers": {
60567
+ "theme": {
60568
+ "colors": {
60569
+ "ariaChartBlue": "#126EFF",
60570
+ "ariaChartGreen": "#26A659",
60571
+ "ariaChartPurple": "#9926D6",
60572
+ "ariaChartGray": "#878AA6"
60573
+ }
60574
+ }
60278
60575
  }
60279
60576
  },
60280
60577
  "accessibilityAnnouncement": "$service:himiOwnerLiteAria.widget.text"