@tcn/ui 0.1.1 → 0.3.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 (317) hide show
  1. package/README.md +38 -3
  2. package/dist/divider.module-FptFV0PX.js +5 -0
  3. package/dist/divider.module-FptFV0PX.js.map +1 -0
  4. package/dist/draggable.css +1 -0
  5. package/dist/feedback/progress/progress_bar.js +1 -1
  6. package/dist/form/field/common/field_description.js +1 -1
  7. package/dist/form/field/common/field_error.js +1 -1
  8. package/dist/form/field/common/field_label.js +1 -1
  9. package/dist/form/field/field.js +1 -1
  10. package/dist/frame.css +1 -0
  11. package/dist/inputs/color_input/color_input.js +1 -1
  12. package/dist/inputs/color_input/color_input.js.map +1 -1
  13. package/dist/inputs/color_input/color_picker.js +1 -1
  14. package/dist/inputs/combo_box/combo_box.js +1 -1
  15. package/dist/inputs/date_picker/date_picker.js +1 -1
  16. package/dist/inputs/date_picker/date_picker_date.js +1 -1
  17. package/dist/inputs/date_picker/date_picker_day.js +1 -1
  18. package/dist/inputs/date_picker/date_picker_input.js +2 -2
  19. package/dist/inputs/date_picker/date_picker_input.js.map +1 -1
  20. package/dist/inputs/date_picker/date_picker_time_selector.js +1 -1
  21. package/dist/inputs/date_picker/date_picker_year_input.js +1 -1
  22. package/dist/inputs/date_picker/date_picker_year_input.js.map +1 -1
  23. package/dist/inputs/date_picker/date_picker_year_selector.js +2 -2
  24. package/dist/inputs/mask_input/key_capture_input.js +1 -1
  25. package/dist/inputs/mask_input/mask_input.js +1 -1
  26. package/dist/inputs/multiselect/multiselect.js +1 -1
  27. package/dist/inputs/phone_number_input/phone_number_input.d.ts +2 -0
  28. package/dist/inputs/phone_number_input/phone_number_input.d.ts.map +1 -1
  29. package/dist/inputs/phone_number_input/phone_number_input.js +160 -154
  30. package/dist/inputs/phone_number_input/phone_number_input.js.map +1 -1
  31. package/dist/inputs/select/select.js +1 -1
  32. package/dist/inputs/slider/slider.js +1 -1
  33. package/dist/inputs/suggestions/suggestion_list.js +3 -3
  34. package/dist/inputs/suggestions/suggestion_list.js.map +1 -1
  35. package/dist/inputs/switch/switch.js +1 -1
  36. package/dist/inputs/textarea/textarea.d.ts +2 -2
  37. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  38. package/dist/inputs/textarea/textarea.js.map +1 -1
  39. package/dist/inputs/unit_input/unit_input.js +1 -1
  40. package/dist/layouts/divider/divider.js +24 -23
  41. package/dist/layouts/divider/divider.js.map +1 -1
  42. package/dist/layouts/header/header.d.ts.map +1 -1
  43. package/dist/layouts/header/header.js.map +1 -1
  44. package/dist/layouts/index.d.ts +6 -5
  45. package/dist/layouts/index.d.ts.map +1 -1
  46. package/dist/layouts/index.js +28 -26
  47. package/dist/layouts/index.js.map +1 -1
  48. package/dist/layouts/scaffold/scaffold.d.ts +9 -0
  49. package/dist/layouts/scaffold/scaffold.d.ts.map +1 -0
  50. package/dist/layouts/scaffold/scaffold.js +55 -0
  51. package/dist/layouts/scaffold/scaffold.js.map +1 -0
  52. package/dist/modal.css +1 -1
  53. package/dist/overlay/frame/frame.d.ts +11 -0
  54. package/dist/overlay/frame/frame.d.ts.map +1 -0
  55. package/dist/overlay/frame/frame.js +35 -0
  56. package/dist/overlay/frame/frame.js.map +1 -0
  57. package/dist/overlay/index.d.ts +10 -2
  58. package/dist/overlay/index.d.ts.map +1 -1
  59. package/dist/overlay/index.js +22 -8
  60. package/dist/overlay/index.js.map +1 -1
  61. package/dist/overlay/menu/menu.d.ts +1 -1
  62. package/dist/overlay/menu/menu.d.ts.map +1 -1
  63. package/dist/overlay/menu/menu.js +2 -2
  64. package/dist/overlay/menu/menu.js.map +1 -1
  65. package/dist/overlay/popper/base/base_popper.d.ts +11 -0
  66. package/dist/overlay/popper/base/base_popper.d.ts.map +1 -0
  67. package/dist/overlay/popper/base/base_popper.js +27 -0
  68. package/dist/overlay/popper/base/base_popper.js.map +1 -0
  69. package/dist/overlay/popper/base/dismissal_decorator.d.ts +16 -0
  70. package/dist/overlay/popper/base/dismissal_decorator.d.ts.map +1 -0
  71. package/dist/overlay/popper/base/dismissal_decorator.js +69 -0
  72. package/dist/overlay/popper/base/dismissal_decorator.js.map +1 -0
  73. package/dist/overlay/popper/context_popper.d.ts +11 -0
  74. package/dist/overlay/popper/context_popper.d.ts.map +1 -0
  75. package/dist/overlay/popper/context_popper.js +33 -0
  76. package/dist/overlay/popper/context_popper.js.map +1 -0
  77. package/dist/overlay/popper/element_popper.d.ts +7 -0
  78. package/dist/overlay/popper/element_popper.d.ts.map +1 -0
  79. package/dist/overlay/popper/element_popper.js +33 -0
  80. package/dist/overlay/popper/element_popper.js.map +1 -0
  81. package/dist/overlay/popper/hooks/use_context_trigger.d.ts +7 -0
  82. package/dist/overlay/popper/hooks/use_context_trigger.d.ts.map +1 -0
  83. package/dist/overlay/popper/hooks/use_context_trigger.js +31 -0
  84. package/dist/overlay/popper/hooks/use_context_trigger.js.map +1 -0
  85. package/dist/overlay/popper/hooks/use_hover_trigger.d.ts +6 -0
  86. package/dist/overlay/popper/hooks/use_hover_trigger.d.ts.map +1 -0
  87. package/dist/overlay/popper/hooks/use_hover_trigger.js +17 -0
  88. package/dist/overlay/popper/hooks/use_hover_trigger.js.map +1 -0
  89. package/dist/overlay/popper/hooks/use_restore_focus.d.ts +2 -0
  90. package/dist/overlay/popper/hooks/use_restore_focus.d.ts.map +1 -0
  91. package/dist/overlay/popper/hooks/use_restore_focus.js +18 -0
  92. package/dist/overlay/popper/hooks/use_restore_focus.js.map +1 -0
  93. package/dist/overlay/popper/legacy/popper.d.ts.map +1 -0
  94. package/dist/overlay/popper/{popper.js → legacy/popper.js} +6 -6
  95. package/dist/overlay/popper/legacy/popper.js.map +1 -0
  96. package/dist/overlay/popper/preview_popper.d.ts +7 -0
  97. package/dist/overlay/popper/preview_popper.d.ts.map +1 -0
  98. package/dist/overlay/popper/preview_popper.js +46 -0
  99. package/dist/overlay/popper/preview_popper.js.map +1 -0
  100. package/dist/overlay/tethered/element_tethered.d.ts +8 -0
  101. package/dist/overlay/tethered/element_tethered.d.ts.map +1 -0
  102. package/dist/overlay/tethered/element_tethered.js +33 -0
  103. package/dist/overlay/tethered/element_tethered.js.map +1 -0
  104. package/dist/overlay/tethered/hooks/calculate_position.d.ts +19 -0
  105. package/dist/overlay/tethered/hooks/calculate_position.d.ts.map +1 -0
  106. package/dist/overlay/tethered/hooks/calculate_position.js +43 -0
  107. package/dist/overlay/tethered/hooks/calculate_position.js.map +1 -0
  108. package/dist/overlay/tethered/hooks/useTether.d.ts +19 -0
  109. package/dist/overlay/tethered/hooks/useTether.d.ts.map +1 -0
  110. package/dist/overlay/tethered/hooks/useTether.js +61 -0
  111. package/dist/overlay/tethered/hooks/useTether.js.map +1 -0
  112. package/dist/overlay/tethered/tethered.d.ts +20 -0
  113. package/dist/overlay/tethered/tethered.d.ts.map +1 -0
  114. package/dist/overlay/tethered/tethered.js +59 -0
  115. package/dist/overlay/tethered/tethered.js.map +1 -0
  116. package/dist/overlay/tethered/types.d.ts +3 -0
  117. package/dist/overlay/tethered/types.d.ts.map +1 -0
  118. package/dist/overlay/tethered/types.js +2 -0
  119. package/dist/overlay/tethered/types.js.map +1 -0
  120. package/dist/popper.css +1 -1
  121. package/dist/scaffold.css +1 -0
  122. package/dist/stacks/box/box.d.ts +1 -1
  123. package/dist/stacks/box/box.d.ts.map +1 -1
  124. package/dist/stacks/box/box.js +1 -1
  125. package/dist/stacks/box/box.js.map +1 -1
  126. package/dist/stacks/h_collapsible_box.js +1 -1
  127. package/dist/stacks/v_collapsible_box.js +1 -1
  128. package/dist/surfaces/card/card.d.ts +2 -2
  129. package/dist/surfaces/card/card.d.ts.map +1 -1
  130. package/dist/surfaces/card/card.js +7 -7
  131. package/dist/surfaces/card/card.js.map +1 -1
  132. package/dist/surfaces/index.d.ts +4 -2
  133. package/dist/surfaces/index.d.ts.map +1 -1
  134. package/dist/surfaces/index.js +26 -22
  135. package/dist/surfaces/index.js.map +1 -1
  136. package/dist/surfaces/modal/modal.d.ts +4 -3
  137. package/dist/surfaces/modal/modal.d.ts.map +1 -1
  138. package/dist/surfaces/modal/modal.js +12 -11
  139. package/dist/surfaces/modal/modal.js.map +1 -1
  140. package/dist/surfaces/panel/h_panel.js +23 -24
  141. package/dist/surfaces/panel/h_panel.js.map +1 -1
  142. package/dist/surfaces/panel/v_panel.d.ts +3 -7
  143. package/dist/surfaces/panel/v_panel.d.ts.map +1 -1
  144. package/dist/surfaces/panel/v_panel.js +12 -54
  145. package/dist/surfaces/panel/v_panel.js.map +1 -1
  146. package/dist/surfaces/pop_confirm/pop_confirm.d.ts +5 -0
  147. package/dist/surfaces/pop_confirm/pop_confirm.d.ts.map +1 -0
  148. package/dist/surfaces/pop_confirm/pop_confirm.js +37 -0
  149. package/dist/surfaces/pop_confirm/pop_confirm.js.map +1 -0
  150. package/dist/surfaces/popconfirm/pop_confirm.d.ts +5 -0
  151. package/dist/surfaces/popconfirm/pop_confirm.d.ts.map +1 -0
  152. package/dist/surfaces/popconfirm/pop_confirm.js +13 -0
  153. package/dist/surfaces/popconfirm/pop_confirm.js.map +1 -0
  154. package/dist/surfaces/popover/popover.d.ts +1 -1
  155. package/dist/surfaces/popover/popover.d.ts.map +1 -1
  156. package/dist/surfaces/popover/popover.js +1 -1
  157. package/dist/surfaces/popover/popover.js.map +1 -1
  158. package/dist/surfaces/tooltip/tooltip.d.ts +10 -0
  159. package/dist/surfaces/tooltip/tooltip.d.ts.map +1 -0
  160. package/dist/surfaces/tooltip/tooltip.js +38 -0
  161. package/dist/surfaces/tooltip/tooltip.js.map +1 -0
  162. package/dist/surfaces/window/window.d.ts +4 -3
  163. package/dist/surfaces/window/window.d.ts.map +1 -1
  164. package/dist/surfaces/window/window.js +18 -6
  165. package/dist/surfaces/window/window.js.map +1 -1
  166. package/dist/tethered.css +1 -0
  167. package/dist/themes/themes/ergo/ergo_theme.js +166 -158
  168. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  169. package/dist/tooltip.css +1 -1
  170. package/dist/typography/title/title.d.ts +2 -1
  171. package/dist/typography/title/title.d.ts.map +1 -1
  172. package/dist/typography/title/title.js +23 -22
  173. package/dist/typography/title/title.js.map +1 -1
  174. package/dist/utility_bar.css +1 -1
  175. package/dist/utils/click_away_listener.d.ts +1 -0
  176. package/dist/utils/click_away_listener.d.ts.map +1 -1
  177. package/dist/utils/click_away_listener.js +2 -1
  178. package/dist/utils/click_away_listener.js.map +1 -1
  179. package/dist/utils/dnd/context.d.ts +4 -0
  180. package/dist/utils/dnd/context.d.ts.map +1 -0
  181. package/dist/utils/dnd/context.js +20 -0
  182. package/dist/utils/dnd/context.js.map +1 -0
  183. package/dist/utils/dnd/draggable/draggable.d.ts +7 -0
  184. package/dist/utils/dnd/draggable/draggable.d.ts.map +1 -0
  185. package/dist/utils/dnd/draggable/draggable.js +27 -0
  186. package/dist/utils/dnd/draggable/draggable.js.map +1 -0
  187. package/dist/utils/dnd/handle.d.ts +6 -0
  188. package/dist/utils/dnd/handle.d.ts.map +1 -0
  189. package/dist/utils/dnd/handle.js +22 -0
  190. package/dist/utils/dnd/handle.js.map +1 -0
  191. package/dist/utils/dnd/hooks/use_drag_container.d.ts +7 -0
  192. package/dist/utils/dnd/hooks/use_drag_container.d.ts.map +1 -0
  193. package/dist/utils/dnd/hooks/use_drag_container.js +30 -0
  194. package/dist/utils/dnd/hooks/use_drag_container.js.map +1 -0
  195. package/dist/utils/{hooks → dnd/hooks}/use_draggable.d.ts +3 -3
  196. package/dist/utils/dnd/hooks/use_draggable.d.ts.map +1 -0
  197. package/dist/utils/dnd/hooks/use_draggable.js +41 -0
  198. package/dist/utils/dnd/hooks/use_draggable.js.map +1 -0
  199. package/dist/utils/dnd/types.d.ts +10 -0
  200. package/dist/utils/dnd/types.d.ts.map +1 -0
  201. package/dist/utils/dnd/types.js +2 -0
  202. package/dist/utils/dnd/types.js.map +1 -0
  203. package/dist/utils/index.d.ts +6 -5
  204. package/dist/utils/index.d.ts.map +1 -1
  205. package/dist/utils/index.js +26 -23
  206. package/dist/utils/index.js.map +1 -1
  207. package/dist/utils/mouse_leave_region.d.ts +8 -0
  208. package/dist/utils/mouse_leave_region.d.ts.map +1 -0
  209. package/dist/utils/mouse_leave_region.js +26 -0
  210. package/dist/utils/mouse_leave_region.js.map +1 -0
  211. package/dist/utils/types/dimensions.d.ts +11 -1
  212. package/dist/utils/types/dimensions.d.ts.map +1 -1
  213. package/package.json +9 -3
  214. package/src/inputs/color_input/color_input.tsx +1 -1
  215. package/src/inputs/date_picker/date_picker_input.tsx +1 -1
  216. package/src/inputs/date_picker/date_picker_year_input.tsx +1 -1
  217. package/src/inputs/phone_number_input/phone_number_input.tsx +8 -0
  218. package/src/inputs/suggestions/suggestion_list.tsx +1 -1
  219. package/src/inputs/textarea/textarea.tsx +2 -2
  220. package/src/layouts/header/header.tsx +0 -1
  221. package/src/layouts/index.ts +7 -5
  222. package/src/layouts/scaffold/scaffold.module.css +5 -0
  223. package/src/layouts/scaffold/scaffold.tsx +60 -0
  224. package/src/layouts/utility_bar/utility_bar.module.css +0 -3
  225. package/src/overlay/frame/frame.module.css +5 -0
  226. package/src/overlay/frame/frame.stories.tsx +40 -0
  227. package/src/overlay/frame/frame.tsx +50 -0
  228. package/src/overlay/frame/frame_stories.module.css +14 -0
  229. package/src/overlay/index.ts +30 -2
  230. package/src/overlay/menu/menu.tsx +1 -1
  231. package/src/overlay/popper/__stories__/base_args.ts +75 -0
  232. package/src/overlay/popper/__stories__/context_popper.stories.tsx +77 -0
  233. package/src/overlay/popper/__stories__/element_popper.stories.tsx +80 -0
  234. package/src/overlay/popper/__stories__/preview_popper.stories.tsx +73 -0
  235. package/src/overlay/popper/base/base_popper.tsx +55 -0
  236. package/src/overlay/popper/base/dismissal_decorator.tsx +80 -0
  237. package/src/overlay/popper/context_popper.tsx +43 -0
  238. package/src/overlay/popper/element_popper.tsx +42 -0
  239. package/src/overlay/popper/hooks/use_context_trigger.ts +50 -0
  240. package/src/overlay/popper/hooks/use_hover_trigger.ts +24 -0
  241. package/src/overlay/popper/hooks/use_restore_focus.ts +16 -0
  242. package/src/overlay/popper/{popper.stories.tsx → legacy/popper.stories.tsx} +11 -5
  243. package/src/overlay/popper/{popper.tsx → legacy/popper.tsx} +3 -2
  244. package/src/overlay/popper/preview_popper.tsx +54 -0
  245. package/src/overlay/tethered/__stories__/element/element_tethered.stories.tsx +57 -0
  246. package/src/overlay/tethered/__stories__/element/element_tethered_stories.module.css +14 -0
  247. package/src/overlay/tethered/__stories__/shared/base_story_config.ts +52 -0
  248. package/src/overlay/tethered/__stories__/shared/components/sb_point.module.css +20 -0
  249. package/src/overlay/tethered/__stories__/shared/components/sb_point.tsx +34 -0
  250. package/src/overlay/tethered/__stories__/shared/components/sb_reference_points.tsx +54 -0
  251. package/src/overlay/tethered/__stories__/tethered/tethered.stories.tsx +90 -0
  252. package/src/overlay/tethered/__stories__/tethered/tethered_stories.module.css +25 -0
  253. package/src/overlay/tethered/element_tethered.tsx +62 -0
  254. package/src/overlay/tethered/hooks/calculate_position.ts +110 -0
  255. package/src/overlay/tethered/hooks/useTether.ts +85 -0
  256. package/src/overlay/tethered/tethered.module.css +8 -0
  257. package/src/overlay/tethered/tethered.tsx +72 -0
  258. package/src/overlay/tethered/types.ts +2 -0
  259. package/src/stacks/box/box.tsx +8 -2
  260. package/src/stacks/h_stack.stories.tsx +2 -2
  261. package/src/stacks/v_stack.stories.tsx +2 -2
  262. package/src/surfaces/card/card.stories.tsx +64 -0
  263. package/src/surfaces/card/card.tsx +4 -4
  264. package/src/surfaces/card/card_stories.module.css +13 -0
  265. package/src/surfaces/index.ts +4 -2
  266. package/src/surfaces/modal/__stories__/modal.stories.tsx +31 -28
  267. package/src/surfaces/modal/modal.module.css +2 -2
  268. package/src/surfaces/modal/modal.tsx +16 -11
  269. package/src/surfaces/panel/__stories__/panel.stories.tsx +1 -1
  270. package/src/surfaces/panel/v_panel.tsx +8 -53
  271. package/src/surfaces/pop_confirm/pop_confirm.stories.tsx +70 -0
  272. package/src/surfaces/pop_confirm/pop_confirm.tsx +30 -0
  273. package/src/surfaces/popconfirm/pop_confirm.tsx +18 -0
  274. package/src/surfaces/popover/popover.tsx +1 -1
  275. package/src/surfaces/tooltip/tooltip.stories.tsx +54 -0
  276. package/src/surfaces/tooltip/tooltip.tsx +59 -0
  277. package/src/surfaces/window/window.stories.tsx +51 -4
  278. package/src/surfaces/window/window.tsx +19 -7
  279. package/src/themes/themes/ergo/__stories__/components/tone_picker/sb_tone_picker.tsx +7 -9
  280. package/src/themes/themes/ergo/__stories__/material.stories.tsx +2 -6
  281. package/src/themes/themes/ergo/__stories__/sb_materials.module.css +29 -21
  282. package/src/themes/themes/ergo/ergo_theme.css +166 -158
  283. package/src/typography/title/title.tsx +22 -18
  284. package/src/utils/click_away_listener.tsx +1 -1
  285. package/src/utils/dnd/__stories__/draggable.stories.tsx +48 -0
  286. package/src/utils/dnd/__stories__/draggable_stories.module.css +21 -0
  287. package/src/utils/{__stories__ → dnd/__stories__}/use_draggable.stories.tsx +15 -10
  288. package/src/utils/dnd/context.ts +24 -0
  289. package/src/utils/dnd/draggable/draggable.module.css +8 -0
  290. package/src/utils/dnd/draggable/draggable.tsx +42 -0
  291. package/src/utils/dnd/handle.tsx +32 -0
  292. package/src/utils/dnd/hooks/use_drag_container.ts +42 -0
  293. package/src/utils/{hooks → dnd/hooks}/use_draggable.ts +23 -17
  294. package/src/utils/dnd/types.ts +6 -0
  295. package/src/utils/index.ts +7 -5
  296. package/src/utils/mouse_leave_region.tsx +38 -0
  297. package/src/utils/types/dimensions.ts +13 -1
  298. package/tsconfig.json +3 -0
  299. package/dist/overlay/popper/popper.d.ts.map +0 -1
  300. package/dist/overlay/popper/popper.js.map +0 -1
  301. package/dist/overlay/tooltip/tooltip.d.ts +0 -7
  302. package/dist/overlay/tooltip/tooltip.d.ts.map +0 -1
  303. package/dist/overlay/tooltip/tooltip.js +0 -20
  304. package/dist/overlay/tooltip/tooltip.js.map +0 -1
  305. package/dist/panel.module-DwGKncon.js +0 -5
  306. package/dist/panel.module-DwGKncon.js.map +0 -1
  307. package/dist/title.module-B16de2jd.js +0 -5
  308. package/dist/title.module-B16de2jd.js.map +0 -1
  309. package/dist/utils/hooks/use_draggable.d.ts.map +0 -1
  310. package/dist/utils/hooks/use_draggable.js +0 -30
  311. package/dist/utils/hooks/use_draggable.js.map +0 -1
  312. package/src/overlay/tooltip/tooltip.stories.tsx +0 -22
  313. package/src/overlay/tooltip/tooltip.tsx +0 -24
  314. /package/dist/{panel.css → h_panel.css} +0 -0
  315. /package/dist/overlay/popper/{popper.d.ts → legacy/popper.d.ts} +0 -0
  316. /package/src/overlay/popper/{popper.module.css → legacy/popper.module.css} +0 -0
  317. /package/src/{overlay → surfaces}/tooltip/tooltip.module.css +0 -0
@@ -0,0 +1,33 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { forwardRef as f, useState as w, useLayoutEffect as m } from "react";
3
+ import { Tethered as h } from "./tethered.js";
4
+ function v(n) {
5
+ if (!n) return null;
6
+ const e = n.getBoundingClientRect();
7
+ return {
8
+ position: { x: e.left, y: e.top },
9
+ dimensions: {
10
+ width: e.width,
11
+ height: e.height
12
+ }
13
+ };
14
+ }
15
+ const E = f(function({ anchorElement: e, children: i, ...s }, c) {
16
+ const [d, u] = w(null);
17
+ return m(() => {
18
+ const r = e.current;
19
+ if (!r) return;
20
+ const t = () => {
21
+ u(v(r));
22
+ };
23
+ t();
24
+ const o = new ResizeObserver(t);
25
+ return o.observe(r), window.addEventListener("scroll", t, !0), window.addEventListener("resize", t), () => {
26
+ o.disconnect(), window.removeEventListener("scroll", t, !0), window.removeEventListener("resize", t);
27
+ };
28
+ }, [e]), /* @__PURE__ */ l(h, { ref: c, anchor: d, ...s, children: i });
29
+ });
30
+ export {
31
+ E as ElementTethered
32
+ };
33
+ //# sourceMappingURL=element_tethered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element_tethered.js","sources":["../../../src/overlay/tethered/element_tethered.tsx"],"sourcesContent":["import { forwardRef, useLayoutEffect, useState, type PropsWithChildren } from 'react';\nimport { type Rectangle } from '../../utils/index.js';\nimport { Tethered, type TetheredProps } from './tethered.js';\n\nexport interface ElementTetheredProps extends Omit<TetheredProps, 'anchor'> {\n anchorElement: React.RefObject<HTMLElement>;\n}\n\nfunction getElementRect(element: HTMLElement | null): Rectangle | null {\n if (!element) return null;\n\n const clientRect = element.getBoundingClientRect();\n\n return {\n position: { x: clientRect.left, y: clientRect.top },\n dimensions: {\n width: clientRect.width,\n height: clientRect.height,\n },\n };\n}\n\nexport const ElementTethered = forwardRef<\n HTMLElement,\n PropsWithChildren<ElementTetheredProps>\n>(function ElementTether({ anchorElement, children, ...rest }, ref) {\n const [rectangle, setRectangle] = useState<Rectangle | null>(null);\n\n useLayoutEffect(() => {\n const element = anchorElement.current;\n if (!element) return;\n\n const update = () => {\n setRectangle(getElementRect(element));\n };\n\n update();\n\n // Track size/position changes of the anchor element via ResizeObserver\n const resizeObserver = new ResizeObserver(update);\n resizeObserver.observe(element);\n\n // Track scroll-induced position changes\n // TODO: might need to bypass react state here (setRectangle on scroll event) - to an OV or setting css variables/attributes directly\n // This is a slight lag - not a huge deal, but could be improved.\n window.addEventListener('scroll', update, true);\n // Track window resize-induced position changes\n window.addEventListener('resize', update);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('scroll', update, true);\n window.removeEventListener('resize', update);\n };\n }, [anchorElement]);\n\n return (\n <Tethered ref={ref} anchor={rectangle} {...rest}>\n {children}\n </Tethered>\n );\n});\n"],"names":["getElementRect","element","clientRect","ElementTethered","forwardRef","anchorElement","children","rest","ref","rectangle","setRectangle","useState","useLayoutEffect","update","resizeObserver","Tethered"],"mappings":";;;AAQA,SAASA,EAAeC,GAA+C;AACrE,MAAI,CAACA,EAAS,QAAO;AAErB,QAAMC,IAAaD,EAAQ,sBAAA;AAE3B,SAAO;AAAA,IACL,UAAU,EAAE,GAAGC,EAAW,MAAM,GAAGA,EAAW,IAAA;AAAA,IAC9C,YAAY;AAAA,MACV,OAAOA,EAAW;AAAA,MAClB,QAAQA,EAAW;AAAA,IAAA;AAAA,EACrB;AAEJ;AAEO,MAAMC,IAAkBC,EAG7B,SAAuB,EAAE,eAAAC,GAAe,UAAAC,GAAU,GAAGC,EAAA,GAAQC,GAAK;AAClE,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAA2B,IAAI;AAEjE,SAAAC,EAAgB,MAAM;AACpB,UAAMX,IAAUI,EAAc;AAC9B,QAAI,CAACJ,EAAS;AAEd,UAAMY,IAAS,MAAM;AACnB,MAAAH,EAAaV,EAAeC,CAAO,CAAC;AAAA,IACtC;AAEA,IAAAY,EAAA;AAGA,UAAMC,IAAiB,IAAI,eAAeD,CAAM;AAChD,WAAAC,EAAe,QAAQb,CAAO,GAK9B,OAAO,iBAAiB,UAAUY,GAAQ,EAAI,GAE9C,OAAO,iBAAiB,UAAUA,CAAM,GAEjC,MAAM;AACX,MAAAC,EAAe,WAAA,GACf,OAAO,oBAAoB,UAAUD,GAAQ,EAAI,GACjD,OAAO,oBAAoB,UAAUA,CAAM;AAAA,IAC7C;AAAA,EACF,GAAG,CAACR,CAAa,CAAC,qBAGfU,GAAA,EAAS,KAAAP,GAAU,QAAQC,GAAY,GAAGF,GACxC,UAAAD,GACH;AAEJ,CAAC;"}
@@ -0,0 +1,19 @@
1
+ import { HorizontalTether, VerticalTether } from '../types.js';
2
+ import { Rectangle, Dimensions } from '../../../utils/index.js';
3
+ export interface CalculateTetheredPositionParams {
4
+ anchor: Rectangle;
5
+ tether: Rectangle;
6
+ direction: 'ltr' | 'rtl';
7
+ verticalAnchor: VerticalTether;
8
+ verticalOrigin: VerticalTether;
9
+ horizontalAnchor: HorizontalTether;
10
+ horizontalOrigin: HorizontalTether;
11
+ verticalOffset: number;
12
+ horizontalOffset: number;
13
+ viewport: Dimensions;
14
+ }
15
+ export declare const calculateTetheredPosition: ({ anchor, tether, direction, verticalAnchor, verticalOrigin, horizontalAnchor, horizontalOrigin, verticalOffset, horizontalOffset, viewport, }: CalculateTetheredPositionParams) => {
16
+ top: number;
17
+ left: number;
18
+ };
19
+ //# sourceMappingURL=calculate_position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate_position.d.ts","sourceRoot":"","sources":["../../../../src/overlay/tethered/hooks/calculate_position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;CACtB;AAED,eAAO,MAAM,yBAAyB,GAAI,gJAWvC,+BAA+B;;;CAiFjC,CAAC"}
@@ -0,0 +1,43 @@
1
+ const k = ({
2
+ anchor: d,
3
+ tether: e,
4
+ direction: a,
5
+ verticalAnchor: f,
6
+ verticalOrigin: h,
7
+ horizontalAnchor: b,
8
+ horizontalOrigin: w,
9
+ verticalOffset: g,
10
+ horizontalOffset: n,
11
+ viewport: m
12
+ }) => {
13
+ const c = a === "rtl";
14
+ let i = d.position.y, s = d.position.x;
15
+ switch (f) {
16
+ case "top":
17
+ i += g;
18
+ break;
19
+ case "center":
20
+ i += d.dimensions.height / 2;
21
+ break;
22
+ case "bottom":
23
+ i += d.dimensions.height - g;
24
+ break;
25
+ }
26
+ switch (h) {
27
+ case "top":
28
+ break;
29
+ case "center":
30
+ i -= e.dimensions.height / 2;
31
+ break;
32
+ case "bottom":
33
+ i -= e.dimensions.height;
34
+ break;
35
+ }
36
+ b === "start" ? s += c ? d.dimensions.width + n : n : b === "center" ? s += d.dimensions.width / 2 : b === "end" && (s += c ? -n : d.dimensions.width + n);
37
+ let t = w;
38
+ return c && (w === "start" ? t = "end" : w === "end" && (t = "start")), t === "start" || (t === "center" ? s -= e.dimensions.width / 2 : t === "end" && (s -= e.dimensions.width)), s + e.dimensions.width > m.width && (s = m.width - e.dimensions.width), s < 0 && (s = 0), i + e.dimensions.height > m.height && (i = m.height - e.dimensions.height), i < 0 && (i = 0), { top: i, left: s };
39
+ };
40
+ export {
41
+ k as calculateTetheredPosition
42
+ };
43
+ //# sourceMappingURL=calculate_position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate_position.js","sources":["../../../../src/overlay/tethered/hooks/calculate_position.ts"],"sourcesContent":["import type { HorizontalTether, VerticalTether } from '../types.js';\nimport type { Rectangle } from '../../../utils/index.js';\nimport type { Dimensions } from '../../../utils/index.js';\n\nexport interface CalculateTetheredPositionParams {\n anchor: Rectangle;\n tether: Rectangle;\n direction: 'ltr' | 'rtl';\n verticalAnchor: VerticalTether;\n verticalOrigin: VerticalTether;\n horizontalAnchor: HorizontalTether;\n horizontalOrigin: HorizontalTether;\n verticalOffset: number;\n horizontalOffset: number;\n viewport: Dimensions;\n}\n\nexport const calculateTetheredPosition = ({\n anchor,\n tether,\n direction,\n verticalAnchor,\n verticalOrigin,\n horizontalAnchor,\n horizontalOrigin,\n verticalOffset,\n horizontalOffset,\n viewport,\n}: CalculateTetheredPositionParams) => {\n const isRtl = direction === 'rtl';\n\n let top = anchor.position.y;\n let left = anchor.position.x;\n\n // Calculate vertical position\n switch (verticalAnchor) {\n case 'top':\n top += verticalOffset;\n break;\n case 'center':\n top += anchor.dimensions.height / 2;\n break;\n case 'bottom':\n top += anchor.dimensions.height - verticalOffset;\n break;\n }\n\n switch (verticalOrigin) {\n case 'top':\n break;\n case 'center':\n top -= tether.dimensions.height / 2;\n break;\n case 'bottom':\n top -= tether.dimensions.height;\n break;\n }\n\n // Calculate horizontal position with direction sensitivity\n if (horizontalAnchor === 'start') {\n left += isRtl ? anchor.dimensions.width + horizontalOffset : horizontalOffset;\n } else if (horizontalAnchor === 'center') {\n left += anchor.dimensions.width / 2;\n } else if (horizontalAnchor === 'end') {\n left += isRtl ? -horizontalOffset : anchor.dimensions.width + horizontalOffset;\n }\n\n // Adjust the origin based on RTL direction\n let adjustedHorizontalOrigin = horizontalOrigin;\n if (isRtl) {\n if (horizontalOrigin === 'start') {\n adjustedHorizontalOrigin = 'end';\n } else if (horizontalOrigin === 'end') {\n adjustedHorizontalOrigin = 'start';\n }\n }\n\n // Apply adjusted origin to the position calculation\n if (adjustedHorizontalOrigin === 'start') {\n // No adjustment needed\n } else if (adjustedHorizontalOrigin === 'center') {\n left -= tether.dimensions.width / 2;\n } else if (adjustedHorizontalOrigin === 'end') {\n left -= tether.dimensions.width;\n }\n\n // Ensure the popover stays within the viewport\n // Prevent overflow to the right\n if (left + tether.dimensions.width > viewport.width) {\n left = viewport.width - tether.dimensions.width;\n }\n\n // Prevent overflow to the left\n if (left < 0) {\n left = 0;\n }\n\n // Prevent overflow to the bottom\n // FIXME: doesn't account for padding.\n if (top + tether.dimensions.height > viewport.height) {\n top = viewport.height - tether.dimensions.height;\n }\n\n // Prevent overflow to the top\n if (top < 0) {\n top = 0;\n }\n\n return { top, left };\n};\n"],"names":["calculateTetheredPosition","anchor","tether","direction","verticalAnchor","verticalOrigin","horizontalAnchor","horizontalOrigin","verticalOffset","horizontalOffset","viewport","isRtl","top","left","adjustedHorizontalOrigin"],"mappings":"AAiBO,MAAMA,IAA4B,CAAC;AAAA,EACxC,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAC;AACF,MAAuC;AACrC,QAAMC,IAAQR,MAAc;AAE5B,MAAIS,IAAMX,EAAO,SAAS,GACtBY,IAAOZ,EAAO,SAAS;AAG3B,UAAQG,GAAA;AAAA,IACN,KAAK;AACH,MAAAQ,KAAOJ;AACP;AAAA,IACF,KAAK;AACH,MAAAI,KAAOX,EAAO,WAAW,SAAS;AAClC;AAAA,IACF,KAAK;AACH,MAAAW,KAAOX,EAAO,WAAW,SAASO;AAClC;AAAA,EAAA;AAGJ,UAAQH,GAAA;AAAA,IACN,KAAK;AACH;AAAA,IACF,KAAK;AACH,MAAAO,KAAOV,EAAO,WAAW,SAAS;AAClC;AAAA,IACF,KAAK;AACH,MAAAU,KAAOV,EAAO,WAAW;AACzB;AAAA,EAAA;AAIJ,EAAII,MAAqB,UACvBO,KAAQF,IAAQV,EAAO,WAAW,QAAQQ,IAAmBA,IACpDH,MAAqB,WAC9BO,KAAQZ,EAAO,WAAW,QAAQ,IACzBK,MAAqB,UAC9BO,KAAQF,IAAQ,CAACF,IAAmBR,EAAO,WAAW,QAAQQ;AAIhE,MAAIK,IAA2BP;AAC/B,SAAII,MACEJ,MAAqB,UACvBO,IAA2B,QAClBP,MAAqB,UAC9BO,IAA2B,WAK3BA,MAA6B,YAEtBA,MAA6B,WACtCD,KAAQX,EAAO,WAAW,QAAQ,IACzBY,MAA6B,UACtCD,KAAQX,EAAO,WAAW,SAKxBW,IAAOX,EAAO,WAAW,QAAQQ,EAAS,UAC5CG,IAAOH,EAAS,QAAQR,EAAO,WAAW,QAIxCW,IAAO,MACTA,IAAO,IAKLD,IAAMV,EAAO,WAAW,SAASQ,EAAS,WAC5CE,IAAMF,EAAS,SAASR,EAAO,WAAW,SAIxCU,IAAM,MACRA,IAAM,IAGD,EAAE,KAAAA,GAAK,MAAAC,EAAA;AAChB;"}
@@ -0,0 +1,19 @@
1
+ import { HorizontalTether, VerticalTether } from '../types.js';
2
+ import { Rectangle } from '../../../utils/index.js';
3
+ export interface UseTetherParams {
4
+ anchor: Rectangle | null;
5
+ verticalAnchor?: VerticalTether;
6
+ verticalOrigin?: VerticalTether;
7
+ horizontalOrigin?: HorizontalTether;
8
+ horizontalAnchor?: HorizontalTether;
9
+ verticalOffset?: number;
10
+ horizontalOffset?: number;
11
+ }
12
+ export declare function useTether({ anchor, verticalAnchor, verticalOrigin, horizontalAnchor, horizontalOrigin, verticalOffset, horizontalOffset, }: UseTetherParams): {
13
+ position: {
14
+ top: number;
15
+ left: number;
16
+ };
17
+ tetherRef: import('react').RefObject<HTMLDivElement>;
18
+ };
19
+ //# sourceMappingURL=useTether.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTether.d.ts","sourceRoot":"","sources":["../../../../src/overlay/tethered/hooks/useTether.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,cAAyB,EACzB,cAAsB,EACtB,gBAA0B,EAC1B,gBAA0B,EAC1B,cAAkB,EAClB,gBAAoB,GACrB,EAAE,eAAe;;;;;;EA6DjB"}
@@ -0,0 +1,61 @@
1
+ import { useState as h, useRef as m, useCallback as l, useLayoutEffect as g } from "react";
2
+ import { calculateTetheredPosition as y } from "./calculate_position.js";
3
+ function E({
4
+ anchor: n,
5
+ verticalAnchor: r = "bottom",
6
+ verticalOrigin: s = "top",
7
+ horizontalAnchor: u = "start",
8
+ horizontalOrigin: d = "start",
9
+ verticalOffset: p = 0,
10
+ horizontalOffset: w = 0
11
+ }) {
12
+ const [o, c] = h({ top: 0, left: 0 }), i = m(null), f = l(() => {
13
+ if (!n || !i.current) return;
14
+ const t = i.current.getBoundingClientRect(), e = getComputedStyle(i.current);
15
+ return y({
16
+ anchor: n,
17
+ tether: {
18
+ dimensions: {
19
+ width: t.width,
20
+ height: t.height
21
+ },
22
+ position: {
23
+ x: t.left,
24
+ y: t.top
25
+ }
26
+ },
27
+ direction: e.direction,
28
+ verticalAnchor: r,
29
+ verticalOrigin: s,
30
+ horizontalAnchor: u,
31
+ horizontalOrigin: d,
32
+ verticalOffset: p,
33
+ horizontalOffset: w,
34
+ viewport: {
35
+ width: window.innerWidth,
36
+ height: window.innerHeight
37
+ }
38
+ });
39
+ }, [
40
+ n,
41
+ r,
42
+ s,
43
+ u,
44
+ d,
45
+ p,
46
+ w
47
+ ]);
48
+ return g(() => {
49
+ const t = () => {
50
+ const e = f();
51
+ e && (o.top !== e.top || o.left !== e.left) && c(e);
52
+ };
53
+ return t(), window.addEventListener("resize", t), () => {
54
+ window.removeEventListener("resize", t);
55
+ };
56
+ }), { position: o, tetherRef: i };
57
+ }
58
+ export {
59
+ E as useTether
60
+ };
61
+ //# sourceMappingURL=useTether.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTether.js","sources":["../../../../src/overlay/tethered/hooks/useTether.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport type { HorizontalTether, VerticalTether } from '../types.js';\nimport { type Rectangle } from '../../../utils/index.js';\nimport { calculateTetheredPosition } from './calculate_position.js';\n\nexport interface UseTetherParams {\n anchor: Rectangle | null;\n verticalAnchor?: VerticalTether;\n verticalOrigin?: VerticalTether;\n horizontalOrigin?: HorizontalTether;\n horizontalAnchor?: HorizontalTether;\n verticalOffset?: number;\n horizontalOffset?: number;\n}\n\nexport function useTether({\n anchor,\n verticalAnchor = 'bottom',\n verticalOrigin = 'top',\n horizontalAnchor = 'start',\n horizontalOrigin = 'start',\n verticalOffset = 0,\n horizontalOffset = 0,\n}: UseTetherParams) {\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const tetherRef = useRef<HTMLDivElement>(null);\n\n const getPosition = useCallback(() => {\n if (!anchor || !tetherRef.current) return;\n\n const tether = tetherRef.current.getBoundingClientRect();\n const computedStyle = getComputedStyle(tetherRef.current);\n\n return calculateTetheredPosition({\n anchor: anchor,\n tether: {\n dimensions: {\n width: tether.width,\n height: tether.height,\n },\n position: {\n x: tether.left,\n y: tether.top,\n },\n },\n direction: computedStyle.direction as 'ltr' | 'rtl',\n verticalAnchor: verticalAnchor,\n verticalOrigin: verticalOrigin,\n horizontalAnchor: horizontalAnchor,\n horizontalOrigin: horizontalOrigin,\n verticalOffset: verticalOffset,\n horizontalOffset: horizontalOffset,\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n });\n }, [\n anchor,\n verticalAnchor,\n verticalOrigin,\n horizontalAnchor,\n horizontalOrigin,\n verticalOffset,\n horizontalOffset,\n ]);\n\n // Update the position when the window is resized\n useLayoutEffect(() => {\n const update = () => {\n const newPosition = getPosition();\n if (!newPosition) return;\n if (position.top !== newPosition.top || position.left !== newPosition.left) {\n setPosition(newPosition);\n }\n };\n update();\n window.addEventListener('resize', update);\n return () => {\n window.removeEventListener('resize', update);\n };\n });\n\n return { position, tetherRef };\n}\n"],"names":["useTether","anchor","verticalAnchor","verticalOrigin","horizontalAnchor","horizontalOrigin","verticalOffset","horizontalOffset","position","setPosition","useState","tetherRef","useRef","getPosition","useCallback","tether","computedStyle","calculateTetheredPosition","useLayoutEffect","update","newPosition"],"mappings":";;AAeO,SAASA,EAAU;AAAA,EACxB,QAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AAAA,EACnB,kBAAAC,IAAmB;AAAA,EACnB,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AACrB,GAAoB;AAClB,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAE,KAAK,GAAG,MAAM,GAAG,GACtDC,IAAYC,EAAuB,IAAI,GAEvCC,IAAcC,EAAY,MAAM;AACpC,QAAI,CAACb,KAAU,CAACU,EAAU,QAAS;AAEnC,UAAMI,IAASJ,EAAU,QAAQ,sBAAA,GAC3BK,IAAgB,iBAAiBL,EAAU,OAAO;AAExD,WAAOM,EAA0B;AAAA,MAC/B,QAAAhB;AAAA,MACA,QAAQ;AAAA,QACN,YAAY;AAAA,UACV,OAAOc,EAAO;AAAA,UACd,QAAQA,EAAO;AAAA,QAAA;AAAA,QAEjB,UAAU;AAAA,UACR,GAAGA,EAAO;AAAA,UACV,GAAGA,EAAO;AAAA,QAAA;AAAA,MACZ;AAAA,MAEF,WAAWC,EAAc;AAAA,MACzB,gBAAAd;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,UAAU;AAAA,QACR,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,MAAA;AAAA,IACjB,CACD;AAAA,EACH,GAAG;AAAA,IACDN;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD;AAGD,SAAAW,EAAgB,MAAM;AACpB,UAAMC,IAAS,MAAM;AACnB,YAAMC,IAAcP,EAAA;AACpB,MAAKO,MACDZ,EAAS,QAAQY,EAAY,OAAOZ,EAAS,SAASY,EAAY,SACpEX,EAAYW,CAAW;AAAA,IAE3B;AACA,WAAAD,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAM,GACjC,MAAM;AACX,aAAO,oBAAoB,UAAUA,CAAM;AAAA,IAC7C;AAAA,EACF,CAAC,GAEM,EAAE,UAAAX,GAAU,WAAAG,EAAA;AACrB;"}
@@ -0,0 +1,20 @@
1
+ import { HorizontalTether, VerticalTether } from './types.js';
2
+ import { ZStackProps } from '../../stacks/index.js';
3
+ import { Rectangle } from '../../utils/index.js';
4
+ export interface BaseTetheredOwnProps {
5
+ verticalAnchor?: VerticalTether;
6
+ verticalOrigin?: VerticalTether;
7
+ horizontalOrigin?: HorizontalTether;
8
+ horizontalAnchor?: HorizontalTether;
9
+ verticalOffset?: number;
10
+ horizontalOffset?: number;
11
+ }
12
+ export interface TetheredOwnProp extends BaseTetheredOwnProps {
13
+ anchor: Rectangle | null;
14
+ }
15
+ export interface TetheredProps extends TetheredOwnProp, ZStackProps {
16
+ }
17
+ export declare const Tethered: import('react').ForwardRefExoticComponent<TetheredProps & {
18
+ children?: import('react').ReactNode | undefined;
19
+ } & import('react').RefAttributes<HTMLElement>>;
20
+ //# sourceMappingURL=tethered.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tethered.d.ts","sourceRoot":"","sources":["../../../src/overlay/tethered/tethered.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQlE,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B;AACD,MAAM,WAAW,aAAc,SAAQ,eAAe,EAAE,WAAW;CAAG;AAEtE,eAAO,MAAM,QAAQ;;+CA8CpB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { forwardRef as R } from "react";
3
+ import "../../stacks/box/box.js";
4
+ import "../../stacks/h_collapsible_box.js";
5
+ import "../../stacks/h_stack.js";
6
+ import "../../stacks/spacer.js";
7
+ import "../../stacks/v_collapsible_box.js";
8
+ import "../../stacks/v_stack.js";
9
+ import { ZStack as b } from "../../stacks/z_stack.js";
10
+ import "../../utils/click_away_listener.js";
11
+ import "../../utils/focus_redirect.js";
12
+ import "../../utils/scroll_away_listener.js";
13
+ import { useForkRef as k } from "../../utils/hooks/use_fork_ref.js";
14
+ import "../../utils/hooks/use_resize_observer.js";
15
+ import { useTether as T } from "./hooks/useTether.js";
16
+ import { clsx as y } from "clsx";
17
+ import { Portal as _ } from "../portal/portal.js";
18
+ import '../../tethered.css';const $ = "_tethered_44058d8", j = { tethered: $ }, I = R(
19
+ function({
20
+ anchor: r,
21
+ verticalAnchor: e = "bottom",
22
+ verticalOrigin: m = "top",
23
+ horizontalAnchor: p = "start",
24
+ horizontalOrigin: i = "start",
25
+ verticalOffset: s = 0,
26
+ horizontalOffset: f = 0,
27
+ children: c,
28
+ style: n,
29
+ className: d,
30
+ ...a
31
+ }, h) {
32
+ const { position: t, tetherRef: l } = T({
33
+ anchor: r,
34
+ verticalAnchor: e,
35
+ verticalOrigin: m,
36
+ horizontalAnchor: p,
37
+ horizontalOrigin: i,
38
+ verticalOffset: s,
39
+ horizontalOffset: f
40
+ }), u = k(h, l), x = {
41
+ "--tethered-top": `${t.top}px`,
42
+ "--tethered-left": `${t.left}px`
43
+ };
44
+ return /* @__PURE__ */ o(_, { children: /* @__PURE__ */ o(
45
+ b,
46
+ {
47
+ ref: u,
48
+ className: y(j.tethered, d),
49
+ style: { position: "absolute", ...x, ...n },
50
+ ...a,
51
+ children: c
52
+ }
53
+ ) });
54
+ }
55
+ );
56
+ export {
57
+ I as Tethered
58
+ };
59
+ //# sourceMappingURL=tethered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tethered.js","sources":["../../../src/overlay/tethered/tethered.tsx"],"sourcesContent":["import { forwardRef, type PropsWithChildren } from 'react';\nimport type { HorizontalTether, VerticalTether } from './types.js';\nimport { ZStack, type ZStackProps } from '../../stacks/index.js';\nimport { useForkRef, type Rectangle } from '../../utils/index.js';\nimport { useTether } from './hooks/useTether.js';\nimport { clsx } from 'clsx';\nimport { Portal } from '../portal/portal.js';\n\n// Styles\nimport styles from './tethered.module.css';\n\nexport interface BaseTetheredOwnProps {\n verticalAnchor?: VerticalTether;\n verticalOrigin?: VerticalTether;\n horizontalOrigin?: HorizontalTether;\n horizontalAnchor?: HorizontalTether;\n verticalOffset?: number;\n horizontalOffset?: number;\n}\n\nexport interface TetheredOwnProp extends BaseTetheredOwnProps {\n anchor: Rectangle | null;\n}\nexport interface TetheredProps extends TetheredOwnProp, ZStackProps {}\n\nexport const Tethered = forwardRef<HTMLElement, PropsWithChildren<TetheredProps>>(\n function Tethered(\n {\n anchor,\n verticalAnchor = 'bottom',\n verticalOrigin = 'top',\n horizontalAnchor = 'start',\n horizontalOrigin = 'start',\n verticalOffset = 0,\n horizontalOffset = 0,\n children,\n style,\n className,\n ...rest\n },\n ref\n ) {\n const { position, tetherRef } = useTether({\n anchor,\n verticalAnchor,\n verticalOrigin,\n horizontalAnchor,\n horizontalOrigin,\n verticalOffset,\n horizontalOffset,\n });\n const forkedRef = useForkRef(ref, tetherRef);\n\n const cssVariables = {\n '--tethered-top': `${position.top}px`,\n '--tethered-left': `${position.left}px`,\n };\n\n return (\n <Portal>\n <ZStack\n ref={forkedRef}\n className={clsx(styles.tethered, className)}\n style={{ position: 'absolute', ...cssVariables, ...style }}\n {...rest}\n >\n {children}\n </ZStack>\n </Portal>\n );\n }\n);\n"],"names":["Tethered","forwardRef","anchor","verticalAnchor","verticalOrigin","horizontalAnchor","horizontalOrigin","verticalOffset","horizontalOffset","children","style","className","rest","ref","position","tetherRef","useTether","forkedRef","useForkRef","cssVariables","Portal","jsx","ZStack","clsx","styles"],"mappings":";;;;;;;;;;;;;;;;;oDAyBaA,IAAWC;AAAA,EACtB,SACE;AAAA,IACE,QAAAC;AAAA,IACA,gBAAAC,IAAiB;AAAA,IACjB,gBAAAC,IAAiB;AAAA,IACjB,kBAAAC,IAAmB;AAAA,IACnB,kBAAAC,IAAmB;AAAA,IACnB,gBAAAC,IAAiB;AAAA,IACjB,kBAAAC,IAAmB;AAAA,IACnB,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,GACA;AACA,UAAM,EAAE,UAAAC,GAAU,WAAAC,EAAA,IAAcC,EAAU;AAAA,MACxC,QAAAd;AAAA,MACA,gBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,IAAA,CACD,GACKS,IAAYC,EAAWL,GAAKE,CAAS,GAErCI,IAAe;AAAA,MACnB,kBAAkB,GAAGL,EAAS,GAAG;AAAA,MACjC,mBAAmB,GAAGA,EAAS,IAAI;AAAA,IAAA;AAGrC,6BACGM,GAAA,EACC,UAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAKL;AAAA,QACL,WAAWM,EAAKC,EAAO,UAAUb,CAAS;AAAA,QAC1C,OAAO,EAAE,UAAU,YAAY,GAAGQ,GAAc,GAAGT,EAAA;AAAA,QAClD,GAAGE;AAAA,QAEH,UAAAH;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AACF;"}
@@ -0,0 +1,3 @@
1
+ export type VerticalTether = 'top' | 'center' | 'bottom';
2
+ export type HorizontalTether = 'start' | 'center' | 'end';
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/overlay/tethered/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/popper.css CHANGED
@@ -1 +1 @@
1
- ._popover_069b323{display:inline-block;position:absolute}._popover-veil_2f5f985{position:fixed;inset:0;background-color:#0000}
1
+ ._popover_fcfb66a{display:inline-block;position:absolute}._popover-veil_c56df66{position:fixed;inset:0;background-color:#0000}
@@ -0,0 +1 @@
1
+ ._scaffold-stack_8f97a6a{width:100%;height:100%;overflow:auto}
@@ -34,7 +34,7 @@ export interface BoxProps extends HTMLAttributes<HTMLElement> {
34
34
  horizontalHandleProps?: HandleProps;
35
35
  verticalHandleProps?: HandleProps;
36
36
  onWidthResize?: (width: number) => void;
37
- onHeightResize?: (width: number) => void;
37
+ onHeightResize?: (height: number) => void;
38
38
  onWidthResizeEnd?: (width: number) => void;
39
39
  onHeightResizeEnd?: (width: number) => void;
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../../src/stacks/box/box.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,cAAc,EAAU,MAAM,OAAO,CAAC;AAWrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,QAAS,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,WAAW,CAAC;IACpC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,GAAG,8EAsKd,CAAC"}
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../../src/stacks/box/box.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,cAAc,EAAU,MAAM,OAAO,CAAC;AAWrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,QAAS,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,WAAW,CAAC;IACpC,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,KAEV,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,MAAM,KAEX,IAAI,CAAC;IACV,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,GAAG,8EAsKd,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs as h, jsx as a } from "react/jsx-runtime";
2
- import "../../utils/focus_redirect.js";
3
2
  import "../../utils/click_away_listener.js";
3
+ import "../../utils/focus_redirect.js";
4
4
  import "../../utils/scroll_away_listener.js";
5
5
  import O, { useRef as oo } from "react";
6
6
  import { useForkRef as ro } from "../../utils/hooks/use_fork_ref.js";
@@ -1 +1 @@
1
- {"version":3,"file":"box.js","sources":["../../../src/stacks/box/box.tsx"],"sourcesContent":["import { useForkRef } from '../../utils/index.js';\nimport React, { CSSProperties, HTMLAttributes, useRef } from 'react';\nimport { LeftResizeHandle } from './left_resize_handle.js';\nimport { RightResizeHandle } from './right_resize_handle.js';\nimport { BottomResizeHandle } from './bottom_resize_handle.js';\nimport { EndResizeHandle } from './end_resize_handle.js';\nimport { StartResizeHandle } from './start_resize_handle.js';\nimport { TopResizeHandle } from './top_resize_handle.js';\nimport { clsx } from 'clsx';\nimport { isCustomSizeProp } from '../utils/isCustomSizeProp.js';\nimport { removeUndefinedProperties } from '../utils/remove_undefined_properties.js';\nimport styles from '../stack.module.css';\nimport { HandleProps } from './handle_props.js';\n\nexport interface BoxProps extends HTMLAttributes<HTMLElement> {\n as?: string;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n width?: 'default' | 'flex' | 'auto' | string | number;\n minWidth?: CSSProperties['minWidth'];\n maxWidth?: CSSProperties['maxWidth'];\n height?: 'default' | 'flex' | 'auto' | string | number;\n minHeight?: CSSProperties['minHeight'];\n maxHeight?: CSSProperties['maxHeight'];\n zIndex?: number;\n padding?: CSSProperties['padding'];\n paddingInline?: CSSProperties['paddingInline'];\n paddingBlock?: CSSProperties['paddingBlock'];\n margin?: CSSProperties['margin'];\n marginBlock?: CSSProperties['marginBlock'];\n marginInline?: CSSProperties['marginInline'];\n marginInlineStart?: CSSProperties['marginInlineStart'];\n marginInlineEnd?: CSSProperties['marginInlineEnd'];\n marginTop?: CSSProperties['marginTop'];\n marginBottom?: CSSProperties['marginBottom'];\n overflow?: React.CSSProperties['overflow'];\n overflowX?: React.CSSProperties['overflowX'];\n overflowY?: React.CSSProperties['overflowY'];\n enableResizeOnTop?: boolean;\n enableResizeOnEnd?: boolean;\n enableResizeOnBottom?: boolean;\n enableResizeOnStart?: boolean;\n enableResizeOnLeft?: boolean;\n enableResizeOnRight?: boolean;\n horizontalHandleProps?: HandleProps;\n verticalHandleProps?: HandleProps;\n onWidthResize?: (width: number) => void;\n onHeightResize?: (width: number) => void;\n onWidthResizeEnd?: (width: number) => void;\n onHeightResizeEnd?: (width: number) => void;\n}\n\nexport const Box = React.forwardRef<HTMLElement, BoxProps>(function Box(\n {\n style,\n className,\n as = 'div',\n children,\n width = 'default',\n minWidth,\n maxWidth,\n height = 'default',\n minHeight,\n maxHeight,\n zIndex,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginBlock,\n marginInline,\n marginInlineStart,\n marginInlineEnd,\n marginTop,\n marginBottom,\n overflow,\n overflowX,\n overflowY,\n enableResizeOnTop = false,\n enableResizeOnEnd = false,\n enableResizeOnBottom = false,\n enableResizeOnStart = false,\n enableResizeOnLeft = false,\n enableResizeOnRight = false,\n onWidthResize,\n onHeightResize,\n onWidthResizeEnd,\n onHeightResizeEnd,\n horizontalHandleProps,\n verticalHandleProps,\n ...otherProps\n }: BoxProps,\n ref\n) {\n const As = as as React.ElementType;\n const boxRef = useRef<HTMLElement | null>(null);\n const forkedRef = useForkRef(ref, boxRef);\n const hasHorizontalResize =\n enableResizeOnEnd || enableResizeOnStart || enableResizeOnLeft || enableResizeOnRight;\n const hasVerticalResize = enableResizeOnBottom || enableResizeOnTop;\n\n const cannotHorizontalFlex = hasHorizontalResize;\n const cannotVerticalFlex = hasVerticalResize;\n const warnHorizontalFlex = cannotHorizontalFlex && width === 'flex';\n const warnVerticalFlex = cannotVerticalFlex && height === 'flex';\n const isFlexing =\n !warnHorizontalFlex && !warnVerticalFlex && (width === 'flex' || height === 'flex');\n\n if (warnHorizontalFlex) {\n width = '100%';\n // biome-ignore lint/suspicious/noConsole: Need to warn the developer\n console.warn('You cannot have a resizable box and flex simultaneously');\n }\n\n if (warnVerticalFlex) {\n height = 'auto';\n // biome-ignore lint/suspicious/noConsole: Need to warn the developer\n console.warn('You cannot have a resizable box and flex simultaneously');\n }\n\n const propStyles = {\n width: !isCustomSizeProp(width) ? width : undefined,\n minWidth,\n maxWidth,\n height: !isCustomSizeProp(height) ? height : undefined,\n minHeight,\n maxHeight,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginBlock,\n marginInline,\n marginInlineStart,\n marginInlineEnd,\n marginTop,\n marginBottom,\n overflow,\n overflowX,\n overflowY,\n zIndex,\n };\n\n return (\n <As\n data-enabled-resize-on-start={String(enableResizeOnStart)}\n data-enabled-resize-on-end={String(enableResizeOnEnd)}\n data-enabled-resize-on-top={String(enableResizeOnTop)}\n data-enabled-resize-on-bottom={String(enableResizeOnBottom)}\n data_enabled-resize-on-left={String(enableResizeOnLeft)}\n data_enabled-resize-on-right={String(enableResizeOnRight)}\n data-height={height}\n data-width={width}\n ref={forkedRef}\n style={{\n ...removeUndefinedProperties(propStyles),\n ...style,\n }}\n className={clsx(\n styles['box'],\n className,\n isFlexing && 'stack-flex',\n isFlexing && styles['stack-flex'],\n 'box'\n )}\n {...otherProps}\n >\n {children}\n {enableResizeOnTop && (\n <TopResizeHandle\n onHeightResize={onHeightResize}\n onHeightResizeEnd={onHeightResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnBottom && (\n <BottomResizeHandle\n onHeightResize={onHeightResize}\n onHeightResizeEnd={onHeightResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n {enableResizeOnStart && (\n <StartResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnEnd && (\n <EndResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnLeft && (\n <LeftResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n {enableResizeOnRight && (\n <RightResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n </As>\n );\n});\n"],"names":["Box","React","style","className","as","children","width","minWidth","maxWidth","height","minHeight","maxHeight","zIndex","padding","paddingInline","paddingBlock","margin","marginBlock","marginInline","marginInlineStart","marginInlineEnd","marginTop","marginBottom","overflow","overflowX","overflowY","enableResizeOnTop","enableResizeOnEnd","enableResizeOnBottom","enableResizeOnStart","enableResizeOnLeft","enableResizeOnRight","onWidthResize","onHeightResize","onWidthResizeEnd","onHeightResizeEnd","horizontalHandleProps","verticalHandleProps","otherProps","ref","As","boxRef","useRef","forkedRef","useForkRef","hasHorizontalResize","hasVerticalResize","cannotHorizontalFlex","cannotVerticalFlex","warnHorizontalFlex","warnVerticalFlex","isFlexing","propStyles","isCustomSizeProp","jsxs","removeUndefinedProperties","clsx","styles","jsx","TopResizeHandle","BottomResizeHandle","StartResizeHandle","EndResizeHandle","LeftResizeHandle","RightResizeHandle"],"mappings":"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"}
1
+ {"version":3,"file":"box.js","sources":["../../../src/stacks/box/box.tsx"],"sourcesContent":["import { useForkRef } from '../../utils/index.js';\nimport React, { CSSProperties, HTMLAttributes, useRef } from 'react';\nimport { LeftResizeHandle } from './left_resize_handle.js';\nimport { RightResizeHandle } from './right_resize_handle.js';\nimport { BottomResizeHandle } from './bottom_resize_handle.js';\nimport { EndResizeHandle } from './end_resize_handle.js';\nimport { StartResizeHandle } from './start_resize_handle.js';\nimport { TopResizeHandle } from './top_resize_handle.js';\nimport { clsx } from 'clsx';\nimport { isCustomSizeProp } from '../utils/isCustomSizeProp.js';\nimport { removeUndefinedProperties } from '../utils/remove_undefined_properties.js';\nimport styles from '../stack.module.css';\nimport { HandleProps } from './handle_props.js';\n\nexport interface BoxProps extends HTMLAttributes<HTMLElement> {\n as?: string;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n width?: 'default' | 'flex' | 'auto' | string | number;\n minWidth?: CSSProperties['minWidth'];\n maxWidth?: CSSProperties['maxWidth'];\n height?: 'default' | 'flex' | 'auto' | string | number;\n minHeight?: CSSProperties['minHeight'];\n maxHeight?: CSSProperties['maxHeight'];\n zIndex?: number;\n padding?: CSSProperties['padding'];\n paddingInline?: CSSProperties['paddingInline'];\n paddingBlock?: CSSProperties['paddingBlock'];\n margin?: CSSProperties['margin'];\n marginBlock?: CSSProperties['marginBlock'];\n marginInline?: CSSProperties['marginInline'];\n marginInlineStart?: CSSProperties['marginInlineStart'];\n marginInlineEnd?: CSSProperties['marginInlineEnd'];\n marginTop?: CSSProperties['marginTop'];\n marginBottom?: CSSProperties['marginBottom'];\n overflow?: React.CSSProperties['overflow'];\n overflowX?: React.CSSProperties['overflowX'];\n overflowY?: React.CSSProperties['overflowY'];\n enableResizeOnTop?: boolean;\n enableResizeOnEnd?: boolean;\n enableResizeOnBottom?: boolean;\n enableResizeOnStart?: boolean;\n enableResizeOnLeft?: boolean;\n enableResizeOnRight?: boolean;\n horizontalHandleProps?: HandleProps;\n verticalHandleProps?: HandleProps;\n onWidthResize?: (\n width: number\n // origin: 'left' | 'right'\n ) => void;\n onHeightResize?: (\n height: number\n // origin: 'top' | 'bottom'\n ) => void;\n onWidthResizeEnd?: (width: number) => void;\n onHeightResizeEnd?: (width: number) => void;\n}\n\nexport const Box = React.forwardRef<HTMLElement, BoxProps>(function Box(\n {\n style,\n className,\n as = 'div',\n children,\n width = 'default',\n minWidth,\n maxWidth,\n height = 'default',\n minHeight,\n maxHeight,\n zIndex,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginBlock,\n marginInline,\n marginInlineStart,\n marginInlineEnd,\n marginTop,\n marginBottom,\n overflow,\n overflowX,\n overflowY,\n enableResizeOnTop = false,\n enableResizeOnEnd = false,\n enableResizeOnBottom = false,\n enableResizeOnStart = false,\n enableResizeOnLeft = false,\n enableResizeOnRight = false,\n onWidthResize,\n onHeightResize,\n onWidthResizeEnd,\n onHeightResizeEnd,\n horizontalHandleProps,\n verticalHandleProps,\n ...otherProps\n }: BoxProps,\n ref\n) {\n const As = as as React.ElementType;\n const boxRef = useRef<HTMLElement | null>(null);\n const forkedRef = useForkRef(ref, boxRef);\n const hasHorizontalResize =\n enableResizeOnEnd || enableResizeOnStart || enableResizeOnLeft || enableResizeOnRight;\n const hasVerticalResize = enableResizeOnBottom || enableResizeOnTop;\n\n const cannotHorizontalFlex = hasHorizontalResize;\n const cannotVerticalFlex = hasVerticalResize;\n const warnHorizontalFlex = cannotHorizontalFlex && width === 'flex';\n const warnVerticalFlex = cannotVerticalFlex && height === 'flex';\n const isFlexing =\n !warnHorizontalFlex && !warnVerticalFlex && (width === 'flex' || height === 'flex');\n\n if (warnHorizontalFlex) {\n width = '100%';\n // biome-ignore lint/suspicious/noConsole: Need to warn the developer\n console.warn('You cannot have a resizable box and flex simultaneously');\n }\n\n if (warnVerticalFlex) {\n height = 'auto';\n // biome-ignore lint/suspicious/noConsole: Need to warn the developer\n console.warn('You cannot have a resizable box and flex simultaneously');\n }\n\n const propStyles = {\n width: !isCustomSizeProp(width) ? width : undefined,\n minWidth,\n maxWidth,\n height: !isCustomSizeProp(height) ? height : undefined,\n minHeight,\n maxHeight,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginBlock,\n marginInline,\n marginInlineStart,\n marginInlineEnd,\n marginTop,\n marginBottom,\n overflow,\n overflowX,\n overflowY,\n zIndex,\n };\n\n return (\n <As\n data-enabled-resize-on-start={String(enableResizeOnStart)}\n data-enabled-resize-on-end={String(enableResizeOnEnd)}\n data-enabled-resize-on-top={String(enableResizeOnTop)}\n data-enabled-resize-on-bottom={String(enableResizeOnBottom)}\n data_enabled-resize-on-left={String(enableResizeOnLeft)}\n data_enabled-resize-on-right={String(enableResizeOnRight)}\n data-height={height}\n data-width={width}\n ref={forkedRef}\n style={{\n ...removeUndefinedProperties(propStyles),\n ...style,\n }}\n className={clsx(\n styles['box'],\n className,\n isFlexing && 'stack-flex',\n isFlexing && styles['stack-flex'],\n 'box'\n )}\n {...otherProps}\n >\n {children}\n {enableResizeOnTop && (\n <TopResizeHandle\n onHeightResize={onHeightResize}\n onHeightResizeEnd={onHeightResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnBottom && (\n <BottomResizeHandle\n onHeightResize={onHeightResize}\n onHeightResizeEnd={onHeightResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n {enableResizeOnStart && (\n <StartResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnEnd && (\n <EndResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={horizontalHandleProps}\n />\n )}\n {enableResizeOnLeft && (\n <LeftResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n {enableResizeOnRight && (\n <RightResizeHandle\n onWidthResize={onWidthResize}\n onWidthResizeEnd={onWidthResizeEnd}\n targetRef={boxRef}\n handleProps={verticalHandleProps}\n />\n )}\n </As>\n );\n});\n"],"names":["Box","React","style","className","as","children","width","minWidth","maxWidth","height","minHeight","maxHeight","zIndex","padding","paddingInline","paddingBlock","margin","marginBlock","marginInline","marginInlineStart","marginInlineEnd","marginTop","marginBottom","overflow","overflowX","overflowY","enableResizeOnTop","enableResizeOnEnd","enableResizeOnBottom","enableResizeOnStart","enableResizeOnLeft","enableResizeOnRight","onWidthResize","onHeightResize","onWidthResizeEnd","onHeightResizeEnd","horizontalHandleProps","verticalHandleProps","otherProps","ref","As","boxRef","useRef","forkedRef","useForkRef","hasHorizontalResize","hasVerticalResize","cannotHorizontalFlex","cannotVerticalFlex","warnHorizontalFlex","warnVerticalFlex","isFlexing","propStyles","isCustomSizeProp","jsxs","removeUndefinedProperties","clsx","styles","jsx","TopResizeHandle","BottomResizeHandle","StartResizeHandle","EndResizeHandle","LeftResizeHandle","RightResizeHandle"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as m } from "react/jsx-runtime";
2
2
  import t, { useLayoutEffect as p } from "react";
3
- import "../utils/focus_redirect.js";
4
3
  import "../utils/click_away_listener.js";
4
+ import "../utils/focus_redirect.js";
5
5
  import "../utils/scroll_away_listener.js";
6
6
  import { useForkRef as d } from "../utils/hooks/use_fork_ref.js";
7
7
  import "../utils/hooks/use_resize_observer.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx as m } from "react/jsx-runtime";
2
2
  import t, { useLayoutEffect as p } from "react";
3
- import "../utils/focus_redirect.js";
4
3
  import "../utils/click_away_listener.js";
4
+ import "../utils/focus_redirect.js";
5
5
  import "../utils/scroll_away_listener.js";
6
6
  import { useForkRef as u } from "../utils/hooks/use_fork_ref.js";
7
7
  import "../utils/hooks/use_resize_observer.js";
@@ -1,6 +1,6 @@
1
- import { VStackProps } from '../../stacks/v_stack.js';
2
1
  import { default as React } from 'react';
3
- export interface CardProps extends Omit<VStackProps, 'as' | 'children'> {
2
+ import { ScaffoldProps } from '../../layouts/scaffold/scaffold.js';
3
+ export interface CardProps extends Omit<ScaffoldProps, 'as' | 'children'> {
4
4
  children?: React.ReactNode;
5
5
  }
6
6
  export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/surfaces/card/card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CAAC;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,IAAI,+EASf,CAAC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/surfaces/card/card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAElF,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,UAAU,CAAC;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,IAAI,+EASf,CAAC"}
@@ -1,11 +1,11 @@
1
- import { jsx as c } from "react/jsx-runtime";
2
- import { VStack as m } from "../../stacks/v_stack.js";
3
- import { clsx as f } from "clsx";
4
- import s from "react";
5
- const x = s.forwardRef(function({ children: r, className: o, ...t }, a) {
6
- return /* @__PURE__ */ c(m, { ref: a, as: "section", className: f(o, "tcn-card"), ...t, children: r });
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { clsx as a } from "clsx";
3
+ import m from "react";
4
+ import { Scaffold as e } from "../../layouts/scaffold/scaffold.js";
5
+ const l = m.forwardRef(function({ children: r, className: o, ...t }, c) {
6
+ return /* @__PURE__ */ f(e, { ref: c, className: a(o, "tcn-surface", "tcn-card"), ...t, children: r });
7
7
  });
8
8
  export {
9
- x as Card
9
+ l as Card
10
10
  };
11
11
  //# sourceMappingURL=card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sources":["../../../src/surfaces/card/card.tsx"],"sourcesContent":["import { VStack, type VStackProps } from '../../stacks/v_stack.js';\nimport { clsx } from 'clsx';\nimport React from 'react';\n\nexport interface CardProps extends Omit<VStackProps, 'as' | 'children'> {\n children?: React.ReactNode;\n}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(function Card(\n { children, className, ...props }: CardProps,\n ref\n) {\n return (\n <VStack ref={ref} as=\"section\" className={clsx(className, 'tcn-card')} {...props}>\n {children}\n </VStack>\n );\n});\n"],"names":["Card","React","children","className","props","ref","jsx","VStack","clsx"],"mappings":";;;;AAQO,MAAMA,IAAOC,EAAM,WAAmC,SAC3D,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,EAAA,GAC1BC,GACA;AACA,SACE,gBAAAC,EAACC,GAAA,EAAO,KAAAF,GAAU,IAAG,WAAU,WAAWG,EAAKL,GAAW,UAAU,GAAI,GAAGC,GACxE,UAAAF,EAAA,CACH;AAEJ,CAAC;"}
1
+ {"version":3,"file":"card.js","sources":["../../../src/surfaces/card/card.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport React from 'react';\nimport { Scaffold, type ScaffoldProps } from '../../layouts/scaffold/scaffold.js';\n\nexport interface CardProps extends Omit<ScaffoldProps, 'as' | 'children'> {\n children?: React.ReactNode;\n}\n\nexport const Card = React.forwardRef<HTMLElement, CardProps>(function Card(\n { children, className, ...props }: CardProps,\n ref\n) {\n return (\n <Scaffold ref={ref} className={clsx(className, 'tcn-surface', 'tcn-card')} {...props}>\n {children}\n </Scaffold>\n );\n});\n"],"names":["Card","React","children","className","props","ref","jsx","Scaffold","clsx"],"mappings":";;;;AAQO,MAAMA,IAAOC,EAAM,WAAmC,SAC3D,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,EAAA,GAC1BC,GACA;AACA,SACE,gBAAAC,EAACC,GAAA,EAAS,KAAAF,GAAU,WAAWG,EAAKL,GAAW,eAAe,UAAU,GAAI,GAAGC,GAC5E,UAAAF,EAAA,CACH;AAEJ,CAAC;"}
@@ -1,15 +1,17 @@
1
1
  export * from './alert/alert.js';
2
2
  export * from './card/card.js';
3
3
  export * from './confirm/confirm.js';
4
- export * from './modal/modal.js';
5
4
  export * from './page/h_page.js';
6
5
  export * from './page/v_page.js';
7
6
  export * from './panel/h_panel.js';
8
7
  export * from './panel/v_panel.js';
9
8
  export * from './popover/popover.js';
10
- export * from './window/window.js';
11
9
  export * from './drawers/drawer_bottom/drawer_bottom.js';
12
10
  export * from './drawers/drawer_top/drawer_top.js';
13
11
  export * from './drawers/drawer_start/drawer_start.js';
14
12
  export * from './drawers/drawer_end/drawer_end.js';
13
+ export { Window, type WindowProps } from './window/window.js';
14
+ export { Modal, type ModalProps } from './modal/modal.js';
15
+ export { Tooltip, type TooltipProps } from './tooltip/tooltip.js';
16
+ export { PopConfirm, type PopConfirmProps } from './pop_confirm/pop_confirm.js';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,31 +1,35 @@
1
1
  import { Alert as e } from "./alert/alert.js";
2
- import { Card as m } from "./card/card.js";
2
+ import { Card as p } from "./card/card.js";
3
3
  import { Confirm as f } from "./confirm/confirm.js";
4
- import { Modal as a } from "./modal/modal.js";
5
- import { HPage as w } from "./page/h_page.js";
6
- import { VPage as d } from "./page/v_page.js";
7
- import { HPanel as D } from "./panel/h_panel.js";
4
+ import { HPage as a } from "./page/h_page.js";
5
+ import { VPage as P } from "./page/v_page.js";
6
+ import { HPanel as w } from "./panel/h_panel.js";
8
7
  import { VPanel as i } from "./panel/v_panel.js";
9
- import { Popover as H } from "./popover/popover.js";
10
- import { Window as v } from "./window/window.js";
11
- import { DrawerBottom as B } from "./drawers/drawer_bottom/drawer_bottom.js";
12
- import { DrawerTop as M } from "./drawers/drawer_top/drawer_top.js";
13
- import { DrawerStart as T } from "./drawers/drawer_start/drawer_start.js";
14
- import { DrawerEnd as b } from "./drawers/drawer_end/drawer_end.js";
8
+ import { Popover as C } from "./popover/popover.js";
9
+ import { DrawerBottom as H } from "./drawers/drawer_bottom/drawer_bottom.js";
10
+ import { DrawerTop as V } from "./drawers/drawer_top/drawer_top.js";
11
+ import { DrawerStart as A } from "./drawers/drawer_start/drawer_start.js";
12
+ import { DrawerEnd as E } from "./drawers/drawer_end/drawer_end.js";
13
+ import { Window as S } from "./window/window.js";
14
+ import { Modal as b } from "./modal/modal.js";
15
+ import { Tooltip as h } from "./tooltip/tooltip.js";
16
+ import { PopConfirm as k } from "./pop_confirm/pop_confirm.js";
15
17
  export {
16
18
  e as Alert,
17
- m as Card,
19
+ p as Card,
18
20
  f as Confirm,
19
- B as DrawerBottom,
20
- b as DrawerEnd,
21
- T as DrawerStart,
22
- M as DrawerTop,
23
- w as HPage,
24
- D as HPanel,
25
- a as Modal,
26
- H as Popover,
27
- d as VPage,
21
+ H as DrawerBottom,
22
+ E as DrawerEnd,
23
+ A as DrawerStart,
24
+ V as DrawerTop,
25
+ a as HPage,
26
+ w as HPanel,
27
+ b as Modal,
28
+ k as PopConfirm,
29
+ C as Popover,
30
+ h as Tooltip,
31
+ P as VPage,
28
32
  i as VPanel,
29
- v as Window
33
+ S as Window
30
34
  };
31
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
- import { VStackProps } from '../../stacks/v_stack.js';
2
1
  import { default as React } from 'react';
3
- export type ModalProps = Omit<VStackProps<HTMLDialogElement>, 'as'>;
4
- export declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDialogElement>>;
2
+ import { FrameOwnProps } from '../../overlay/frame/frame.js';
3
+ import { ScaffoldProps } from '../../layouts/scaffold/scaffold.js';
4
+ export type ModalProps = FrameOwnProps & ScaffoldProps;
5
+ export declare const Modal: React.ForwardRefExoticComponent<FrameOwnProps & ScaffoldProps & React.RefAttributes<HTMLElement>>;
5
6
  //# sourceMappingURL=modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/surfaces/modal/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;AAEpE,eAAO,MAAM,KAAK,sFAchB,CAAC"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/surfaces/modal/modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAKlF,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,aAAa,CAAC;AAEvD,eAAO,MAAM,KAAK,mGAgBhB,CAAC"}