@astryx-vue/core 0.1.0 → 0.1.1

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 (177) hide show
  1. package/README.md +1 -1
  2. package/dist/AvatarGroup/index.d.ts +1 -1
  3. package/dist/Banner/index.d.ts +1 -1
  4. package/dist/Button/index.d.ts +1 -1
  5. package/dist/ButtonGroup/index.d.ts +1 -1
  6. package/dist/Calendar/index.js +1 -1
  7. package/dist/{Calendar-DpYFXwgb.js → Calendar-BEyrkUtr.js} +2 -1
  8. package/dist/Chat/index.js +1 -1
  9. package/dist/{Chat-Bfd-YPAK.js → Chat-CO3mCs9A.js} +2 -2
  10. package/dist/CheckboxInput/index.d.ts +1 -1
  11. package/dist/CheckboxList/index.d.ts +2 -0
  12. package/dist/CheckboxList/index.js +2 -0
  13. package/dist/CheckboxList-BL2sDOWK.js +174 -0
  14. package/dist/Citation/index.js +1 -1
  15. package/dist/{Citation-DaDd1teb.js → Citation-BqwJvw7o.js} +2 -2
  16. package/dist/Code/index.js +1 -1
  17. package/dist/{CodeBlock-CK-NWM_1.js → CodeBlock-BQdooQy2.js} +1 -1
  18. package/dist/Collapsible/index.js +1 -1
  19. package/dist/{Collapsible-ByXCGhT8.js → Collapsible-BYg9soTk.js} +1 -1
  20. package/dist/ContextMenu/index.d.ts +1 -1
  21. package/dist/ContextMenu/index.js +1 -1
  22. package/dist/{ContextMenu-BJh99Exj.js → ContextMenu-dA-ppaRQ.js} +284 -12
  23. package/dist/DateInput/index.d.ts +1 -1
  24. package/dist/DateInput/index.js +1 -1
  25. package/dist/{DateInput-zJAdXByM.js → DateInput-BOIb0zAp.js} +18 -10
  26. package/dist/DateRangeInput/index.d.ts +2 -0
  27. package/dist/DateRangeInput/index.js +2 -0
  28. package/dist/DateRangeInput-DLcbgUBi.js +385 -0
  29. package/dist/DateTimeInput/index.d.ts +2 -0
  30. package/dist/DateTimeInput/index.js +2 -0
  31. package/dist/DateTimeInput-RitYX_Yx.js +196 -0
  32. package/dist/Divider/index.d.ts +1 -1
  33. package/dist/DropdownMenu/index.d.ts +1 -1
  34. package/dist/DropdownMenu/index.js +1 -1
  35. package/dist/{DropdownMenu-C3j2zaEn.js → DropdownMenu-B0gogrvG.js} +2 -2
  36. package/dist/Field/index.d.ts +2 -2
  37. package/dist/Field/index.js +1 -2
  38. package/dist/FieldStatus/index.d.ts +2 -0
  39. package/dist/FieldStatus/index.js +2 -0
  40. package/dist/FileInput/index.d.ts +2 -0
  41. package/dist/FileInput/index.js +2 -0
  42. package/dist/FileInput-CYvEV503.js +238 -0
  43. package/dist/{Icon-B6qNgBP9.js → Icon-5MdZQ18k.js} +10 -2
  44. package/dist/List/index.d.ts +1 -1
  45. package/dist/Markdown/index.d.ts +1 -1
  46. package/dist/Markdown/index.js +1 -1
  47. package/dist/{Markdown-DyKIwAL_.js → Markdown-Dnlp8cVx.js} +2 -2
  48. package/dist/MetadataList/index.d.ts +2 -0
  49. package/dist/MetadataList/index.js +2 -0
  50. package/dist/MetadataList-DIsqS1Qb.js +124 -0
  51. package/dist/MobileNav/index.js +1 -1
  52. package/dist/{MobileNavToggle-BK2iRJF-.js → MobileNavToggle-aUZiDwHm.js} +1 -1
  53. package/dist/MoreMenu/index.d.ts +1 -1
  54. package/dist/MoreMenu/index.js +1 -1
  55. package/dist/{MoreMenu-BjUsVWWk.js → MoreMenu-BXL6Dqsu.js} +2 -2
  56. package/dist/MultiSelector/index.d.ts +1 -1
  57. package/dist/MultiSelector/index.js +1 -1
  58. package/dist/{MultiSelector-CKTbTj1A.js → MultiSelector-Bh8or2S6.js} +2 -2
  59. package/dist/NavItem/index.d.ts +1 -1
  60. package/dist/NavMenu/index.d.ts +1 -1
  61. package/dist/NumberInput/index.d.ts +1 -1
  62. package/dist/NumberInput/index.js +1 -1
  63. package/dist/{NumberInput-DU3_rw7z.js → NumberInput-C3S-4dIu.js} +1 -1
  64. package/dist/OverflowList/index.d.ts +1 -1
  65. package/dist/OverflowList/index.js +1 -1
  66. package/dist/{OverflowList-B2T5UtiQ.js → OverflowList-Kr4iJrNV.js} +1 -1
  67. package/dist/Pagination/index.js +1 -1
  68. package/dist/{Pagination-qCgNwwhr.js → Pagination-BRStpeSB.js} +2 -2
  69. package/dist/Popover/index.d.ts +1 -1
  70. package/dist/Radio/index.d.ts +2 -2
  71. package/dist/Radio/index.js +2 -2
  72. package/dist/{Radio-BioQfwHQ.js → RadioGroup-DS6oTV_j.js} +21 -88
  73. package/dist/RadioList/index.d.ts +2 -0
  74. package/dist/RadioList/index.js +2 -0
  75. package/dist/RadioList-pwr93I-z.js +122 -0
  76. package/dist/SegmentedControl/index.d.ts +1 -1
  77. package/dist/Selector/index.d.ts +1 -1
  78. package/dist/Selector/index.js +1 -1
  79. package/dist/{Selector-C6sPJMtH.js → Selector-DvEUIVEC.js} +1 -1
  80. package/dist/SideNav/index.d.ts +1 -1
  81. package/dist/SideNav/index.js +1 -1
  82. package/dist/{SideNav-D9lnn-sM.js → SideNav-B7LX4RcP.js} +2 -2
  83. package/dist/Stack/index.d.ts +1 -1
  84. package/dist/Switch/index.d.ts +1 -1
  85. package/dist/Table/index.d.ts +2 -0
  86. package/dist/Table/index.js +2 -0
  87. package/dist/Table-D5zWaITo.js +967 -0
  88. package/dist/Text/index.d.ts +1 -1
  89. package/dist/TextArea/index.d.ts +1 -1
  90. package/dist/TextInput/index.d.ts +1 -1
  91. package/dist/Thumbnail/index.d.ts +2 -0
  92. package/dist/Thumbnail/index.js +2 -0
  93. package/dist/Thumbnail-DMOgWncm.js +163 -0
  94. package/dist/TimeField-DeQ1ukHl.js +214 -0
  95. package/dist/TimeInput/index.d.ts +2 -0
  96. package/dist/TimeInput/index.js +2 -0
  97. package/dist/TimeInput-jb1nLqZk.js +121 -0
  98. package/dist/Timestamp/index.d.ts +2 -0
  99. package/dist/Timestamp/index.js +2 -0
  100. package/dist/Timestamp-DrWwVQBL.js +465 -0
  101. package/dist/ToggleButton/index.d.ts +1 -1
  102. package/dist/Token/index.d.ts +1 -1
  103. package/dist/Token/index.js +1 -1
  104. package/dist/{Token-Ctf9jekS.js → Token-CV2J94bn.js} +1 -1
  105. package/dist/Tokenizer/index.d.ts +1 -1
  106. package/dist/Tokenizer/index.js +1 -1
  107. package/dist/{Tokenizer-D5MPgau0.js → Tokenizer-DF9r4hTW.js} +2 -2
  108. package/dist/Toolbar/index.d.ts +1 -1
  109. package/dist/TopNav/index.d.ts +1 -1
  110. package/dist/TopNav/index.js +1 -1
  111. package/dist/{TopNav-CjbMCbkC.js → TopNav-BH_s3uap.js} +3 -3
  112. package/dist/TreeList/index.d.ts +2 -0
  113. package/dist/TreeList/index.js +2 -0
  114. package/dist/TreeList-D9cR-w7r.js +506 -0
  115. package/dist/Typeahead/index.d.ts +1 -1
  116. package/dist/Typeahead/index.js +1 -1
  117. package/dist/{Typeahead-BMoU3hfx.js → Typeahead-s4DC1Qem.js} +2 -2
  118. package/dist/composables/index.d.ts +2 -2
  119. package/dist/composables/index.js +4 -1
  120. package/dist/{locale-56lkR7OK.js → context-BshXcNYX.js} +183 -18
  121. package/dist/{index-DjOdQv5B.d.ts → index--dh0s8Li.d.ts} +1 -1
  122. package/dist/{index-Cdi82rTW.d.ts → index-12ObcW99.d.ts} +6 -2
  123. package/dist/{index-JeZ0YTyd.d.ts → index-5R_pi3eT.d.ts} +2 -2
  124. package/dist/{index-Cc2HGODZ.d.ts → index-AkMWQ97a.d.ts} +3 -3
  125. package/dist/{index-CvLlWLIZ.d.ts → index-B4OOtNP8.d.ts} +4 -4
  126. package/dist/{index-_1-uvr27.d.ts → index-B8MbfMwV.d.ts} +1 -1
  127. package/dist/{index-MPcg1Pm4.d.ts → index-BKr7yvVv.d.ts} +1 -1
  128. package/dist/{index-CxspvLBl.d.ts → index-Bc0dgVM5.d.ts} +5 -5
  129. package/dist/{index-4FM5lQdV.d.ts → index-BlWLperN.d.ts} +1 -1
  130. package/dist/{index-DBcbfStA.d.ts → index-BnNh5Iml.d.ts} +84 -1
  131. package/dist/{index-Cp0NlzQv.d.ts → index-Bovw9_8d.d.ts} +1 -1
  132. package/dist/{index-CnVbMebA.d.ts → index-Bqb_Fyju.d.ts} +3 -3
  133. package/dist/{index-HV6W3xCx.d.ts → index-Byar3h1e.d.ts} +1 -1
  134. package/dist/{index-BQuN_dWR.d.ts → index-BzqRns96.d.ts} +1 -1
  135. package/dist/{index-C0S2Xzoi.d.ts → index-CNcQmDrK.d.ts} +93 -0
  136. package/dist/{index-CaHXYQ_E.d.ts → index-CQ9F1f_F.d.ts} +535 -137
  137. package/dist/index-CR6sUmRT.d.ts +356 -0
  138. package/dist/index-C_2Z65Rp.d.ts +67 -0
  139. package/dist/{index-Dw21t7Uf.d.ts → index-CsJpQElv.d.ts} +1 -1
  140. package/dist/index-CtlkhQ55.d.ts +36 -0
  141. package/dist/{index-C8NW9xre.d.ts → index-D3V7yRUP.d.ts} +7 -7
  142. package/dist/index-Da7Jm8Ht.d.ts +10 -0
  143. package/dist/{index-CPhDtlv-.d.ts → index-FEy8qFSD.d.ts} +3 -3
  144. package/dist/{index-BeJqhW4l.d.ts → index-Q4gqBSIZ.d.ts} +2 -2
  145. package/dist/{index-Cz9ZHVf6.d.ts → index-g03bmR4K.d.ts} +3 -3
  146. package/dist/{index-COxy6LEW.d.ts → index-gW0HW02U.d.ts} +1 -1
  147. package/dist/{index-BQa836Vz.d.ts → index-iBLzInje.d.ts} +6 -14
  148. package/dist/index-utZGF4GR.d.ts +79 -0
  149. package/dist/index.d.ts +54 -49
  150. package/dist/index.js +86 -64
  151. package/dist/locale/index.d.ts +1 -1
  152. package/dist/locale/index.js +2 -1
  153. package/dist/locale-Cpk_nrLA.js +18 -0
  154. package/dist/useFileSelection-BPtaegqK.js +58 -0
  155. package/dist/useMonthGrid-CmJsZTcB.js +139 -0
  156. package/dist/useTimeValue-DWk6oTAZ.js +113 -0
  157. package/package.json +49 -1
  158. package/styles/bordered-control.css +87 -0
  159. package/styles/calendar.css +8 -2
  160. package/styles/checkbox-list.css +15 -0
  161. package/styles/date-range-input.css +163 -0
  162. package/styles/date-time-input.css +40 -0
  163. package/styles/field.css +2 -3
  164. package/styles/file-input.css +87 -0
  165. package/styles/icon.css +32 -0
  166. package/styles/metadata-list.css +107 -0
  167. package/styles/number-input.css +6 -0
  168. package/styles/radio.css +32 -0
  169. package/styles/selector.css +10 -0
  170. package/styles/table.css +256 -0
  171. package/styles/text-area.css +6 -1
  172. package/styles/text-input.css +6 -0
  173. package/styles/thumbnail.css +151 -0
  174. package/styles/time-input.css +51 -0
  175. package/styles/timestamp.css +93 -0
  176. package/styles/tree-list.css +229 -0
  177. package/styles.css +11 -0
@@ -0,0 +1,506 @@
1
+ import { t as _sfc_main$2 } from "./Badge-Ba0EwsTj.js";
2
+ import { a as useAstryxMessages } from "./context-BshXcNYX.js";
3
+ import { n as isIconGlyph, t as _sfc_main$3 } from "./Icon-5MdZQ18k.js";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, onMounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, toDisplayString, unref, useId, vShow, withCtx, withDirectives } from "vue";
5
+ import "../styles/tree-list.css";
6
+ //#region src/TreeList/TreeListItem.vue
7
+ const _hoisted_1$1 = [
8
+ "data-tree-id",
9
+ "data-tree-disabled",
10
+ "aria-level",
11
+ "aria-posinset",
12
+ "aria-setsize",
13
+ "aria-selected",
14
+ "aria-disabled",
15
+ "aria-expanded",
16
+ "tabindex"
17
+ ];
18
+ const _hoisted_2$1 = ["data-span"];
19
+ const _hoisted_3 = { class: "astryx-tree-list__row" };
20
+ const _hoisted_4 = [
21
+ "data-density",
22
+ "data-selected",
23
+ "data-disabled",
24
+ "data-interactive",
25
+ "data-guide-inset"
26
+ ];
27
+ const _hoisted_5 = [
28
+ "data-state",
29
+ "aria-expanded",
30
+ "aria-label",
31
+ "disabled"
32
+ ];
33
+ const _hoisted_6 = {
34
+ key: 1,
35
+ class: "astryx-tree-list__start"
36
+ };
37
+ const _hoisted_7 = {
38
+ key: 1,
39
+ class: "astryx-tree-list__icon"
40
+ };
41
+ const _hoisted_8 = ["href", "target"];
42
+ const _hoisted_9 = { class: "astryx-tree-list__label" };
43
+ const _hoisted_10 = {
44
+ key: 0,
45
+ class: "astryx-tree-list__description"
46
+ };
47
+ const _hoisted_11 = ["disabled"];
48
+ const _hoisted_12 = { class: "astryx-tree-list__label" };
49
+ const _hoisted_13 = {
50
+ key: 0,
51
+ class: "astryx-tree-list__description"
52
+ };
53
+ const _hoisted_14 = {
54
+ key: 4,
55
+ class: "astryx-tree-list__main"
56
+ };
57
+ const _hoisted_15 = { class: "astryx-tree-list__label" };
58
+ const _hoisted_16 = {
59
+ key: 0,
60
+ class: "astryx-tree-list__description"
61
+ };
62
+ const _hoisted_17 = {
63
+ key: 5,
64
+ class: "astryx-tree-list__end"
65
+ };
66
+ const _hoisted_18 = {
67
+ key: 2,
68
+ class: "astryx-tree-list__icon"
69
+ };
70
+ const _hoisted_19 = {
71
+ key: 1,
72
+ class: "astryx-tree-list__group",
73
+ role: "group"
74
+ };
75
+ const branchMargin = "calc(var(--astryx-spacing-2, 8px) + var(--astryx-spacing-0-5, 2px))";
76
+ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
77
+ name: "AstryxTreeListItem",
78
+ __name: "TreeListItem",
79
+ props: {
80
+ item: {},
81
+ density: {},
82
+ variant: {},
83
+ nestedLevel: {},
84
+ isLast: { type: Boolean },
85
+ ancestorsIsLast: {},
86
+ expanded: {},
87
+ hasExpandableItems: { type: Boolean },
88
+ tabbableId: {},
89
+ posInSet: {},
90
+ setSize: {}
91
+ },
92
+ emits: ["toggle"],
93
+ setup(__props, { emit: __emit }) {
94
+ const props = __props;
95
+ const emit = __emit;
96
+ const messages = useAstryxMessages();
97
+ const hasChildren = computed(() => (props.item.children?.length ?? 0) > 0);
98
+ const isExpanded = computed(() => hasChildren.value && props.expanded[props.item.id] === true);
99
+ const reservesChevron = computed(() => !hasChildren.value && props.hasExpandableItems);
100
+ const indent = computed(() => reservesChevron.value ? `calc(${props.nestedLevel} * var(--tree-list-indent) + var(--astryx-spacing-4, 16px) + var(--astryx-spacing-2, 8px))` : `calc(${props.nestedLevel} * var(--tree-list-indent))`);
101
+ const childAncestors = computed(() => [...props.ancestorsIsLast, props.isLast]);
102
+ function branchOffset(level) {
103
+ return `calc(${branchMargin} + ${level} * var(--tree-list-indent))`;
104
+ }
105
+ function onRowClick(event) {
106
+ if (props.item.isDisabled) return;
107
+ const target = event.target;
108
+ if (target instanceof Element && target.closest("button, a, input, select, textarea")) return;
109
+ if (props.item.onClick) props.item.onClick(event);
110
+ else if (hasChildren.value) emit("toggle", props.item.id);
111
+ }
112
+ function onToggle(event) {
113
+ event.stopPropagation();
114
+ emit("toggle", props.item.id);
115
+ }
116
+ return (_ctx, _cache) => {
117
+ const _component_TreeListItem = resolveComponent("TreeListItem", true);
118
+ return openBlock(), createElementBlock("li", {
119
+ class: "astryx-tree-list__item",
120
+ role: "treeitem",
121
+ "data-tree-id": __props.item.id,
122
+ "data-tree-disabled": __props.item.isDisabled ? "true" : void 0,
123
+ "aria-level": __props.nestedLevel + 1,
124
+ "aria-posinset": __props.posInSet,
125
+ "aria-setsize": __props.setSize,
126
+ "aria-selected": __props.item.isSelected || void 0,
127
+ "aria-disabled": __props.item.isDisabled || void 0,
128
+ "aria-expanded": hasChildren.value ? isExpanded.value : void 0,
129
+ tabindex: __props.item.id === __props.tabbableId ? 0 : -1
130
+ }, [
131
+ __props.variant === "lineGuides" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.ancestorsIsLast, (ancestorIsLast, level) => {
132
+ return withDirectives((openBlock(), createElementBlock("span", {
133
+ key: level,
134
+ class: "astryx-tree-list__guide",
135
+ style: normalizeStyle({ insetInlineStart: branchOffset(level) })
136
+ }, [..._cache[2] || (_cache[2] = [createElementVNode("span", {
137
+ class: "astryx-tree-list__guide-line",
138
+ "data-span": "full"
139
+ }, null, -1)])], 4)), [[vShow, !ancestorIsLast && level !== __props.nestedLevel - 1]]);
140
+ }), 128)), __props.nestedLevel > 0 ? (openBlock(), createElementBlock("span", {
141
+ key: 0,
142
+ class: "astryx-tree-list__guide",
143
+ style: normalizeStyle({ insetInlineStart: branchOffset(__props.nestedLevel - 1) })
144
+ }, [createElementVNode("span", {
145
+ class: "astryx-tree-list__guide-line",
146
+ "data-span": __props.isLast ? "last" : "full"
147
+ }, null, 8, _hoisted_2$1)], 4)) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true),
148
+ createElementVNode("div", _hoisted_3, [createCommentVNode(" eslint-disable-next-line vue-a11y/click-events-have-key-events, vue-a11y/no-static-element-interactions -- 键盘由外层 role=\"tree\" 处理,这一层只接指针点击。 "), createElementVNode("div", {
149
+ class: "astryx-tree-list__content",
150
+ "data-density": __props.density,
151
+ "data-selected": __props.item.isSelected || void 0,
152
+ "data-disabled": __props.item.isDisabled || void 0,
153
+ "data-interactive": __props.item.onClick != null || __props.item.href != null || hasChildren.value || void 0,
154
+ "data-guide-inset": __props.variant === "lineGuides" && __props.nestedLevel > 0 && !reservesChevron.value || void 0,
155
+ style: normalizeStyle({ "--_tree-indent": indent.value }),
156
+ onClick: onRowClick
157
+ }, [
158
+ hasChildren.value ? (openBlock(), createElementBlock("button", {
159
+ key: 0,
160
+ type: "button",
161
+ class: "astryx-tree-list__chevron",
162
+ "data-tree-toggle": "",
163
+ "data-state": isExpanded.value ? "expanded" : "collapsed",
164
+ "aria-expanded": isExpanded.value,
165
+ "aria-label": unref(messages).treeList.toggleChildren,
166
+ disabled: __props.item.isDisabled,
167
+ tabindex: "-1",
168
+ onClick: onToggle
169
+ }, [createVNode(_sfc_main$3, {
170
+ icon: "chevronRight",
171
+ size: "sm",
172
+ color: "inherit"
173
+ })], 8, _hoisted_5)) : createCommentVNode("v-if", true),
174
+ __props.item.icon ? (openBlock(), createElementBlock("span", _hoisted_6, [unref(isIconGlyph)(__props.item.icon) ? (openBlock(), createBlock(_sfc_main$3, {
175
+ key: 0,
176
+ icon: __props.item.icon,
177
+ size: "sm"
178
+ }, null, 8, ["icon"])) : (openBlock(), createElementBlock("span", _hoisted_7, [createElementVNode("i", {
179
+ class: normalizeClass(__props.item.icon),
180
+ "aria-hidden": "true"
181
+ }, null, 2)]))])) : createCommentVNode("v-if", true),
182
+ __props.item.href ? (openBlock(), createElementBlock("a", {
183
+ key: 2,
184
+ class: "astryx-tree-list__action",
185
+ href: __props.item.href,
186
+ target: __props.item.target,
187
+ tabindex: "-1"
188
+ }, [createElementVNode("span", _hoisted_9, toDisplayString(__props.item.label), 1), __props.item.description ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(__props.item.description), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_8)) : __props.item.onClick ? (openBlock(), createElementBlock("button", {
189
+ key: 3,
190
+ type: "button",
191
+ class: "astryx-tree-list__action",
192
+ disabled: __props.item.isDisabled,
193
+ tabindex: "-1",
194
+ onClick: _cache[0] || (_cache[0] = ($event) => __props.item.onClick($event))
195
+ }, [createElementVNode("span", _hoisted_12, toDisplayString(__props.item.label), 1), __props.item.description ? (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString(__props.item.description), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_11)) : (openBlock(), createElementBlock("span", _hoisted_14, [createElementVNode("span", _hoisted_15, toDisplayString(__props.item.label), 1), __props.item.description ? (openBlock(), createElementBlock("span", _hoisted_16, toDisplayString(__props.item.description), 1)) : createCommentVNode("v-if", true)])),
196
+ __props.item.badge || __props.item.endIcon ? (openBlock(), createElementBlock("span", _hoisted_17, [__props.item.badge ? (openBlock(), createBlock(_sfc_main$2, { key: 0 }, {
197
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.item.badge), 1)]),
198
+ _: 1
199
+ })) : __props.item.endIcon && unref(isIconGlyph)(__props.item.endIcon) ? (openBlock(), createBlock(_sfc_main$3, {
200
+ key: 1,
201
+ icon: __props.item.endIcon,
202
+ size: "sm"
203
+ }, null, 8, ["icon"])) : __props.item.endIcon ? (openBlock(), createElementBlock("span", _hoisted_18, [createElementVNode("i", {
204
+ class: normalizeClass(__props.item.endIcon),
205
+ "aria-hidden": "true"
206
+ }, null, 2)])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)
207
+ ], 12, _hoisted_4)]),
208
+ hasChildren.value && isExpanded.value ? (openBlock(), createElementBlock("ul", _hoisted_19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.item.children, (child, index) => {
209
+ return openBlock(), createBlock(_component_TreeListItem, {
210
+ key: child.id,
211
+ item: child,
212
+ density: __props.density,
213
+ variant: __props.variant,
214
+ "nested-level": __props.nestedLevel + 1,
215
+ "is-last": index === (__props.item.children?.length ?? 1) - 1,
216
+ "ancestors-is-last": childAncestors.value,
217
+ expanded: __props.expanded,
218
+ "has-expandable-items": __props.hasExpandableItems,
219
+ "tabbable-id": __props.tabbableId,
220
+ "pos-in-set": index + 1,
221
+ "set-size": __props.item.children?.length ?? 0,
222
+ onToggle: _cache[1] || (_cache[1] = ($event) => emit("toggle", $event))
223
+ }, null, 8, [
224
+ "item",
225
+ "density",
226
+ "variant",
227
+ "nested-level",
228
+ "is-last",
229
+ "ancestors-is-last",
230
+ "expanded",
231
+ "has-expandable-items",
232
+ "tabbable-id",
233
+ "pos-in-set",
234
+ "set-size"
235
+ ]);
236
+ }), 128))])) : createCommentVNode("v-if", true)
237
+ ], 8, _hoisted_1$1);
238
+ };
239
+ }
240
+ });
241
+ //#endregion
242
+ //#region src/TreeList/useTreeFocus.ts
243
+ const NAVIGATION_KEYS = /* @__PURE__ */ new Set([
244
+ "ArrowDown",
245
+ "ArrowUp",
246
+ "ArrowRight",
247
+ "ArrowLeft",
248
+ "Home",
249
+ "End",
250
+ "Enter",
251
+ " "
252
+ ]);
253
+ function isRtl(element) {
254
+ return element != null && getComputedStyle(element).direction === "rtl";
255
+ }
256
+ function useTreeFocus(options) {
257
+ const treeRef = ref(null);
258
+ const typeahead = {
259
+ buffer: "",
260
+ timer: void 0
261
+ };
262
+ function items() {
263
+ const root = treeRef.value;
264
+ if (root == null) return [];
265
+ return [...root.querySelectorAll("[role=\"treeitem\"]")];
266
+ }
267
+ function disabled(item) {
268
+ return item.dataset.treeDisabled === "true" || item.getAttribute("aria-disabled") === "true";
269
+ }
270
+ function levelOf(item) {
271
+ return Number(item.getAttribute("aria-level") ?? "1");
272
+ }
273
+ function focusItem(item) {
274
+ for (const candidate of items()) candidate.tabIndex = candidate === item ? 0 : -1;
275
+ item.focus();
276
+ }
277
+ function focusEnabledFrom(list, start, step) {
278
+ for (let index = start; index >= 0 && index < list.length; index += step) {
279
+ const item = list[index];
280
+ if (item != null && !disabled(item)) {
281
+ focusItem(item);
282
+ return;
283
+ }
284
+ }
285
+ }
286
+ function syncTabStops() {
287
+ const list = items();
288
+ const active = document.activeElement;
289
+ const current = active instanceof Element ? active.closest("[role=\"treeitem\"]") : null;
290
+ const owned = current != null && list.includes(current) ? current : list.find((item) => item.tabIndex === 0) ?? list.find((item) => !disabled(item));
291
+ for (const item of list) item.tabIndex = item === owned ? 0 : -1;
292
+ }
293
+ onMounted(syncTabStops);
294
+ function handleKeyDown(event) {
295
+ const list = items();
296
+ if (list.length === 0) return;
297
+ const active = document.activeElement;
298
+ const activeItem = active instanceof Element ? active.closest("[role=\"treeitem\"]") : null;
299
+ const currentIndex = list.findIndex((item) => item === activeItem);
300
+ const current = currentIndex >= 0 ? list[currentIndex] : void 0;
301
+ if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey && !NAVIGATION_KEYS.has(event.key)) {
302
+ typeahead.buffer += event.key.toLowerCase();
303
+ clearTimeout(typeahead.timer);
304
+ typeahead.timer = setTimeout(() => {
305
+ typeahead.buffer = "";
306
+ }, 500);
307
+ const query = typeahead.buffer;
308
+ const match = [...list.slice(currentIndex + 1), ...list.slice(0, currentIndex + 1)].find((item) => !disabled(item) && (item.textContent ?? "").trim().toLowerCase().startsWith(query));
309
+ if (match != null) {
310
+ event.preventDefault();
311
+ focusItem(match);
312
+ }
313
+ return;
314
+ }
315
+ if (!NAVIGATION_KEYS.has(event.key)) return;
316
+ let key = event.key;
317
+ if ((key === "ArrowLeft" || key === "ArrowRight") && isRtl(treeRef.value)) key = key === "ArrowLeft" ? "ArrowRight" : "ArrowLeft";
318
+ switch (key) {
319
+ case "ArrowDown":
320
+ event.preventDefault();
321
+ focusEnabledFrom(list, currentIndex < 0 ? 0 : currentIndex + 1, 1);
322
+ break;
323
+ case "ArrowUp":
324
+ event.preventDefault();
325
+ focusEnabledFrom(list, currentIndex < 0 ? list.length - 1 : currentIndex - 1, -1);
326
+ break;
327
+ case "ArrowRight": {
328
+ if (current == null) break;
329
+ event.preventDefault();
330
+ const expanded = current.getAttribute("aria-expanded");
331
+ if (expanded === "false") options.onToggleExpand?.(current.dataset.treeId ?? "");
332
+ else if (expanded === "true") {
333
+ const next = list[currentIndex + 1];
334
+ if (next != null && levelOf(next) > levelOf(current)) focusItem(next);
335
+ }
336
+ break;
337
+ }
338
+ case "ArrowLeft":
339
+ if (current == null) break;
340
+ event.preventDefault();
341
+ if (current.getAttribute("aria-expanded") === "true") options.onToggleExpand?.(current.dataset.treeId ?? "");
342
+ else {
343
+ const currentLevel = levelOf(current);
344
+ for (let index = currentIndex - 1; index >= 0; index -= 1) {
345
+ const candidate = list[index];
346
+ if (candidate != null && levelOf(candidate) < currentLevel) {
347
+ focusItem(candidate);
348
+ break;
349
+ }
350
+ }
351
+ }
352
+ break;
353
+ case "Home":
354
+ event.preventDefault();
355
+ focusEnabledFrom(list, 0, 1);
356
+ break;
357
+ case "End":
358
+ event.preventDefault();
359
+ focusEnabledFrom(list, list.length - 1, -1);
360
+ break;
361
+ case "Enter":
362
+ case " ":
363
+ if (current == null || disabled(current)) break;
364
+ event.preventDefault();
365
+ if (!(options.onActivate?.(current) === true) && current.getAttribute("aria-expanded") != null) options.onToggleExpand?.(current.dataset.treeId ?? "");
366
+ }
367
+ }
368
+ function handleFocus() {
369
+ syncTabStops();
370
+ }
371
+ return {
372
+ treeRef,
373
+ handleKeyDown,
374
+ handleFocus
375
+ };
376
+ }
377
+ //#endregion
378
+ //#region src/TreeList/TreeList.vue
379
+ const _hoisted_1 = ["data-density", "data-variant"];
380
+ const _hoisted_2 = ["aria-label", "aria-labelledby"];
381
+ const _sfc_main = /*@__PURE__*/ defineComponent({
382
+ name: "AstryxTreeList",
383
+ inheritAttrs: false,
384
+ __name: "TreeList",
385
+ props: {
386
+ items: {},
387
+ density: { default: "balanced" },
388
+ variant: { default: "lineGuides" },
389
+ header: {},
390
+ label: {}
391
+ },
392
+ setup(__props) {
393
+ const props = __props;
394
+ const headerId = `astryx-tree-list-${useId()}`;
395
+ const expanded = reactive({});
396
+ function walk(items, visit) {
397
+ for (const item of items) {
398
+ visit(item);
399
+ if (item.children) walk(item.children, visit);
400
+ }
401
+ }
402
+ walk(props.items, (item) => {
403
+ if (item.isExpanded && item.children && item.children.length > 0) expanded[item.id] = true;
404
+ });
405
+ function currentExpanded(id, items) {
406
+ let found = false;
407
+ let seeded = false;
408
+ walk(items, (item) => {
409
+ if (item.id === id) {
410
+ found = true;
411
+ seeded = item.isExpanded === true;
412
+ }
413
+ });
414
+ if (!found) return false;
415
+ return id in expanded ? expanded[id] === true : seeded;
416
+ }
417
+ function toggle(id) {
418
+ expanded[id] = !currentExpanded(id, props.items);
419
+ }
420
+ const hasExpandable = computed(() => {
421
+ let found = false;
422
+ walk(props.items, (item) => {
423
+ if (item.children && item.children.length > 0) found = true;
424
+ });
425
+ return found;
426
+ });
427
+ function initialTabbable(items) {
428
+ let firstEnabled;
429
+ const visit = (list) => {
430
+ for (const item of list) {
431
+ if (item.isSelected && item.isDisabled !== true) return item.id;
432
+ if (firstEnabled == null && item.isDisabled !== true) firstEnabled = item.id;
433
+ if (item.children && item.children.length > 0) {
434
+ const selected = visit(item.children);
435
+ if (selected != null) return selected;
436
+ }
437
+ }
438
+ };
439
+ return visit(items) ?? firstEnabled ?? items[0]?.id;
440
+ }
441
+ const tabbableId = computed(() => initialTabbable(props.items));
442
+ const { treeRef, handleKeyDown, handleFocus } = useTreeFocus({
443
+ onToggleExpand: toggle,
444
+ onActivate: (current) => {
445
+ const candidates = current.querySelectorAll("a[href], button:not([data-tree-toggle])");
446
+ for (const candidate of candidates) if (candidate.closest("[role=\"treeitem\"]") === current) {
447
+ candidate.click();
448
+ return true;
449
+ }
450
+ return false;
451
+ }
452
+ });
453
+ function onKeyDown(event) {
454
+ if (treeRef.value != null && event.target instanceof Node && treeRef.value.contains(event.target)) handleKeyDown(event);
455
+ }
456
+ return (_ctx, _cache) => {
457
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" eslint-disable-next-line vue-a11y/no-static-element-interactions -- 方向键从内部 role=\"tree\" 冒泡上来,这一层只负责转发给树的键盘逻辑。 "), createElementVNode("div", {
458
+ class: normalizeClass(["astryx-tree-list", _ctx.$attrs.class]),
459
+ style: normalizeStyle(_ctx.$attrs.style),
460
+ "data-density": __props.density,
461
+ "data-variant": __props.variant,
462
+ onKeydown: onKeyDown
463
+ }, [__props.header || _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
464
+ key: 0,
465
+ id: headerId,
466
+ class: "astryx-tree-list__header"
467
+ }, [renderSlot(_ctx.$slots, "header", {}, () => [createTextVNode(toDisplayString(__props.header), 1)])])) : createCommentVNode("v-if", true), createElementVNode("ul", {
468
+ ref_key: "treeRef",
469
+ ref: treeRef,
470
+ class: "astryx-tree-list__list",
471
+ role: "tree",
472
+ "aria-label": __props.header || _ctx.$slots.header ? void 0 : __props.label,
473
+ "aria-labelledby": __props.header || _ctx.$slots.header ? headerId : void 0,
474
+ onFocus: _cache[0] || (_cache[0] = (...args) => unref(handleFocus) && unref(handleFocus)(...args))
475
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
476
+ return openBlock(), createBlock(_sfc_main$1, {
477
+ key: item.id,
478
+ item,
479
+ density: __props.density,
480
+ variant: __props.variant,
481
+ "nested-level": 0,
482
+ "is-last": index === __props.items.length - 1,
483
+ "ancestors-is-last": [],
484
+ expanded,
485
+ "has-expandable-items": hasExpandable.value,
486
+ "tabbable-id": tabbableId.value,
487
+ "pos-in-set": index + 1,
488
+ "set-size": __props.items.length,
489
+ onToggle: toggle
490
+ }, null, 8, [
491
+ "item",
492
+ "density",
493
+ "variant",
494
+ "is-last",
495
+ "expanded",
496
+ "has-expandable-items",
497
+ "tabbable-id",
498
+ "pos-in-set",
499
+ "set-size"
500
+ ]);
501
+ }), 128))], 40, _hoisted_2)], 46, _hoisted_1)], 2112);
502
+ };
503
+ }
504
+ });
505
+ //#endregion
506
+ export { useTreeFocus as n, _sfc_main as t };
@@ -1,2 +1,2 @@
1
- import { a as TypeaheadSlots, i as TypeaheadSize, n as TypeaheadEmits, o as TypeaheadStatus, r as TypeaheadProps, t as _default } from "../index-CnVbMebA.js";
1
+ import { a as TypeaheadSlots, i as TypeaheadSize, n as TypeaheadEmits, o as TypeaheadStatus, r as TypeaheadProps, t as _default } from "../index-Bqb_Fyju.js";
2
2
  export { _default as Typeahead, type TypeaheadEmits, type TypeaheadProps, type TypeaheadSize, type TypeaheadSlots, type TypeaheadStatus };
@@ -1,2 +1,2 @@
1
- import { t as _sfc_main } from "../Typeahead-BMoU3hfx.js";
1
+ import { t as _sfc_main } from "../Typeahead-s4DC1Qem.js";
2
2
  export { _sfc_main as Typeahead };
@@ -1,7 +1,7 @@
1
- import { a as useAstryxMessages } from "./locale-56lkR7OK.js";
1
+ import { a as useAstryxMessages } from "./context-BshXcNYX.js";
2
2
  import { t as _sfc_main$1 } from "./Spinner-9cYUCnDy.js";
3
3
  import { t as _sfc_main$2 } from "./Field-VlTBsIEo.js";
4
- import { t as _sfc_main$3 } from "./Token-Ctf9jekS.js";
4
+ import { t as _sfc_main$3 } from "./Token-CV2J94bn.js";
5
5
  import { n as useAnchoredListbox, t as scrollOptionIntoView } from "./useAnchoredListbox-7W90Ny-9.js";
6
6
  import { n as _sfc_main$4, t as useTypeaheadMenu } from "./useTypeaheadMenu-Ba7XpcZl.js";
7
7
  import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref, useId, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
@@ -1,4 +1,4 @@
1
1
  import { n as UseClipboardReturn, r as useClipboard, t as UseClipboardOptions } from "../useClipboard-CU-kfqeJ.js";
2
- import { $ as useChatNewMessages, A as useHotkeys, B as UseControllableStateOptions, C as LongPressOptions, D as UseListFocusOptions, E as ListFocusOrientation, F as UseFocusTrapOptions, G as useCombobox, H as Combobox, I as useFocusTrap, J as UseChatStreamScrollReturn, K as ChatScrollToBottomOptions, L as UseDismissOptions, M as UseGridRovingFocusOptions, N as useGridRovingFocus, O as useListFocus, P as FocusTrap, Q as UseChatNewMessagesReturn, R as useDismiss, S as LongPressHandlers, T as ListFocus, U as ComboboxOption, V as useControllableState, W as UseComboboxOptions, X as CHAT_MESSAGE_CLASS, Y as useChatStreamScroll, Z as UseChatNewMessagesOptions, _ as useOverflow, a as UseStreamingTextOptions, b as useNumberField, c as useScrollLock, d as useRestoreFocus, et as AnnounceFn, f as ComputeOverflowInput, g as computeOverflow, h as UseOverflowReturn, i as StreamingTextSpeed, j as GridRovingFocus, k as Hotkey, l as RestoreFocus, m as UseOverflowOptions, n as UseTypeaheadReturn, nt as useAnnounce, o as snapToGraphemeBoundary, p as ComputeOverflowResult, q as UseChatStreamScrollOptions, r as useTypeahead, s as useStreamingText, t as UseTypeaheadOptions, tt as AnnouncePoliteness, u as UseRestoreFocusOptions, v as NumberField, w as useLongPress, x as useMediaQuery, y as UseNumberFieldOptions, z as ControllableState } from "../index-DBcbfStA.js";
2
+ import { $ as useFocusTrap, A as NumberField, At as useChatStreamScroll, B as LongPressOptions, C as useRestoreFocus, Ct as ComboboxOption, D as UseOverflowReturn, Dt as ChatScrollToBottomOptions, E as UseOverflowOptions, Et as useCoarsePointer, F as parseISODate, Ft as AnnounceFn, G as useListFocus, H as ListFocus, I as toISODate, It as AnnouncePoliteness, J as GridRovingFocus, K as Hotkey, L as todayISODate, Lt as useAnnounce, M as useNumberField, Mt as UseChatNewMessagesOptions, N as addMonths, Nt as UseChatNewMessagesReturn, O as computeOverflow, Ot as UseChatStreamScrollOptions, P as buildMonthGrid, Pt as useChatNewMessages, Q as UseFocusTrapOptions, R as useMediaQuery, S as UseRestoreFocusOptions, St as Combobox, T as ComputeOverflowResult, Tt as useCombobox, U as ListFocusOrientation, V as useLongPress, W as UseListFocusOptions, X as useGridRovingFocus, Y as UseGridRovingFocusOptions, Z as FocusTrap, _ as UseStreamingTextOptions, _t as resolveWeekStart, a as ISOTimeString, at as UseDismissOptions, b as useScrollLock, bt as UseControllableStateOptions, c as TimePresentation, ct as RangeClickResult, d as isTimeInRange, dt as compareISODate, et as FileRejection, f as parseDisplayTime, ft as formatDateRange, g as StreamingTextSpeed, gt as orderRange, h as shiftTime, ht as isSameRange, i as HourFormat, it as selectFiles, j as UseNumberFieldOptions, jt as CHAT_MESSAGE_CLASS, k as useOverflow, kt as UseChatStreamScrollReturn, l as formatDisplayTime, lt as WeekStartsOn, m as resolveTimeSurface, mt as isRangeWithinSpan, n as UseTypeaheadReturn, nt as FileSelectionResult, o as NativePicker, ot as useDismiss, p as parseISOTime, pt as isDayOutsideSpan, q as useHotkeys, r as useTypeahead, rt as formatFileSize, s as ParsedTime, st as ISODateRange, t as UseTypeaheadOptions, tt as FileSelectionOptions, u as formatISOTime, ut as applyRangeClick, v as snapToGraphemeBoundary, vt as spanDays, w as ComputeOverflowInput, wt as UseComboboxOptions, x as RestoreFocus, xt as useControllableState, y as useStreamingText, yt as ControllableState, z as LongPressHandlers } from "../index-BnNh5Iml.js";
3
3
  import { a as SearchableItem, c as useAsyncSource, i as SearchSource, n as AsyncSourceStatus, o as UseAsyncSourceOptions, r as CreateStaticSourceOptions, s as createStaticSource, t as AsyncSource } from "../useAsyncSource-xpQovjV_.js";
4
- export { type AnnounceFn, type AnnouncePoliteness, type AsyncSource, type AsyncSourceStatus, CHAT_MESSAGE_CLASS, type ChatScrollToBottomOptions, type Combobox, type ComboboxOption, type ComputeOverflowInput, type ComputeOverflowResult, type ControllableState, type CreateStaticSourceOptions, type FocusTrap, type GridRovingFocus, type Hotkey, type ListFocus, type ListFocusOrientation, type LongPressHandlers, type LongPressOptions, type NumberField, type RestoreFocus, type SearchSource, type SearchableItem, type StreamingTextSpeed, type UseAsyncSourceOptions, type UseChatNewMessagesOptions, type UseChatNewMessagesReturn, type UseChatStreamScrollOptions, type UseChatStreamScrollReturn, type UseClipboardOptions, type UseClipboardReturn, type UseComboboxOptions, type UseControllableStateOptions, type UseDismissOptions, type UseFocusTrapOptions, type UseGridRovingFocusOptions, type UseListFocusOptions, type UseNumberFieldOptions, type UseOverflowOptions, type UseOverflowReturn, type UseRestoreFocusOptions, type UseStreamingTextOptions, type UseTypeaheadOptions, type UseTypeaheadReturn, computeOverflow, createStaticSource, snapToGraphemeBoundary, useAnnounce, useAsyncSource, useChatNewMessages, useChatStreamScroll, useClipboard, useCombobox, useControllableState, useDismiss, useFocusTrap, useGridRovingFocus, useHotkeys, useListFocus, useLongPress, useMediaQuery, useNumberField, useOverflow, useRestoreFocus, useScrollLock, useStreamingText, useTypeahead };
4
+ export { type AnnounceFn, type AnnouncePoliteness, type AsyncSource, type AsyncSourceStatus, CHAT_MESSAGE_CLASS, type ChatScrollToBottomOptions, type Combobox, type ComboboxOption, type ComputeOverflowInput, type ComputeOverflowResult, type ControllableState, type CreateStaticSourceOptions, type FileRejection, type FileSelectionOptions, type FileSelectionResult, type FocusTrap, type GridRovingFocus, type Hotkey, type HourFormat, type ISODateRange, type ISOTimeString, type ListFocus, type ListFocusOrientation, type LongPressHandlers, type LongPressOptions, type NativePicker, type NumberField, type ParsedTime, type RangeClickResult, type RestoreFocus, type SearchSource, type SearchableItem, type StreamingTextSpeed, type TimePresentation, type UseAsyncSourceOptions, type UseChatNewMessagesOptions, type UseChatNewMessagesReturn, type UseChatStreamScrollOptions, type UseChatStreamScrollReturn, type UseClipboardOptions, type UseClipboardReturn, type UseComboboxOptions, type UseControllableStateOptions, type UseDismissOptions, type UseFocusTrapOptions, type UseGridRovingFocusOptions, type UseListFocusOptions, type UseNumberFieldOptions, type UseOverflowOptions, type UseOverflowReturn, type UseRestoreFocusOptions, type UseStreamingTextOptions, type UseTypeaheadOptions, type UseTypeaheadReturn, type WeekStartsOn, addMonths, applyRangeClick, buildMonthGrid, compareISODate, computeOverflow, createStaticSource, formatDateRange, formatDisplayTime, formatFileSize, formatISOTime, isDayOutsideSpan, isRangeWithinSpan, isSameRange, isTimeInRange, orderRange, parseDisplayTime, parseISODate, parseISOTime, resolveTimeSurface, resolveWeekStart, selectFiles, shiftTime, snapToGraphemeBoundary, spanDays, toISODate, todayISODate, useAnnounce, useAsyncSource, useChatNewMessages, useChatStreamScroll, useClipboard, useCoarsePointer, useCombobox, useControllableState, useDismiss, useFocusTrap, useGridRovingFocus, useHotkeys, useListFocus, useLongPress, useMediaQuery, useNumberField, useOverflow, useRestoreFocus, useScrollLock, useStreamingText, useTypeahead };
@@ -3,9 +3,12 @@ import { t as useAnnounce } from "../announce-Cnio10Wk.js";
3
3
  import { n as useAsyncSource, t as createStaticSource } from "../useAsyncSource-Gk0VtE7_.js";
4
4
  import { n as CHAT_MESSAGE_CLASS, r as useChatNewMessages, t as useChatStreamScroll } from "../useChatStreamScroll-oDfybEos.js";
5
5
  import { t as useClipboard } from "../useClipboard-BDfbEsWd.js";
6
+ import { a as parseISOTime, c as useCoarsePointer, i as parseDisplayTime, n as formatISOTime, o as resolveTimeSurface, r as isTimeInRange, s as shiftTime, t as formatDisplayTime } from "../useTimeValue-DWk6oTAZ.js";
6
7
  import { t as useCombobox } from "../useCombobox-CTo5C-gc.js";
7
8
  import { n as useStreamingText, r as useControllableState, t as snapToGraphemeBoundary } from "../composables-Dq9RS33w.js";
9
+ import { a as todayISODate, c as formatDateRange, d as isSameRange, f as orderRange, i as toISODate, l as isDayOutsideSpan, m as spanDays, n as buildMonthGrid, o as applyRangeClick, p as resolveWeekStart, r as parseISODate, s as compareISODate, t as addMonths, u as isRangeWithinSpan } from "../useMonthGrid-CmJsZTcB.js";
8
10
  import { t as useDismiss } from "../useDismiss-CAiHU6QD.js";
11
+ import { n as selectFiles, t as formatFileSize } from "../useFileSelection-BPtaegqK.js";
9
12
  import { n as useFocusTrap, t as useRestoreFocus } from "../useRestoreFocus-BvMdXVX9.js";
10
13
  import { t as useGridRovingFocus } from "../useGridRovingFocus-DQQAOYH5.js";
11
14
  import { t as useHotkeys } from "../useHotkeys-dABSK1o9.js";
@@ -15,4 +18,4 @@ import { t as useNumberField } from "../useNumberField-DL-Radsp.js";
15
18
  import { n as useOverflow, t as computeOverflow } from "../useOverflow-VrwF5oek.js";
16
19
  import { t as useScrollLock } from "../scrollLock-BzIvIimL.js";
17
20
  import { t as useTypeahead } from "../useTypeahead-PAK8lMYz.js";
18
- export { CHAT_MESSAGE_CLASS, computeOverflow, createStaticSource, snapToGraphemeBoundary, useAnnounce, useAsyncSource, useChatNewMessages, useChatStreamScroll, useClipboard, useCombobox, useControllableState, useDismiss, useFocusTrap, useGridRovingFocus, useHotkeys, useListFocus, useLongPress, useMediaQuery, useNumberField, useOverflow, useRestoreFocus, useScrollLock, useStreamingText, useTypeahead };
21
+ export { CHAT_MESSAGE_CLASS, addMonths, applyRangeClick, buildMonthGrid, compareISODate, computeOverflow, createStaticSource, formatDateRange, formatDisplayTime, formatFileSize, formatISOTime, isDayOutsideSpan, isRangeWithinSpan, isSameRange, isTimeInRange, orderRange, parseDisplayTime, parseISODate, parseISOTime, resolveTimeSurface, resolveWeekStart, selectFiles, shiftTime, snapToGraphemeBoundary, spanDays, toISODate, todayISODate, useAnnounce, useAsyncSource, useChatNewMessages, useChatStreamScroll, useClipboard, useCoarsePointer, useCombobox, useControllableState, useDismiss, useFocusTrap, useGridRovingFocus, useHotkeys, useListFocus, useLongPress, useMediaQuery, useNumberField, useOverflow, useRestoreFocus, useScrollLock, useStreamingText, useTypeahead };