@ds-mo/ui 14.19.1 → 14.21.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 (272) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +405 -36
  4. package/dist/angular/ds-chip.d.ts +1 -1
  5. package/dist/angular/ds-chip.js +3 -3
  6. package/dist/angular/ds-filter-menu.d.ts +7 -1
  7. package/dist/angular/ds-filter-menu.js +7 -4
  8. package/dist/angular/ds-input.d.ts +1 -1
  9. package/dist/angular/ds-input.js +3 -3
  10. package/dist/angular/ds-tab-group.d.ts +1 -1
  11. package/dist/angular/ds-tab-group.js +3 -3
  12. package/dist/angular/ds-table-filter.d.ts +7 -1
  13. package/dist/angular/ds-table-filter.js +7 -4
  14. package/dist/angular/ds-table-group.d.ts +29 -0
  15. package/dist/angular/ds-table-group.js +48 -0
  16. package/dist/angular/ds-table-search.d.ts +20 -0
  17. package/dist/angular/ds-table-search.js +49 -0
  18. package/dist/angular/ds-table.d.ts +1 -1
  19. package/dist/angular/ds-table.js +3 -3
  20. package/dist/angular/index.d.ts +1 -1
  21. package/dist/angular/index.js +2 -0
  22. package/dist/angular/proxies.d.ts +2 -0
  23. package/dist/angular/proxies.js +2 -0
  24. package/dist/components/ds-agent-activity.js +1 -1
  25. package/dist/components/ds-agent-questionnaire.js +1 -1
  26. package/dist/components/ds-agent-response.js +1 -1
  27. package/dist/components/ds-agent-source-list.js +1 -1
  28. package/dist/components/ds-agent-tool-call.js +1 -1
  29. package/dist/components/ds-attachment-list.js +1 -1
  30. package/dist/components/ds-badge.js +1 -1
  31. package/dist/components/ds-banner.js +1 -1
  32. package/dist/components/ds-bar-action.js +1 -1
  33. package/dist/components/ds-bar-nav.js +1 -1
  34. package/dist/components/ds-bar-title.js +1 -1
  35. package/dist/components/ds-bar-workflow.js +1 -1
  36. package/dist/components/ds-breadcrumb.js +1 -1
  37. package/dist/components/ds-button-filled.js +1 -1
  38. package/dist/components/ds-button-unfilled.js +1 -1
  39. package/dist/components/ds-card-chart.js +1 -1
  40. package/dist/components/ds-card-overview.js +1 -1
  41. package/dist/components/ds-card-setting.js +1 -1
  42. package/dist/components/ds-chart-legend.js +1 -1
  43. package/dist/components/ds-chart.js +1 -1
  44. package/dist/components/ds-checkbox.js +1 -1
  45. package/dist/components/ds-chip.js +1 -1
  46. package/dist/components/ds-chip.js.map +1 -1
  47. package/dist/components/ds-code-block.js +1 -1
  48. package/dist/components/ds-conversation-list-item.js +1 -1
  49. package/dist/components/ds-conversation-list-section.js +1 -1
  50. package/dist/components/ds-empty-state.js +1 -1
  51. package/dist/components/ds-field.js +1 -1
  52. package/dist/components/ds-filter-menu.js +1 -1
  53. package/dist/components/ds-input.js +1 -1
  54. package/dist/components/ds-markdown.js +1 -1
  55. package/dist/components/ds-menu.js +1 -1
  56. package/dist/components/ds-message-actions.js +1 -1
  57. package/dist/components/ds-message-composer.js +1 -1
  58. package/dist/components/ds-message-scroller.js +1 -1
  59. package/dist/components/ds-message-scroller.js.map +1 -1
  60. package/dist/components/ds-message.js +1 -1
  61. package/dist/components/ds-mobile-bar-nav.js +1 -1
  62. package/dist/components/ds-mobile-header.js +1 -1
  63. package/dist/components/ds-mobile-section-switcher.js +1 -1
  64. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  65. package/dist/components/ds-modal.js +1 -1
  66. package/dist/components/ds-pagination.js +1 -1
  67. package/dist/components/ds-panel-nav.js +1 -1
  68. package/dist/components/ds-panel-sub-nav.js +1 -1
  69. package/dist/components/ds-panel-tool-header.js +1 -1
  70. package/dist/components/ds-panel-tool-search.js +1 -1
  71. package/dist/components/ds-panel-tool-search.js.map +1 -1
  72. package/dist/components/ds-panel-tools.js +1 -1
  73. package/dist/components/ds-paper-texture.js +1 -1
  74. package/dist/components/ds-radio.js +1 -1
  75. package/dist/components/ds-select.js +1 -1
  76. package/dist/components/ds-shell-app.js +1 -1
  77. package/dist/components/ds-shell-page.js +1 -1
  78. package/dist/components/ds-shell-tools.js +1 -1
  79. package/dist/components/ds-slider.js +1 -1
  80. package/dist/components/ds-swatch-picker.js +1 -1
  81. package/dist/components/ds-tab-group.js +1 -1
  82. package/dist/components/ds-table-filter.js +1 -1
  83. package/dist/components/ds-table-filter.js.map +1 -1
  84. package/dist/components/ds-table-group.d.ts +11 -0
  85. package/dist/components/ds-table-group.js +2 -0
  86. package/dist/components/ds-table-group.js.map +1 -0
  87. package/dist/components/ds-table-saved-views.js +1 -1
  88. package/dist/components/ds-table-search.d.ts +11 -0
  89. package/dist/components/ds-table-search.js +2 -0
  90. package/dist/components/ds-table-search.js.map +1 -0
  91. package/dist/components/ds-table-sort.js +1 -1
  92. package/dist/components/ds-table-sort.js.map +1 -1
  93. package/dist/components/ds-table-toolbar.js +1 -1
  94. package/dist/components/ds-table-toolbar.js.map +1 -1
  95. package/dist/components/ds-table.js +1 -1
  96. package/dist/components/ds-table.js.map +1 -1
  97. package/dist/components/ds-tag.js +1 -1
  98. package/dist/components/ds-text.js +1 -1
  99. package/dist/components/ds-toast.js +1 -1
  100. package/dist/components/ds-tooltip-chart.js +1 -1
  101. package/dist/components/ds-tooltip.js +1 -1
  102. package/dist/components/ds-typing-indicator.js +1 -1
  103. package/dist/components/{p-Bf7PZJPT.js → p-5Z4oYuiK.js} +2 -2
  104. package/dist/components/{p-DsgEY6mZ.js → p-6rB0eAda.js} +2 -2
  105. package/dist/components/{p-DZv2g9Pe.js → p-9ykZwPlI.js} +2 -2
  106. package/dist/components/{p-BHhmB9-4.js → p-B0kSlcaw.js} +2 -2
  107. package/dist/components/{p-BmlGeaY8.js → p-B1wMpt1z.js} +2 -2
  108. package/dist/components/p-BEttT0UB.js +2 -0
  109. package/dist/components/p-BEttT0UB.js.map +1 -0
  110. package/dist/components/p-BFit8o0r.js +2 -0
  111. package/dist/components/p-BFit8o0r.js.map +1 -0
  112. package/dist/components/{p-fRDzpfi9.js → p-BXv6RpoF.js} +2 -2
  113. package/dist/components/{p-CFsLF-ts.js → p-BbG7nOcz.js} +2 -2
  114. package/dist/components/{p-vrotWZxt.js → p-Bc_z1UwJ.js} +2 -2
  115. package/dist/components/{p-Bx5BSd6F.js → p-BcxidW9k.js} +2 -2
  116. package/dist/components/{p-BNq9fr9S.js → p-Bd8I2oXN.js} +2 -2
  117. package/dist/components/{p-D-MWvpg6.js → p-Bjq1KP_Y.js} +2 -2
  118. package/dist/components/p-Bjq1KP_Y.js.map +1 -0
  119. package/dist/components/{p-DW5Ita-P.js → p-BnTPuV3x.js} +2 -2
  120. package/dist/components/{p-DW5Ita-P.js.map → p-BnTPuV3x.js.map} +1 -1
  121. package/dist/components/p-BqVXMEJm.js +2 -0
  122. package/dist/components/p-BqVXMEJm.js.map +1 -0
  123. package/dist/components/{p-DdH7b4JF.js → p-CBymzuOO.js} +2 -2
  124. package/dist/components/{p-BjRD57w3.js → p-CE2b5GPu.js} +2 -2
  125. package/dist/components/{p-CRSwNbPk.js → p-CEnoPUn5.js} +2 -2
  126. package/dist/components/p-CFkZSDwI.js +2 -0
  127. package/dist/components/{p-CKtJ6FHM.js.map → p-CFkZSDwI.js.map} +1 -1
  128. package/dist/components/{p-Bb4KnRy0.js → p-CTH3dSYg.js} +2 -2
  129. package/dist/components/{p-1YHFQeI7.js → p-CUL5_8JM.js} +2 -2
  130. package/dist/components/{p-BubgDQlb.js → p-CZ144LS5.js} +2 -2
  131. package/dist/components/{p-B-HsfQOK.js → p-Cd1JnnVK.js} +2 -2
  132. package/dist/components/p-CeKa4VbU.js +2 -0
  133. package/dist/components/{p-Crz606uD.js.map → p-CeKa4VbU.js.map} +1 -1
  134. package/dist/components/{p-Bx1IHqJb.js → p-Cnsvgx1M.js} +2 -2
  135. package/dist/components/{p-BYFS2qWb.js → p-CpeJMKJ5.js} +2 -2
  136. package/dist/components/{p-Cxr0IQjC.js → p-CzbsTZt7.js} +2 -2
  137. package/dist/components/{p-D7v6Na7U.js → p-D36EmETH.js} +2 -2
  138. package/dist/components/{p-DFC0sRM-.js → p-DI8DUozc.js} +2 -2
  139. package/dist/components/{p-DIqT1m2r.js → p-DSy1oOnd.js} +2 -2
  140. package/dist/components/{p-DIqT1m2r.js.map → p-DSy1oOnd.js.map} +1 -1
  141. package/dist/components/{p-DQBT1Jkf.js → p-DbLLH3hr.js} +2 -2
  142. package/dist/components/{p-Drnyq8z7.js → p-Dit6JmAK.js} +2 -2
  143. package/dist/components/{p-caLOcQUK.js → p-DzPtYdXy.js} +2 -2
  144. package/dist/components/{p-Do8wbFff.js → p-XaCYqck3.js} +2 -2
  145. package/dist/components/{p-DKt_8s-U.js → p-Y5_MkCFn.js} +2 -2
  146. package/dist/components/{p-DBYCwq9L.js → p-YDxDyedE.js} +2 -2
  147. package/dist/components/{p-DmWoFSGs.js → p-_C-XRpCB.js} +2 -2
  148. package/dist/components/{p-Demfba7T.js → p-bHnk8t5I.js} +2 -2
  149. package/dist/components/p-hYjmOPCI.js +2 -0
  150. package/dist/components/p-hYjmOPCI.js.map +1 -0
  151. package/dist/components/{p-ChfVRPHw.js → p-pUOA3iDG.js} +2 -2
  152. package/dist/components/p-pnO8tAYB.js +2 -0
  153. package/dist/components/{p-Cp5Hr7Vz.js.map → p-pnO8tAYB.js.map} +1 -1
  154. package/dist/components/{p-B6WQre5D.js → p-pxN8JGEh.js} +2 -2
  155. package/dist/components/p-pxN8JGEh.js.map +1 -0
  156. package/dist/components/{p-BWwiCvep.js → p-rw0ZxIE4.js} +2 -2
  157. package/dist/components/{p-B4wTnsUL.js → p-w9fkkwL2.js} +2 -2
  158. package/dist/components/p-x5u5Ueli.js +2 -0
  159. package/dist/components/{p-BeA6Jv-3.js.map → p-x5u5Ueli.js.map} +1 -1
  160. package/dist/docs/components.json +1400 -44
  161. package/dist/lib/utils/date-filter-value.d.ts +57 -0
  162. package/dist/lib/utils/index.d.ts +2 -0
  163. package/dist/lib/utils/index.js +67 -0
  164. package/dist/lib/utils/index.js.map +3 -3
  165. package/dist/mcp-data/registry/button-filled.json +1 -0
  166. package/dist/mcp-data/registry/button-unfilled.json +1 -0
  167. package/dist/mcp-data/registry/chip.json +39 -2
  168. package/dist/mcp-data/registry/filter-menu.json +134 -14
  169. package/dist/mcp-data/registry/input.json +54 -2
  170. package/dist/mcp-data/registry/panel-tool-search.json +4 -5
  171. package/dist/mcp-data/registry/registry.json +410 -35
  172. package/dist/mcp-data/registry/select.json +1 -0
  173. package/dist/mcp-data/registry/tab-group.json +21 -2
  174. package/dist/mcp-data/registry/table-filter.json +83 -11
  175. package/dist/mcp-data/registry/table-group.json +301 -0
  176. package/dist/mcp-data/registry/table-search.json +343 -0
  177. package/dist/mcp-data/registry/table-sort.json +1 -1
  178. package/dist/mcp-data/registry/table-toolbar.json +7 -6
  179. package/dist/mcp-data/registry/table.json +55 -17
  180. package/dist/react/components.d.ts +2 -0
  181. package/dist/react/components.js +2 -0
  182. package/dist/react/ds-filter-menu.d.ts +2 -1
  183. package/dist/react/ds-filter-menu.js +1 -0
  184. package/dist/react/ds-table-filter.d.ts +2 -1
  185. package/dist/react/ds-table-filter.js +1 -0
  186. package/dist/react/ds-table-group.d.ts +14 -0
  187. package/dist/react/ds-table-group.js +16 -0
  188. package/dist/react/ds-table-search.d.ts +14 -0
  189. package/dist/react/ds-table-search.js +16 -0
  190. package/dist/styles/table.css +46 -0
  191. package/dist/types/components/Chip/Chip.d.ts +5 -0
  192. package/dist/types/components/FilterMenu/FilterMenu.d.ts +46 -1
  193. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +13 -0
  194. package/dist/types/components/Input/Input.d.ts +6 -0
  195. package/dist/types/components/TabGroup/TabGroup.d.ts +2 -0
  196. package/dist/types/components/Table/Table.d.ts +6 -0
  197. package/dist/types/components/Table/index.d.ts +1 -1
  198. package/dist/types/components/Table/table-cell-model.d.ts +11 -1
  199. package/dist/types/components/Table/table-highlight.d.ts +12 -0
  200. package/dist/types/components/Table/table-model.d.ts +6 -5
  201. package/dist/types/components/Table/table-render-model.d.ts +1 -1
  202. package/dist/types/components/Table/table-row-view.d.ts +4 -1
  203. package/dist/types/components/Table/table-types.d.ts +22 -4
  204. package/dist/types/components/Table/table-virtual-model.d.ts +2 -0
  205. package/dist/types/components/TableFilter/TableFilter.d.ts +9 -1
  206. package/dist/types/components/TableGroup/TableGroup.d.ts +60 -0
  207. package/dist/types/components/TableSearch/TableSearch.d.ts +56 -0
  208. package/dist/types/components/TableSearch/table-search-model.d.ts +10 -0
  209. package/dist/types/components/TableSearch/table-search-types.d.ts +10 -0
  210. package/dist/types/components.d.ts +410 -8
  211. package/dist/types/utils/choice-list-parts.d.ts +11 -1
  212. package/dist/types/utils/date-filter-value.d.ts +58 -0
  213. package/dist/types/utils/index.d.ts +2 -0
  214. package/dist/types/utils/select-controller.d.ts +1 -1
  215. package/dist/vue/components.d.ts +2 -0
  216. package/dist/vue/components.js +2 -0
  217. package/dist/vue/ds-chip.js +2 -0
  218. package/dist/vue/ds-filter-menu.js +7 -0
  219. package/dist/vue/ds-input.js +3 -0
  220. package/dist/vue/ds-tab-group.js +1 -0
  221. package/dist/vue/ds-table-filter.js +5 -0
  222. package/dist/vue/ds-table-group.d.ts +3 -0
  223. package/dist/vue/ds-table-group.js +20 -0
  224. package/dist/vue/ds-table-search.d.ts +3 -0
  225. package/dist/vue/ds-table-search.js +22 -0
  226. package/dist/vue/ds-table.js +2 -0
  227. package/package.json +1 -1
  228. package/dist/components/p-B6WQre5D.js.map +0 -1
  229. package/dist/components/p-BeA6Jv-3.js +0 -2
  230. package/dist/components/p-CKtJ6FHM.js +0 -2
  231. package/dist/components/p-Cp5Hr7Vz.js +0 -2
  232. package/dist/components/p-CpUXubax.js +0 -2
  233. package/dist/components/p-CpUXubax.js.map +0 -1
  234. package/dist/components/p-Crz606uD.js +0 -2
  235. package/dist/components/p-D-MWvpg6.js.map +0 -1
  236. package/dist/components/p-DA5H_Iq_.js +0 -2
  237. package/dist/components/p-DA5H_Iq_.js.map +0 -1
  238. package/dist/components/p-Djxw2FjZ.js +0 -2
  239. package/dist/components/p-Djxw2FjZ.js.map +0 -1
  240. /package/dist/components/{p-Bf7PZJPT.js.map → p-5Z4oYuiK.js.map} +0 -0
  241. /package/dist/components/{p-DsgEY6mZ.js.map → p-6rB0eAda.js.map} +0 -0
  242. /package/dist/components/{p-DZv2g9Pe.js.map → p-9ykZwPlI.js.map} +0 -0
  243. /package/dist/components/{p-BHhmB9-4.js.map → p-B0kSlcaw.js.map} +0 -0
  244. /package/dist/components/{p-BmlGeaY8.js.map → p-B1wMpt1z.js.map} +0 -0
  245. /package/dist/components/{p-fRDzpfi9.js.map → p-BXv6RpoF.js.map} +0 -0
  246. /package/dist/components/{p-CFsLF-ts.js.map → p-BbG7nOcz.js.map} +0 -0
  247. /package/dist/components/{p-vrotWZxt.js.map → p-Bc_z1UwJ.js.map} +0 -0
  248. /package/dist/components/{p-Bx5BSd6F.js.map → p-BcxidW9k.js.map} +0 -0
  249. /package/dist/components/{p-BNq9fr9S.js.map → p-Bd8I2oXN.js.map} +0 -0
  250. /package/dist/components/{p-DdH7b4JF.js.map → p-CBymzuOO.js.map} +0 -0
  251. /package/dist/components/{p-BjRD57w3.js.map → p-CE2b5GPu.js.map} +0 -0
  252. /package/dist/components/{p-CRSwNbPk.js.map → p-CEnoPUn5.js.map} +0 -0
  253. /package/dist/components/{p-Bb4KnRy0.js.map → p-CTH3dSYg.js.map} +0 -0
  254. /package/dist/components/{p-1YHFQeI7.js.map → p-CUL5_8JM.js.map} +0 -0
  255. /package/dist/components/{p-BubgDQlb.js.map → p-CZ144LS5.js.map} +0 -0
  256. /package/dist/components/{p-B-HsfQOK.js.map → p-Cd1JnnVK.js.map} +0 -0
  257. /package/dist/components/{p-Bx1IHqJb.js.map → p-Cnsvgx1M.js.map} +0 -0
  258. /package/dist/components/{p-BYFS2qWb.js.map → p-CpeJMKJ5.js.map} +0 -0
  259. /package/dist/components/{p-Cxr0IQjC.js.map → p-CzbsTZt7.js.map} +0 -0
  260. /package/dist/components/{p-D7v6Na7U.js.map → p-D36EmETH.js.map} +0 -0
  261. /package/dist/components/{p-DFC0sRM-.js.map → p-DI8DUozc.js.map} +0 -0
  262. /package/dist/components/{p-DQBT1Jkf.js.map → p-DbLLH3hr.js.map} +0 -0
  263. /package/dist/components/{p-Drnyq8z7.js.map → p-Dit6JmAK.js.map} +0 -0
  264. /package/dist/components/{p-caLOcQUK.js.map → p-DzPtYdXy.js.map} +0 -0
  265. /package/dist/components/{p-Do8wbFff.js.map → p-XaCYqck3.js.map} +0 -0
  266. /package/dist/components/{p-DKt_8s-U.js.map → p-Y5_MkCFn.js.map} +0 -0
  267. /package/dist/components/{p-DBYCwq9L.js.map → p-YDxDyedE.js.map} +0 -0
  268. /package/dist/components/{p-DmWoFSGs.js.map → p-_C-XRpCB.js.map} +0 -0
  269. /package/dist/components/{p-Demfba7T.js.map → p-bHnk8t5I.js.map} +0 -0
  270. /package/dist/components/{p-ChfVRPHw.js.map → p-pUOA3iDG.js.map} +0 -0
  271. /package/dist/components/{p-BWwiCvep.js.map → p-rw0ZxIE4.js.map} +0 -0
  272. /package/dist/components/{p-B4wTnsUL.js.map → p-w9fkkwL2.js.map} +0 -0
@@ -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
  };