@genesislcap/pbc-notify-ui 15.66.0 → 15.67.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.
@@ -505,6 +505,27 @@
505
505
  }
506
506
  ]
507
507
  },
508
+ {
509
+ "kind": "javascript-module",
510
+ "path": "src/styles/scrollbar.styles.ts",
511
+ "declarations": [
512
+ {
513
+ "kind": "variable",
514
+ "name": "scrollbarStyles",
515
+ "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
516
+ }
517
+ ],
518
+ "exports": [
519
+ {
520
+ "kind": "js",
521
+ "name": "scrollbarStyles",
522
+ "declaration": {
523
+ "name": "scrollbarStyles",
524
+ "module": "src/styles/scrollbar.styles.ts"
525
+ }
526
+ }
527
+ ]
528
+ },
508
529
  {
509
530
  "kind": "javascript-module",
510
531
  "path": "src/utils/eventDetail.ts",
@@ -826,27 +847,6 @@
826
847
  }
827
848
  ]
828
849
  },
829
- {
830
- "kind": "javascript-module",
831
- "path": "src/styles/scrollbar.styles.ts",
832
- "declarations": [
833
- {
834
- "kind": "variable",
835
- "name": "scrollbarStyles",
836
- "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
837
- }
838
- ],
839
- "exports": [
840
- {
841
- "kind": "js",
842
- "name": "scrollbarStyles",
843
- "declaration": {
844
- "name": "scrollbarStyles",
845
- "module": "src/styles/scrollbar.styles.ts"
846
- }
847
- }
848
- ]
849
- },
850
850
  {
851
851
  "kind": "javascript-module",
852
852
  "path": "src/components/foundation-inbox/inbox.styles.ts",
@@ -854,7 +854,7 @@
854
854
  {
855
855
  "kind": "variable",
856
856
  "name": "inboxHeader",
857
- "default": "css`\n .inbox-header {\n display: flex;\n flex: 0;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 3px);\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .inbox-header-title {\n font-size: calc(var(--design-unit) * 4px);\n font-weight: 700;\n padding: 0;\n margin: 0 auto 0 0;\n }\n\n .inbox-header-close {\n text-align: center;\n min-width: 30px;\n height: 30px;\n }\n\n .inbox-header-close::part(control) {\n padding: 0;\n margin: 0;\n }\n\n .inbox-header-close::part(start) {\n margin-inline-end: 0;\n }\n`"
857
+ "default": "css`\n .inbox-header {\n display: flex;\n flex: 0;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--design-unit) * 3px);\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .inbox-header-title {\n font-size: calc(var(--design-unit) * 4px);\n font-weight: 700;\n padding: 0;\n margin: 0 auto 0 0;\n }\n\n .inbox-header-close {\n text-align: center;\n min-width: 30px;\n height: 30px;\n }\n\n .inbox-header-close::part(control) {\n padding: 0;\n margin: 0;\n }\n\n .inbox-header-close::part(start) {\n margin-inline-end: 0;\n }\n`"
858
858
  },
859
859
  {
860
860
  "kind": "variable",
@@ -3673,7 +3673,7 @@
3673
3673
  {
3674
3674
  "kind": "variable",
3675
3675
  "name": "FoundationSoundsPanelStyles",
3676
- "default": "css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n width: 100%;\n }\n\n .sounds-controls {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 12px;\n padding: calc(var(--design-unit) * 3px);\n box-sizing: border-box;\n }\n\n .sounds-help-disclosure {\n flex: 0 0 auto;\n }\n\n .sounds-help-toggle {\n margin-inline-start: calc(var(--design-unit) * 1px);\n }\n\n .sounds-help-toggle::before {\n content: '+';\n }\n\n .sounds-help-disclosure[expanded] .sounds-help-toggle::before {\n content: '−';\n }\n\n .sounds-help {\n margin: 0;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n text-align: left;\n }\n\n .volume-row {\n display: flex;\n align-items: center;\n flex: 0 0 auto;\n gap: calc(var(--design-unit) * 2px);\n min-width: 0;\n }\n\n .volume-icon {\n flex: 0 0 auto;\n }\n\n .volume-label {\n flex: 0 0 auto;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .volume-slider {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .volume-percent {\n flex: 0 0 auto;\n min-width: 3ch;\n text-align: end;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .mute-all {\n flex: 0 0 auto;\n margin: 0;\n }\n\n .sound-rules-panel {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n }\n\n .sound-rules {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .sound-rule {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n\n /* Keep absolute listboxes from being clipped by the card itself. */\n overflow: visible;\n }\n\n .sound-rule-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n font-size: var(--type-ramp-minus-1-font-size);\n }\n\n .sound-rule-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n\n .sound-rule-label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .pattern-input,\n .match-mode-select,\n .rule-select,\n .sound-file-input {\n width: 100%;\n }\n\n /*\n * Anchor the listbox to the select host and use position:fixed so it escapes\n * .sound-rules-panel overflow:auto (and the rule card). Each select sets a\n * unique --sounds-select-anchor / anchor-name via inline style.\n * !important beats FAST's internal absolute top/bottom for [open] selects.\n */\n .match-mode-select[open]::part(listbox),\n .rule-select[open]::part(listbox) {\n position: fixed !important;\n /* stylelint-disable-next-line property-no-unknown -- CSS anchor positioning */\n position-anchor: var(--sounds-select-anchor);\n inset: auto !important;\n top: anchor(bottom) !important;\n left: anchor(left) !important;\n right: anchor(right) !important;\n bottom: auto !important;\n width: auto !important;\n margin-top: calc(var(--design-unit) * 1px);\n z-index: 10000;\n max-height: min(240px, 40vh);\n overflow-x: hidden;\n overflow-y: auto;\n box-shadow: 0 4px 16px rgb(0 0 0 / 24%);\n }\n\n .match-mode-select[open][position='above']::part(listbox),\n .rule-select[open][position='above']::part(listbox) {\n top: auto !important;\n bottom: anchor(top) !important;\n margin-top: 0;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .sound-file-row {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .sound-file-row .sound-file-input {\n flex: 1;\n min-width: 0;\n }\n\n .choose-sound {\n cursor: pointer;\n }\n\n .sound-rules-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 0 0 auto;\n gap: 8px;\n }\n\n .rule-count {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .file-input {\n display: none;\n }\n\n ${scrollbarStyles}\n`"
3676
+ "default": "css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n width: 100%;\n }\n\n .sounds-controls {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 12px;\n padding: calc(var(--design-unit) * 3px);\n box-sizing: border-box;\n }\n\n .sounds-help-disclosure {\n flex: 0 0 auto;\n }\n\n .sounds-help-toggle {\n margin-inline-start: calc(var(--design-unit) * 1px);\n }\n\n .sounds-help-toggle::before {\n content: '+';\n }\n\n .sounds-help-disclosure[expanded] .sounds-help-toggle::before {\n content: '−';\n }\n\n .sounds-help {\n margin: 0;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n text-align: left;\n }\n\n .volume-row {\n display: flex;\n align-items: center;\n flex: 0 0 auto;\n gap: calc(var(--design-unit) * 2px);\n min-width: 0;\n }\n\n .volume-icon {\n flex: 0 0 auto;\n }\n\n .volume-label {\n flex: 0 0 auto;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .volume-slider {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .volume-percent {\n flex: 0 0 auto;\n min-width: 3ch;\n text-align: end;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .mute-all {\n flex: 0 0 auto;\n margin: 0;\n }\n\n .sound-rules-panel {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n }\n\n .sound-rules {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .sound-rule {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n\n /* Keep absolute listboxes from being clipped by the card itself. */\n overflow: visible;\n }\n\n .sound-rule-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 700;\n font-size: var(--type-ramp-minus-1-font-size);\n }\n\n .sound-rule-actions {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n\n .sound-rule-label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .pattern-input,\n .match-mode-select,\n .rule-select,\n .sound-file-input {\n width: 100%;\n }\n\n /*\n * Anchor the listbox to the select host and use position:fixed so it escapes\n * .sound-rules-panel overflow:auto (and the rule card). Each select sets a\n * unique --sounds-select-anchor / anchor-name via inline style.\n * !important beats FAST's internal absolute top/bottom for [open] selects.\n */\n .match-mode-select[open]::part(listbox),\n .rule-select[open]::part(listbox) {\n position: fixed !important;\n /* stylelint-disable-next-line property-no-unknown -- CSS anchor positioning */\n position-anchor: var(--sounds-select-anchor);\n inset: auto !important;\n top: anchor(bottom) !important;\n left: anchor(left) !important;\n right: anchor(right) !important;\n width: auto !important;\n margin-top: calc(var(--design-unit) * 1px);\n z-index: 10000;\n max-height: min(240px, 40vh);\n overflow: hidden auto;\n box-shadow: 0 4px 16px rgb(0 0 0 / 24%);\n }\n\n .match-mode-select[open][position='above']::part(listbox),\n .rule-select[open][position='above']::part(listbox) {\n top: auto !important;\n bottom: anchor(top) !important;\n margin-top: 0;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .sound-file-row {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .sound-file-row .sound-file-input {\n flex: 1;\n min-width: 0;\n }\n\n .choose-sound {\n cursor: pointer;\n }\n\n .sound-rules-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 0 0 auto;\n gap: 8px;\n }\n\n .rule-count {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .file-input {\n display: none;\n }\n\n ${scrollbarStyles}\n`"
3677
3677
  }
3678
3678
  ],
3679
3679
  "exports": [
@@ -5207,95 +5207,6 @@
5207
5207
  }
5208
5208
  ]
5209
5209
  },
5210
- {
5211
- "kind": "javascript-module",
5212
- "path": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts",
5213
- "declarations": [
5214
- {
5215
- "kind": "variable",
5216
- "name": "ConditionBuilderStyles",
5217
- "default": "css`\n .condition-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the condition it joins,\n rendered as a pair of small text links rather than buttons - reads like\n a sentence connector (\"... and ...\") instead of a UI control competing\n with the row's fields for attention. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.left-value::part(control) {\n width: 250px;\n }\n\n rapid-select.logical-operator::part(control) {\n width: 160px;\n }\n\n .logical-operator-null-and-blank {\n width: 100%;\n }\n\n rapid-select.right-criteria::part(control) {\n width: 135px;\n }\n\n rapid-select.right-criteria-user-entry {\n width: 100%;\n }\n\n rapid-select.right-criteria-select {\n width: 100%;\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
5218
- },
5219
- {
5220
- "kind": "variable",
5221
- "name": "ConditionGroupStyles",
5222
- "default": "css`\n .condition-group-row {\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the group it joins - see\n ConditionBuilderStyles' .join-toggle-row/.join-text for why it's a pair\n of text links rather than buttons. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n /* A full bordered box reads as \"this is one parenthesized unit\" more\n literally than a left rail - it nests naturally too, a group inside a\n group just gets a second box drawn inside the first, like actual nested\n parens would look. */\n .condition-group-box {\n flex: 1;\n min-width: 0;\n border: calc(var(--design-unit) * 0.5px) solid\n color-mix(in srgb, var(--accent-fill-rest), transparent 25%);\n border-radius: calc(var(--design-unit) * 1px);\n padding: calc(var(--design-unit) * 2px);\n background-color: color-mix(in srgb, var(--accent-fill-rest), transparent 96%);\n }\n\n .condition-group-box > .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .condition-group-box > .content-row rapid-button {\n font-size: 12px;\n }\n\n rule-condition-builder,\n rule-condition-group,\n template-condition-builder,\n template-condition-group {\n display: block;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .delete-group {\n margin: 0;\n opacity: 60%;\n }\n\n .delete-group:hover {\n opacity: 100%;\n }\n`"
5223
- }
5224
- ],
5225
- "exports": [
5226
- {
5227
- "kind": "js",
5228
- "name": "ConditionBuilderStyles",
5229
- "declaration": {
5230
- "name": "ConditionBuilderStyles",
5231
- "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
5232
- }
5233
- },
5234
- {
5235
- "kind": "js",
5236
- "name": "ConditionGroupStyles",
5237
- "declaration": {
5238
- "name": "ConditionGroupStyles",
5239
- "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
5240
- }
5241
- }
5242
- ]
5243
- },
5244
- {
5245
- "kind": "javascript-module",
5246
- "path": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts",
5247
- "declarations": [
5248
- {
5249
- "kind": "variable",
5250
- "name": "DynamicRuleManagementStyles",
5251
- "default": "css`\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n flex-direction: row-reverse;\n }\n\n .grid {\n height: 100%;\n }\n`"
5252
- },
5253
- {
5254
- "kind": "variable",
5255
- "name": "DynamicRuleDialogStyles",
5256
- "default": "css`\n ${scrollbarStyles}\n ${top}\n ${bottom}\n\n rapid-modal::part(dialog) {\n padding: 0;\n background: var(--neutral-layer-4);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n width: ${String(modalWidthPx)}px;\n max-height: 600px;\n overflow-y: scroll;\n gap: calc(var(--design-unit) * 3px);\n padding: calc(var(--design-unit) * 4px);\n }\n\n .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .control {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .topic-lock-hint {\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-size: var(--type-ramp-minus-1-font-size);\n line-height: var(--type-ramp-minus-1-line-height);\n }\n\n .items {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n display: flex;\n padding: calc(var(--design-unit) * 2px);\n flex-direction: column;\n }\n\n .item {\n gap: 0;\n flex-direction: column;\n margin-bottom: 0;\n }\n\n ${textField}\n ${select}\n\n rapid-button {\n margin: 0;\n }\n\n rapid-select {\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .destination {\n align-self: center;\n }\n\n .topic {\n min-width: revert-layer;\n }\n\n .expression-preview {\n width: 100%;\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .expression-preview::part(control) {\n font-family: var(--body-font, monospace);\n font-size: 12px;\n color: var(--neutral-foreground-hint);\n min-height: calc(var(--design-unit) * 12px);\n resize: vertical;\n }\n\n .alert-sound {\n display: flex;\n flex-direction: column;\n gap: calc(var(--design-unit) * 2px);\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .alert-sound .file-input {\n display: none;\n }\n\n .alert-sound-row {\n display: flex;\n align-items: center;\n gap: calc(var(--design-unit) * 2px);\n flex-wrap: wrap;\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n padding: calc(var(--design-unit) * 2px);\n }\n\n .alert-sound-name {\n flex: 1;\n min-width: 120px;\n color: var(--neutral-foreground-hint);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`"
5257
- }
5258
- ],
5259
- "exports": [
5260
- {
5261
- "kind": "js",
5262
- "name": "DynamicRuleManagementStyles",
5263
- "declaration": {
5264
- "name": "DynamicRuleManagementStyles",
5265
- "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
5266
- }
5267
- },
5268
- {
5269
- "kind": "js",
5270
- "name": "DynamicRuleDialogStyles",
5271
- "declaration": {
5272
- "name": "DynamicRuleDialogStyles",
5273
- "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
5274
- }
5275
- }
5276
- ]
5277
- },
5278
- {
5279
- "kind": "javascript-module",
5280
- "path": "src/components/foundation-notification-dashboard/styles/management.styles.ts",
5281
- "declarations": [
5282
- {
5283
- "kind": "variable",
5284
- "name": "managementGridStyles",
5285
- "default": "css`\n :host {\n height: 100%;\n }\n\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n }\n\n .grid {\n height: 100%;\n }\n`"
5286
- }
5287
- ],
5288
- "exports": [
5289
- {
5290
- "kind": "js",
5291
- "name": "managementGridStyles",
5292
- "declaration": {
5293
- "name": "managementGridStyles",
5294
- "module": "src/components/foundation-notification-dashboard/styles/management.styles.ts"
5295
- }
5296
- }
5297
- ]
5298
- },
5299
5210
  {
5300
5211
  "kind": "javascript-module",
5301
5212
  "path": "src/components/foundation-notification-dashboard/types/expression-type.ts",
@@ -5896,6 +5807,95 @@
5896
5807
  }
5897
5808
  ]
5898
5809
  },
5810
+ {
5811
+ "kind": "javascript-module",
5812
+ "path": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts",
5813
+ "declarations": [
5814
+ {
5815
+ "kind": "variable",
5816
+ "name": "ConditionBuilderStyles",
5817
+ "default": "css`\n .condition-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the condition it joins,\n rendered as a pair of small text links rather than buttons - reads like\n a sentence connector (\"... and ...\") instead of a UI control competing\n with the row's fields for attention. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.left-value::part(control) {\n width: 250px;\n }\n\n rapid-select.logical-operator::part(control) {\n width: 160px;\n }\n\n .logical-operator-null-and-blank {\n width: 100%;\n }\n\n rapid-select.right-criteria::part(control) {\n width: 135px;\n }\n\n rapid-select.right-criteria-user-entry {\n width: 100%;\n }\n\n rapid-select.right-criteria-select {\n width: 100%;\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
5818
+ },
5819
+ {
5820
+ "kind": "variable",
5821
+ "name": "ConditionGroupStyles",
5822
+ "default": "css`\n .condition-group-row {\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the group it joins - see\n ConditionBuilderStyles' .join-toggle-row/.join-text for why it's a pair\n of text links rather than buttons. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n /* A full bordered box reads as \"this is one parenthesized unit\" more\n literally than a left rail - it nests naturally too, a group inside a\n group just gets a second box drawn inside the first, like actual nested\n parens would look. */\n .condition-group-box {\n flex: 1;\n min-width: 0;\n border: calc(var(--design-unit) * 0.5px) solid\n color-mix(in srgb, var(--accent-fill-rest), transparent 25%);\n border-radius: calc(var(--design-unit) * 1px);\n padding: calc(var(--design-unit) * 2px);\n background-color: color-mix(in srgb, var(--accent-fill-rest), transparent 96%);\n }\n\n .condition-group-box > .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .condition-group-box > .content-row rapid-button {\n font-size: 12px;\n }\n\n rule-condition-builder,\n rule-condition-group,\n template-condition-builder,\n template-condition-group {\n display: block;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .delete-group {\n margin: 0;\n opacity: 60%;\n }\n\n .delete-group:hover {\n opacity: 100%;\n }\n`"
5823
+ }
5824
+ ],
5825
+ "exports": [
5826
+ {
5827
+ "kind": "js",
5828
+ "name": "ConditionBuilderStyles",
5829
+ "declaration": {
5830
+ "name": "ConditionBuilderStyles",
5831
+ "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
5832
+ }
5833
+ },
5834
+ {
5835
+ "kind": "js",
5836
+ "name": "ConditionGroupStyles",
5837
+ "declaration": {
5838
+ "name": "ConditionGroupStyles",
5839
+ "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
5840
+ }
5841
+ }
5842
+ ]
5843
+ },
5844
+ {
5845
+ "kind": "javascript-module",
5846
+ "path": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts",
5847
+ "declarations": [
5848
+ {
5849
+ "kind": "variable",
5850
+ "name": "DynamicRuleManagementStyles",
5851
+ "default": "css`\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n flex-direction: row-reverse;\n }\n\n .grid {\n height: 100%;\n }\n`"
5852
+ },
5853
+ {
5854
+ "kind": "variable",
5855
+ "name": "DynamicRuleDialogStyles",
5856
+ "default": "css`\n ${scrollbarStyles}\n ${top}\n ${bottom}\n\n rapid-modal::part(dialog) {\n padding: 0;\n background: var(--neutral-layer-4);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n width: ${String(modalWidthPx)}px;\n max-height: 600px;\n overflow-y: scroll;\n gap: calc(var(--design-unit) * 3px);\n padding: calc(var(--design-unit) * 4px);\n }\n\n .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .control {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .topic-lock-hint {\n color: var(--neutral-foreground-hint, var(--neutral-foreground-rest));\n font-size: var(--type-ramp-minus-1-font-size);\n line-height: var(--type-ramp-minus-1-line-height);\n }\n\n .items {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n display: flex;\n padding: calc(var(--design-unit) * 2px);\n flex-direction: column;\n }\n\n .item {\n gap: 0;\n flex-direction: column;\n margin-bottom: 0;\n }\n\n ${textField}\n ${select}\n\n rapid-button {\n margin: 0;\n }\n\n rapid-select {\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .destination {\n align-self: center;\n }\n\n .topic {\n min-width: revert-layer;\n }\n\n .expression-preview {\n width: 100%;\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .expression-preview::part(control) {\n font-family: var(--body-font, monospace);\n font-size: 12px;\n color: var(--neutral-foreground-hint);\n min-height: calc(var(--design-unit) * 12px);\n resize: vertical;\n }\n\n .alert-sound {\n display: flex;\n flex-direction: column;\n gap: calc(var(--design-unit) * 2px);\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .alert-sound .file-input {\n display: none;\n }\n\n .alert-sound-row {\n display: flex;\n align-items: center;\n gap: calc(var(--design-unit) * 2px);\n flex-wrap: wrap;\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n padding: calc(var(--design-unit) * 2px);\n }\n\n .alert-sound-name {\n flex: 1;\n min-width: 120px;\n color: var(--neutral-foreground-hint);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`"
5857
+ }
5858
+ ],
5859
+ "exports": [
5860
+ {
5861
+ "kind": "js",
5862
+ "name": "DynamicRuleManagementStyles",
5863
+ "declaration": {
5864
+ "name": "DynamicRuleManagementStyles",
5865
+ "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
5866
+ }
5867
+ },
5868
+ {
5869
+ "kind": "js",
5870
+ "name": "DynamicRuleDialogStyles",
5871
+ "declaration": {
5872
+ "name": "DynamicRuleDialogStyles",
5873
+ "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
5874
+ }
5875
+ }
5876
+ ]
5877
+ },
5878
+ {
5879
+ "kind": "javascript-module",
5880
+ "path": "src/components/foundation-notification-dashboard/styles/management.styles.ts",
5881
+ "declarations": [
5882
+ {
5883
+ "kind": "variable",
5884
+ "name": "managementGridStyles",
5885
+ "default": "css`\n :host {\n height: 100%;\n }\n\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n }\n\n .grid {\n height: 100%;\n }\n`"
5886
+ }
5887
+ ],
5888
+ "exports": [
5889
+ {
5890
+ "kind": "js",
5891
+ "name": "managementGridStyles",
5892
+ "declaration": {
5893
+ "name": "managementGridStyles",
5894
+ "module": "src/components/foundation-notification-dashboard/styles/management.styles.ts"
5895
+ }
5896
+ }
5897
+ ]
5898
+ },
5899
5899
  {
5900
5900
  "kind": "javascript-module",
5901
5901
  "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts",
@@ -10481,54 +10481,54 @@
10481
10481
  },
10482
10482
  {
10483
10483
  "kind": "javascript-module",
10484
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
10484
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
10485
10485
  "declarations": [
10486
10486
  {
10487
10487
  "kind": "variable",
10488
- "name": "TemplateConditionBuilderTemplate",
10489
- "default": "html<TemplateConditionBuilder>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-builder\">\n <rapid-select\n :value=${sync((x) => x.leftValue)}\n :initialValue=${sync((x) => x.leftValue)}\n class=\"left-value\"\n >\n ${repeat(\n (x) => x.leftValueItems,\n html<Field>`\n <rapid-option value=${(x) => JSON.stringify(x)}>${(x) => x.FIELD_NAME}</rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-select\n class=\"logical-operator${(x) =>\n classNames([\n '-null-and-blank',\n nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n ])}\"\n :value=${sync((x) => x.logicalOperator)}\n >\n ${repeat(\n (_) => Object.values(LogicalOperator),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select class=\"right-criteria\" :value=${sync((x) => x.rightCriteria)}>\n ${repeat(\n (x) => x.rightCriteriaOptions,\n html`\n <rapid-option value=${(x) => x}>${(x) => rightCriteriaLabel(x)}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html<TemplateConditionBuilder>`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.BOOLEAN,\n html`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueText)}>\n <rapid-option value=\"true\">true</rapid-option>\n <rapid-option value=\"false\">false</rapid-option>\n </rapid-select>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === 'ENUM',\n html`\n <rapid-multiselect\n class=\"right-criteria-select\"\n :selectedOptions=${(x) => x.rightValueMultiSelect}\n @selectionChange=${(x, c) => {\n x.rightValueMultiSelect = (c.event as CustomEvent).detail;\n }}\n search=\"true\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${(x) => x.getEnumValues().map((value) => ({ value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n `,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n placeholder=\"Value (comma-separate for multiple)\"\n autocomplete=\"off\"\n ></rapid-text-field>\n `,\n )}\n `,\n )}\n `,\n )}\n ${when(\n (x) => x.rightCriteria === RightCriteria.USER_ENTRY,\n html<TemplateConditionBuilder>`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueSelect)}>\n ${(x) => rightValueItemsOptions(x.rightValueItems)}\n </rapid-select>\n `,\n )}\n `,\n )}\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteCondition()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
10488
+ "name": "TemplateConditionGroupTemplate",
10489
+ "default": "html<TemplateConditionGroup>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-group-row\">\n <div class=\"condition-group-box\">\n ${repeat(\n (x) => x.groupChildren,\n html<ConditionNode, TemplateConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></template-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n\n <div class=\"content-row\">\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newCondition()}>\n + Condition\n </rapid-button>\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newGroup()}>+ Group</rapid-button>\n <rapid-button appearance=\"icon\" class=\"delete-group\" @click=${(x) => x.deleteSelf()}>\n <rapid-icon variant=\"regular\" name=\"trash-alt\" size=\"lg\" part=\"icon\"></rapid-icon>\n </rapid-button>\n </div>\n </div>\n </div>\n`"
10490
10490
  }
10491
10491
  ],
10492
10492
  "exports": [
10493
10493
  {
10494
10494
  "kind": "js",
10495
- "name": "TemplateConditionBuilderTemplate",
10495
+ "name": "TemplateConditionGroupTemplate",
10496
10496
  "declaration": {
10497
- "name": "TemplateConditionBuilderTemplate",
10498
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts"
10497
+ "name": "TemplateConditionGroupTemplate",
10498
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts"
10499
10499
  }
10500
10500
  }
10501
10501
  ]
10502
10502
  },
10503
10503
  {
10504
10504
  "kind": "javascript-module",
10505
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts",
10505
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts",
10506
10506
  "declarations": [
10507
10507
  {
10508
10508
  "kind": "class",
10509
- "description": "Condition builder for template notification rules.",
10510
- "name": "TemplateConditionBuilder",
10509
+ "description": "Parenthesized group of conditions/nested groups for notification template\ncriteria - see rule-condition-group for the rationale. Also forwards\n:parameters down to nested template-condition-builder rows so parameter\nbinding (USER_ENTRY) keeps working inside a group.",
10510
+ "name": "TemplateConditionGroup",
10511
10511
  "members": [
10512
10512
  {
10513
10513
  "kind": "field",
10514
- "name": "condition",
10514
+ "name": "node",
10515
10515
  "type": {
10516
- "text": "ConditionBuilderEntity"
10516
+ "text": "ConditionGroupEntity"
10517
10517
  }
10518
10518
  },
10519
10519
  {
10520
10520
  "kind": "field",
10521
- "name": "parameters",
10521
+ "name": "fields",
10522
10522
  "type": {
10523
- "text": "Array<ParameterBuilderEntity>"
10523
+ "text": "Field[]"
10524
10524
  },
10525
10525
  "default": "[]"
10526
10526
  },
10527
10527
  {
10528
10528
  "kind": "field",
10529
- "name": "fields",
10529
+ "name": "parameters",
10530
10530
  "type": {
10531
- "text": "Field[]"
10531
+ "text": "Array<ParameterBuilderEntity>"
10532
10532
  },
10533
10533
  "default": "[]"
10534
10534
  },
@@ -10549,11 +10549,169 @@
10549
10549
  },
10550
10550
  {
10551
10551
  "kind": "field",
10552
- "name": "leftValue",
10552
+ "name": "groupChildren",
10553
10553
  "type": {
10554
- "text": "any"
10554
+ "text": "ConditionNode[]"
10555
10555
  },
10556
- "default": "null"
10556
+ "default": "[]"
10557
+ },
10558
+ {
10559
+ "kind": "method",
10560
+ "name": "nodeChanged"
10561
+ },
10562
+ {
10563
+ "kind": "method",
10564
+ "name": "joinOperatorChanged"
10565
+ },
10566
+ {
10567
+ "kind": "method",
10568
+ "name": "newCondition"
10569
+ },
10570
+ {
10571
+ "kind": "method",
10572
+ "name": "newGroup"
10573
+ },
10574
+ {
10575
+ "kind": "method",
10576
+ "name": "editChild",
10577
+ "parameters": [
10578
+ {
10579
+ "name": "_editedChild",
10580
+ "type": {
10581
+ "text": "ConditionNode"
10582
+ }
10583
+ }
10584
+ ]
10585
+ },
10586
+ {
10587
+ "kind": "method",
10588
+ "name": "deleteChild",
10589
+ "parameters": [
10590
+ {
10591
+ "name": "deletedChild",
10592
+ "type": {
10593
+ "text": "ConditionNode"
10594
+ }
10595
+ }
10596
+ ]
10597
+ },
10598
+ {
10599
+ "kind": "method",
10600
+ "name": "deleteSelf"
10601
+ }
10602
+ ],
10603
+ "events": [
10604
+ {
10605
+ "description": "Fired when this whole group should be removed",
10606
+ "name": "delete"
10607
+ },
10608
+ {
10609
+ "description": "Fired when anything inside this group changes",
10610
+ "name": "edit"
10611
+ }
10612
+ ],
10613
+ "superclass": {
10614
+ "name": "GenesisElement",
10615
+ "package": "@genesislcap/web-core"
10616
+ },
10617
+ "tagName": "template-condition-group",
10618
+ "customElement": true
10619
+ }
10620
+ ],
10621
+ "exports": [
10622
+ {
10623
+ "kind": "js",
10624
+ "name": "TemplateConditionGroup",
10625
+ "declaration": {
10626
+ "name": "TemplateConditionGroup",
10627
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
10628
+ }
10629
+ },
10630
+ {
10631
+ "kind": "custom-element-definition",
10632
+ "name": "template-condition-group",
10633
+ "declaration": {
10634
+ "name": "TemplateConditionGroup",
10635
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
10636
+ }
10637
+ }
10638
+ ]
10639
+ },
10640
+ {
10641
+ "kind": "javascript-module",
10642
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
10643
+ "declarations": [
10644
+ {
10645
+ "kind": "variable",
10646
+ "name": "TemplateConditionBuilderTemplate",
10647
+ "default": "html<TemplateConditionBuilder>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-builder\">\n <rapid-select\n :value=${sync((x) => x.leftValue)}\n :initialValue=${sync((x) => x.leftValue)}\n class=\"left-value\"\n >\n ${repeat(\n (x) => x.leftValueItems,\n html<Field>`\n <rapid-option value=${(x) => JSON.stringify(x)}>${(x) => x.FIELD_NAME}</rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-select\n class=\"logical-operator${(x) =>\n classNames([\n '-null-and-blank',\n nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n ])}\"\n :value=${sync((x) => x.logicalOperator)}\n >\n ${repeat(\n (_) => Object.values(LogicalOperator),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select class=\"right-criteria\" :value=${sync((x) => x.rightCriteria)}>\n ${repeat(\n (x) => x.rightCriteriaOptions,\n html`\n <rapid-option value=${(x) => x}>${(x) => rightCriteriaLabel(x)}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html<TemplateConditionBuilder>`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.BOOLEAN,\n html`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueText)}>\n <rapid-option value=\"true\">true</rapid-option>\n <rapid-option value=\"false\">false</rapid-option>\n </rapid-select>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === 'ENUM',\n html`\n <rapid-multiselect\n class=\"right-criteria-select\"\n :selectedOptions=${(x) => x.rightValueMultiSelect}\n @selectionChange=${(x, c) => {\n x.rightValueMultiSelect = (c.event as CustomEvent).detail;\n }}\n search=\"true\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${(x) => x.getEnumValues().map((value) => ({ value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n `,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n placeholder=\"Value (comma-separate for multiple)\"\n autocomplete=\"off\"\n ></rapid-text-field>\n `,\n )}\n `,\n )}\n `,\n )}\n ${when(\n (x) => x.rightCriteria === RightCriteria.USER_ENTRY,\n html<TemplateConditionBuilder>`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueSelect)}>\n ${(x) => rightValueItemsOptions(x.rightValueItems)}\n </rapid-select>\n `,\n )}\n `,\n )}\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteCondition()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
10648
+ }
10649
+ ],
10650
+ "exports": [
10651
+ {
10652
+ "kind": "js",
10653
+ "name": "TemplateConditionBuilderTemplate",
10654
+ "declaration": {
10655
+ "name": "TemplateConditionBuilderTemplate",
10656
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts"
10657
+ }
10658
+ }
10659
+ ]
10660
+ },
10661
+ {
10662
+ "kind": "javascript-module",
10663
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts",
10664
+ "declarations": [
10665
+ {
10666
+ "kind": "class",
10667
+ "description": "Condition builder for template notification rules.",
10668
+ "name": "TemplateConditionBuilder",
10669
+ "members": [
10670
+ {
10671
+ "kind": "field",
10672
+ "name": "condition",
10673
+ "type": {
10674
+ "text": "ConditionBuilderEntity"
10675
+ }
10676
+ },
10677
+ {
10678
+ "kind": "field",
10679
+ "name": "parameters",
10680
+ "type": {
10681
+ "text": "Array<ParameterBuilderEntity>"
10682
+ },
10683
+ "default": "[]"
10684
+ },
10685
+ {
10686
+ "kind": "field",
10687
+ "name": "fields",
10688
+ "type": {
10689
+ "text": "Field[]"
10690
+ },
10691
+ "default": "[]"
10692
+ },
10693
+ {
10694
+ "kind": "field",
10695
+ "name": "isFirst",
10696
+ "type": {
10697
+ "text": "boolean"
10698
+ },
10699
+ "default": "false"
10700
+ },
10701
+ {
10702
+ "kind": "field",
10703
+ "name": "joinOperator",
10704
+ "type": {
10705
+ "text": "string"
10706
+ }
10707
+ },
10708
+ {
10709
+ "kind": "field",
10710
+ "name": "leftValue",
10711
+ "type": {
10712
+ "text": "any"
10713
+ },
10714
+ "default": "null"
10557
10715
  },
10558
10716
  {
10559
10717
  "kind": "field",
@@ -10762,164 +10920,6 @@
10762
10920
  }
10763
10921
  }
10764
10922
  ]
10765
- },
10766
- {
10767
- "kind": "javascript-module",
10768
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
10769
- "declarations": [
10770
- {
10771
- "kind": "variable",
10772
- "name": "TemplateConditionGroupTemplate",
10773
- "default": "html<TemplateConditionGroup>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-group-row\">\n <div class=\"condition-group-box\">\n ${repeat(\n (x) => x.groupChildren,\n html<ConditionNode, TemplateConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></template-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n\n <div class=\"content-row\">\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newCondition()}>\n + Condition\n </rapid-button>\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newGroup()}>+ Group</rapid-button>\n <rapid-button appearance=\"icon\" class=\"delete-group\" @click=${(x) => x.deleteSelf()}>\n <rapid-icon variant=\"regular\" name=\"trash-alt\" size=\"lg\" part=\"icon\"></rapid-icon>\n </rapid-button>\n </div>\n </div>\n </div>\n`"
10774
- }
10775
- ],
10776
- "exports": [
10777
- {
10778
- "kind": "js",
10779
- "name": "TemplateConditionGroupTemplate",
10780
- "declaration": {
10781
- "name": "TemplateConditionGroupTemplate",
10782
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts"
10783
- }
10784
- }
10785
- ]
10786
- },
10787
- {
10788
- "kind": "javascript-module",
10789
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts",
10790
- "declarations": [
10791
- {
10792
- "kind": "class",
10793
- "description": "Parenthesized group of conditions/nested groups for notification template\ncriteria - see rule-condition-group for the rationale. Also forwards\n:parameters down to nested template-condition-builder rows so parameter\nbinding (USER_ENTRY) keeps working inside a group.",
10794
- "name": "TemplateConditionGroup",
10795
- "members": [
10796
- {
10797
- "kind": "field",
10798
- "name": "node",
10799
- "type": {
10800
- "text": "ConditionGroupEntity"
10801
- }
10802
- },
10803
- {
10804
- "kind": "field",
10805
- "name": "fields",
10806
- "type": {
10807
- "text": "Field[]"
10808
- },
10809
- "default": "[]"
10810
- },
10811
- {
10812
- "kind": "field",
10813
- "name": "parameters",
10814
- "type": {
10815
- "text": "Array<ParameterBuilderEntity>"
10816
- },
10817
- "default": "[]"
10818
- },
10819
- {
10820
- "kind": "field",
10821
- "name": "isFirst",
10822
- "type": {
10823
- "text": "boolean"
10824
- },
10825
- "default": "false"
10826
- },
10827
- {
10828
- "kind": "field",
10829
- "name": "joinOperator",
10830
- "type": {
10831
- "text": "string"
10832
- }
10833
- },
10834
- {
10835
- "kind": "field",
10836
- "name": "groupChildren",
10837
- "type": {
10838
- "text": "ConditionNode[]"
10839
- },
10840
- "default": "[]"
10841
- },
10842
- {
10843
- "kind": "method",
10844
- "name": "nodeChanged"
10845
- },
10846
- {
10847
- "kind": "method",
10848
- "name": "joinOperatorChanged"
10849
- },
10850
- {
10851
- "kind": "method",
10852
- "name": "newCondition"
10853
- },
10854
- {
10855
- "kind": "method",
10856
- "name": "newGroup"
10857
- },
10858
- {
10859
- "kind": "method",
10860
- "name": "editChild",
10861
- "parameters": [
10862
- {
10863
- "name": "_editedChild",
10864
- "type": {
10865
- "text": "ConditionNode"
10866
- }
10867
- }
10868
- ]
10869
- },
10870
- {
10871
- "kind": "method",
10872
- "name": "deleteChild",
10873
- "parameters": [
10874
- {
10875
- "name": "deletedChild",
10876
- "type": {
10877
- "text": "ConditionNode"
10878
- }
10879
- }
10880
- ]
10881
- },
10882
- {
10883
- "kind": "method",
10884
- "name": "deleteSelf"
10885
- }
10886
- ],
10887
- "events": [
10888
- {
10889
- "description": "Fired when this whole group should be removed",
10890
- "name": "delete"
10891
- },
10892
- {
10893
- "description": "Fired when anything inside this group changes",
10894
- "name": "edit"
10895
- }
10896
- ],
10897
- "superclass": {
10898
- "name": "GenesisElement",
10899
- "package": "@genesislcap/web-core"
10900
- },
10901
- "tagName": "template-condition-group",
10902
- "customElement": true
10903
- }
10904
- ],
10905
- "exports": [
10906
- {
10907
- "kind": "js",
10908
- "name": "TemplateConditionGroup",
10909
- "declaration": {
10910
- "name": "TemplateConditionGroup",
10911
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
10912
- }
10913
- },
10914
- {
10915
- "kind": "custom-element-definition",
10916
- "name": "template-condition-group",
10917
- "declaration": {
10918
- "name": "TemplateConditionGroup",
10919
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
10920
- }
10921
- }
10922
- ]
10923
10923
  }
10924
10924
  ]
10925
10925
  }
@@ -1 +1 @@
1
- {"version":3,"file":"foundation-sounds-panel.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/foundation-sounds/foundation-sounds-panel.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,iDAqMvC,CAAC"}
1
+ {"version":3,"file":"foundation-sounds-panel.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/foundation-sounds/foundation-sounds-panel.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,iDAmMvC,CAAC"}
@@ -288,17 +288,6 @@ export declare const ParameterBuilder: React.ForwardRefExoticComponent<
288
288
  >;
289
289
  export type ParameterBuilderRef = ParameterBuilderWC;
290
290
 
291
- export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
292
- React.PropsWithChildren<
293
- Omit<PublicOf<TemplateConditionBuilderWC>, 'children' | 'style'> &
294
- HTMLWCProps & {
295
- onDelete?: (event: CustomEvent<ConditionBuilderEntity>) => void;
296
- onEdit?: (event: CustomEvent<ConditionBuilderEntity>) => void;
297
- }
298
- > & React.RefAttributes<TemplateConditionBuilderWC>
299
- >;
300
- export type TemplateConditionBuilderRef = TemplateConditionBuilderWC;
301
-
302
291
  export declare const TemplateConditionGroup: React.ForwardRefExoticComponent<
303
292
  React.PropsWithChildren<
304
293
  Omit<PublicOf<TemplateConditionGroupWC>, 'children' | 'style'> &
@@ -310,4 +299,15 @@ export declare const TemplateConditionGroup: React.ForwardRefExoticComponent<
310
299
  >;
311
300
  export type TemplateConditionGroupRef = TemplateConditionGroupWC;
312
301
 
302
+ export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
303
+ React.PropsWithChildren<
304
+ Omit<PublicOf<TemplateConditionBuilderWC>, 'children' | 'style'> &
305
+ HTMLWCProps & {
306
+ onDelete?: (event: CustomEvent<ConditionBuilderEntity>) => void;
307
+ onEdit?: (event: CustomEvent<ConditionBuilderEntity>) => void;
308
+ }
309
+ > & React.RefAttributes<TemplateConditionBuilderWC>
310
+ >;
311
+ export type TemplateConditionBuilderRef = TemplateConditionBuilderWC;
312
+
313
313
  export {};
@@ -25,7 +25,7 @@ const search = css `
25
25
  display: flex;
26
26
  flex-direction: column;
27
27
  flex: 0;
28
- padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 3px);
28
+ padding: calc(var(--design-unit) * 3px);
29
29
  border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
30
30
  gap: calc(var(--design-unit) * 2px);
31
31
 
@@ -77,7 +77,7 @@ const search = css `
77
77
  --base-height-multiplier: 8;
78
78
 
79
79
  display: flex;
80
- gap: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 2px);
80
+ gap: calc(var(--design-unit) * 2px);
81
81
  align-items: center;
82
82
 
83
83
  label {
@@ -157,7 +157,7 @@ export const inboxHeader = css `
157
157
  flex: 0;
158
158
  align-items: center;
159
159
  justify-content: space-between;
160
- padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 3px);
160
+ padding: calc(var(--design-unit) * 3px);
161
161
  border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
162
162
  }
163
163
 
@@ -146,13 +146,11 @@ export const FoundationSoundsPanelStyles = css `
146
146
  top: anchor(bottom) !important;
147
147
  left: anchor(left) !important;
148
148
  right: anchor(right) !important;
149
- bottom: auto !important;
150
149
  width: auto !important;
151
150
  margin-top: calc(var(--design-unit) * 1px);
152
151
  z-index: 10000;
153
152
  max-height: min(240px, 40vh);
154
- overflow-x: hidden;
155
- overflow-y: auto;
153
+ overflow: hidden auto;
156
154
  box-shadow: 0 4px 16px rgb(0 0 0 / 24%);
157
155
  }
158
156
 
package/dist/react.cjs CHANGED
@@ -266,7 +266,7 @@ const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref)
266
266
  return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
267
267
  });
268
268
 
269
- const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
269
+ const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
270
270
  const { onDelete, onEdit, children, ...rest } = props;
271
271
  const _innerRef = React.useRef(null);
272
272
  const _onDeleteRef = React.useRef(onDelete);
@@ -285,10 +285,10 @@ const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuil
285
285
  el.removeEventListener('edit', _onEditFn);
286
286
  };
287
287
  }, []);
288
- return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
288
+ return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
289
289
  });
290
290
 
291
- const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
291
+ const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
292
292
  const { onDelete, onEdit, children, ...rest } = props;
293
293
  const _innerRef = React.useRef(null);
294
294
  const _onDeleteRef = React.useRef(onDelete);
@@ -307,7 +307,7 @@ const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(
307
307
  el.removeEventListener('edit', _onEditFn);
308
308
  };
309
309
  }, []);
310
- return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
310
+ return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
311
311
  });
312
312
 
313
313
  module.exports = {
@@ -335,6 +335,6 @@ module.exports = {
335
335
  RuleConditionBuilder,
336
336
  RuleConditionGroup,
337
337
  ParameterBuilder,
338
- TemplateConditionBuilder,
339
338
  TemplateConditionGroup,
339
+ TemplateConditionBuilder,
340
340
  };
package/dist/react.mjs CHANGED
@@ -264,7 +264,7 @@ export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props
264
264
  return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
265
265
  });
266
266
 
267
- export const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
267
+ export const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
268
268
  const { onDelete, onEdit, children, ...rest } = props;
269
269
  const _innerRef = React.useRef(null);
270
270
  const _onDeleteRef = React.useRef(onDelete);
@@ -283,10 +283,10 @@ export const TemplateConditionBuilder = React.forwardRef(function TemplateCondit
283
283
  el.removeEventListener('edit', _onEditFn);
284
284
  };
285
285
  }, []);
286
- return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
286
+ return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
287
287
  });
288
288
 
289
- export const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
289
+ export const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
290
290
  const { onDelete, onEdit, children, ...rest } = props;
291
291
  const _innerRef = React.useRef(null);
292
292
  const _onDeleteRef = React.useRef(onDelete);
@@ -305,5 +305,5 @@ export const TemplateConditionGroup = React.forwardRef(function TemplateConditio
305
305
  el.removeEventListener('edit', _onEditFn);
306
306
  };
307
307
  }, []);
308
- return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
308
+ return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
309
309
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/pbc-notify-ui",
3
3
  "description": "Genesis PBC Notify UI",
4
- "version": "15.66.0",
4
+ "version": "15.67.0",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "workspaces": [
7
7
  "client"
@@ -80,30 +80,30 @@
80
80
  "@commitlint/cli": "^19.2.1",
81
81
  "@commitlint/config-conventional": "^19.1.0",
82
82
  "@commitlint/format": "^19.0.3",
83
- "@genesislcap/design-system-configurator": "15.66.0",
84
- "@genesislcap/eslint-config": "15.66.0",
85
- "@genesislcap/eslint-stylelint-builder": "15.66.0",
86
- "@genesislcap/foundation-testing": "15.66.0",
87
- "@genesislcap/genx": "15.66.0",
88
- "@genesislcap/prettier-config": "15.66.0",
89
- "@genesislcap/stylelint-config": "15.66.0",
90
- "@genesislcap/vite-builder": "15.66.0",
91
- "@genesislcap/webpack-builder": "15.66.0",
83
+ "@genesislcap/design-system-configurator": "15.67.0",
84
+ "@genesislcap/eslint-config": "15.67.0",
85
+ "@genesislcap/eslint-stylelint-builder": "15.67.0",
86
+ "@genesislcap/foundation-testing": "15.67.0",
87
+ "@genesislcap/genx": "15.67.0",
88
+ "@genesislcap/prettier-config": "15.67.0",
89
+ "@genesislcap/stylelint-config": "15.67.0",
90
+ "@genesislcap/vite-builder": "15.67.0",
91
+ "@genesislcap/webpack-builder": "15.67.0",
92
92
  "dayjs": "^1.11.7"
93
93
  },
94
94
  "dependencies": {
95
- "@genesislcap/foundation-comms": "15.66.0",
96
- "@genesislcap/foundation-criteria": "15.66.0",
97
- "@genesislcap/foundation-entity-management": "15.66.0",
98
- "@genesislcap/foundation-forms": "15.66.0",
99
- "@genesislcap/foundation-layout": "15.66.0",
100
- "@genesislcap/foundation-logger": "15.66.0",
101
- "@genesislcap/foundation-notifications": "15.66.0",
102
- "@genesislcap/foundation-ui": "15.66.0",
103
- "@genesislcap/foundation-utils": "15.66.0",
104
- "@genesislcap/rapid-design-system": "15.66.0",
105
- "@genesislcap/rapid-grid-pro": "15.66.0",
106
- "@genesislcap/web-core": "15.66.0",
95
+ "@genesislcap/foundation-comms": "15.67.0",
96
+ "@genesislcap/foundation-criteria": "15.67.0",
97
+ "@genesislcap/foundation-entity-management": "15.67.0",
98
+ "@genesislcap/foundation-forms": "15.67.0",
99
+ "@genesislcap/foundation-layout": "15.67.0",
100
+ "@genesislcap/foundation-logger": "15.67.0",
101
+ "@genesislcap/foundation-notifications": "15.67.0",
102
+ "@genesislcap/foundation-ui": "15.67.0",
103
+ "@genesislcap/foundation-utils": "15.67.0",
104
+ "@genesislcap/rapid-design-system": "15.67.0",
105
+ "@genesislcap/rapid-grid-pro": "15.67.0",
106
+ "@genesislcap/web-core": "15.67.0",
107
107
  "lodash.debounce": "^4.0.8",
108
108
  "rxjs": "^7.5.4"
109
109
  },