@accelint/design-toolkit 9.12.0 → 10.0.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 (300) hide show
  1. package/catalog-info.yaml +1 -1
  2. package/dist/components/accordion/context.d.ts +2 -2
  3. package/dist/components/accordion/group.d.ts +2 -2
  4. package/dist/components/accordion/header.d.ts +2 -2
  5. package/dist/components/accordion/index.d.ts +2 -2
  6. package/dist/components/accordion/panel.d.ts +2 -2
  7. package/dist/components/accordion/trigger.d.ts +2 -2
  8. package/dist/components/action-bar/index.d.ts +2 -2
  9. package/dist/components/audio/index.d.ts +2 -2
  10. package/dist/components/avatar/context.d.ts +4 -4
  11. package/dist/components/avatar/index.d.ts +2 -2
  12. package/dist/components/badge/context.d.ts +4 -4
  13. package/dist/components/badge/index.d.ts +2 -2
  14. package/dist/components/breadcrumbs/index.d.ts +2 -2
  15. package/dist/components/breadcrumbs/item.d.ts +2 -2
  16. package/dist/components/button/context.d.ts +8 -8
  17. package/dist/components/button/index.d.ts +2 -2
  18. package/dist/components/button/link.d.ts +2 -2
  19. package/dist/components/button/toggle.d.ts +2 -2
  20. package/dist/components/carousel/context.d.ts +4 -4
  21. package/dist/components/carousel/gallery.d.ts +2 -2
  22. package/dist/components/carousel/index.d.ts +2 -2
  23. package/dist/components/carousel/navigation.d.ts +3 -3
  24. package/dist/components/carousel/position.d.ts +2 -2
  25. package/dist/components/carousel/select.d.ts +2 -2
  26. package/dist/components/carousel/viewer.d.ts +2 -2
  27. package/dist/components/checkbox/context.d.ts +3 -3
  28. package/dist/components/checkbox/group.d.ts +2 -2
  29. package/dist/components/checkbox/index.d.ts +2 -2
  30. package/dist/components/chip/context.d.ts +4 -4
  31. package/dist/components/chip/deletable.d.ts +2 -2
  32. package/dist/components/chip/index.d.ts +2 -2
  33. package/dist/components/chip/list.d.ts +4 -4
  34. package/dist/components/chip/selectable.d.ts +2 -2
  35. package/dist/components/classification-badge/context.d.ts +4 -4
  36. package/dist/components/classification-badge/index.d.ts +2 -2
  37. package/dist/components/classification-banner/context.d.ts +4 -4
  38. package/dist/components/classification-banner/index.d.ts +2 -2
  39. package/dist/components/clock/index.d.ts +2 -2
  40. package/dist/components/color-picker/index.d.ts +2 -2
  41. package/dist/components/combobox-field/context.d.ts +4 -4
  42. package/dist/components/combobox-field/index.d.ts +2 -2
  43. package/dist/components/coordinate-field/context.d.ts +6 -6
  44. package/dist/components/coordinate-field/index.d.ts +2 -2
  45. package/dist/components/coordinate-field/segment.d.ts +2 -2
  46. package/dist/components/date-field/index.d.ts +2 -2
  47. package/dist/components/deferred-collection/index.d.ts +2 -2
  48. package/dist/components/details-list/context.d.ts +4 -4
  49. package/dist/components/details-list/index.d.ts +2 -2
  50. package/dist/components/details-list/label.d.ts +2 -2
  51. package/dist/components/details-list/value.d.ts +2 -2
  52. package/dist/components/dialog/content.d.ts +2 -2
  53. package/dist/components/dialog/context.d.ts +2 -2
  54. package/dist/components/dialog/footer.d.ts +2 -2
  55. package/dist/components/dialog/index.d.ts +2 -2
  56. package/dist/components/dialog/title.d.ts +2 -2
  57. package/dist/components/divider/context.d.ts +4 -4
  58. package/dist/components/divider/index.d.ts +2 -2
  59. package/dist/components/drawer/back.d.ts +2 -2
  60. package/dist/components/drawer/close.d.ts +2 -2
  61. package/dist/components/drawer/content.d.ts +2 -2
  62. package/dist/components/drawer/footer.d.ts +2 -2
  63. package/dist/components/drawer/header-title.d.ts +2 -2
  64. package/dist/components/drawer/header.d.ts +2 -2
  65. package/dist/components/drawer/index.d.ts +2 -2
  66. package/dist/components/drawer/layout-main.d.ts +2 -2
  67. package/dist/components/drawer/layout.d.ts +2 -2
  68. package/dist/components/drawer/menu-item.d.ts +2 -2
  69. package/dist/components/drawer/menu.d.ts +2 -2
  70. package/dist/components/drawer/panel.d.ts +2 -2
  71. package/dist/components/drawer/trigger.d.ts +2 -2
  72. package/dist/components/drawer/view.d.ts +2 -2
  73. package/dist/components/flashcard/index.d.ts +9 -9
  74. package/dist/components/flashcard/index.js +1 -1
  75. package/dist/components/flashcard/index.js.map +1 -1
  76. package/dist/components/flashcard/styles.module.css +4 -0
  77. package/dist/components/floating-card/constants.d.ts +26 -0
  78. package/dist/components/floating-card/constants.js +40 -0
  79. package/dist/components/floating-card/constants.js.map +1 -0
  80. package/dist/components/floating-card/context.d.ts +38 -6
  81. package/dist/components/floating-card/context.js +24 -3
  82. package/dist/components/floating-card/context.js.map +1 -1
  83. package/dist/components/floating-card/hooks/use-card-layout.d.ts +36 -0
  84. package/dist/components/floating-card/hooks/use-card-layout.js +106 -0
  85. package/dist/components/floating-card/hooks/use-card-layout.js.map +1 -0
  86. package/dist/components/floating-card/hooks/use-drag.d.ts +62 -0
  87. package/dist/components/floating-card/hooks/use-drag.js +100 -0
  88. package/dist/components/floating-card/hooks/use-drag.js.map +1 -0
  89. package/dist/components/floating-card/hooks/use-mouse-interaction.d.ts +58 -0
  90. package/dist/components/floating-card/hooks/use-mouse-interaction.js +91 -0
  91. package/dist/components/floating-card/hooks/use-mouse-interaction.js.map +1 -0
  92. package/dist/components/floating-card/hooks/use-resize.d.ts +56 -0
  93. package/dist/components/floating-card/hooks/use-resize.js +98 -0
  94. package/dist/components/floating-card/hooks/use-resize.js.map +1 -0
  95. package/dist/components/floating-card/index.d.ts +6 -2
  96. package/dist/components/floating-card/index.js +24 -32
  97. package/dist/components/floating-card/index.js.map +1 -1
  98. package/dist/components/floating-card/panel.d.ts +69 -0
  99. package/dist/components/floating-card/panel.js +111 -0
  100. package/dist/components/floating-card/panel.js.map +1 -0
  101. package/dist/components/floating-card/provider.d.ts +10 -6
  102. package/dist/components/floating-card/provider.js +159 -153
  103. package/dist/components/floating-card/provider.js.map +1 -1
  104. package/dist/components/floating-card/styles.module.css +93 -39
  105. package/dist/components/floating-card/types.d.ts +51 -10
  106. package/dist/components/floating-card/utils.d.ts +8 -85
  107. package/dist/components/floating-card/utils.js +12 -38
  108. package/dist/components/floating-card/utils.js.map +1 -1
  109. package/dist/components/gantt/components/base-elements/range.d.ts +2 -2
  110. package/dist/components/gantt/components/containers/external/gantt-panel-container/index.d.ts +2 -2
  111. package/dist/components/gantt/components/containers/internal/index.d.ts +2 -2
  112. package/dist/components/gantt/components/containers/internal/layout-container/index.d.ts +2 -2
  113. package/dist/components/gantt/components/containers/internal/virtualized-content-height-container/index.d.ts +2 -2
  114. package/dist/components/gantt/components/content-row/block.d.ts +2 -2
  115. package/dist/components/gantt/components/content-row/bracket.d.ts +3 -3
  116. package/dist/components/gantt/components/content-row/icon-marker.d.ts +2 -2
  117. package/dist/components/gantt/components/content-row/index.d.ts +2 -2
  118. package/dist/components/gantt/components/content-row/marker.d.ts +2 -2
  119. package/dist/components/gantt/components/content-row/spacer.d.ts +2 -2
  120. package/dist/components/gantt/components/current-time/index.d.ts +2 -2
  121. package/dist/components/gantt/components/header/index.d.ts +3 -3
  122. package/dist/components/gantt/components/panel-row/index.d.ts +2 -2
  123. package/dist/components/gantt/components/rows-virtualizer/index.d.ts +3 -3
  124. package/dist/components/gantt/components/timeline/index.d.ts +2 -2
  125. package/dist/components/gantt/context/index.d.ts +4 -4
  126. package/dist/components/gantt/context/store/index.d.ts +4 -4
  127. package/dist/components/gantt/context/temporal-data/index.d.ts +4 -4
  128. package/dist/components/gantt/hooks/use-layout-subscription/index.js +8 -8
  129. package/dist/components/gantt/hooks/use-layout-subscription/index.js.map +1 -1
  130. package/dist/components/hero/context.d.ts +2 -2
  131. package/dist/components/hero/index.d.ts +2 -2
  132. package/dist/components/hero/subtitle.d.ts +3 -3
  133. package/dist/components/hotkey/context.d.ts +2 -2
  134. package/dist/components/hotkey/index.d.ts +2 -2
  135. package/dist/components/hotkey/set.d.ts +2 -2
  136. package/dist/components/icon/context.d.ts +4 -4
  137. package/dist/components/icon/index.d.ts +2 -2
  138. package/dist/components/input/context.d.ts +2 -2
  139. package/dist/components/input/index.d.ts +2 -2
  140. package/dist/components/kanban/card-body.d.ts +2 -2
  141. package/dist/components/kanban/card-header-actions.d.ts +2 -2
  142. package/dist/components/kanban/card-header-title.d.ts +2 -2
  143. package/dist/components/kanban/card-header.d.ts +2 -2
  144. package/dist/components/kanban/card.d.ts +2 -2
  145. package/dist/components/kanban/column-actions.d.ts +2 -2
  146. package/dist/components/kanban/column-container.d.ts +2 -2
  147. package/dist/components/kanban/column-content.d.ts +2 -2
  148. package/dist/components/kanban/column-header-actions.d.ts +2 -2
  149. package/dist/components/kanban/column-header-drag-handle.d.ts +2 -2
  150. package/dist/components/kanban/column-header-title.d.ts +2 -2
  151. package/dist/components/kanban/column-header.d.ts +2 -2
  152. package/dist/components/kanban/column.d.ts +2 -2
  153. package/dist/components/kanban/context.d.ts +2 -2
  154. package/dist/components/kanban/header-actions.d.ts +2 -2
  155. package/dist/components/kanban/header-search.d.ts +2 -2
  156. package/dist/components/kanban/header-title.d.ts +2 -2
  157. package/dist/components/kanban/header.d.ts +2 -2
  158. package/dist/components/kanban/kanban.d.ts +4 -4
  159. package/dist/components/label/context.d.ts +4 -4
  160. package/dist/components/label/index.d.ts +2 -2
  161. package/dist/components/lines/index.d.ts +2 -2
  162. package/dist/components/link/context.d.ts +2 -2
  163. package/dist/components/link/index.d.ts +2 -2
  164. package/dist/components/list/context.d.ts +2 -2
  165. package/dist/components/list/index.d.ts +2 -2
  166. package/dist/components/list/item-content.d.ts +2 -2
  167. package/dist/components/list/item-description.d.ts +2 -2
  168. package/dist/components/list/item-title.d.ts +2 -2
  169. package/dist/components/list/item.d.ts +2 -2
  170. package/dist/components/media-controls/context.d.ts +4 -4
  171. package/dist/components/media-controls/fullscreen-button.d.ts +2 -2
  172. package/dist/components/media-controls/index.d.ts +2 -2
  173. package/dist/components/media-controls/mute-button.d.ts +2 -2
  174. package/dist/components/media-controls/play-button.d.ts +2 -2
  175. package/dist/components/media-controls/playback-rate.d.ts +2 -2
  176. package/dist/components/media-controls/seek-button.d.ts +2 -2
  177. package/dist/components/media-controls/time-display.d.ts +2 -2
  178. package/dist/components/media-controls/time-range.d.ts +2 -2
  179. package/dist/components/media-controls/volume-slider.d.ts +2 -2
  180. package/dist/components/menu/context.d.ts +2 -2
  181. package/dist/components/menu/index.d.ts +2 -2
  182. package/dist/components/menu/item-description.d.ts +2 -2
  183. package/dist/components/menu/item-label.d.ts +2 -2
  184. package/dist/components/menu/item.d.ts +2 -2
  185. package/dist/components/menu/section.d.ts +2 -2
  186. package/dist/components/menu/separator.d.ts +2 -2
  187. package/dist/components/menu/submenu.d.ts +2 -2
  188. package/dist/components/notice/index.d.ts +3 -2
  189. package/dist/components/notice/index.js +3 -3
  190. package/dist/components/notice/index.js.map +1 -1
  191. package/dist/components/notice/list.d.ts +2 -2
  192. package/dist/components/notice/list.js +14 -5
  193. package/dist/components/notice/list.js.map +1 -1
  194. package/dist/components/notice/notice-icon.d.ts +2 -2
  195. package/dist/components/notice/types.d.ts +6 -5
  196. package/dist/components/notice/utils.d.ts +11 -1
  197. package/dist/components/notice/utils.js +16 -1
  198. package/dist/components/notice/utils.js.map +1 -1
  199. package/dist/components/options/context.d.ts +2 -2
  200. package/dist/components/options/index.d.ts +2 -2
  201. package/dist/components/options/item-content.d.ts +2 -2
  202. package/dist/components/options/item-description.d.ts +2 -2
  203. package/dist/components/options/item-label.d.ts +2 -2
  204. package/dist/components/options/item.d.ts +2 -2
  205. package/dist/components/options/section.d.ts +2 -2
  206. package/dist/components/pagination/context.d.ts +2 -2
  207. package/dist/components/pagination/index.d.ts +2 -2
  208. package/dist/components/pagination/next.d.ts +2 -2
  209. package/dist/components/pagination/pages.d.ts +2 -2
  210. package/dist/components/pagination/prev.d.ts +2 -2
  211. package/dist/components/popover/content.d.ts +2 -2
  212. package/dist/components/popover/footer.d.ts +2 -2
  213. package/dist/components/popover/index.d.ts +2 -2
  214. package/dist/components/popover/title.d.ts +2 -2
  215. package/dist/components/popover/trigger.d.ts +2 -2
  216. package/dist/components/query-builder/action-element.d.ts +2 -2
  217. package/dist/components/query-builder/actions.d.ts +4 -4
  218. package/dist/components/query-builder/combinator-selector.d.ts +2 -2
  219. package/dist/components/query-builder/index.d.ts +2 -2
  220. package/dist/components/query-builder/rule-group.d.ts +4 -4
  221. package/dist/components/query-builder/rule.d.ts +2 -2
  222. package/dist/components/query-builder/value-editor.d.ts +2 -2
  223. package/dist/components/query-builder/value-selector.d.ts +2 -2
  224. package/dist/components/radio/context.d.ts +3 -3
  225. package/dist/components/radio/group.d.ts +2 -2
  226. package/dist/components/radio/index.d.ts +2 -2
  227. package/dist/components/search-field/context.d.ts +4 -4
  228. package/dist/components/search-field/index.d.ts +2 -2
  229. package/dist/components/select-field/context.d.ts +4 -4
  230. package/dist/components/select-field/index.d.ts +2 -2
  231. package/dist/components/sidenav/avatar.d.ts +2 -2
  232. package/dist/components/sidenav/content.d.ts +2 -2
  233. package/dist/components/sidenav/context.d.ts +2 -2
  234. package/dist/components/sidenav/footer.d.ts +2 -2
  235. package/dist/components/sidenav/header.d.ts +2 -2
  236. package/dist/components/sidenav/index.d.ts +2 -2
  237. package/dist/components/sidenav/item.d.ts +2 -2
  238. package/dist/components/sidenav/link.d.ts +2 -2
  239. package/dist/components/sidenav/menu-item.d.ts +2 -2
  240. package/dist/components/sidenav/menu.d.ts +2 -2
  241. package/dist/components/sidenav/trigger.d.ts +2 -2
  242. package/dist/components/skeleton/index.d.ts +2 -2
  243. package/dist/components/slider/index.d.ts +2 -2
  244. package/dist/components/status-indicator/index.d.ts +2 -2
  245. package/dist/components/switch/context.d.ts +4 -4
  246. package/dist/components/switch/index.d.ts +2 -2
  247. package/dist/components/table/body.d.ts +4 -3
  248. package/dist/components/table/body.js.map +1 -1
  249. package/dist/components/table/cell.d.ts +4 -3
  250. package/dist/components/table/cell.js.map +1 -1
  251. package/dist/components/table/context.d.ts +2 -2
  252. package/dist/components/table/features.d.ts +80 -0
  253. package/dist/components/table/features.js +61 -0
  254. package/dist/components/table/features.js.map +1 -0
  255. package/dist/components/table/header-cell.d.ts +4 -3
  256. package/dist/components/table/header-cell.js.map +1 -1
  257. package/dist/components/table/header.d.ts +4 -3
  258. package/dist/components/table/header.js.map +1 -1
  259. package/dist/components/table/index.d.ts +2 -2
  260. package/dist/components/table/index.js +40 -49
  261. package/dist/components/table/index.js.map +1 -1
  262. package/dist/components/table/row-ordering-feature.d.ts +88 -0
  263. package/dist/components/table/row-ordering-feature.js +115 -0
  264. package/dist/components/table/row-ordering-feature.js.map +1 -0
  265. package/dist/components/table/row.d.ts +4 -3
  266. package/dist/components/table/row.js.map +1 -1
  267. package/dist/components/table/types.d.ts +15 -13
  268. package/dist/components/tabs/context.d.ts +6 -6
  269. package/dist/components/tabs/index.d.ts +2 -2
  270. package/dist/components/tabs/list.d.ts +2 -2
  271. package/dist/components/tabs/panel.d.ts +2 -2
  272. package/dist/components/tabs/tab.d.ts +2 -2
  273. package/dist/components/text-area-field/context.d.ts +4 -4
  274. package/dist/components/text-area-field/index.d.ts +2 -2
  275. package/dist/components/text-field/context.d.ts +4 -4
  276. package/dist/components/text-field/index.d.ts +2 -2
  277. package/dist/components/time-field/index.d.ts +2 -2
  278. package/dist/components/time-field/styles.module.css +4 -0
  279. package/dist/components/tooltip/context.d.ts +2 -2
  280. package/dist/components/tooltip/index.d.ts +2 -2
  281. package/dist/components/tooltip/trigger.d.ts +2 -2
  282. package/dist/components/tree/context.d.ts +3 -3
  283. package/dist/components/tree/index.d.ts +2 -2
  284. package/dist/components/tree/item-actions.d.ts +2 -2
  285. package/dist/components/tree/item-content.d.ts +2 -2
  286. package/dist/components/tree/item-description.d.ts +2 -2
  287. package/dist/components/tree/item-label.d.ts +2 -2
  288. package/dist/components/tree/item-prefix-icon.d.ts +2 -2
  289. package/dist/components/tree/item.d.ts +2 -2
  290. package/dist/components/tree/lines.d.ts +2 -2
  291. package/dist/components/video/index.d.ts +2 -2
  292. package/dist/components/view-stack/context.d.ts +2 -2
  293. package/dist/components/view-stack/index.d.ts +2 -2
  294. package/dist/components/view-stack/trigger.d.ts +2 -2
  295. package/dist/components/view-stack/view.d.ts +2 -2
  296. package/dist/index.d.ts +5 -3
  297. package/dist/index.js +4 -2
  298. package/dist/providers/portal.d.ts +2 -2
  299. package/dist/providers/theme-provider.d.ts +2 -2
  300. package/package.json +20 -14
@@ -11,15 +11,12 @@
11
11
  */
12
12
 
13
13
 
14
- import { useFloatingCard } from "./context.js";
14
+ import { DEFAULT_DIMENSIONS, DEFAULT_POSITION } from "./constants.js";
15
+ import { useFloatingCard, useFloatingCardRegistry } from "./context.js";
15
16
  import { useEffect } from "react";
16
17
  import { createPortal } from "react-dom";
17
18
 
18
19
  //#region src/components/floating-card/index.tsx
19
- const defaultDimensions = {
20
- width: 300,
21
- height: 400
22
- };
23
20
  /**
24
21
  * Renders its children into a floating card using React portals.
25
22
  *
@@ -37,6 +34,10 @@ const defaultDimensions = {
37
34
  * @remarks
38
35
  * - Requires `FloatingCardProvider` as an ancestor.
39
36
  * - The floating card is only rendered if a valid DOM reference exists for the given `id`.
37
+ * - `initialDimensions` and `initialPosition` are applied each time the card
38
+ * opens. While it stays open, later changes to them are ignored so a user's
39
+ * own drag or resize is never overridden; closing and reopening starts the
40
+ * card from those values again.
40
41
  *
41
42
  * @example
42
43
  * ```tsx
@@ -62,29 +63,22 @@ const defaultDimensions = {
62
63
  * ```
63
64
  */
64
65
  function FloatingCard({ id, children, title, isOpen = true, initialDimensions, initialPosition }) {
65
- const { cards, api: floatingCardApi } = useFloatingCard();
66
- const { width, height } = initialDimensions ?? defaultDimensions;
67
- const { x, y } = initialPosition ?? {};
66
+ const { cards, closeCard } = useFloatingCard();
67
+ const { openCard } = useFloatingCardRegistry();
68
+ const { width, height } = initialDimensions ?? DEFAULT_DIMENSIONS;
69
+ const { x, y } = initialPosition ?? DEFAULT_POSITION;
68
70
  useEffect(() => {
69
- if (!floatingCardApi) return;
70
71
  if (!isOpen) {
71
- floatingCardApi.getPanel(id)?.api.close();
72
+ closeCard(id);
72
73
  return;
73
74
  }
74
- if (!floatingCardApi.getPanel(id)) {
75
- const panel = floatingCardApi.addPanel({
76
- id,
77
- title,
78
- component: "default",
79
- floating: {
80
- width,
81
- height,
82
- x,
83
- y
84
- }
85
- });
86
- panel.group.locked = "no-drop-target";
87
- }
75
+ openCard(id, title, {
76
+ x,
77
+ y
78
+ }, {
79
+ width,
80
+ height
81
+ });
88
82
  }, [
89
83
  id,
90
84
  title,
@@ -93,16 +87,14 @@ function FloatingCard({ id, children, title, isOpen = true, initialDimensions, i
93
87
  height,
94
88
  x,
95
89
  y,
96
- floatingCardApi
90
+ openCard,
91
+ closeCard
97
92
  ]);
98
93
  useEffect(() => {
99
- const panel = floatingCardApi?.getPanel(id);
100
- if (panel) panel.setTitle(title ?? id);
101
- }, [
102
- title,
103
- floatingCardApi,
104
- id
105
- ]);
94
+ return () => {
95
+ closeCard(id);
96
+ };
97
+ }, [id, closeCard]);
106
98
  return isOpen && cards[id] ? createPortal(children, cards[id]) : null;
107
99
  }
108
100
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/floating-card/index.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { type PropsWithChildren, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useFloatingCard } from './context';\nimport type { FloatingCardProps } from './types';\n\nconst defaultDimensions = { width: 300, height: 400 } as const;\n\n/**\n * Renders its children into a floating card using React portals.\n *\n * The `FloatingCard` component registers itself with the floating card engine on mount\n * and renders its children into the corresponding DOM node via a portal.\n *\n * @param id - Unique identifier for the floating card.\n * @param title - Optional title displayed in the floating card header.\n * @param isOpen - Whether the floating card is rendered. Defaults to `true`.\n * @param initialDimensions - Initial width and height of the floating card. Defaults to `{ width: 300, height: 400 }`.\n * @param initialPosition - Initial x and y coordinates of the floating card.\n * @param children - React children to render inside the floating card.\n * @returns The floating card component (portaled content) or null.\n *\n * @remarks\n * - Requires `FloatingCardProvider` as an ancestor.\n * - The floating card is only rendered if a valid DOM reference exists for the given `id`.\n *\n * @example\n * ```tsx\n * import { uuid } from '@accelint/core/utility/uuid';\n *\n * const cardId = uuid();\n * const [isOpen, setIsOpen] = useState(true);\n *\n * <FloatingCardProvider>\n * <FloatingCard\n * id={cardId}\n * title=\"Settings Panel\"\n * isOpen={isOpen}\n * initialDimensions={{ width: 400, height: 500 }}\n * >\n * <SettingsForm />\n * </FloatingCard>\n *\n * <button onClick={() => setIsOpen(!isOpen)}>\n * Toggle Panel\n * </button>\n * </FloatingCardProvider>\n * ```\n */\nexport function FloatingCard({\n id,\n children,\n title,\n isOpen = true,\n initialDimensions,\n initialPosition,\n}: PropsWithChildren<FloatingCardProps>) {\n const { cards, api: floatingCardApi } = useFloatingCard();\n\n const { width, height } = initialDimensions ?? defaultDimensions;\n const { x, y } = initialPosition ?? {};\n\n // Register card with Dockview API when isOpen changes.\n // Early return if API not ready (Dockview not fully initialized).\n useEffect(() => {\n if (!floatingCardApi) {\n return;\n }\n if (!isOpen) {\n floatingCardApi.getPanel(id)?.api.close();\n return;\n }\n\n if (!floatingCardApi.getPanel(id)) {\n const panel = floatingCardApi.addPanel({\n id,\n title,\n component: 'default',\n floating: { width, height, x, y },\n });\n\n panel.group.locked = 'no-drop-target';\n }\n\n // Cleanup not included here. Cleanup is done at the provider level when the card is removed from the `cards` registry.\n }, [id, title, isOpen, width, height, x, y, floatingCardApi]);\n\n useEffect(() => {\n const panel = floatingCardApi?.getPanel(id);\n if (panel) {\n panel.setTitle(title ?? id);\n }\n }, [title, floatingCardApi, id]);\n\n return isOpen && cards[id] ? createPortal(children, cards[id]) : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,MAAM,oBAAoB;CAAE,OAAO;CAAK,QAAQ;CAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CrD,SAAgB,aAAa,EAC3B,IACA,UACA,OACA,SAAS,MACT,mBACA,mBACuC;CACvC,MAAM,EAAE,OAAO,KAAK,oBAAoB,iBAAiB;CAEzD,MAAM,EAAE,OAAO,WAAW,qBAAqB;CAC/C,MAAM,EAAE,GAAG,MAAM,mBAAmB,EAAE;AAItC,iBAAgB;AACd,MAAI,CAAC,gBACH;AAEF,MAAI,CAAC,QAAQ;AACX,mBAAgB,SAAS,GAAG,EAAE,IAAI,OAAO;AACzC;;AAGF,MAAI,CAAC,gBAAgB,SAAS,GAAG,EAAE;GACjC,MAAM,QAAQ,gBAAgB,SAAS;IACrC;IACA;IACA,WAAW;IACX,UAAU;KAAE;KAAO;KAAQ;KAAG;KAAG;IAClC,CAAC;AAEF,SAAM,MAAM,SAAS;;IAItB;EAAC;EAAI;EAAO;EAAQ;EAAO;EAAQ;EAAG;EAAG;EAAgB,CAAC;AAE7D,iBAAgB;EACd,MAAM,QAAQ,iBAAiB,SAAS,GAAG;AAC3C,MAAI,MACF,OAAM,SAAS,SAAS,GAAG;IAE5B;EAAC;EAAO;EAAiB;EAAG,CAAC;AAEhC,QAAO,UAAU,MAAM,MAAM,aAAa,UAAU,MAAM,IAAI,GAAG"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/floating-card/index.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { type PropsWithChildren, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { DEFAULT_DIMENSIONS, DEFAULT_POSITION } from './constants';\nimport { useFloatingCard, useFloatingCardRegistry } from './context';\nimport type { FloatingCardProps } from './types';\n\n/**\n * Renders its children into a floating card using React portals.\n *\n * The `FloatingCard` component registers itself with the floating card engine on mount\n * and renders its children into the corresponding DOM node via a portal.\n *\n * @param id - Unique identifier for the floating card.\n * @param title - Optional title displayed in the floating card header.\n * @param isOpen - Whether the floating card is rendered. Defaults to `true`.\n * @param initialDimensions - Initial width and height of the floating card. Defaults to `{ width: 300, height: 400 }`.\n * @param initialPosition - Initial x and y coordinates of the floating card.\n * @param children - React children to render inside the floating card.\n * @returns The floating card component (portaled content) or null.\n *\n * @remarks\n * - Requires `FloatingCardProvider` as an ancestor.\n * - The floating card is only rendered if a valid DOM reference exists for the given `id`.\n * - `initialDimensions` and `initialPosition` are applied each time the card\n * opens. While it stays open, later changes to them are ignored so a user's\n * own drag or resize is never overridden; closing and reopening starts the\n * card from those values again.\n *\n * @example\n * ```tsx\n * import { uuid } from '@accelint/core/utility/uuid';\n *\n * const cardId = uuid();\n * const [isOpen, setIsOpen] = useState(true);\n *\n * <FloatingCardProvider>\n * <FloatingCard\n * id={cardId}\n * title=\"Settings Panel\"\n * isOpen={isOpen}\n * initialDimensions={{ width: 400, height: 500 }}\n * >\n * <SettingsForm />\n * </FloatingCard>\n *\n * <button onClick={() => setIsOpen(!isOpen)}>\n * Toggle Panel\n * </button>\n * </FloatingCardProvider>\n * ```\n */\nexport function FloatingCard({\n id,\n children,\n title,\n isOpen = true,\n initialDimensions,\n initialPosition,\n}: PropsWithChildren<FloatingCardProps>) {\n const { cards, closeCard } = useFloatingCard();\n const { openCard } = useFloatingCardRegistry();\n\n const { width, height } = initialDimensions ?? DEFAULT_DIMENSIONS;\n const { x, y } = initialPosition ?? DEFAULT_POSITION;\n\n useEffect(() => {\n if (!isOpen) {\n closeCard(id);\n\n return;\n }\n\n openCard(id, title, { x, y }, { width, height });\n }, [id, title, isOpen, width, height, x, y, openCard, closeCard]);\n\n // Unregister on unmount so a card removed from the tree leaves no panel behind.\n useEffect(() => {\n return () => {\n closeCard(id);\n };\n }, [id, closeCard]);\n\n return isOpen && cards[id] ? createPortal(children, cards[id]) : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,SAAgB,aAAa,EAC3B,IACA,UACA,OACA,SAAS,MACT,mBACA,mBACuC;CACvC,MAAM,EAAE,OAAO,cAAc,iBAAiB;CAC9C,MAAM,EAAE,aAAa,yBAAyB;CAE9C,MAAM,EAAE,OAAO,WAAW,qBAAqB;CAC/C,MAAM,EAAE,GAAG,MAAM,mBAAmB;AAEpC,iBAAgB;AACd,MAAI,CAAC,QAAQ;AACX,aAAU,GAAG;AAEb;;AAGF,WAAS,IAAI,OAAO;GAAE;GAAG;GAAG,EAAE;GAAE;GAAO;GAAQ,CAAC;IAC/C;EAAC;EAAI;EAAO;EAAQ;EAAO;EAAQ;EAAG;EAAG;EAAU;EAAU,CAAC;AAGjE,iBAAgB;AACd,eAAa;AACX,aAAU,GAAG;;IAEd,CAAC,IAAI,UAAU,CAAC;AAEnB,QAAO,UAAU,MAAM,MAAM,aAAa,UAAU,MAAM,IAAI,GAAG"}
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at https://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { Bounds, Dimensions, FloatingCardLayout, Position } from "./types.js";
14
+ import { ReactNode, RefCallback } from "react";
15
+ import * as react_jsx_runtime98 from "react/jsx-runtime";
16
+ import { UniqueId } from "@accelint/core/utility/uuid";
17
+
18
+ //#region src/components/floating-card/panel.d.ts
19
+ type FloatingCardPanelProps = {
20
+ /** Identifier of the card this panel renders. */
21
+ id: UniqueId;
22
+ /** Current geometry and stacking order. */
23
+ layout: FloatingCardLayout;
24
+ /** Whether the card is pinned, which freezes drag and resize. */
25
+ isPinned: boolean;
26
+ /** Header content rendered before the title. */
27
+ header: ReactNode;
28
+ /** Header content rendered after the title, typically actions. */
29
+ actions: ReactNode;
30
+ /** Reads the provider's box so gestures can be constrained to it. */
31
+ getBounds: () => Bounds;
32
+ /** Registers the portal target that card children render into. */
33
+ contentRef: RefCallback<HTMLDivElement>;
34
+ /** Raises this card above its siblings. */
35
+ onFocus: () => void;
36
+ /** Commits a new position during a drag. */
37
+ onMove: (position: Position) => void;
38
+ /** Commits new geometry during a resize. */
39
+ onResize: (dimensions: Dimensions, position: Position) => void;
40
+ /** Accessible name for the card, taken from its title. */
41
+ label: string;
42
+ };
43
+ /**
44
+ * Renders one floating card: its chrome, its drag surface, and the portal
45
+ * target its children mount into.
46
+ *
47
+ * @param props - {@link FloatingCardPanelProps}
48
+ * @returns The positioned card element.
49
+ *
50
+ * @remarks
51
+ * Presentational only -- all geometry is owned by the provider and passed in,
52
+ * so this component stays a pure function of its props.
53
+ */
54
+ declare function FloatingCardPanel({
55
+ id,
56
+ layout,
57
+ isPinned,
58
+ header,
59
+ actions,
60
+ getBounds,
61
+ contentRef,
62
+ onFocus,
63
+ onMove,
64
+ onResize,
65
+ label
66
+ }: FloatingCardPanelProps): react_jsx_runtime98.JSX.Element;
67
+ //#endregion
68
+ export { FloatingCardPanel, FloatingCardPanelProps };
69
+ //# sourceMappingURL=panel.d.ts.map
@@ -0,0 +1,111 @@
1
+ /*
2
+ * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at https://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+
14
+ import { useDrag } from "./hooks/use-drag.js";
15
+ import { useResize } from "./hooks/use-resize.js";
16
+ import { useCallback, useMemo } from "react";
17
+ import { jsx, jsxs } from "react/jsx-runtime";
18
+ import styles from "./styles.module.css";
19
+
20
+ //#region src/components/floating-card/panel.tsx
21
+ /** Handles rendered around the card, paired with the cursor each one shows. */
22
+ const RESIZE_HANDLES = [
23
+ "n",
24
+ "s",
25
+ "e",
26
+ "w",
27
+ "ne",
28
+ "nw",
29
+ "se",
30
+ "sw"
31
+ ];
32
+ /**
33
+ * Renders one floating card: its chrome, its drag surface, and the portal
34
+ * target its children mount into.
35
+ *
36
+ * @param props - {@link FloatingCardPanelProps}
37
+ * @returns The positioned card element.
38
+ *
39
+ * @remarks
40
+ * Presentational only -- all geometry is owned by the provider and passed in,
41
+ * so this component stays a pure function of its props.
42
+ */
43
+ function FloatingCardPanel({ id, layout, isPinned, header, actions, getBounds, contentRef, onFocus, onMove, onResize, label }) {
44
+ const { position, dimensions, zIndex } = layout;
45
+ const { handleStart } = useDrag({
46
+ disabled: isPinned,
47
+ position,
48
+ dimensions,
49
+ getBounds,
50
+ onPositionChange: onMove,
51
+ onDragStart: onFocus
52
+ });
53
+ const { getHandleProps } = useResize({
54
+ disabled: isPinned,
55
+ position,
56
+ dimensions,
57
+ getBounds,
58
+ onResize,
59
+ onResizeStart: onFocus
60
+ });
61
+ const handleHeaderPointerDown = useCallback((event) => {
62
+ onFocus();
63
+ handleStart(event.nativeEvent);
64
+ }, [handleStart, onFocus]);
65
+ const style = useMemo(() => ({
66
+ left: position.x,
67
+ top: position.y,
68
+ width: dimensions.width,
69
+ height: dimensions.height,
70
+ zIndex
71
+ }), [
72
+ position.x,
73
+ position.y,
74
+ dimensions.width,
75
+ dimensions.height,
76
+ zIndex
77
+ ]);
78
+ return /* @__PURE__ */ jsxs("div", {
79
+ "aria-label": label,
80
+ "aria-modal": "false",
81
+ className: styles.panel,
82
+ "data-pinned": isPinned || void 0,
83
+ onPointerDown: onFocus,
84
+ role: "dialog",
85
+ style,
86
+ children: [
87
+ /* @__PURE__ */ jsxs("div", {
88
+ className: styles.header,
89
+ onPointerDown: handleHeaderPointerDown,
90
+ children: [header, /* @__PURE__ */ jsx("div", {
91
+ className: styles.headerActions,
92
+ children: actions
93
+ })]
94
+ }),
95
+ /* @__PURE__ */ jsx("div", {
96
+ className: styles.content,
97
+ ref: contentRef
98
+ }),
99
+ isPinned ? null : RESIZE_HANDLES.map((handle) => /* @__PURE__ */ jsx("div", {
100
+ "aria-hidden": "true",
101
+ className: styles[`resize-${handle}`],
102
+ "data-handle": handle,
103
+ ...getHandleProps(handle)
104
+ }, `${id}-resize-${handle}`))
105
+ ]
106
+ });
107
+ }
108
+
109
+ //#endregion
110
+ export { FloatingCardPanel };
111
+ //# sourceMappingURL=panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.js","names":["RESIZE_HANDLES: readonly ResizeHandle[]"],"sources":["../../../src/components/floating-card/panel.tsx"],"sourcesContent":["// __private-exports\n/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { useDrag } from './hooks/use-drag';\nimport { useResize } from './hooks/use-resize';\nimport styles from './styles.module.css';\nimport type { UniqueId } from '@accelint/core/utility/uuid';\nimport type { ReactNode, RefCallback } from 'react';\nimport type {\n Bounds,\n Dimensions,\n FloatingCardLayout,\n Position,\n ResizeHandle,\n} from './types';\n\n/** Handles rendered around the card, paired with the cursor each one shows. */\nconst RESIZE_HANDLES: readonly ResizeHandle[] = [\n 'n',\n 's',\n 'e',\n 'w',\n 'ne',\n 'nw',\n 'se',\n 'sw',\n];\n\nexport type FloatingCardPanelProps = {\n /** Identifier of the card this panel renders. */\n id: UniqueId;\n /** Current geometry and stacking order. */\n layout: FloatingCardLayout;\n /** Whether the card is pinned, which freezes drag and resize. */\n isPinned: boolean;\n /** Header content rendered before the title. */\n header: ReactNode;\n /** Header content rendered after the title, typically actions. */\n actions: ReactNode;\n /** Reads the provider's box so gestures can be constrained to it. */\n getBounds: () => Bounds;\n /** Registers the portal target that card children render into. */\n contentRef: RefCallback<HTMLDivElement>;\n /** Raises this card above its siblings. */\n onFocus: () => void;\n /** Commits a new position during a drag. */\n onMove: (position: Position) => void;\n /** Commits new geometry during a resize. */\n onResize: (dimensions: Dimensions, position: Position) => void;\n /** Accessible name for the card, taken from its title. */\n label: string;\n};\n\n/**\n * Renders one floating card: its chrome, its drag surface, and the portal\n * target its children mount into.\n *\n * @param props - {@link FloatingCardPanelProps}\n * @returns The positioned card element.\n *\n * @remarks\n * Presentational only -- all geometry is owned by the provider and passed in,\n * so this component stays a pure function of its props.\n */\nexport function FloatingCardPanel({\n id,\n layout,\n isPinned,\n header,\n actions,\n getBounds,\n contentRef,\n onFocus,\n onMove,\n onResize,\n label,\n}: FloatingCardPanelProps) {\n const { position, dimensions, zIndex } = layout;\n\n const { handleStart } = useDrag({\n disabled: isPinned,\n position,\n dimensions,\n getBounds,\n onPositionChange: onMove,\n onDragStart: onFocus,\n });\n\n const { getHandleProps } = useResize({\n disabled: isPinned,\n position,\n dimensions,\n getBounds,\n onResize,\n onResizeStart: onFocus,\n });\n\n const handleHeaderPointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n onFocus();\n handleStart(event.nativeEvent);\n },\n [handleStart, onFocus],\n );\n\n const style = useMemo(\n () => ({\n left: position.x,\n top: position.y,\n width: dimensions.width,\n height: dimensions.height,\n zIndex,\n }),\n [position.x, position.y, dimensions.width, dimensions.height, zIndex],\n );\n\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: pointerdown only raises the card; every control inside stays keyboard reachable.\n <div\n aria-label={label}\n // Cards coexist with the rest of the application rather than blocking it,\n // so the dialog is explicitly non-modal.\n aria-modal='false'\n className={styles.panel}\n data-pinned={isPinned || undefined}\n onPointerDown={onFocus}\n role='dialog'\n style={style}\n >\n <div className={styles.header} onPointerDown={handleHeaderPointerDown}>\n {header}\n <div className={styles.headerActions}>{actions}</div>\n </div>\n\n <div className={styles.content} ref={contentRef} />\n\n {isPinned\n ? null\n : RESIZE_HANDLES.map((handle) => (\n <div\n aria-hidden='true'\n className={styles[`resize-${handle}`]}\n data-handle={handle}\n key={`${id}-resize-${handle}`}\n {...getHandleProps(handle)}\n />\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,iBAA0C;CAC9C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;;;;;;;AAsCD,SAAgB,kBAAkB,EAChC,IACA,QACA,UACA,QACA,SACA,WACA,YACA,SACA,QACA,UACA,SACyB;CACzB,MAAM,EAAE,UAAU,YAAY,WAAW;CAEzC,MAAM,EAAE,gBAAgB,QAAQ;EAC9B,UAAU;EACV;EACA;EACA;EACA,kBAAkB;EAClB,aAAa;EACd,CAAC;CAEF,MAAM,EAAE,mBAAmB,UAAU;EACnC,UAAU;EACV;EACA;EACA;EACA;EACA,eAAe;EAChB,CAAC;CAEF,MAAM,0BAA0B,aAC7B,UAA8C;AAC7C,WAAS;AACT,cAAY,MAAM,YAAY;IAEhC,CAAC,aAAa,QAAQ,CACvB;CAED,MAAM,QAAQ,eACL;EACL,MAAM,SAAS;EACf,KAAK,SAAS;EACd,OAAO,WAAW;EAClB,QAAQ,WAAW;EACnB;EACD,GACD;EAAC,SAAS;EAAG,SAAS;EAAG,WAAW;EAAO,WAAW;EAAQ;EAAO,CACtE;AAED,QAEE,qBAAC;EACC,cAAY;EAGZ,cAAW;EACX,WAAW,OAAO;EAClB,eAAa,YAAY;EACzB,eAAe;EACf,MAAK;EACE;;GAEP,qBAAC;IAAI,WAAW,OAAO;IAAQ,eAAe;eAC3C,QACD,oBAAC;KAAI,WAAW,OAAO;eAAgB;MAAc;KACjD;GAEN,oBAAC;IAAI,WAAW,OAAO;IAAS,KAAK;KAAc;GAElD,WACG,OACA,eAAe,KAAK,WAClB,oBAAC;IACC,eAAY;IACZ,WAAW,OAAO,UAAU;IAC5B,eAAa;IAEb,GAAI,eAAe,OAAO;MADrB,GAAG,GAAG,UAAU,SAErB,CACF;;GACF"}
@@ -11,28 +11,31 @@
11
11
  */
12
12
 
13
13
  import { FloatingCardProviderProps } from "./types.js";
14
- import * as react_jsx_runtime37 from "react/jsx-runtime";
14
+ import * as react_jsx_runtime99 from "react/jsx-runtime";
15
15
 
16
16
  //#region src/components/floating-card/provider.d.ts
17
17
 
18
18
  /**
19
19
  * Provides a context and layout area for floating cards within the application.
20
20
  *
21
- * Wraps children with floating card context and renders a Dockview instance to manage
22
- * docking, dragging, and layout of floating cards.
21
+ * Wraps children with floating card context and renders each registered card as
22
+ * a draggable, resizable panel bounded by the provider's own box.
23
23
  *
24
24
  * @param props - The props for the FloatingCardProvider component.
25
25
  * @param props.children - Child components rendered inside the floating card provider.
26
26
  * @param props.icon - Optional icon rendered in all card headers (static or factory).
27
27
  * @param props.headerActions - Optional action buttons for card headers (static or factory).
28
+ * @param props.initialPinned - Card IDs that start pinned.
29
+ * @param props.bounds - Region cards are confined to. Defaults to `'provider'`.
28
30
  * @param props.className - Additional CSS class names for styling.
29
31
  * @returns The FloatingCardProvider component that manages floating card layout and context.
30
32
  *
31
33
  * @remarks
32
34
  * - Manages registration and cleanup of floating card DOM references
33
35
  * - Exposes closeCard, togglePinCard, and isPinned via context
34
- * - Automatically cleans up refs when cards are removed via any path (drag close, group close, API close)
35
- * - Cards are bounded within the viewport
36
+ * - Cards are bounded within the provider element by default; `bounds='viewport'`
37
+ * lets them move anywhere on screen
38
+ * - Cards are dragged by their header; pinning a card freezes drag and resize
36
39
  *
37
40
  * @example
38
41
  * ```tsx
@@ -55,8 +58,9 @@ declare function FloatingCardProvider({
55
58
  icon,
56
59
  headerActions,
57
60
  initialPinned,
61
+ bounds,
58
62
  className
59
- }: FloatingCardProviderProps): react_jsx_runtime37.JSX.Element;
63
+ }: FloatingCardProviderProps): react_jsx_runtime99.JSX.Element;
60
64
  //#endregion
61
65
  export { FloatingCardProvider };
62
66
  //# sourceMappingURL=provider.d.ts.map