@ds-mo/ui 14.19.1 → 14.20.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 (116) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +24 -8
  4. package/dist/angular/ds-filter-menu.d.ts +1 -1
  5. package/dist/angular/ds-filter-menu.js +3 -3
  6. package/dist/components/ds-agent-questionnaire.js +1 -1
  7. package/dist/components/ds-agent-response.js +1 -1
  8. package/dist/components/ds-banner.js +1 -1
  9. package/dist/components/ds-bar-nav.js +1 -1
  10. package/dist/components/ds-bar-title.js +1 -1
  11. package/dist/components/ds-bar-workflow.js +1 -1
  12. package/dist/components/ds-button-unfilled.js +1 -1
  13. package/dist/components/ds-card-chart.js +1 -1
  14. package/dist/components/ds-card-overview.js +1 -1
  15. package/dist/components/ds-card-setting.js +1 -1
  16. package/dist/components/ds-chart.js +1 -1
  17. package/dist/components/ds-code-block.js +1 -1
  18. package/dist/components/ds-filter-menu.js +1 -1
  19. package/dist/components/ds-input.js +1 -1
  20. package/dist/components/ds-markdown.js +1 -1
  21. package/dist/components/ds-menu.js +1 -1
  22. package/dist/components/ds-message-actions.js +1 -1
  23. package/dist/components/ds-message-composer.js +1 -1
  24. package/dist/components/ds-message-scroller.js +1 -1
  25. package/dist/components/ds-mobile-header.js +1 -1
  26. package/dist/components/ds-mobile-section-switcher.js +1 -1
  27. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  28. package/dist/components/ds-modal.js +1 -1
  29. package/dist/components/ds-pagination.js +1 -1
  30. package/dist/components/ds-panel-nav.js +1 -1
  31. package/dist/components/ds-panel-tool-header.js +1 -1
  32. package/dist/components/ds-panel-tool-search.js +1 -1
  33. package/dist/components/ds-panel-tools.js +1 -1
  34. package/dist/components/ds-select.js +1 -1
  35. package/dist/components/ds-shell-app.js +1 -1
  36. package/dist/components/ds-shell-tools.js +1 -1
  37. package/dist/components/ds-tab-group.js +1 -1
  38. package/dist/components/ds-table-filter.js +1 -1
  39. package/dist/components/ds-table-filter.js.map +1 -1
  40. package/dist/components/ds-table-saved-views.js +1 -1
  41. package/dist/components/ds-table-sort.js +1 -1
  42. package/dist/components/ds-table.js +1 -1
  43. package/dist/components/ds-toast.js +1 -1
  44. package/dist/components/ds-tooltip-chart.js +1 -1
  45. package/dist/components/ds-tooltip.js +1 -1
  46. package/dist/components/{p-BNq9fr9S.js → p-1UAVanY9.js} +2 -2
  47. package/dist/components/{p-Crz606uD.js → p-AtUP95E_.js} +2 -2
  48. package/dist/components/{p-vrotWZxt.js → p-B2FT4Da6.js} +2 -2
  49. package/dist/components/p-B5-R5mb8.js +2 -0
  50. package/dist/components/p-B5-R5mb8.js.map +1 -0
  51. package/dist/components/{p-Drnyq8z7.js → p-B6rSDhJY.js} +2 -2
  52. package/dist/components/{p-DBYCwq9L.js → p-BUexfjjg.js} +2 -2
  53. package/dist/components/{p-Djxw2FjZ.js → p-BkelrY4-.js} +2 -2
  54. package/dist/components/{p-BubgDQlb.js → p-BmssRAEZ.js} +2 -2
  55. package/dist/components/{p-B6WQre5D.js → p-CCmgtju-.js} +2 -2
  56. package/dist/components/{p-Bx1IHqJb.js → p-CDw_WEVt.js} +2 -2
  57. package/dist/components/{p-1YHFQeI7.js → p-CUL5_8JM.js} +2 -2
  58. package/dist/components/{p-DZv2g9Pe.js → p-CptSB-tA.js} +2 -2
  59. package/dist/components/{p-Demfba7T.js → p-CyZqk196.js} +2 -2
  60. package/dist/components/{p-Cxr0IQjC.js → p-CzbsTZt7.js} +2 -2
  61. package/dist/components/{p-CFsLF-ts.js → p-D7QlTWbN.js} +2 -2
  62. package/dist/components/p-DBYv7fRq.js +2 -0
  63. package/dist/components/{p-CKtJ6FHM.js.map → p-DBYv7fRq.js.map} +1 -1
  64. package/dist/components/{p-D-MWvpg6.js → p-DGe5oXR0.js} +2 -2
  65. package/dist/components/p-DGe5oXR0.js.map +1 -0
  66. package/dist/components/{p-DsgEY6mZ.js → p-DIlScMvI.js} +2 -2
  67. package/dist/components/p-DLbHgbVj.js +2 -0
  68. package/dist/components/{p-Cp5Hr7Vz.js.map → p-DLbHgbVj.js.map} +1 -1
  69. package/dist/components/{p-D7v6Na7U.js → p-DM1Z_hh0.js} +2 -2
  70. package/dist/components/{p-BmlGeaY8.js → p-DWjTOoXs.js} +2 -2
  71. package/dist/components/{p-CRSwNbPk.js → p-DfDoqOlx.js} +2 -2
  72. package/dist/components/{p-DmWoFSGs.js → p-L8IIeDXM.js} +2 -2
  73. package/dist/components/{p-BWwiCvep.js → p-rw0ZxIE4.js} +2 -2
  74. package/dist/components/{p-DIqT1m2r.js → p-v4oqkJms.js} +2 -2
  75. package/dist/docs/components.json +112 -14
  76. package/dist/lib/utils/date-filter-value.d.ts +57 -0
  77. package/dist/lib/utils/index.d.ts +2 -0
  78. package/dist/lib/utils/index.js +67 -0
  79. package/dist/lib/utils/index.js.map +3 -3
  80. package/dist/mcp-data/registry/filter-menu.json +56 -9
  81. package/dist/mcp-data/registry/registry.json +23 -7
  82. package/dist/mcp-data/registry/tab-group.json +1 -1
  83. package/dist/mcp-data/registry/table-filter.json +5 -3
  84. package/dist/types/components/FilterMenu/FilterMenu.d.ts +20 -1
  85. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +13 -0
  86. package/dist/types/components.d.ts +26 -4
  87. package/dist/types/utils/date-filter-value.d.ts +58 -0
  88. package/dist/types/utils/index.d.ts +2 -0
  89. package/dist/vue/ds-filter-menu.js +2 -0
  90. package/package.json +1 -1
  91. package/dist/components/p-CKtJ6FHM.js +0 -2
  92. package/dist/components/p-Cp5Hr7Vz.js +0 -2
  93. package/dist/components/p-CpUXubax.js +0 -2
  94. package/dist/components/p-CpUXubax.js.map +0 -1
  95. package/dist/components/p-D-MWvpg6.js.map +0 -1
  96. /package/dist/components/{p-BNq9fr9S.js.map → p-1UAVanY9.js.map} +0 -0
  97. /package/dist/components/{p-Crz606uD.js.map → p-AtUP95E_.js.map} +0 -0
  98. /package/dist/components/{p-vrotWZxt.js.map → p-B2FT4Da6.js.map} +0 -0
  99. /package/dist/components/{p-Drnyq8z7.js.map → p-B6rSDhJY.js.map} +0 -0
  100. /package/dist/components/{p-DBYCwq9L.js.map → p-BUexfjjg.js.map} +0 -0
  101. /package/dist/components/{p-Djxw2FjZ.js.map → p-BkelrY4-.js.map} +0 -0
  102. /package/dist/components/{p-BubgDQlb.js.map → p-BmssRAEZ.js.map} +0 -0
  103. /package/dist/components/{p-B6WQre5D.js.map → p-CCmgtju-.js.map} +0 -0
  104. /package/dist/components/{p-Bx1IHqJb.js.map → p-CDw_WEVt.js.map} +0 -0
  105. /package/dist/components/{p-1YHFQeI7.js.map → p-CUL5_8JM.js.map} +0 -0
  106. /package/dist/components/{p-DZv2g9Pe.js.map → p-CptSB-tA.js.map} +0 -0
  107. /package/dist/components/{p-Demfba7T.js.map → p-CyZqk196.js.map} +0 -0
  108. /package/dist/components/{p-Cxr0IQjC.js.map → p-CzbsTZt7.js.map} +0 -0
  109. /package/dist/components/{p-CFsLF-ts.js.map → p-D7QlTWbN.js.map} +0 -0
  110. /package/dist/components/{p-DsgEY6mZ.js.map → p-DIlScMvI.js.map} +0 -0
  111. /package/dist/components/{p-D7v6Na7U.js.map → p-DM1Z_hh0.js.map} +0 -0
  112. /package/dist/components/{p-BmlGeaY8.js.map → p-DWjTOoXs.js.map} +0 -0
  113. /package/dist/components/{p-CRSwNbPk.js.map → p-DfDoqOlx.js.map} +0 -0
  114. /package/dist/components/{p-DmWoFSGs.js.map → p-L8IIeDXM.js.map} +0 -0
  115. /package/dist/components/{p-BWwiCvep.js.map → p-rw0ZxIE4.js.map} +0 -0
  116. /package/dist/components/{p-DIqT1m2r.js.map → p-v4oqkJms.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-08-27T01:45:52",
2
+ "timestamp": "2026-08-27T04:39:44",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.5",
@@ -2036,6 +2036,7 @@
2036
2036
  "ds-button-filled",
2037
2037
  "ds-button-unfilled",
2038
2038
  "ds-conversation-list-item",
2039
+ "ds-filter-menu",
2039
2040
  "ds-menu",
2040
2041
  "ds-mobile-bar-nav",
2041
2042
  "ds-mobile-sheet-nav",
@@ -2062,6 +2063,9 @@
2062
2063
  "ds-conversation-list-item": [
2063
2064
  "ds-badge"
2064
2065
  ],
2066
+ "ds-filter-menu": [
2067
+ "ds-badge"
2068
+ ],
2065
2069
  "ds-menu": [
2066
2070
  "ds-badge"
2067
2071
  ],
@@ -9800,6 +9804,46 @@
9800
9804
  "getter": false,
9801
9805
  "setter": false
9802
9806
  },
9807
+ {
9808
+ "name": "footerLayout",
9809
+ "type": "\"categories-clear\" | \"summary\"",
9810
+ "complexType": {
9811
+ "original": "FilterMenuFooterLayout",
9812
+ "resolved": "\"categories-clear\" | \"summary\"",
9813
+ "references": {
9814
+ "FilterMenuFooterLayout": {
9815
+ "location": "local",
9816
+ "path": "/home/runner/work/compomo/compomo/src/wc/components/FilterMenu/FilterMenu.tsx",
9817
+ "id": "src/wc/components/FilterMenu/FilterMenu.tsx::FilterMenuFooterLayout"
9818
+ }
9819
+ }
9820
+ },
9821
+ "mutable": false,
9822
+ "attr": "footer-layout",
9823
+ "reflectToAttr": false,
9824
+ "docs": "Footer recipe: full-width selected summary or reserved category-pane Clear action.",
9825
+ "docsTags": [
9826
+ {
9827
+ "name": "default",
9828
+ "text": "'summary'"
9829
+ }
9830
+ ],
9831
+ "default": "'summary'",
9832
+ "values": [
9833
+ {
9834
+ "value": "categories-clear",
9835
+ "type": "string"
9836
+ },
9837
+ {
9838
+ "value": "summary",
9839
+ "type": "string"
9840
+ }
9841
+ ],
9842
+ "optional": false,
9843
+ "required": false,
9844
+ "getter": false,
9845
+ "setter": false
9846
+ },
9803
9847
  {
9804
9848
  "name": "hasBorder",
9805
9849
  "type": "boolean",
@@ -10003,6 +10047,35 @@
10003
10047
  "getter": false,
10004
10048
  "setter": false
10005
10049
  },
10050
+ {
10051
+ "name": "showSelectedCount",
10052
+ "type": "boolean",
10053
+ "complexType": {
10054
+ "original": "boolean",
10055
+ "resolved": "boolean",
10056
+ "references": {}
10057
+ },
10058
+ "mutable": false,
10059
+ "attr": "show-selected-count",
10060
+ "reflectToAttr": false,
10061
+ "docs": "Append the active-filter count to the visible trigger label.",
10062
+ "docsTags": [
10063
+ {
10064
+ "name": "default",
10065
+ "text": "true"
10066
+ }
10067
+ ],
10068
+ "default": "true",
10069
+ "values": [
10070
+ {
10071
+ "type": "boolean"
10072
+ }
10073
+ ],
10074
+ "optional": false,
10075
+ "required": false,
10076
+ "getter": false,
10077
+ "setter": false
10078
+ },
10006
10079
  {
10007
10080
  "name": "side",
10008
10081
  "type": "\"bottom\" | \"left\" | \"right\" | \"top\"",
@@ -10143,7 +10216,7 @@
10143
10216
  "mutable": false,
10144
10217
  "attr": "trigger-label",
10145
10218
  "reflectToAttr": false,
10146
- "docs": "Select trigger text. The selected count is appended automatically.",
10219
+ "docs": "Select trigger text.",
10147
10220
  "docsTags": [
10148
10221
  {
10149
10222
  "name": "default",
@@ -10347,25 +10420,26 @@
10347
10420
  "ds-table-filter"
10348
10421
  ],
10349
10422
  "dependencies": [
10350
- "ds-checkbox",
10351
- "ds-text",
10352
10423
  "ds-button-unfilled",
10424
+ "ds-text",
10425
+ "ds-tab-group",
10426
+ "ds-checkbox",
10353
10427
  "ds-tooltip",
10354
10428
  "ds-icon",
10429
+ "ds-badge",
10355
10430
  "ds-tag"
10356
10431
  ],
10357
10432
  "dependencyGraph": {
10358
10433
  "ds-filter-menu": [
10359
- "ds-checkbox",
10360
- "ds-text",
10361
10434
  "ds-button-unfilled",
10435
+ "ds-text",
10436
+ "ds-tab-group",
10437
+ "ds-checkbox",
10362
10438
  "ds-tooltip",
10363
10439
  "ds-icon",
10440
+ "ds-badge",
10364
10441
  "ds-tag"
10365
10442
  ],
10366
- "ds-checkbox": [
10367
- "ds-text"
10368
- ],
10369
10443
  "ds-button-unfilled": [
10370
10444
  "ds-tooltip",
10371
10445
  "ds-loader",
@@ -10379,6 +10453,14 @@
10379
10453
  "ds-badge": [
10380
10454
  "ds-text"
10381
10455
  ],
10456
+ "ds-tab-group": [
10457
+ "ds-icon",
10458
+ "ds-text",
10459
+ "ds-badge"
10460
+ ],
10461
+ "ds-checkbox": [
10462
+ "ds-text"
10463
+ ],
10382
10464
  "ds-tag": [
10383
10465
  "ds-icon",
10384
10466
  "ds-text"
@@ -25519,6 +25601,7 @@
25519
25601
  "parts": [],
25520
25602
  "states": [],
25521
25603
  "dependents": [
25604
+ "ds-filter-menu",
25522
25605
  "ds-mobile-header",
25523
25606
  "ds-mobile-sheet-nav"
25524
25607
  ],
@@ -25536,6 +25619,9 @@
25536
25619
  "ds-badge": [
25537
25620
  "ds-text"
25538
25621
  ],
25622
+ "ds-filter-menu": [
25623
+ "ds-tab-group"
25624
+ ],
25539
25625
  "ds-mobile-header": [
25540
25626
  "ds-tab-group"
25541
25627
  ],
@@ -28020,16 +28106,15 @@
28020
28106
  "ds-filter-menu"
28021
28107
  ],
28022
28108
  "ds-filter-menu": [
28023
- "ds-checkbox",
28024
- "ds-text",
28025
28109
  "ds-button-unfilled",
28110
+ "ds-text",
28111
+ "ds-tab-group",
28112
+ "ds-checkbox",
28026
28113
  "ds-tooltip",
28027
28114
  "ds-icon",
28115
+ "ds-badge",
28028
28116
  "ds-tag"
28029
28117
  ],
28030
- "ds-checkbox": [
28031
- "ds-text"
28032
- ],
28033
28118
  "ds-button-unfilled": [
28034
28119
  "ds-tooltip",
28035
28120
  "ds-loader",
@@ -28043,6 +28128,14 @@
28043
28128
  "ds-badge": [
28044
28129
  "ds-text"
28045
28130
  ],
28131
+ "ds-tab-group": [
28132
+ "ds-icon",
28133
+ "ds-text",
28134
+ "ds-badge"
28135
+ ],
28136
+ "ds-checkbox": [
28137
+ "ds-text"
28138
+ ],
28046
28139
  "ds-tag": [
28047
28140
  "ds-icon",
28048
28141
  "ds-text"
@@ -31557,6 +31650,11 @@
31557
31650
  "docstring": "",
31558
31651
  "path": "src/wc/utils/anchored-position.ts"
31559
31652
  },
31653
+ "src/wc/components/FilterMenu/FilterMenu.tsx::FilterMenuFooterLayout": {
31654
+ "declaration": "export type FilterMenuFooterLayout = 'summary' | 'categories-clear';",
31655
+ "docstring": "",
31656
+ "path": "src/wc/components/FilterMenu/FilterMenu.tsx"
31657
+ },
31560
31658
  "src/wc/components/FilterMenu/FilterMenu.tsx::FilterMenuChangeDetail": {
31561
31659
  "declaration": "export interface FilterMenuChangeDetail {\n filterId: string;\n value: FilterMenuValue;\n}",
31562
31660
  "docstring": "",
@@ -0,0 +1,57 @@
1
+ export declare const DATE_FILTER_RELATIVE_PRESETS: readonly [{
2
+ readonly label: "Today";
3
+ readonly value: "today";
4
+ readonly days: 1;
5
+ readonly offset: 0;
6
+ }, {
7
+ readonly label: "Yesterday";
8
+ readonly value: "yesterday";
9
+ readonly days: 1;
10
+ readonly offset: -1;
11
+ }, {
12
+ readonly label: "Last 7 days";
13
+ readonly value: "last-7-days";
14
+ readonly days: 7;
15
+ readonly offset: 0;
16
+ }, {
17
+ readonly label: "Last 14 days";
18
+ readonly value: "last-14-days";
19
+ readonly days: 14;
20
+ readonly offset: 0;
21
+ }, {
22
+ readonly label: "Last 30 days";
23
+ readonly value: "last-30-days";
24
+ readonly days: 30;
25
+ readonly offset: 0;
26
+ }, {
27
+ readonly label: "Last 60 days";
28
+ readonly value: "last-60-days";
29
+ readonly days: 60;
30
+ readonly offset: 0;
31
+ }, {
32
+ readonly label: "Last 90 days";
33
+ readonly value: "last-90-days";
34
+ readonly days: 90;
35
+ readonly offset: 0;
36
+ }];
37
+ export type DateFilterRelativePreset = (typeof DATE_FILTER_RELATIVE_PRESETS)[number]['value'];
38
+ export type DateFilterRelativeValue = `relative:${DateFilterRelativePreset}`;
39
+ export type DateFilterRangeValue = `range:${string}/${string}`;
40
+ export type DateFilterValue = DateFilterRelativeValue | DateFilterRangeValue;
41
+ export interface DateFilterRange {
42
+ start: string;
43
+ end: string;
44
+ }
45
+ export type ParsedDateFilterValue = {
46
+ kind: 'relative';
47
+ preset: DateFilterRelativePreset;
48
+ } | ({
49
+ kind: 'range';
50
+ } & DateFilterRange);
51
+ export declare function isIsoCalendarDate(value: string): boolean;
52
+ export declare function shiftIsoCalendarDate(value: string, days: number): string;
53
+ export declare function dateFilterRelativeValue(preset: DateFilterRelativePreset): DateFilterRelativeValue;
54
+ export declare function dateFilterRangeValue(start: string, end?: string): DateFilterRangeValue;
55
+ export declare function parseDateFilterValue(value: unknown): ParsedDateFilterValue | null;
56
+ export declare function normalizeDateFilterValue(value: unknown): DateFilterValue | '';
57
+ export declare function resolveDateFilterRange(value: unknown, referenceDate: string): DateFilterRange | null;
@@ -25,3 +25,5 @@ export { CONTROL_SUPPORTING_TEXT_VARIANT, CONTROL_TEXT_VARIANT } from './control
25
25
  export type { ControlInsetDepth, ControlSize } from './control-text';
26
26
  export { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';
27
27
  export type { ChoicePopupAnchorAlignment } from './choice-popup-alignment';
28
+ export { DATE_FILTER_RELATIVE_PRESETS, dateFilterRangeValue, dateFilterRelativeValue, isIsoCalendarDate, normalizeDateFilterValue, parseDateFilterValue, resolveDateFilterRange, shiftIsoCalendarDate, } from './date-filter-value';
29
+ export type { DateFilterRange, DateFilterRangeValue, DateFilterRelativePreset, DateFilterRelativeValue, DateFilterValue, ParsedDateFilterValue, } from './date-filter-value';
@@ -1057,9 +1057,69 @@ function resolveChoicePopupAlignOffset({
1057
1057
  function choicePopupMinWidth(anchorWidth, sectionInsetPx) {
1058
1058
  return anchorWidth + sectionInsetPx * 2;
1059
1059
  }
1060
+
1061
+ // src/wc/utils/date-filter-value.ts
1062
+ var DATE_FILTER_RELATIVE_PRESETS = [
1063
+ { label: "Today", value: "today", days: 1, offset: 0 },
1064
+ { label: "Yesterday", value: "yesterday", days: 1, offset: -1 },
1065
+ { label: "Last 7 days", value: "last-7-days", days: 7, offset: 0 },
1066
+ { label: "Last 14 days", value: "last-14-days", days: 14, offset: 0 },
1067
+ { label: "Last 30 days", value: "last-30-days", days: 30, offset: 0 },
1068
+ { label: "Last 60 days", value: "last-60-days", days: 60, offset: 0 },
1069
+ { label: "Last 90 days", value: "last-90-days", days: 90, offset: 0 }
1070
+ ];
1071
+ var ISO_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
1072
+ function isIsoCalendarDate(value) {
1073
+ if (!ISO_DATE_PATTERN.test(value)) return false;
1074
+ const [year, month, day] = value.split("-").map(Number);
1075
+ const date = new Date(Date.UTC(year, month - 1, day));
1076
+ return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
1077
+ }
1078
+ function shiftIsoCalendarDate(value, days) {
1079
+ if (!isIsoCalendarDate(value)) return "";
1080
+ const [year, month, day] = value.split("-").map(Number);
1081
+ const date = new Date(Date.UTC(year, month - 1, day + days));
1082
+ return date.toISOString().slice(0, 10);
1083
+ }
1084
+ function dateFilterRelativeValue(preset) {
1085
+ return `relative:${preset}`;
1086
+ }
1087
+ function dateFilterRangeValue(start, end = start) {
1088
+ const ordered = start <= end ? [start, end] : [end, start];
1089
+ return `range:${ordered[0]}/${ordered[1]}`;
1090
+ }
1091
+ function parseDateFilterValue(value) {
1092
+ if (typeof value !== "string" || !value) return null;
1093
+ if (value.startsWith("relative:")) {
1094
+ const preset = value.slice("relative:".length);
1095
+ return DATE_FILTER_RELATIVE_PRESETS.some((candidate) => candidate.value === preset) ? { kind: "relative", preset } : null;
1096
+ }
1097
+ if (value.startsWith("range:")) {
1098
+ const [start, end, ...rest] = value.slice("range:".length).split("/");
1099
+ if (rest.length || !isIsoCalendarDate(start) || !isIsoCalendarDate(end)) return null;
1100
+ return start <= end ? { kind: "range", start, end } : { kind: "range", start: end, end: start };
1101
+ }
1102
+ return isIsoCalendarDate(value) ? { kind: "range", start: value, end: value } : null;
1103
+ }
1104
+ function normalizeDateFilterValue(value) {
1105
+ const parsed = parseDateFilterValue(value);
1106
+ if (!parsed) return "";
1107
+ return parsed.kind === "relative" ? dateFilterRelativeValue(parsed.preset) : dateFilterRangeValue(parsed.start, parsed.end);
1108
+ }
1109
+ function resolveDateFilterRange(value, referenceDate) {
1110
+ if (!isIsoCalendarDate(referenceDate)) return null;
1111
+ const parsed = parseDateFilterValue(value);
1112
+ if (!parsed) return null;
1113
+ if (parsed.kind === "range") return { start: parsed.start, end: parsed.end };
1114
+ const preset = DATE_FILTER_RELATIVE_PRESETS.find((candidate) => candidate.value === parsed.preset);
1115
+ if (!preset) return null;
1116
+ const end = shiftIsoCalendarDate(referenceDate, preset.offset);
1117
+ return { start: shiftIsoCalendarDate(end, -(preset.days - 1)), end };
1118
+ }
1060
1119
  export {
1061
1120
  CONTROL_SUPPORTING_TEXT_VARIANT,
1062
1121
  CONTROL_TEXT_VARIANT,
1122
+ DATE_FILTER_RELATIVE_PRESETS,
1063
1123
  DEFAULT_REQUIRED_MESSAGE,
1064
1124
  SCROLL_EDGE_FADE_DEFAULT_SIZE,
1065
1125
  SCROLL_EDGE_FADE_SIZE_VAR,
@@ -1080,16 +1140,21 @@ export {
1080
1140
  computeMetricChange,
1081
1141
  controlWidthClass,
1082
1142
  cumulativeBins,
1143
+ dateFilterRangeValue,
1144
+ dateFilterRelativeValue,
1083
1145
  defineChart,
1084
1146
  densityX,
1085
1147
  dot,
1086
1148
  formatCompactNumber,
1087
1149
  formatPercentage,
1088
1150
  isElementTruncated,
1151
+ isIsoCalendarDate,
1089
1152
  isScrollAtEdge,
1090
1153
  lineY,
1154
+ normalizeDateFilterValue,
1091
1155
  normalizeStack,
1092
1156
  parseCssTimeMs,
1157
+ parseDateFilterValue,
1093
1158
  pieLayout,
1094
1159
  polar,
1095
1160
  prefersReducedMotion,
@@ -1101,6 +1166,7 @@ export {
1101
1166
  resolveChoicePopupAlignOffset,
1102
1167
  resolveCssLengthPx,
1103
1168
  resolveCssTimeMs,
1169
+ resolveDateFilterRange,
1104
1170
  resolveMetricTrend,
1105
1171
  resolveMotionTimeMs,
1106
1172
  resolveSafeUrl,
@@ -1117,6 +1183,7 @@ export {
1117
1183
  setFormControlValue,
1118
1184
  setRepeatedFormControlValue,
1119
1185
  setRequiredValidity,
1186
+ shiftIsoCalendarDate,
1120
1187
  textMark,
1121
1188
  truncateSvgTextToWidth
1122
1189
  };