@octane-xplat/ui 0.5.0 → 0.6.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 (281) hide show
  1. package/README.md +3 -0
  2. package/dist/native/Absolute.native.tsrx.js +43 -0
  3. package/dist/native/Accordion.native.tsrx.js +75 -0
  4. package/dist/native/ActivityIndicator.native.tsrx.js +35 -0
  5. package/dist/native/Alert.native.tsrx.js +74 -0
  6. package/dist/native/Avatar.native.tsrx.js +76 -0
  7. package/dist/native/AvatarGroup.native.tsrx.js +84 -0
  8. package/dist/native/Badge.native.tsrx.js +29 -0
  9. package/dist/native/Banner.native.tsrx.js +80 -0
  10. package/dist/native/Breadcrumb.native.tsrx.js +66 -0
  11. package/dist/native/Button.native.tsrx.js +62 -0
  12. package/dist/native/CameraView.native.tsrx.js +165 -0
  13. package/dist/native/Card.native.tsrx.js +64 -0
  14. package/dist/native/Checkbox.native.tsrx.js +58 -0
  15. package/dist/native/CheckboxGroup.native.tsrx.js +70 -0
  16. package/dist/native/Chip.native.tsrx.js +83 -0
  17. package/dist/native/Collapsible.native.tsrx.js +74 -0
  18. package/dist/native/CommandPalette.native.tsrx.js +143 -0
  19. package/dist/native/ContextMenu.native.tsrx.js +140 -0
  20. package/dist/native/Drawer.native.tsrx.js +60 -0
  21. package/dist/native/DropdownMenu.native.tsrx.js +155 -0
  22. package/dist/native/Empty.native.tsrx.js +82 -0
  23. package/dist/native/FieldGroup.native.tsrx.js +39 -0
  24. package/dist/native/FormField.native.tsrx.js +53 -0
  25. package/dist/native/{ui8.js → Grid.native.tsrx.js} +19 -8
  26. package/dist/native/{ui59.js → Heading.native.tsrx.js} +2 -2
  27. package/dist/native/{ui58.js → Icon.native.tsrx.js} +4 -4
  28. package/dist/native/{ui29.js → Image.native.tsrx.js} +4 -4
  29. package/dist/native/InputNumber.native.tsrx.js +146 -0
  30. package/dist/native/InputRating.native.tsrx.js +74 -0
  31. package/dist/native/InputTags.native.tsrx.js +131 -0
  32. package/dist/native/Kbd.native.tsrx.js +29 -0
  33. package/dist/native/{ui50.js → KeyboardAvoiding.native.tsrx.js} +1 -1
  34. package/dist/native/{ui17.js → Link.native.tsrx.js} +1 -1
  35. package/dist/native/{ui55.js → Meter.native.tsrx.js} +2 -2
  36. package/dist/native/{ui22.js → NavLink.native.tsrx.js} +3 -3
  37. package/dist/native/NavigationMenu.native.tsrx.js +67 -0
  38. package/dist/native/{ui35.js → Overlay.native.tsrx.js} +3 -3
  39. package/dist/native/Pager.native.tsrx.js +282 -0
  40. package/dist/native/Pagination.native.tsrx.js +107 -0
  41. package/dist/native/PinInput.native.tsrx.js +94 -0
  42. package/dist/native/{ui38.js → Popover.native.tsrx.js} +5 -5
  43. package/dist/native/{ui16.js → Pressable.native.tsrx.js} +20 -14
  44. package/dist/native/ProgressGroup.native.tsrx.js +66 -0
  45. package/dist/native/RadioGroup.native.tsrx.js +85 -0
  46. package/dist/native/{ui15.js → RichText.native.tsrx.js} +15 -22
  47. package/dist/native/Row.native.tsrx.js +98 -0
  48. package/dist/native/{ui49.js → SafeArea.native.tsrx.js} +2 -2
  49. package/dist/native/{ui45.js → Screen.native.tsrx.js} +3 -3
  50. package/dist/native/{ui26.js → ScrollBox.native.tsrx.js} +1 -1
  51. package/dist/native/ScrollView.native.tsrx.js +233 -0
  52. package/dist/native/SearchInput.native.tsrx.js +151 -0
  53. package/dist/native/SegmentedControl.native.tsrx.js +75 -0
  54. package/dist/native/Select.native.tsrx.js +202 -0
  55. package/dist/native/Separator.native.tsrx.js +25 -0
  56. package/dist/native/{ui63.js → Sheet.native.tsrx.js} +15 -7
  57. package/dist/native/Skeleton.native.tsrx.js +28 -0
  58. package/dist/native/Slider.native.tsrx.js +98 -0
  59. package/dist/native/{ui13.js → Spacer.native.tsrx.js} +2 -2
  60. package/dist/native/{ui9.js → Stack.native.tsrx.js} +20 -9
  61. package/dist/native/Stepper.native.tsrx.js +75 -0
  62. package/dist/native/Switch.native.tsrx.js +33 -0
  63. package/dist/native/Table.native.tsrx.js +103 -0
  64. package/dist/native/Tabs.native.tsrx.js +163 -0
  65. package/dist/native/{ui14.js → Text.native.tsrx.js} +4 -3
  66. package/dist/native/{ui24.js → TextArea.native.tsrx.js} +17 -16
  67. package/dist/native/{ui23.js → TextInput.native.tsrx.js} +21 -16
  68. package/dist/native/Timeline.native.tsrx.js +112 -0
  69. package/dist/native/Tree.native.tsrx.js +140 -0
  70. package/dist/native/User.native.tsrx.js +95 -0
  71. package/dist/native/Video.native.tsrx.js +248 -0
  72. package/dist/native/View.native.tsrx.js +98 -0
  73. package/dist/native/WebView.native.tsrx.js +110 -0
  74. package/dist/native/aliases.native.tsrx.js +38 -0
  75. package/dist/native/android/BottomNavigationView.android.tsrx.js +171 -0
  76. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +27 -0
  77. package/dist/native/{ui51.js → android/DrawerLayout.android.tsrx.js} +5 -7
  78. package/dist/native/android/MaterialDialog.android.tsrx.js +62 -0
  79. package/dist/native/android/MaterialSwitch.android.tsrx.js +28 -0
  80. package/dist/native/android/RecyclerView.android.tsrx.js +248 -0
  81. package/dist/native/android/SeekBar.android.tsrx.js +34 -0
  82. package/dist/native/android/index.js +9 -0
  83. package/dist/native/android/openModal.android.js +39 -0
  84. package/dist/native/camera-permission.native.js +47 -0
  85. package/dist/native/child-array.js +15 -0
  86. package/dist/native/icons.js +25 -0
  87. package/dist/native/{ui11.js → ios/LiquidGlass.ios.tsrx.js} +4 -4
  88. package/dist/native/{ui12.js → ios/LiquidGlassContainer.ios.tsrx.js} +4 -4
  89. package/dist/native/ios/SideDrawer.ios.tsrx.js +64 -0
  90. package/dist/native/{ui53.js → ios/UIActivityIndicatorView.ios.tsrx.js} +5 -5
  91. package/dist/native/{ui32.js → ios/UIModal.ios.tsrx.js} +10 -6
  92. package/dist/native/{ui56.js → ios/UISlider.ios.tsrx.js} +5 -5
  93. package/dist/native/{ui47.js → ios/UISwitch.ios.tsrx.js} +5 -5
  94. package/dist/native/ios/UITabBar.ios.tsrx.js +166 -0
  95. package/dist/native/ios/UITableView.ios.tsrx.js +270 -0
  96. package/dist/native/ios/index.js +11 -0
  97. package/dist/native/{ui33.js → ios/openModal.ios.js} +5 -4
  98. package/dist/native/modal-presenter.native.js +19 -0
  99. package/dist/native/native/index.js +4 -0
  100. package/dist/native/octane-client-build.json +1 -1
  101. package/dist/native/{ui6.js → pan.native.tsrx.js} +9 -69
  102. package/dist/native/platform.native.js +10 -0
  103. package/dist/native/refresh-metrics.js +9 -0
  104. package/dist/native/refresh.native.js +177 -0
  105. package/dist/native/{ui34.js → root-layout.native.js} +6 -1
  106. package/dist/native/{ui21.js → route.native.js} +96 -12
  107. package/dist/native/sheet-detents.native.js +102 -0
  108. package/dist/native/{ui64.js → sheet-service.native.js} +19 -9
  109. package/dist/native/sheet-snap.js +35 -0
  110. package/dist/native/text-write.native.js +27 -0
  111. package/dist/native/{ui42.js → theme/status-bar-scheme.native.js} +2 -2
  112. package/dist/{web/ui29.js → native/theme/theme-scheme.js} +2 -2
  113. package/dist/native/{ui40.js → toast-anchor.native.tsrx.js} +3 -3
  114. package/dist/native/translate.native.js +11 -0
  115. package/dist/native/ui.js +93 -55
  116. package/dist/native/use-back.native.tsrx.js +9 -0
  117. package/dist/native/{ui52.js → useMeasure.native.tsrx.js} +1 -1
  118. package/dist/native/video-chrome.native.tsrx.js +365 -0
  119. package/dist/web/Absolute.web.tsrx.js +47 -0
  120. package/dist/web/Accordion.web.tsrx.js +85 -0
  121. package/dist/web/{ui48.js → ActivityIndicator.web.tsrx.js} +1 -1
  122. package/dist/web/Alert.web.tsrx.js +79 -0
  123. package/dist/web/Avatar.web.tsrx.js +106 -0
  124. package/dist/web/AvatarGroup.web.tsrx.js +108 -0
  125. package/dist/web/Badge.web.tsrx.js +37 -0
  126. package/dist/web/Banner.web.tsrx.js +79 -0
  127. package/dist/web/Breadcrumb.web.tsrx.js +135 -0
  128. package/dist/web/Button.web.tsrx.js +45 -0
  129. package/dist/web/CameraView.web.tsrx.js +310 -0
  130. package/dist/web/Card.web.tsrx.js +73 -0
  131. package/dist/web/Checkbox.web.tsrx.js +89 -0
  132. package/dist/web/CheckboxGroup.web.tsrx.js +79 -0
  133. package/dist/web/Chip.web.tsrx.js +64 -0
  134. package/dist/web/Collapsible.web.tsrx.js +94 -0
  135. package/dist/web/CommandPalette.web.tsrx.js +125 -0
  136. package/dist/web/ContextMenu.web.tsrx.js +154 -0
  137. package/dist/web/{ui45.js → Drawer.web.tsrx.js} +13 -9
  138. package/dist/web/DropdownMenu.web.tsrx.js +162 -0
  139. package/dist/web/Empty.web.tsrx.js +89 -0
  140. package/dist/web/FieldGroup.web.tsrx.js +57 -0
  141. package/dist/web/FormField.web.tsrx.js +92 -0
  142. package/dist/web/Grid.web.tsrx.js +65 -0
  143. package/dist/web/{ui54.js → Heading.web.tsrx.js} +2 -2
  144. package/dist/web/{ui53.js → Icon.web.tsrx.js} +2 -2
  145. package/dist/web/{ui25.js → Image.web.tsrx.js} +2 -2
  146. package/dist/web/InputNumber.web.tsrx.js +99 -0
  147. package/dist/web/InputRating.web.tsrx.js +72 -0
  148. package/dist/web/InputTags.web.tsrx.js +122 -0
  149. package/dist/web/Kbd.web.tsrx.js +37 -0
  150. package/dist/web/{ui50.js → Meter.web.tsrx.js} +1 -1
  151. package/dist/web/{ui19.js → NavLink.web.tsrx.js} +1 -1
  152. package/dist/web/NavigationMenu.web.tsrx.js +118 -0
  153. package/dist/web/{ui31.js → Overlay.web.tsrx.js} +2 -2
  154. package/dist/web/Pager.web.tsrx.js +337 -0
  155. package/dist/web/Pagination.web.tsrx.js +80 -0
  156. package/dist/web/PinInput.web.tsrx.js +72 -0
  157. package/dist/web/{ui33.js → Popover.web.tsrx.js} +3 -3
  158. package/dist/web/{ui15.js → Pressable.web.tsrx.js} +68 -95
  159. package/dist/web/ProgressGroup.web.tsrx.js +109 -0
  160. package/dist/web/RadioGroup.web.tsrx.js +69 -0
  161. package/dist/web/{ui14.js → RichText.web.tsrx.js} +2 -2
  162. package/dist/web/Row.web.tsrx.js +250 -0
  163. package/dist/web/{ui43.js → SafeArea.web.tsrx.js} +1 -1
  164. package/dist/web/{ui39.js → Screen.web.tsrx.js} +1 -1
  165. package/dist/web/{ui24.js → ScrollBox.web.tsrx.js} +1 -1
  166. package/dist/web/ScrollView.web.tsrx.js +388 -0
  167. package/dist/web/SearchInput.web.tsrx.js +137 -0
  168. package/dist/web/SegmentedControl.web.tsrx.js +75 -0
  169. package/dist/web/Select.web.tsrx.js +149 -0
  170. package/dist/web/Separator.web.tsrx.js +42 -0
  171. package/dist/web/Sheet.web.tsrx.js +81 -0
  172. package/dist/web/Skeleton.web.tsrx.js +56 -0
  173. package/dist/web/Slider.web.tsrx.js +97 -0
  174. package/dist/web/{ui12.js → Spacer.web.tsrx.js} +1 -1
  175. package/dist/web/Stack.web.tsrx.js +47 -0
  176. package/dist/web/Stepper.web.tsrx.js +65 -0
  177. package/dist/web/Switch.web.tsrx.js +59 -0
  178. package/dist/web/Table.web.tsrx.js +161 -0
  179. package/dist/web/{ui40.js → Tabs.web.tsrx.js} +33 -16
  180. package/dist/web/{ui13.js → Text.web.tsrx.js} +18 -50
  181. package/dist/web/{ui21.js → TextArea.web.tsrx.js} +4 -4
  182. package/dist/web/{ui20.js → TextInput.web.tsrx.js} +8 -8
  183. package/dist/web/Timeline.web.tsrx.js +172 -0
  184. package/dist/web/Tree.web.tsrx.js +146 -0
  185. package/dist/web/User.web.tsrx.js +116 -0
  186. package/dist/web/Video.web.tsrx.js +400 -0
  187. package/dist/web/View.web.tsrx.js +250 -0
  188. package/dist/web/WebView.web.tsrx.js +235 -0
  189. package/dist/web/aliases.web.tsrx.js +24 -0
  190. package/dist/web/{ui36.js → anim.web.tsrx.js} +3 -35
  191. package/dist/web/child-array.js +15 -0
  192. package/dist/web/icons.js +25 -0
  193. package/dist/web/octane-client-build.json +1 -1
  194. package/dist/web/pan.web.tsrx.js +66 -0
  195. package/dist/web/platform.web.js +9 -0
  196. package/dist/web/refresh-metrics.js +9 -0
  197. package/dist/web/refresh.web.js +133 -0
  198. package/dist/web/{ui18.js → route.web.js} +14 -2
  199. package/dist/web/sheet-detents.web.js +103 -0
  200. package/dist/web/{ui60.js → sheet-service.web.js} +5 -1
  201. package/dist/web/sheet-snap.js +35 -0
  202. package/dist/{native/ui31.js → web/theme/theme-scheme.js} +2 -2
  203. package/dist/web/{ui35.js → toast-anchor.web.tsrx.js} +3 -3
  204. package/dist/web/transform.web.js +43 -0
  205. package/dist/web/translate.web.js +13 -0
  206. package/dist/web/ui.js +91 -53
  207. package/dist/web/use-back.web.tsrx.js +9 -0
  208. package/dist/web/video-chrome.web.tsrx.js +207 -0
  209. package/dist/web/{ui34.js → web/Hoverable.web.tsrx.js} +6 -6
  210. package/dist/web/web/Tooltip.web.tsrx.js +183 -0
  211. package/dist/web/web/index.js +3 -0
  212. package/package.json +30 -3
  213. package/src/theme/tokens.css +1380 -200
  214. package/types/android.d.ts +53 -0
  215. package/types/index.d.ts +32 -17
  216. package/types/index.native.d.ts +273 -0
  217. package/types/index.web.d.ts +272 -0
  218. package/types/ios.d.ts +59 -0
  219. package/types/native.d.ts +5 -0
  220. package/types/props.d.ts +930 -40
  221. package/types/web.d.ts +17 -0
  222. package/dist/native/ui10.js +0 -32
  223. package/dist/native/ui25.js +0 -141
  224. package/dist/native/ui27.js +0 -61
  225. package/dist/native/ui39.js +0 -103
  226. package/dist/native/ui4.js +0 -24
  227. package/dist/native/ui46.js +0 -267
  228. package/dist/native/ui57.js +0 -19
  229. package/dist/native/ui60.js +0 -14
  230. package/dist/native/ui7.js +0 -52
  231. package/dist/web/ui10.js +0 -46
  232. package/dist/web/ui11.js +0 -42
  233. package/dist/web/ui22.js +0 -108
  234. package/dist/web/ui23.js +0 -96
  235. package/dist/web/ui26.js +0 -45
  236. package/dist/web/ui3.js +0 -31
  237. package/dist/web/ui30.js +0 -34
  238. package/dist/web/ui41.js +0 -43
  239. package/dist/web/ui44.js +0 -42
  240. package/dist/web/ui5.js +0 -168
  241. package/dist/web/ui51.js +0 -47
  242. package/dist/web/ui52.js +0 -19
  243. package/dist/web/ui55.js +0 -17
  244. package/dist/web/ui59.js +0 -44
  245. package/dist/web/ui6.js +0 -94
  246. package/dist/web/ui7.js +0 -62
  247. package/dist/web/ui8.js +0 -46
  248. package/dist/web/ui9.js +0 -46
  249. /package/dist/native/{ui20.js → RouteHost.native.tsrx.js} +0 -0
  250. /package/dist/native/{ui41.js → anim.native.tsrx.js} +0 -0
  251. /package/dist/native/{ui2.js → cx.js} +0 -0
  252. /package/dist/native/{ui3.js → escape-props.native.js} +0 -0
  253. /package/dist/native/{ui5.js → layout-child.native.js} +0 -0
  254. /package/dist/native/{ui54.js → meter-math.js} +0 -0
  255. /package/dist/native/{ui36.js → platformProps.native.js} +0 -0
  256. /package/dist/native/{ui37.js → popover-position.js} +0 -0
  257. /package/dist/native/{ui19.js → route-table.js} +0 -0
  258. /package/dist/native/{ui48.js → safeAreaInsets.native.tsrx.js} +0 -0
  259. /package/dist/native/{ui18.js → stacks.native.js} +0 -0
  260. /package/dist/native/{ui61.js → store.js} +0 -0
  261. /package/dist/native/{ui43.js → styled.native.tsrx.js} +0 -0
  262. /package/dist/native/{ui28.js → svg.native.js} +0 -0
  263. /package/dist/native/{ui30.js → theme/colorScheme.native.js} +0 -0
  264. /package/dist/native/{ui62.js → use-store.native.tsrx.js} +0 -0
  265. /package/dist/native/{ui44.js → windows.native.js} +0 -0
  266. /package/dist/web/{ui16.js → Link.web.tsrx.js} +0 -0
  267. /package/dist/web/{ui28.js → cx.js} +0 -0
  268. /package/dist/web/{ui2.js → escape-props.web.js} +0 -0
  269. /package/dist/web/{ui4.js → layout-child.web.js} +0 -0
  270. /package/dist/web/{ui49.js → meter-math.js} +0 -0
  271. /package/dist/web/{ui47.js → platformProps.web.js} +0 -0
  272. /package/dist/web/{ui32.js → popover-position.js} +0 -0
  273. /package/dist/web/{ui17.js → route-table.js} +0 -0
  274. /package/dist/web/{ui42.js → safeAreaInsets.web.tsrx.js} +0 -0
  275. /package/dist/web/{ui56.js → stacks.web.js} +0 -0
  276. /package/dist/web/{ui57.js → store.js} +0 -0
  277. /package/dist/web/{ui37.js → styled.web.tsrx.js} +0 -0
  278. /package/dist/web/{ui27.js → theme/colorScheme.web.js} +0 -0
  279. /package/dist/web/{ui58.js → use-store.web.tsrx.js} +0 -0
  280. /package/dist/web/{ui46.js → useMeasure.web.tsrx.js} +0 -0
  281. /package/dist/web/{ui38.js → windows.web.js} +0 -0
@@ -0,0 +1,94 @@
1
+ import { applyEscapeProps } from "./escape-props.web.js";
2
+ import { Pressable } from "./Pressable.web.tsrx.js";
3
+ import { __s, bag3, bag4, bag7, child, clone, componentSlotVoid, drainFrag, hookSlots, ifBlock, markChildrenBlock, queueRefAttach, queueRefDetach, setStyle, sibling, template, useState } from "octane";
4
+ import { bindSignalAttribute, bindSignalChild, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
5
+ //#region src/Collapsible.web.tsrx
6
+ enableSignalBindings(1, true);
7
+ var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
8
+ var _t$1 = /* @__PURE__ */ template("<div class=\"vx-collapsible-content\"></div>");
9
+ var _t$2 = /* @__PURE__ */ template("<div><!><!></div>");
10
+ var _hs$ = /* @__PURE__ */ hookSlots(3);
11
+ var __childrenBody = {};
12
+ function __then$3(__props, __s, __extra) {
13
+ const props = __extra[0];
14
+ let _b = __s.slots[0];
15
+ if (_b === void 0) {
16
+ let _m0;
17
+ const _root = clone(_t$1);
18
+ _m0 = _root;
19
+ _b = bag3(__s, _root, _m0, null, void 0);
20
+ }
21
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, props.children, "b:9548fdaa", null, void 0, void 0, void 0, true);
22
+ }
23
+ var _rm$6 = [
24
+ "r",
25
+ "b",
26
+ "a"
27
+ ];
28
+ var Collapsible = /* @__PURE__ */ __s(function Collapsible(props, __s, __extra) {
29
+ __s.block;
30
+ const [internal, setInternal] = useState(props.defaultOpen ?? false, _hs$ + 0);
31
+ const controlled = props.open !== void 0;
32
+ const open = controlled ? props.open : internal;
33
+ const toggle = () => {
34
+ if (props.disabled) return;
35
+ const next = !open;
36
+ if (!controlled) setInternal(next);
37
+ props.onOpenChange?.(next);
38
+ };
39
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
40
+ function __children$1(__props, __s, __extra) {
41
+ const __block = __s.block;
42
+ let _b = __s.slots[0];
43
+ if (_b === void 0) {
44
+ let _m0, _m1;
45
+ const _root = clone(_t$0);
46
+ _m0 = __block.parentNode;
47
+ _m1 = child(_root);
48
+ drainFrag(_root, __block.parentNode, __block.endMarker);
49
+ _b = bag4(__s, null, _m0, _m1, null, void 0);
50
+ }
51
+ _b.e = bindSignalChild(__s, _b.e, 1, _b.a, props.trigger, "b:5b5d890f", _b.b, true, void 0, true, void 0);
52
+ }
53
+ let _b = __s.slots[0];
54
+ if (_b === void 0) {
55
+ let _m0, _m1, _m5, _m6;
56
+ const _root = clone(_t$2);
57
+ queueRefAttach(__s, _m1 = (e) => applyEscapeProps(e, props), _m0 = _root);
58
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.b, _b.a));
59
+ _m5 = sibling(child(_root), 1);
60
+ _m6 = child(_root);
61
+ _b = bag7(__s, _root, _m0, _m1, void 0, void 0, void 0, _m5, _m6);
62
+ __s.refFields = _rm$6;
63
+ } else {
64
+ const _r = (e) => applyEscapeProps(e, props);
65
+ if (_r !== _b.b) _b.b = replaceRef(__s, _b.b, _r, _b.a);
66
+ }
67
+ _b.c = bindSignalAttribute(__s, _b.c, _b.a, "id", props.id, "b:056a0cec", setPlainAttribute);
68
+ _b.d = updateFreshClassName([
69
+ "vx-collapsible",
70
+ open ? "vx-collapsible--open" : void 0,
71
+ props.className
72
+ ], _b.d, _b.a);
73
+ {
74
+ const _v = props.style;
75
+ if (_b.e !== _v) {
76
+ setStyle(_b.a, _v, _b.e);
77
+ _b.e = _v;
78
+ }
79
+ }
80
+ componentSlotVoid(__s, 1, _b.a, Pressable, {
81
+ "className": "vx-collapsible-trigger",
82
+ "disabled": props.disabled,
83
+ "onPress": toggle,
84
+ "accessibilityLabel": props.accessibilityLabel,
85
+ "accessibilityState": { disabled: props.disabled },
86
+ "children": markChildrenBlock(__children$1, __childrenBody)
87
+ }, _b.g, void 0, void 0, void 0, void 0, "c:97aaebd7");
88
+ {
89
+ const __ifCondition = open;
90
+ ifBlock(__s, 2, _b.a, __ifCondition, __then$3, null, _b.f, __ifCondition ? [props] : void 0);
91
+ }
92
+ });
93
+ //#endregion
94
+ export { Collapsible };
@@ -0,0 +1,125 @@
1
+ import { Icon } from "./Icon.web.tsrx.js";
2
+ import { TextInput } from "./TextInput.web.tsrx.js";
3
+ import { Overlay } from "./Overlay.web.tsrx.js";
4
+ import { bag3, bag5, bag7, child, clone, componentSlot, componentSlotVoid, createScopedElement, createScopedValue, delegateEvents, hookSlots, ifBlock, mapSlot, markChildrenBlock, positionalChildren, setAriaAttribute, setEventHandler, setStyle, sibling, template, useEffect, useState } from "octane";
5
+ import { bindSignalAttribute, bindSignalChild, createElementFromConfig, enableSignalBindings, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
6
+ //#region src/CommandPalette.web.tsrx
7
+ enableSignalBindings(1, true);
8
+ delegateEvents(["click"]);
9
+ var _t$0 = /* @__PURE__ */ template("<span class=\"vx-menu-item-label\"></span>");
10
+ var _t$1 = /* @__PURE__ */ template("<div role=\"option\"><!><!></div>");
11
+ var _t$2 = /* @__PURE__ */ template("<div><!><div role=\"listbox\" class=\"vx-menu-list vx-cmdk-list\"><!></div></div>");
12
+ var _hs$ = /* @__PURE__ */ hookSlots(5);
13
+ var _key$3 = (item) => item.key;
14
+ function __then$5(__props, __s, __extra) {
15
+ const __block = __s.block;
16
+ const item = __extra[0];
17
+ componentSlot(__s, 0, __block.parentNode, Icon, { "name": item.icon }, __block.endMarker, void 0, 2, void 0, void 0, "c:6205bbb8");
18
+ }
19
+ function __then$8(__props, __s, __extra) {
20
+ const item = __extra[0];
21
+ let _b = __s.slots[0];
22
+ if (_b === void 0) {
23
+ let _m0;
24
+ const _root = clone(_t$0);
25
+ _m0 = _root;
26
+ _b = bag3(__s, _root, _m0, null, void 0);
27
+ }
28
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, item.label, "b:977bb8c3", null, void 0, void 0, void 0, true);
29
+ }
30
+ function __item$4(item, __s, __extra) {
31
+ const select = __extra[0];
32
+ let _b = __s.slots[0];
33
+ if (_b === void 0) {
34
+ let _m1, _m3, _m4;
35
+ const _root = clone(_t$1);
36
+ _m1 = _root;
37
+ setEventHandler(_root, "$$click", item.disabled ? void 0 : () => select(item));
38
+ const _el0 = child(_root);
39
+ _m3 = _el0;
40
+ _m4 = sibling(_el0, 1);
41
+ _b = bag5(__s, _root, void 0, _m1, void 0, _m3, _m4);
42
+ } else setEventHandler(_b.b, "$$click", item.disabled ? void 0 : () => select(item));
43
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "aria-disabled", item.disabled || void 0, "b:6098cd7f", setAriaAttribute);
44
+ _b.c = updateFreshClassName(["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0], _b.c, _b.b);
45
+ {
46
+ const __ifCondition = item.icon;
47
+ ifBlock(__s, 1, _b.b, __ifCondition, __then$5, null, _b.d, __ifCondition ? [item] : void 0);
48
+ }
49
+ {
50
+ const __ifCondition$ = item.label != null;
51
+ ifBlock(__s, 2, _b.b, __ifCondition$, __then$8, null, _b.e, __ifCondition$ ? [item] : void 0);
52
+ }
53
+ }
54
+ var __childrenBody = {};
55
+ var CommandPalette = function CommandPalette(props, __s, __extra) {
56
+ const __block = __s.block;
57
+ const [query, setQuery] = useState("", _hs$ + 0);
58
+ const setOpen = (next) => {
59
+ if (!next) setQuery("");
60
+ props.onOpenChange?.(next);
61
+ };
62
+ useEffect(() => {
63
+ if (!props.open) return;
64
+ const onKey = (e) => {
65
+ if (e.key === "Escape") setOpen(false);
66
+ };
67
+ window.addEventListener("keydown", onKey);
68
+ return () => window.removeEventListener("keydown", onKey);
69
+ }, [props.open], _hs$ + 1);
70
+ const shown = query ? props.items.filter((i) => (i.label ?? i.key).toLowerCase().includes(query.toLowerCase())) : props.items;
71
+ const select = (item) => {
72
+ if (item.disabled) return;
73
+ setOpen(false);
74
+ item.onSelect?.();
75
+ };
76
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
77
+ function __children$1(__props, __s, __extra) {
78
+ let __mapMethod;
79
+ let _b = __s.slots[0];
80
+ if (_b === void 0) {
81
+ let _m1, _m4, _m5, _m6;
82
+ const _root = clone(_t$2);
83
+ _m1 = _root;
84
+ const _el0 = sibling(child(_root), 1);
85
+ _m4 = _el0;
86
+ _m5 = child(_el0);
87
+ _m6 = child(_root);
88
+ _b = bag7(__s, _root, void 0, _m1, void 0, void 0, _m4, _m5, _m6);
89
+ }
90
+ _b.a = updateFreshClassName(["vx-commandpalette", props.className], _b.a, _b.b);
91
+ {
92
+ const _v = props.style;
93
+ if (_b.c !== _v) {
94
+ setStyle(_b.b, _v, _b.c);
95
+ _b.c = _v;
96
+ }
97
+ }
98
+ _b.d = bindSignalAttribute(__s, _b.d, _b.b, "id", props.id, "b:7cf5e4c8", setPlainAttribute);
99
+ componentSlotVoid(__s, 1, _b.b, TextInput, {
100
+ "className": "vx-cmdk-search",
101
+ "placeholder": props.placeholder ?? "Type a command…",
102
+ "value": query,
103
+ "onChange": setQuery,
104
+ "onSubmit": () => {
105
+ if (shown.length && !shown[0].disabled) select(shown[0]);
106
+ }
107
+ }, _b.g, void 0, 2, void 0, void 0, "c:9baf90e7");
108
+ mapSlot(__s, 2, _b.e, (__mapMethod = shown.map, shown), __mapMethod, (item) => createScopedElement("div", {
109
+ key: item.key,
110
+ role: "option",
111
+ "aria-disabled": item.disabled || void 0,
112
+ className: ["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0],
113
+ onClick: item.disabled ? void 0 : () => select(item)
114
+ }, () => positionalChildren([item.icon ? createScopedValue(() => createElementFromConfig("c:c4f37a0d", Icon, { name: item.icon })) : null, item.label != null ? createScopedElement("span", { className: "vx-menu-item-label" }, () => item.label) : null])), _key$3, __item$4, 26, [select], _b.f, 1);
115
+ }
116
+ componentSlotVoid(__s, 0, __block.parentNode, Overlay, {
117
+ "open": props.open,
118
+ "shadeCover": true,
119
+ "onDismiss": () => setOpen(false),
120
+ "className": "vx-cmdk-layer",
121
+ "children": markChildrenBlock(__children$1, __childrenBody)
122
+ }, __block.endMarker, void 0, void 0, true, void 0, "c:7910e6ea");
123
+ };
124
+ //#endregion
125
+ export { CommandPalette };
@@ -0,0 +1,154 @@
1
+ import { applyEscapeProps } from "./escape-props.web.js";
2
+ import { Popover } from "./Popover.web.tsrx.js";
3
+ import { Icon } from "./Icon.web.tsrx.js";
4
+ import { __s, bag10, bag2, bag3, bag5, child, clone, componentSlot, componentSlotVoid, createScopedElement, createScopedValue, delegateEvents, evt2e, evt2u, hookSlots, ifBlock, mapSlot, markChildrenBlock, positionalChildren, queueRefAttach, queueRefDetach, setAriaAttribute, setEventHandler, setStyle, sibling, template, useEffect, useRef, useState } from "octane";
5
+ import { bindSignalAttribute, bindSignalChild, createElementFromConfig, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
6
+ //#region src/ContextMenu.web.tsrx
7
+ enableSignalBindings(1, true);
8
+ delegateEvents(["click", "contextmenu"]);
9
+ var _t$0 = /* @__PURE__ */ template("<span class=\"vx-menu-item-label\"></span>");
10
+ var _t$1 = /* @__PURE__ */ template("<div role=\"menuitem\"><!><!></div>");
11
+ var _t$2 = /* @__PURE__ */ template("<div role=\"menu\" class=\"vx-menu-list\"><!></div>");
12
+ var _t$3 = /* @__PURE__ */ template("<div><!><!></div>");
13
+ var _hs$ = /* @__PURE__ */ hookSlots(5);
14
+ var __event = (e, props, setOpen) => {
15
+ if (props.disabled) return;
16
+ e.preventDefault();
17
+ setOpen(true);
18
+ };
19
+ var _key$3 = (item) => item.key;
20
+ function __then$5(__props, __s, __extra) {
21
+ const __block = __s.block;
22
+ const item = __extra[0];
23
+ componentSlot(__s, 0, __block.parentNode, Icon, { "name": item.icon }, __block.endMarker, void 0, 2, void 0, void 0, "c:61362e82");
24
+ }
25
+ function __then$8(__props, __s, __extra) {
26
+ const item = __extra[0];
27
+ let _b = __s.slots[0];
28
+ if (_b === void 0) {
29
+ let _m0;
30
+ const _root = clone(_t$0);
31
+ _m0 = _root;
32
+ _b = bag3(__s, _root, _m0, null, void 0);
33
+ }
34
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, item.label, "b:6f8390fb", null, void 0, void 0, void 0, true);
35
+ }
36
+ function __item$4(item, __s, __extra) {
37
+ const select = __extra[0];
38
+ let _b = __s.slots[0];
39
+ if (_b === void 0) {
40
+ let _m1, _m3, _m4;
41
+ const _root = clone(_t$1);
42
+ _m1 = _root;
43
+ setEventHandler(_root, "$$click", item.disabled ? void 0 : () => select(item));
44
+ const _el0 = child(_root);
45
+ _m3 = _el0;
46
+ _m4 = sibling(_el0, 1);
47
+ _b = bag5(__s, _root, void 0, _m1, void 0, _m3, _m4);
48
+ } else setEventHandler(_b.b, "$$click", item.disabled ? void 0 : () => select(item));
49
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "aria-disabled", item.disabled || void 0, "b:7b8eac99", setAriaAttribute);
50
+ _b.c = updateFreshClassName(["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0], _b.c, _b.b);
51
+ {
52
+ const __ifCondition = item.icon;
53
+ ifBlock(__s, 1, _b.b, __ifCondition, __then$5, null, _b.d, __ifCondition ? [item] : void 0);
54
+ }
55
+ {
56
+ const __ifCondition$ = item.label != null;
57
+ ifBlock(__s, 2, _b.b, __ifCondition$, __then$8, null, _b.e, __ifCondition$ ? [item] : void 0);
58
+ }
59
+ }
60
+ var __childrenBody = {};
61
+ var _rm$12 = [
62
+ "r",
63
+ "b",
64
+ "a"
65
+ ];
66
+ var ContextMenu = /* @__PURE__ */ __s(function ContextMenu(props, __s, __extra) {
67
+ const anchor = useRef(null, _hs$ + 0);
68
+ const [internal, setInternal] = useState(props.defaultOpen ?? false, _hs$ + 1);
69
+ const controlled = props.open !== void 0;
70
+ const open = controlled ? props.open : internal;
71
+ const setOpen = (next) => {
72
+ if (props.disabled && next) return;
73
+ if (!controlled) setInternal(next);
74
+ props.onOpenChange?.(next);
75
+ };
76
+ useEffect(() => {
77
+ if (!open) return;
78
+ const onKey = (e) => {
79
+ if (e.key === "Escape") setOpen(false);
80
+ };
81
+ window.addEventListener("keydown", onKey);
82
+ return () => window.removeEventListener("keydown", onKey);
83
+ }, [open], _hs$ + 2);
84
+ const select = (item) => {
85
+ if (item.disabled) return;
86
+ setOpen(false);
87
+ item.onSelect?.();
88
+ };
89
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
90
+ function __children$2(__props, __s, __extra) {
91
+ let __mapItems;
92
+ let __mapMethod;
93
+ let _b = __s.slots[0];
94
+ if (_b === void 0) {
95
+ let _m0, _m1;
96
+ const _root = clone(_t$2);
97
+ _m0 = _root;
98
+ _m1 = child(_root);
99
+ _b = bag2(__s, _root, _m0, _m1);
100
+ }
101
+ mapSlot(__s, 1, _b.a, (__mapItems = props.items, __mapMethod = __mapItems.map, __mapItems), __mapMethod, (item) => createScopedElement("div", {
102
+ key: item.key,
103
+ role: "menuitem",
104
+ "aria-disabled": item.disabled || void 0,
105
+ className: ["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0],
106
+ onClick: item.disabled ? void 0 : () => select(item)
107
+ }, () => positionalChildren([item.icon ? createScopedValue(() => createElementFromConfig("c:a3074f03", Icon, { name: item.icon })) : null, item.label != null ? createScopedElement("span", { className: "vx-menu-item-label" }, () => item.label) : null])), _key$3, __item$4, 26, [select], _b.b, 1);
108
+ }
109
+ let _b = __s.slots[0];
110
+ if (_b === void 0) {
111
+ let _m0, _m1, _m5, _m6, _m9;
112
+ const _root = clone(_t$3);
113
+ queueRefAttach(__s, _m1 = (e) => {
114
+ anchor.current = e;
115
+ if (e) applyEscapeProps(e, props);
116
+ }, _m0 = _root);
117
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.b, _b.a));
118
+ _m5 = evt2e(_root, "$$contextmenu", __event, props, setOpen);
119
+ const _el0 = child(_root);
120
+ _m6 = _el0;
121
+ _m9 = sibling(_el0, 1);
122
+ _b = bag10(__s, _root, _m0, _m1, void 0, void 0, void 0, _m5, _m6, null, void 0, _m9);
123
+ __s.refFields = _rm$12;
124
+ } else {
125
+ {
126
+ const _r = (e) => {
127
+ anchor.current = e;
128
+ if (e) applyEscapeProps(e, props);
129
+ };
130
+ if (_r !== _b.b) _b.b = replaceRef(__s, _b.b, _r, _b.a);
131
+ }
132
+ evt2u(_b.f, __event, props, setOpen);
133
+ }
134
+ _b.c = bindSignalAttribute(__s, _b.c, _b.a, "id", props.id, "b:8e5eb6d9", setPlainAttribute);
135
+ _b.d = updateFreshClassName(["vx-contextmenu", props.className], _b.d, _b.a);
136
+ {
137
+ const _v = props.style;
138
+ if (_b.e !== _v) {
139
+ setStyle(_b.a, _v, _b.e);
140
+ _b.e = _v;
141
+ }
142
+ }
143
+ _b.k = bindSignalChild(__s, _b.k, 1, _b.a, props.children, "b:1b76a8a6", _b.g, true, void 0, void 0, void 0);
144
+ componentSlotVoid(__s, 2, _b.a, Popover, {
145
+ "anchor": anchor,
146
+ "open": open,
147
+ "placement": "bottom",
148
+ "onDismiss": () => setOpen(false),
149
+ "className": "vx-menu",
150
+ "children": markChildrenBlock(__children$2, __childrenBody)
151
+ }, _b.j, void 0, void 0, void 0, void 0, "c:09c4a2fd");
152
+ });
153
+ //#endregion
154
+ export { ContextMenu };
@@ -1,21 +1,25 @@
1
- import { __s, bag3, bag9, child, clone, drainFrag, ifBlock, queueRefAttach, queueRefDetach, setStyle, sibling, template } from "octane";
1
+ import { __s, bag4, bag9, child, clone, delegateEvents, drainFrag, ifBlock, queueRefAttach, queueRefDetach, setEventHandler, setStyle, sibling, template } from "octane";
2
2
  import { bindSignalAttribute, bindSignalChild, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
3
3
  //#region src/Drawer.web.tsrx
4
4
  enableSignalBindings(1, true);
5
- var _t$0 = /* @__PURE__ */ template("<div class=\"vx-drawer-backdrop\" aria-hidden=\"true\"></div><div class=\"vx-drawer-panel\"></div>", 0, 1);
5
+ delegateEvents(["click"]);
6
+ var _t$0 = /* @__PURE__ */ template("<div class=\"vx-drawer-backdrop\"></div><div class=\"vx-drawer-panel\"></div>", 0, 1);
6
7
  var _t$1 = /* @__PURE__ */ template("<div><div class=\"vx-drawer-main\"></div><!></div>");
7
8
  function __then$1(__props, __s, __extra) {
8
9
  const __block = __s.block;
9
10
  const props = __extra[0];
10
11
  let _b = __s.slots[0];
11
12
  if (_b === void 0) {
12
- let _m0;
13
+ let _m0, _m1;
13
14
  const _root = clone(_t$0);
14
- _m0 = sibling(child(_root), 1);
15
+ const _el0 = child(_root);
16
+ _m0 = _el0;
17
+ setEventHandler(_el0, "$$click", props.onDismiss);
18
+ _m1 = sibling(_el0, 1);
15
19
  drainFrag(_root, __block.parentNode, __block.endMarker);
16
- _b = bag3(__s, null, _m0, null, void 0);
17
- }
18
- _b.d = bindSignalChild(__s, _b.d, 1, _b.a, props.drawer, "b:7c4fb4de", null, void 0, void 0, void 0, true);
20
+ _b = bag4(__s, null, _m0, _m1, null, void 0);
21
+ } else setEventHandler(_b.a, "$$click", props.onDismiss);
22
+ _b.e = bindSignalChild(__s, _b.e, 1, _b.b, props.drawer, "b:ad5f7669", null, void 0, void 0, void 0, true);
19
23
  }
20
24
  var _rm$4 = [
21
25
  "r",
@@ -43,7 +47,7 @@ var Drawer = /* @__PURE__ */ __s(function Drawer(props, __s, __extra) {
43
47
  const _r = (node) => applyWebProps(node, props.web);
44
48
  if (_r !== _b.c) _b.c = replaceRef(__s, _b.c, _r, _b.b);
45
49
  }
46
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:8ba6f567", setPlainAttribute);
50
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:997e567d", setPlainAttribute);
47
51
  _b.d = updateFreshClassName(["vx-drawer", props.className], _b.d, _b.b);
48
52
  {
49
53
  const _v = props.style;
@@ -52,7 +56,7 @@ var Drawer = /* @__PURE__ */ __s(function Drawer(props, __s, __extra) {
52
56
  _b.e = _v;
53
57
  }
54
58
  }
55
- _b.j = bindSignalChild(__s, _b.j, 1, _b.g, props.main, "b:8d49146e", null, void 0, void 0, void 0, true);
59
+ _b.j = bindSignalChild(__s, _b.j, 1, _b.g, props.main, "b:be9721d2", null, void 0, void 0, void 0, true);
56
60
  {
57
61
  const __ifCondition = props.open;
58
62
  ifBlock(__s, 2, _b.b, __ifCondition, __then$1, null, _b.f, __ifCondition ? [props] : void 0);
@@ -0,0 +1,162 @@
1
+ import { Pressable } from "./Pressable.web.tsrx.js";
2
+ import { Popover } from "./Popover.web.tsrx.js";
3
+ import { Icon } from "./Icon.web.tsrx.js";
4
+ import { bag2, bag3, bag4, bag6, child, clone, componentSlot, componentSlotVoid, createScopedElement, createScopedValue, delegateEvents, drainFrag, hookSlots, ifBlock, mapSlot, markChildrenBlock, positionalChildren, setAriaAttribute, setEventHandler, sibling, template, useEffect, useRef, useState } from "octane";
5
+ import { bindSignalAttribute, bindSignalChild, createElementFromConfig, enableSignalBindings, setPlainAttribute, textHoleUpdate, updateFreshClassName } from "octane/internal/client";
6
+ //#region src/DropdownMenu.web.tsrx
7
+ enableSignalBindings(1, true);
8
+ delegateEvents(["click", "keydown"]);
9
+ var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
10
+ var _t$1 = /* @__PURE__ */ template("<span class=\"vx-menu-item-label\"></span>");
11
+ var _t$2 = /* @__PURE__ */ template("<div role=\"menuitem\"><!><!></div>");
12
+ var _t$3 = /* @__PURE__ */ template("<div role=\"menu\" class=\"vx-menu-list\"><!></div>");
13
+ var _hs$ = /* @__PURE__ */ hookSlots(6);
14
+ var __childrenBody = {};
15
+ var _key$5 = (item) => item.key;
16
+ function __then$7(__props, __s, __extra) {
17
+ const __block = __s.block;
18
+ const item = __extra[0];
19
+ componentSlot(__s, 0, __block.parentNode, Icon, { "name": item.icon }, __block.endMarker, void 0, 2, void 0, void 0, "c:5e6489f9");
20
+ }
21
+ function __then$10(__props, __s, __extra) {
22
+ const item = __extra[0];
23
+ let _b = __s.slots[0];
24
+ if (_b === void 0) {
25
+ let _m0;
26
+ const _root = clone(_t$1);
27
+ _m0 = _root;
28
+ _b = bag3(__s, _root, _m0, null, void 0);
29
+ }
30
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, item.label, "b:d3c10474", null, void 0, void 0, void 0, true);
31
+ }
32
+ function __item$6(item, __s, __extra) {
33
+ const select = __extra[0];
34
+ let _b = __s.slots[0];
35
+ if (_b === void 0) {
36
+ let _m1, _m4, _m5;
37
+ const _root = clone(_t$2);
38
+ _m1 = _root;
39
+ setEventHandler(_root, "$$click", item.disabled ? void 0 : () => select(item));
40
+ setEventHandler(_root, "$$keydown", (e) => {
41
+ if (!item.disabled && (e.key === " " || e.key === "Enter")) {
42
+ e.preventDefault();
43
+ select(item);
44
+ }
45
+ });
46
+ const _el0 = child(_root);
47
+ _m4 = _el0;
48
+ _m5 = sibling(_el0, 1);
49
+ _b = bag6(__s, _root, void 0, _m1, void 0, void 0, _m4, _m5);
50
+ } else {
51
+ setEventHandler(_b.b, "$$click", item.disabled ? void 0 : () => select(item));
52
+ setEventHandler(_b.b, "$$keydown", (e) => {
53
+ if (!item.disabled && (e.key === " " || e.key === "Enter")) {
54
+ e.preventDefault();
55
+ select(item);
56
+ }
57
+ });
58
+ }
59
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "aria-disabled", item.disabled || void 0, "b:071205b9", setAriaAttribute);
60
+ _b.c = bindSignalAttribute(__s, _b.c, _b.b, "tabindex", item.disabled ? void 0 : 0, "b:f88238cc", setPlainAttribute);
61
+ _b.d = updateFreshClassName(["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0], _b.d, _b.b);
62
+ {
63
+ const __ifCondition = item.icon;
64
+ ifBlock(__s, 1, _b.b, __ifCondition, __then$7, null, _b.e, __ifCondition ? [item] : void 0);
65
+ }
66
+ {
67
+ const __ifCondition$ = item.label != null;
68
+ ifBlock(__s, 2, _b.b, __ifCondition$, __then$10, null, _b.f, __ifCondition$ ? [item] : void 0);
69
+ }
70
+ }
71
+ var __childrenBody$ = {};
72
+ var DropdownMenu = function DropdownMenu(props, __s, __extra) {
73
+ const __block = __s.block;
74
+ const anchor = useRef(null, _hs$ + 0);
75
+ const [internal, setInternal] = useState(props.defaultOpen ?? false, _hs$ + 1);
76
+ const controlled = props.open !== void 0;
77
+ const open = controlled ? props.open : internal;
78
+ const setOpen = (next) => {
79
+ if (props.disabled && next) return;
80
+ if (!controlled) setInternal(next);
81
+ props.onOpenChange?.(next);
82
+ };
83
+ useEffect(() => {
84
+ if (!open) return;
85
+ const onKey = (e) => {
86
+ if (e.key === "Escape") setOpen(false);
87
+ };
88
+ window.addEventListener("keydown", onKey);
89
+ return () => window.removeEventListener("keydown", onKey);
90
+ }, [open], _hs$ + 2);
91
+ const select = (item) => {
92
+ if (item.disabled) return;
93
+ setOpen(false);
94
+ item.onSelect?.();
95
+ };
96
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
97
+ function __children$1(__props, __s, __extra) {
98
+ const __block = __s.block;
99
+ let _b = __s.slots[0];
100
+ if (_b === void 0) {
101
+ let _m0, _m1;
102
+ const _root = clone(_t$0);
103
+ _m0 = __block.parentNode;
104
+ _m1 = child(_root);
105
+ drainFrag(_root, __block.parentNode, __block.endMarker);
106
+ _b = bag4(__s, null, _m0, _m1, null, void 0);
107
+ }
108
+ {
109
+ const _v = props.trigger;
110
+ _b.c = textHoleUpdate(__s, 1, _b.a, _v, _b.c, _b.d, _b.b, true, true);
111
+ _b.d = _v;
112
+ }
113
+ }
114
+ function __children$4(__props, __s, __extra) {
115
+ let __mapItems;
116
+ let __mapMethod;
117
+ let _b = __s.slots[0];
118
+ if (_b === void 0) {
119
+ let _m0, _m1;
120
+ const _root = clone(_t$3);
121
+ _m0 = _root;
122
+ _m1 = child(_root);
123
+ _b = bag2(__s, _root, _m0, _m1);
124
+ }
125
+ mapSlot(__s, 1, _b.a, (__mapItems = props.items, __mapMethod = __mapItems.map, __mapItems), __mapMethod, (item) => createScopedElement("div", {
126
+ key: item.key,
127
+ role: "menuitem",
128
+ "aria-disabled": item.disabled || void 0,
129
+ tabIndex: item.disabled ? void 0 : 0,
130
+ className: ["vx-menu-item", item.disabled ? "vx-menu-item--disabled" : void 0],
131
+ onClick: item.disabled ? void 0 : () => select(item),
132
+ onKeyDown: (e) => {
133
+ if (!item.disabled && (e.key === " " || e.key === "Enter")) {
134
+ e.preventDefault();
135
+ select(item);
136
+ }
137
+ }
138
+ }, () => positionalChildren([item.icon ? createScopedValue(() => createElementFromConfig("c:f5fcf024", Icon, { name: item.icon })) : null, item.label != null ? createScopedElement("span", { className: "vx-menu-item-label" }, () => item.label) : null])), _key$5, __item$6, 26, [select], _b.b, 1);
139
+ }
140
+ componentSlotVoid(__s, 0, __block.parentNode, Pressable, {
141
+ "bind": (e) => {
142
+ anchor.current = e;
143
+ },
144
+ "id": props.id,
145
+ "className": ["vx-menu-trigger", props.className],
146
+ "style": props.style,
147
+ "disabled": props.disabled,
148
+ "onPress": () => setOpen(!open),
149
+ "accessibilityState": { disabled: props.disabled },
150
+ "children": markChildrenBlock(__children$1, __childrenBody)
151
+ }, __block.endMarker, void 0, void 0, void 0, void 0, "c:fa171407");
152
+ componentSlotVoid(__s, 1, __block.parentNode, Popover, {
153
+ "anchor": anchor,
154
+ "open": open,
155
+ "placement": props.placement ?? "bottom",
156
+ "onDismiss": () => setOpen(false),
157
+ "className": "vx-menu",
158
+ "children": markChildrenBlock(__children$4, __childrenBody$)
159
+ }, __block.endMarker, void 0, void 0, void 0, void 0, "c:beadb637");
160
+ };
161
+ //#endregion
162
+ export { DropdownMenu };
@@ -0,0 +1,89 @@
1
+ import { applyEscapeProps } from "./escape-props.web.js";
2
+ import { Icon } from "./Icon.web.tsrx.js";
3
+ import { __s, bag11, bag3, child, clone, componentSlot, ifBlock, queueRefAttach, queueRefDetach, setStyle, sibling, template } from "octane";
4
+ import { bindSignalAttribute, bindSignalChild, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
5
+ //#region src/Empty.web.tsrx
6
+ enableSignalBindings(1, true);
7
+ var _t$0 = /* @__PURE__ */ template("<span class=\"vx-empty-title\"></span>");
8
+ var _t$1 = /* @__PURE__ */ template("<span class=\"vx-empty-desc\"></span>");
9
+ var _t$2 = /* @__PURE__ */ template("<div><!><!><!><!></div>");
10
+ function __then$0(__props, __s, __extra) {
11
+ const __block = __s.block;
12
+ const props = __extra[0];
13
+ componentSlot(__s, 0, __block.parentNode, Icon, {
14
+ "name": props.icon,
15
+ "className": "vx-empty-icon"
16
+ }, __block.endMarker, void 0, 2, void 0, void 0, "c:b0324667");
17
+ }
18
+ function __then$3(__props, __s, __extra) {
19
+ const props = __extra[0];
20
+ let _b = __s.slots[0];
21
+ if (_b === void 0) {
22
+ let _m0;
23
+ const _root = clone(_t$0);
24
+ _m0 = _root;
25
+ _b = bag3(__s, _root, _m0, null, void 0);
26
+ }
27
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, props.title, "b:74b0766e", null, void 0, void 0, void 0, true);
28
+ }
29
+ function __then$6(__props, __s, __extra) {
30
+ const props = __extra[0];
31
+ let _b = __s.slots[0];
32
+ if (_b === void 0) {
33
+ let _m0;
34
+ const _root = clone(_t$1);
35
+ _m0 = _root;
36
+ _b = bag3(__s, _root, _m0, null, void 0);
37
+ }
38
+ _b.d = bindSignalChild(__s, _b.d, 1, _b.a, props.description, "b:8b24be6c", null, void 0, void 0, void 0, true);
39
+ }
40
+ var _rm$10 = [
41
+ "r",
42
+ "b",
43
+ "a"
44
+ ];
45
+ var Empty = /* @__PURE__ */ __s(function Empty(props, __s, __extra) {
46
+ let _b = __s.slots[0];
47
+ if (_b === void 0) {
48
+ let _m0, _m1, _m5, _m6, _m7, _m8;
49
+ const _root = clone(_t$2);
50
+ queueRefAttach(__s, _m1 = (e) => applyEscapeProps(e, props), _m0 = _root);
51
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.b, _b.a));
52
+ const _el0 = child(_root);
53
+ _m5 = _el0;
54
+ const _el1 = sibling(_el0, 1);
55
+ _m6 = _el1;
56
+ const _el2 = sibling(_el1, 1);
57
+ _m7 = _el2;
58
+ _m8 = sibling(_el2, 1);
59
+ _b = bag11(__s, _root, _m0, _m1, void 0, void 0, void 0, _m5, _m6, _m7, _m8, null, void 0);
60
+ __s.refFields = _rm$10;
61
+ } else {
62
+ const _r = (e) => applyEscapeProps(e, props);
63
+ if (_r !== _b.b) _b.b = replaceRef(__s, _b.b, _r, _b.a);
64
+ }
65
+ _b.c = bindSignalAttribute(__s, _b.c, _b.a, "id", props.id, "b:3cdab370", setPlainAttribute);
66
+ _b.d = updateFreshClassName(["vx-empty", props.className], _b.d, _b.a);
67
+ {
68
+ const _v = props.style;
69
+ if (_b.e !== _v) {
70
+ setStyle(_b.a, _v, _b.e);
71
+ _b.e = _v;
72
+ }
73
+ }
74
+ {
75
+ const __ifCondition = props.icon;
76
+ ifBlock(__s, 1, _b.a, __ifCondition, __then$0, null, _b.f, __ifCondition ? [props] : void 0);
77
+ }
78
+ {
79
+ const __ifCondition$ = props.title != null;
80
+ ifBlock(__s, 2, _b.a, __ifCondition$, __then$3, null, _b.g, __ifCondition$ ? [props] : void 0);
81
+ }
82
+ {
83
+ const __ifCondition$2 = props.description != null;
84
+ ifBlock(__s, 3, _b.a, __ifCondition$2, __then$6, null, _b.h, __ifCondition$2 ? [props] : void 0);
85
+ }
86
+ _b.l = bindSignalChild(__s, _b.l, 4, _b.a, props.children, "b:6dade3cd", _b.i, true, void 0, void 0, void 0);
87
+ });
88
+ //#endregion
89
+ export { Empty };