@btst/stack 2.0.0 → 2.1.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 (288) hide show
  1. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.cjs +2 -2
  2. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.mjs +2 -2
  3. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.cjs +32 -0
  4. package/dist/packages/stack/src/plugins/ai-chat/client/components/chat-interface.mjs +32 -0
  5. package/dist/packages/ui/src/components/calendar.cjs +2 -2
  6. package/dist/packages/ui/src/components/calendar.mjs +2 -2
  7. package/dist/packages/ui/src/components/sonner.cjs +34 -0
  8. package/dist/packages/ui/src/components/sonner.mjs +32 -0
  9. package/dist/packages/ui/src/components/ui-builder/components/code-panel.cjs +3 -2
  10. package/dist/packages/ui/src/components/ui-builder/components/code-panel.mjs +3 -2
  11. package/dist/packages/ui/src/components/ui-builder/index.cjs +10 -4
  12. package/dist/packages/ui/src/components/ui-builder/index.mjs +10 -4
  13. package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.cjs +22 -23
  14. package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.mjs +22 -23
  15. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu-portal.cjs +261 -0
  16. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu-portal.mjs +255 -0
  17. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu.cjs +125 -0
  18. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu.mjs +119 -0
  19. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-menu.cjs +6 -17
  20. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-menu.mjs +7 -18
  21. package/dist/packages/ui/src/components/ui-builder/internal/components/nav.cjs +23 -18
  22. package/dist/packages/ui/src/components/ui-builder/internal/components/nav.mjs +23 -18
  23. package/dist/packages/ui/src/components/ui-builder/internal/components/tree-row-node.cjs +8 -23
  24. package/dist/packages/ui/src/components/ui-builder/internal/components/tree-row-node.mjs +9 -24
  25. package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.cjs +9 -41
  26. package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.mjs +9 -41
  27. package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.cjs +7 -16
  28. package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.mjs +7 -16
  29. package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.cjs +16 -11
  30. package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.mjs +16 -11
  31. package/dist/packages/ui/src/components/ui-builder/internal/utils/templates.cjs +260 -20
  32. package/dist/packages/ui/src/components/ui-builder/internal/utils/templates.mjs +260 -20
  33. package/dist/packages/ui/src/components/ui-builder/internal/variables-panel.cjs +105 -17
  34. package/dist/packages/ui/src/components/ui-builder/internal/variables-panel.mjs +107 -19
  35. package/dist/packages/ui/src/components/ui-builder/layer-renderer.cjs +4 -2
  36. package/dist/packages/ui/src/components/ui-builder/layer-renderer.mjs +4 -2
  37. package/dist/packages/ui/src/hooks/use-keyboard-shortcuts.cjs +3 -1
  38. package/dist/packages/ui/src/hooks/use-keyboard-shortcuts.mjs +3 -1
  39. package/dist/packages/ui/src/lib/ui-builder/hooks/use-layer-actions.cjs +107 -0
  40. package/dist/packages/ui/src/lib/ui-builder/hooks/use-layer-actions.mjs +105 -0
  41. package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.cjs +9 -7
  42. package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.mjs +9 -7
  43. package/dist/packages/ui/src/lib/ui-builder/shortcuts/shortcut-registry.cjs +71 -0
  44. package/dist/packages/ui/src/lib/ui-builder/shortcuts/shortcut-registry.mjs +68 -0
  45. package/dist/packages/ui/src/lib/ui-builder/store/editor-store.cjs +48 -3
  46. package/dist/packages/ui/src/lib/ui-builder/store/editor-store.mjs +48 -3
  47. package/dist/packages/ui/src/lib/ui-builder/store/layer-store.cjs +4 -1
  48. package/dist/packages/ui/src/lib/ui-builder/store/layer-store.mjs +4 -1
  49. package/dist/packages/ui/src/lib/ui-builder/store/schema-utils.cjs +8 -0
  50. package/dist/packages/ui/src/lib/ui-builder/store/schema-utils.mjs +8 -1
  51. package/dist/packages/ui/src/lib/ui-builder/utils/paste-validation.cjs +25 -0
  52. package/dist/packages/ui/src/lib/ui-builder/utils/paste-validation.mjs +23 -0
  53. package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.cjs +42 -3
  54. package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.mjs +42 -3
  55. package/dist/plugins/blog/api/index.d.cts +1 -1
  56. package/dist/plugins/blog/api/index.d.mts +1 -1
  57. package/dist/plugins/blog/api/index.d.ts +1 -1
  58. package/dist/plugins/blog/client/hooks/index.d.cts +4 -4
  59. package/dist/plugins/blog/client/hooks/index.d.mts +4 -4
  60. package/dist/plugins/blog/client/hooks/index.d.ts +4 -4
  61. package/dist/plugins/blog/client/index.d.cts +1 -1
  62. package/dist/plugins/blog/client/index.d.mts +1 -1
  63. package/dist/plugins/blog/client/index.d.ts +1 -1
  64. package/dist/plugins/blog/query-keys.d.cts +4 -4
  65. package/dist/plugins/blog/query-keys.d.mts +4 -4
  66. package/dist/plugins/blog/query-keys.d.ts +4 -4
  67. package/dist/plugins/cms/api/index.d.cts +1 -1
  68. package/dist/plugins/cms/api/index.d.mts +1 -1
  69. package/dist/plugins/cms/api/index.d.ts +1 -1
  70. package/dist/plugins/ui-builder/client/components/index.d.cts +1 -1
  71. package/dist/plugins/ui-builder/client/components/index.d.mts +1 -1
  72. package/dist/plugins/ui-builder/client/components/index.d.ts +1 -1
  73. package/dist/plugins/ui-builder/client/hooks/index.d.cts +2 -2
  74. package/dist/plugins/ui-builder/client/hooks/index.d.mts +2 -2
  75. package/dist/plugins/ui-builder/client/hooks/index.d.ts +2 -2
  76. package/dist/plugins/ui-builder/client/index.d.cts +16 -6
  77. package/dist/plugins/ui-builder/client/index.d.mts +16 -6
  78. package/dist/plugins/ui-builder/client/index.d.ts +16 -6
  79. package/dist/plugins/ui-builder/index.d.cts +2 -2
  80. package/dist/plugins/ui-builder/index.d.mts +2 -2
  81. package/dist/plugins/ui-builder/index.d.ts +2 -2
  82. package/dist/shared/{stack.DYCFcnkL.d.mts → stack.6fUOjLs9.d.mts} +1 -1
  83. package/dist/shared/{stack.BdJFrdyt.d.cts → stack.B-YHz18S.d.cts} +2 -2
  84. package/dist/shared/{stack.kFbDspnF.d.ts → stack.C-Ptrz8s.d.ts} +1 -1
  85. package/dist/shared/{stack.BYysGdHl.d.cts → stack.C-WUPMT6.d.cts} +1 -1
  86. package/dist/shared/{stack.ChVuHi5e.d.mts → stack.D1DMlJp-.d.mts} +2 -2
  87. package/dist/shared/{stack.EhM4pmtN.d.ts → stack.GygI_T3X.d.ts} +2 -2
  88. package/package.json +1 -1
  89. package/src/plugins/ai-chat/client/components/chat-interface.tsx +64 -1
  90. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.cjs +0 -0
  91. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.mjs +0 -0
  92. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.cjs +0 -0
  93. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.mjs +0 -0
  94. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.cjs +0 -0
  95. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.mjs +0 -0
  96. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.cjs +0 -0
  97. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.mjs +0 -0
  98. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.cjs +0 -0
  99. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.mjs +0 -0
  100. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.cjs +0 -0
  101. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.mjs +0 -0
  102. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.cjs +0 -0
  103. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.mjs +0 -0
  104. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.cjs +0 -0
  105. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.mjs +0 -0
  106. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.cjs +0 -0
  107. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.mjs +0 -0
  108. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.cjs +0 -0
  109. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.mjs +0 -0
  110. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.cjs +0 -0
  111. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.mjs +0 -0
  112. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.cjs +0 -0
  113. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.mjs +0 -0
  114. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.cjs +0 -0
  115. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.mjs +0 -0
  116. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.cjs +0 -0
  117. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.mjs +0 -0
  118. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.cjs +0 -0
  119. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.mjs +0 -0
  120. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.cjs +0 -0
  121. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.mjs +0 -0
  122. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.cjs +0 -0
  123. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.mjs +0 -0
  124. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.cjs +0 -0
  125. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.mjs +0 -0
  126. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.cjs +0 -0
  127. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.mjs +0 -0
  128. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.cjs +0 -0
  129. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.mjs +0 -0
  130. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.cjs +0 -0
  131. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.mjs +0 -0
  132. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.cjs +0 -0
  133. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.mjs +0 -0
  134. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.cjs +0 -0
  135. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.mjs +0 -0
  136. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.cjs +0 -0
  137. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.mjs +0 -0
  138. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.cjs +0 -0
  139. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.mjs +0 -0
  140. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.cjs +0 -0
  141. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.mjs +0 -0
  142. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.cjs +0 -0
  143. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.mjs +0 -0
  144. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.cjs +0 -0
  145. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.mjs +0 -0
  146. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.cjs +0 -0
  147. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.mjs +0 -0
  148. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.cjs +0 -0
  149. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.mjs +0 -0
  150. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.cjs +0 -0
  151. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.mjs +0 -0
  152. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.cjs +0 -0
  153. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.mjs +0 -0
  154. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.cjs +0 -0
  155. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.mjs +0 -0
  156. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.cjs +0 -0
  157. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.mjs +0 -0
  158. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.cjs +0 -0
  159. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.mjs +0 -0
  160. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.cjs +0 -0
  161. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.mjs +0 -0
  162. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.cjs +0 -0
  163. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.mjs +0 -0
  164. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.cjs +0 -0
  165. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.mjs +0 -0
  166. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.cjs +0 -0
  167. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.mjs +0 -0
  168. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.cjs +0 -0
  169. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.mjs +0 -0
  170. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.cjs +0 -0
  171. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.mjs +0 -0
  172. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.cjs +0 -0
  173. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.mjs +0 -0
  174. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.cjs +0 -0
  175. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.mjs +0 -0
  176. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.cjs +0 -0
  177. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.mjs +0 -0
  178. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.cjs +0 -0
  179. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.mjs +0 -0
  180. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.cjs +0 -0
  181. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.mjs +0 -0
  182. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.cjs +0 -0
  183. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.mjs +0 -0
  184. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.cjs +0 -0
  185. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.mjs +0 -0
  186. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.cjs +0 -0
  187. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.mjs +0 -0
  188. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.cjs +0 -0
  189. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.mjs +0 -0
  190. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.cjs +0 -0
  191. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.mjs +0 -0
  192. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.cjs +0 -0
  193. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.mjs +0 -0
  194. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.cjs +0 -0
  195. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.mjs +0 -0
  196. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.cjs +0 -0
  197. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.mjs +0 -0
  198. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.cjs +0 -0
  199. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.mjs +0 -0
  200. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.cjs +0 -0
  201. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.mjs +0 -0
  202. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.cjs +0 -0
  203. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.mjs +0 -0
  204. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.cjs +0 -0
  205. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.mjs +0 -0
  206. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.cjs +0 -0
  207. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.mjs +0 -0
  208. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.cjs +0 -0
  209. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.mjs +0 -0
  210. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.cjs +0 -0
  211. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.mjs +0 -0
  212. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.cjs +0 -0
  213. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.mjs +0 -0
  214. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.cjs +0 -0
  215. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.mjs +0 -0
  216. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.cjs +0 -0
  217. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.mjs +0 -0
  218. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.cjs +0 -0
  219. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.mjs +0 -0
  220. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.cjs +0 -0
  221. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.mjs +0 -0
  222. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.cjs +0 -0
  223. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.mjs +0 -0
  224. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.cjs +0 -0
  225. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.mjs +0 -0
  226. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.cjs +0 -0
  227. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.mjs +0 -0
  228. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.cjs +0 -0
  229. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.mjs +0 -0
  230. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.cjs +0 -0
  231. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.mjs +0 -0
  232. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.cjs +0 -0
  233. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.mjs +0 -0
  234. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.cjs +0 -0
  235. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.mjs +0 -0
  236. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.cjs +0 -0
  237. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.mjs +0 -0
  238. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.cjs +0 -0
  239. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.mjs +0 -0
  240. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.cjs +0 -0
  241. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.mjs +0 -0
  242. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.cjs +0 -0
  243. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.mjs +0 -0
  244. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.cjs +0 -0
  245. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.mjs +0 -0
  246. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.cjs +0 -0
  247. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.mjs +0 -0
  248. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.cjs +0 -0
  249. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.mjs +0 -0
  250. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/noonDateLib.cjs +0 -0
  251. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/noonDateLib.mjs +0 -0
  252. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.cjs +0 -0
  253. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.mjs +0 -0
  254. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.cjs +0 -0
  255. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.mjs +0 -0
  256. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.cjs +0 -0
  257. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.mjs +0 -0
  258. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.cjs +0 -0
  259. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.mjs +0 -0
  260. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.cjs +0 -0
  261. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.mjs +0 -0
  262. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.cjs +0 -0
  263. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.mjs +0 -0
  264. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.cjs +0 -0
  265. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.mjs +0 -0
  266. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.cjs +0 -0
  267. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.mjs +0 -0
  268. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.cjs +0 -0
  269. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.mjs +0 -0
  270. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.cjs +0 -0
  271. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.mjs +0 -0
  272. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs +0 -0
  273. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.mjs +0 -0
  274. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.cjs +0 -0
  275. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.mjs +0 -0
  276. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.cjs +0 -0
  277. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.mjs +0 -0
  278. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.cjs +0 -0
  279. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.mjs +0 -0
  280. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.cjs +0 -0
  281. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.mjs +0 -0
  282. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.cjs +0 -0
  283. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.mjs +0 -0
  284. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.cjs +0 -0
  285. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.mjs +0 -0
  286. package/dist/shared/{stack.CcI4sYJP.d.ts → stack.CbuN2zVV.d.cts} +3 -3
  287. package/dist/shared/{stack.CcI4sYJP.d.cts → stack.CbuN2zVV.d.mts} +3 -3
  288. package/dist/shared/{stack.CcI4sYJP.d.mts → stack.CbuN2zVV.d.ts} +3 -3
@@ -0,0 +1,261 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const jsxRuntime = require('react/jsx-runtime');
5
+ const React = require('react');
6
+ const ReactDOM = require('react-dom');
7
+ const LucideIcons = require('lucide-react');
8
+ const editorStore = require('../../../../lib/ui-builder/store/editor-store.cjs');
9
+ const layerStore = require('../../../../lib/ui-builder/store/layer-store.cjs');
10
+ const schemaUtils = require('../../../../lib/ui-builder/store/schema-utils.cjs');
11
+ const shortcutRegistry = require('../../../../lib/ui-builder/shortcuts/shortcut-registry.cjs');
12
+ const useLayerActions = require('../../../../lib/ui-builder/hooks/use-layer-actions.cjs');
13
+ const pasteValidation = require('../../../../lib/ui-builder/utils/paste-validation.cjs');
14
+ const addComponentPopover = require('./add-component-popover.cjs');
15
+ const utils = require('../../../../lib/utils.cjs');
16
+ const autoFrame = require('../canvas/auto-frame.cjs');
17
+ require('../../../../../../../node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.cjs');
18
+ require('../../../../lib/ui-builder/context/dnd-context-colission-utils.cjs');
19
+ const dndContexts = require('../../../../lib/ui-builder/context/dnd-contexts.cjs');
20
+ const floatingUi_react = require('../../../../../../../node_modules/.pnpm/@floating-ui_react@0.27.16_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react/dist/floating-ui.react.cjs');
21
+ const floatingUi_reactDom = require('../../../../../../../node_modules/.pnpm/@floating-ui_react-dom@2.1.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs');
22
+
23
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
24
+
25
+ const React__default = /*#__PURE__*/_interopDefaultCompat(React);
26
+
27
+ const LayerContextMenuPortal = () => {
28
+ const contextMenu = editorStore.useEditorStore((state) => state.contextMenu);
29
+ const closeContextMenu = editorStore.useEditorStore((state) => state.closeContextMenu);
30
+ const selectedLayerId = layerStore.useLayerStore((state) => state.selectedLayerId);
31
+ const { isDragging } = dndContexts.useDndContext();
32
+ const [mounted, setMounted] = React.useState(false);
33
+ const contextMenuLayerIdRef = React.useRef(null);
34
+ const frameContext = autoFrame.useFrame();
35
+ const { refs, floatingStyles } = floatingUi_react.useFloating({
36
+ placement: "bottom-start",
37
+ middleware: [
38
+ floatingUi_reactDom.offset(2),
39
+ // Small offset from cursor
40
+ floatingUi_reactDom.flip({
41
+ fallbackPlacements: ["top-start", "bottom-end", "top-end"],
42
+ padding: 8
43
+ }),
44
+ floatingUi_reactDom.shift({
45
+ crossAxis: true,
46
+ limiter: floatingUi_reactDom.limitShift(),
47
+ padding: 8
48
+ })
49
+ ]
50
+ });
51
+ React.useEffect(() => {
52
+ if (!contextMenu.open) return;
53
+ const virtualReference = {
54
+ getBoundingClientRect: () => ({
55
+ x: contextMenu.x,
56
+ y: contextMenu.y,
57
+ width: 0,
58
+ height: 0,
59
+ top: contextMenu.y,
60
+ left: contextMenu.x,
61
+ right: contextMenu.x,
62
+ bottom: contextMenu.y
63
+ })
64
+ };
65
+ refs.setPositionReference(virtualReference);
66
+ }, [contextMenu.open, contextMenu.x, contextMenu.y, refs]);
67
+ React.useEffect(() => {
68
+ setMounted(true);
69
+ }, []);
70
+ React.useEffect(() => {
71
+ if (contextMenu.open && contextMenu.layerId) {
72
+ contextMenuLayerIdRef.current = contextMenu.layerId;
73
+ } else {
74
+ contextMenuLayerIdRef.current = null;
75
+ }
76
+ }, [contextMenu.open, contextMenu.layerId]);
77
+ React.useEffect(() => {
78
+ if (contextMenu.open && contextMenuLayerIdRef.current && selectedLayerId !== contextMenuLayerIdRef.current) {
79
+ closeContextMenu();
80
+ }
81
+ }, [selectedLayerId, contextMenu.open, closeContextMenu]);
82
+ React.useEffect(() => {
83
+ if (isDragging && contextMenu.open) {
84
+ closeContextMenu();
85
+ }
86
+ }, [isDragging, contextMenu.open, closeContextMenu]);
87
+ React.useEffect(() => {
88
+ if (!contextMenu.open) return;
89
+ const handleClickOutside = (e) => {
90
+ const floatingEl = refs.floating.current;
91
+ if (floatingEl && !floatingEl.contains(e.target)) {
92
+ closeContextMenu();
93
+ }
94
+ };
95
+ const handleContextMenuOutside = (e) => {
96
+ const floatingEl = refs.floating.current;
97
+ if (floatingEl && !floatingEl.contains(e.target)) {
98
+ closeContextMenu();
99
+ }
100
+ };
101
+ const targetDoc = frameContext.document ?? document;
102
+ targetDoc.addEventListener("mousedown", handleClickOutside);
103
+ targetDoc.addEventListener("contextmenu", handleContextMenuOutside);
104
+ return () => {
105
+ targetDoc.removeEventListener("mousedown", handleClickOutside);
106
+ targetDoc.removeEventListener("contextmenu", handleContextMenuOutside);
107
+ };
108
+ }, [contextMenu.open, closeContextMenu, refs.floating, frameContext.document]);
109
+ React.useEffect(() => {
110
+ if (!contextMenu.open) return;
111
+ const handleKeyDown = (e) => {
112
+ if (e.key === "Escape") {
113
+ closeContextMenu();
114
+ }
115
+ };
116
+ const targetDoc = frameContext.document ?? document;
117
+ targetDoc.addEventListener("keydown", handleKeyDown);
118
+ return () => targetDoc.removeEventListener("keydown", handleKeyDown);
119
+ }, [contextMenu.open, closeContextMenu, frameContext.document]);
120
+ if (!mounted || !contextMenu.open || !contextMenu.layerId) {
121
+ return null;
122
+ }
123
+ const portalTarget = frameContext.document?.body || document.body;
124
+ const menuContent = /* @__PURE__ */ jsxRuntime.jsx(
125
+ "div",
126
+ {
127
+ ref: refs.setFloating,
128
+ "data-testid": "layer-context-menu-portal",
129
+ className: "z-[10000] min-w-[14rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
130
+ style: floatingStyles,
131
+ children: /* @__PURE__ */ jsxRuntime.jsx(
132
+ ContextMenuPortalItems,
133
+ {
134
+ layerId: contextMenu.layerId,
135
+ onAction: closeContextMenu
136
+ }
137
+ )
138
+ }
139
+ );
140
+ return ReactDOM.createPortal(menuContent, portalTarget);
141
+ };
142
+ const ContextMenuPortalItems = ({
143
+ layerId,
144
+ onAction
145
+ }) => {
146
+ const selectedLayer = layerStore.useLayerStore((state) => state.findLayerById(layerId));
147
+ const findLayerById = layerStore.useLayerStore((state) => state.findLayerById);
148
+ const componentRegistry = editorStore.useEditorStore((state) => state.registry);
149
+ const clipboardLayer = editorStore.useEditorStore((state) => state.clipboard.layer);
150
+ const {
151
+ canDuplicate,
152
+ canDelete,
153
+ canCut,
154
+ handleCopy,
155
+ handleCut,
156
+ handlePaste,
157
+ handleDelete,
158
+ handleDuplicate
159
+ } = useLayerActions.useGlobalLayerActions(layerId);
160
+ const canPaste = React__default.useMemo(() => {
161
+ if (!clipboardLayer || !selectedLayer) return false;
162
+ return pasteValidation.canPasteLayer(clipboardLayer, layerId, componentRegistry, findLayerById);
163
+ }, [clipboardLayer, layerId, componentRegistry, findLayerById, selectedLayer]);
164
+ const canRenderAddChild = React__default.useMemo(() => {
165
+ if (!selectedLayer) return false;
166
+ const componentDef = componentRegistry[selectedLayer.type];
167
+ if (!componentDef) return false;
168
+ return schemaUtils.canComponentAcceptChildren(componentDef.schema);
169
+ }, [selectedLayer, componentRegistry]);
170
+ const handleCopyClick = React.useCallback(() => {
171
+ handleCopy();
172
+ onAction();
173
+ }, [handleCopy, onAction]);
174
+ const handleCutClick = React.useCallback(() => {
175
+ handleCut();
176
+ onAction();
177
+ }, [handleCut, onAction]);
178
+ const handlePasteClick = React.useCallback(() => {
179
+ handlePaste();
180
+ onAction();
181
+ }, [handlePaste, onAction]);
182
+ const handleDuplicateClick = React.useCallback(() => {
183
+ handleDuplicate();
184
+ onAction();
185
+ }, [handleDuplicate, onAction]);
186
+ const handleDeleteClick = React.useCallback(() => {
187
+ handleDelete();
188
+ onAction();
189
+ }, [handleDelete, onAction]);
190
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
191
+ canRenderAddChild && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx(addComponentPopover.AddComponentsPopover, { parentLayerId: layerId, children: /* @__PURE__ */ jsxRuntime.jsxs(MenuItem, { onClick: (e) => e.stopPropagation(), children: [
193
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Plus, { className: "mr-2 h-4 w-4" }),
194
+ "Add Child"
195
+ ] }) }),
196
+ /* @__PURE__ */ jsxRuntime.jsx(MenuSeparator, {})
197
+ ] }),
198
+ /* @__PURE__ */ jsxRuntime.jsxs(MenuItem, { onClick: handleCopyClick, children: [
199
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Copy, { className: "mr-2 h-4 w-4" }),
200
+ "Copy",
201
+ /* @__PURE__ */ jsxRuntime.jsx(MenuShortcut, { children: shortcutRegistry.SHORTCUTS.copy.shortcutDisplay })
202
+ ] }),
203
+ canCut && /* @__PURE__ */ jsxRuntime.jsxs(MenuItem, { onClick: handleCutClick, children: [
204
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Scissors, { className: "mr-2 h-4 w-4" }),
205
+ "Cut",
206
+ /* @__PURE__ */ jsxRuntime.jsx(MenuShortcut, { children: shortcutRegistry.SHORTCUTS.cut.shortcutDisplay })
207
+ ] }),
208
+ /* @__PURE__ */ jsxRuntime.jsxs(MenuItem, { onClick: handlePasteClick, disabled: !canPaste, children: [
209
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ClipboardPaste, { className: "mr-2 h-4 w-4" }),
210
+ "Paste",
211
+ /* @__PURE__ */ jsxRuntime.jsx(MenuShortcut, { children: shortcutRegistry.SHORTCUTS.paste.shortcutDisplay })
212
+ ] }),
213
+ /* @__PURE__ */ jsxRuntime.jsx(MenuSeparator, {}),
214
+ canDuplicate && /* @__PURE__ */ jsxRuntime.jsxs(MenuItem, { onClick: handleDuplicateClick, children: [
215
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.CopyPlus, { className: "mr-2 h-4 w-4" }),
216
+ "Duplicate",
217
+ /* @__PURE__ */ jsxRuntime.jsx(MenuShortcut, { children: shortcutRegistry.SHORTCUTS.duplicate.shortcutDisplay })
218
+ ] }),
219
+ canDelete && /* @__PURE__ */ jsxRuntime.jsxs(
220
+ MenuItem,
221
+ {
222
+ onClick: handleDeleteClick,
223
+ className: "text-destructive focus:text-destructive",
224
+ children: [
225
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Trash, { className: "mr-2 h-4 w-4" }),
226
+ "Delete",
227
+ /* @__PURE__ */ jsxRuntime.jsx(MenuShortcut, { children: shortcutRegistry.SHORTCUTS.delete.shortcutDisplay })
228
+ ]
229
+ }
230
+ )
231
+ ] });
232
+ };
233
+ const MenuItem = ({
234
+ children,
235
+ onClick,
236
+ disabled,
237
+ className
238
+ }) => {
239
+ return /* @__PURE__ */ jsxRuntime.jsx(
240
+ "div",
241
+ {
242
+ role: "menuitem",
243
+ "data-testid": "menu-item",
244
+ onClick: disabled ? void 0 : onClick,
245
+ className: utils.cn(
246
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
247
+ disabled && "pointer-events-none opacity-50",
248
+ className
249
+ ),
250
+ children
251
+ }
252
+ );
253
+ };
254
+ const MenuSeparator = () => {
255
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "-mx-1 my-1 h-px bg-muted", "data-testid": "menu-separator" });
256
+ };
257
+ const MenuShortcut = ({ children }) => {
258
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-xs tracking-widest opacity-60", "data-testid": "menu-shortcut", children });
259
+ };
260
+
261
+ exports.LayerContextMenuPortal = LayerContextMenuPortal;
@@ -0,0 +1,255 @@
1
+ "use client";
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import React__default, { useState, useRef, useEffect, useCallback } from 'react';
4
+ import { createPortal } from 'react-dom';
5
+ import { Plus, Copy, Scissors, ClipboardPaste, CopyPlus, Trash } from 'lucide-react';
6
+ import { useEditorStore } from '../../../../lib/ui-builder/store/editor-store.mjs';
7
+ import { useLayerStore } from '../../../../lib/ui-builder/store/layer-store.mjs';
8
+ import { canComponentAcceptChildren } from '../../../../lib/ui-builder/store/schema-utils.mjs';
9
+ import { SHORTCUTS } from '../../../../lib/ui-builder/shortcuts/shortcut-registry.mjs';
10
+ import { useGlobalLayerActions } from '../../../../lib/ui-builder/hooks/use-layer-actions.mjs';
11
+ import { canPasteLayer } from '../../../../lib/ui-builder/utils/paste-validation.mjs';
12
+ import { AddComponentsPopover } from './add-component-popover.mjs';
13
+ import { cn } from '../../../../lib/utils.mjs';
14
+ import { useFrame } from '../canvas/auto-frame.mjs';
15
+ import '../../../../../../../node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.mjs';
16
+ import '../../../../lib/ui-builder/context/dnd-context-colission-utils.mjs';
17
+ import { useDndContext } from '../../../../lib/ui-builder/context/dnd-contexts.mjs';
18
+ import { useFloating } from '../../../../../../../node_modules/.pnpm/@floating-ui_react@0.27.16_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react/dist/floating-ui.react.mjs';
19
+ import { offset, flip, shift, limitShift } from '../../../../../../../node_modules/.pnpm/@floating-ui_react-dom@2.1.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs';
20
+
21
+ const LayerContextMenuPortal = () => {
22
+ const contextMenu = useEditorStore((state) => state.contextMenu);
23
+ const closeContextMenu = useEditorStore((state) => state.closeContextMenu);
24
+ const selectedLayerId = useLayerStore((state) => state.selectedLayerId);
25
+ const { isDragging } = useDndContext();
26
+ const [mounted, setMounted] = useState(false);
27
+ const contextMenuLayerIdRef = useRef(null);
28
+ const frameContext = useFrame();
29
+ const { refs, floatingStyles } = useFloating({
30
+ placement: "bottom-start",
31
+ middleware: [
32
+ offset(2),
33
+ // Small offset from cursor
34
+ flip({
35
+ fallbackPlacements: ["top-start", "bottom-end", "top-end"],
36
+ padding: 8
37
+ }),
38
+ shift({
39
+ crossAxis: true,
40
+ limiter: limitShift(),
41
+ padding: 8
42
+ })
43
+ ]
44
+ });
45
+ useEffect(() => {
46
+ if (!contextMenu.open) return;
47
+ const virtualReference = {
48
+ getBoundingClientRect: () => ({
49
+ x: contextMenu.x,
50
+ y: contextMenu.y,
51
+ width: 0,
52
+ height: 0,
53
+ top: contextMenu.y,
54
+ left: contextMenu.x,
55
+ right: contextMenu.x,
56
+ bottom: contextMenu.y
57
+ })
58
+ };
59
+ refs.setPositionReference(virtualReference);
60
+ }, [contextMenu.open, contextMenu.x, contextMenu.y, refs]);
61
+ useEffect(() => {
62
+ setMounted(true);
63
+ }, []);
64
+ useEffect(() => {
65
+ if (contextMenu.open && contextMenu.layerId) {
66
+ contextMenuLayerIdRef.current = contextMenu.layerId;
67
+ } else {
68
+ contextMenuLayerIdRef.current = null;
69
+ }
70
+ }, [contextMenu.open, contextMenu.layerId]);
71
+ useEffect(() => {
72
+ if (contextMenu.open && contextMenuLayerIdRef.current && selectedLayerId !== contextMenuLayerIdRef.current) {
73
+ closeContextMenu();
74
+ }
75
+ }, [selectedLayerId, contextMenu.open, closeContextMenu]);
76
+ useEffect(() => {
77
+ if (isDragging && contextMenu.open) {
78
+ closeContextMenu();
79
+ }
80
+ }, [isDragging, contextMenu.open, closeContextMenu]);
81
+ useEffect(() => {
82
+ if (!contextMenu.open) return;
83
+ const handleClickOutside = (e) => {
84
+ const floatingEl = refs.floating.current;
85
+ if (floatingEl && !floatingEl.contains(e.target)) {
86
+ closeContextMenu();
87
+ }
88
+ };
89
+ const handleContextMenuOutside = (e) => {
90
+ const floatingEl = refs.floating.current;
91
+ if (floatingEl && !floatingEl.contains(e.target)) {
92
+ closeContextMenu();
93
+ }
94
+ };
95
+ const targetDoc = frameContext.document ?? document;
96
+ targetDoc.addEventListener("mousedown", handleClickOutside);
97
+ targetDoc.addEventListener("contextmenu", handleContextMenuOutside);
98
+ return () => {
99
+ targetDoc.removeEventListener("mousedown", handleClickOutside);
100
+ targetDoc.removeEventListener("contextmenu", handleContextMenuOutside);
101
+ };
102
+ }, [contextMenu.open, closeContextMenu, refs.floating, frameContext.document]);
103
+ useEffect(() => {
104
+ if (!contextMenu.open) return;
105
+ const handleKeyDown = (e) => {
106
+ if (e.key === "Escape") {
107
+ closeContextMenu();
108
+ }
109
+ };
110
+ const targetDoc = frameContext.document ?? document;
111
+ targetDoc.addEventListener("keydown", handleKeyDown);
112
+ return () => targetDoc.removeEventListener("keydown", handleKeyDown);
113
+ }, [contextMenu.open, closeContextMenu, frameContext.document]);
114
+ if (!mounted || !contextMenu.open || !contextMenu.layerId) {
115
+ return null;
116
+ }
117
+ const portalTarget = frameContext.document?.body || document.body;
118
+ const menuContent = /* @__PURE__ */ jsx(
119
+ "div",
120
+ {
121
+ ref: refs.setFloating,
122
+ "data-testid": "layer-context-menu-portal",
123
+ className: "z-[10000] min-w-[14rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
124
+ style: floatingStyles,
125
+ children: /* @__PURE__ */ jsx(
126
+ ContextMenuPortalItems,
127
+ {
128
+ layerId: contextMenu.layerId,
129
+ onAction: closeContextMenu
130
+ }
131
+ )
132
+ }
133
+ );
134
+ return createPortal(menuContent, portalTarget);
135
+ };
136
+ const ContextMenuPortalItems = ({
137
+ layerId,
138
+ onAction
139
+ }) => {
140
+ const selectedLayer = useLayerStore((state) => state.findLayerById(layerId));
141
+ const findLayerById = useLayerStore((state) => state.findLayerById);
142
+ const componentRegistry = useEditorStore((state) => state.registry);
143
+ const clipboardLayer = useEditorStore((state) => state.clipboard.layer);
144
+ const {
145
+ canDuplicate,
146
+ canDelete,
147
+ canCut,
148
+ handleCopy,
149
+ handleCut,
150
+ handlePaste,
151
+ handleDelete,
152
+ handleDuplicate
153
+ } = useGlobalLayerActions(layerId);
154
+ const canPaste = React__default.useMemo(() => {
155
+ if (!clipboardLayer || !selectedLayer) return false;
156
+ return canPasteLayer(clipboardLayer, layerId, componentRegistry, findLayerById);
157
+ }, [clipboardLayer, layerId, componentRegistry, findLayerById, selectedLayer]);
158
+ const canRenderAddChild = React__default.useMemo(() => {
159
+ if (!selectedLayer) return false;
160
+ const componentDef = componentRegistry[selectedLayer.type];
161
+ if (!componentDef) return false;
162
+ return canComponentAcceptChildren(componentDef.schema);
163
+ }, [selectedLayer, componentRegistry]);
164
+ const handleCopyClick = useCallback(() => {
165
+ handleCopy();
166
+ onAction();
167
+ }, [handleCopy, onAction]);
168
+ const handleCutClick = useCallback(() => {
169
+ handleCut();
170
+ onAction();
171
+ }, [handleCut, onAction]);
172
+ const handlePasteClick = useCallback(() => {
173
+ handlePaste();
174
+ onAction();
175
+ }, [handlePaste, onAction]);
176
+ const handleDuplicateClick = useCallback(() => {
177
+ handleDuplicate();
178
+ onAction();
179
+ }, [handleDuplicate, onAction]);
180
+ const handleDeleteClick = useCallback(() => {
181
+ handleDelete();
182
+ onAction();
183
+ }, [handleDelete, onAction]);
184
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
185
+ canRenderAddChild && /* @__PURE__ */ jsxs(Fragment, { children: [
186
+ /* @__PURE__ */ jsx(AddComponentsPopover, { parentLayerId: layerId, children: /* @__PURE__ */ jsxs(MenuItem, { onClick: (e) => e.stopPropagation(), children: [
187
+ /* @__PURE__ */ jsx(Plus, { className: "mr-2 h-4 w-4" }),
188
+ "Add Child"
189
+ ] }) }),
190
+ /* @__PURE__ */ jsx(MenuSeparator, {})
191
+ ] }),
192
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: handleCopyClick, children: [
193
+ /* @__PURE__ */ jsx(Copy, { className: "mr-2 h-4 w-4" }),
194
+ "Copy",
195
+ /* @__PURE__ */ jsx(MenuShortcut, { children: SHORTCUTS.copy.shortcutDisplay })
196
+ ] }),
197
+ canCut && /* @__PURE__ */ jsxs(MenuItem, { onClick: handleCutClick, children: [
198
+ /* @__PURE__ */ jsx(Scissors, { className: "mr-2 h-4 w-4" }),
199
+ "Cut",
200
+ /* @__PURE__ */ jsx(MenuShortcut, { children: SHORTCUTS.cut.shortcutDisplay })
201
+ ] }),
202
+ /* @__PURE__ */ jsxs(MenuItem, { onClick: handlePasteClick, disabled: !canPaste, children: [
203
+ /* @__PURE__ */ jsx(ClipboardPaste, { className: "mr-2 h-4 w-4" }),
204
+ "Paste",
205
+ /* @__PURE__ */ jsx(MenuShortcut, { children: SHORTCUTS.paste.shortcutDisplay })
206
+ ] }),
207
+ /* @__PURE__ */ jsx(MenuSeparator, {}),
208
+ canDuplicate && /* @__PURE__ */ jsxs(MenuItem, { onClick: handleDuplicateClick, children: [
209
+ /* @__PURE__ */ jsx(CopyPlus, { className: "mr-2 h-4 w-4" }),
210
+ "Duplicate",
211
+ /* @__PURE__ */ jsx(MenuShortcut, { children: SHORTCUTS.duplicate.shortcutDisplay })
212
+ ] }),
213
+ canDelete && /* @__PURE__ */ jsxs(
214
+ MenuItem,
215
+ {
216
+ onClick: handleDeleteClick,
217
+ className: "text-destructive focus:text-destructive",
218
+ children: [
219
+ /* @__PURE__ */ jsx(Trash, { className: "mr-2 h-4 w-4" }),
220
+ "Delete",
221
+ /* @__PURE__ */ jsx(MenuShortcut, { children: SHORTCUTS.delete.shortcutDisplay })
222
+ ]
223
+ }
224
+ )
225
+ ] });
226
+ };
227
+ const MenuItem = ({
228
+ children,
229
+ onClick,
230
+ disabled,
231
+ className
232
+ }) => {
233
+ return /* @__PURE__ */ jsx(
234
+ "div",
235
+ {
236
+ role: "menuitem",
237
+ "data-testid": "menu-item",
238
+ onClick: disabled ? void 0 : onClick,
239
+ className: cn(
240
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
241
+ disabled && "pointer-events-none opacity-50",
242
+ className
243
+ ),
244
+ children
245
+ }
246
+ );
247
+ };
248
+ const MenuSeparator = () => {
249
+ return /* @__PURE__ */ jsx("div", { className: "-mx-1 my-1 h-px bg-muted", "data-testid": "menu-separator" });
250
+ };
251
+ const MenuShortcut = ({ children }) => {
252
+ return /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs tracking-widest opacity-60", "data-testid": "menu-shortcut", children });
253
+ };
254
+
255
+ export { LayerContextMenuPortal };
@@ -0,0 +1,125 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const jsxRuntime = require('react/jsx-runtime');
5
+ const React = require('react');
6
+ const useLayerActions = require('../../../../lib/ui-builder/hooks/use-layer-actions.cjs');
7
+ const editorStore = require('../../../../lib/ui-builder/store/editor-store.cjs');
8
+ const useKeyboardShortcuts = require('../../../../hooks/use-keyboard-shortcuts.cjs');
9
+ const shortcutRegistry = require('../../../../lib/ui-builder/shortcuts/shortcut-registry.cjs');
10
+
11
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
12
+
13
+ const React__default = /*#__PURE__*/_interopDefaultCompat(React);
14
+
15
+ const LayerContextMenu = ({
16
+ layerId,
17
+ isSelected,
18
+ onSelect,
19
+ children,
20
+ className,
21
+ style
22
+ }) => {
23
+ const openContextMenu = editorStore.useEditorStore((state) => state.openContextMenu);
24
+ const {
25
+ handleCopy,
26
+ handleCut,
27
+ handlePaste,
28
+ handleDelete,
29
+ handleDuplicate,
30
+ getCanPaste
31
+ } = useLayerActions.useGlobalLayerActions(layerId);
32
+ const handleContextMenu = React.useCallback(
33
+ (e) => {
34
+ e.preventDefault();
35
+ e.stopPropagation();
36
+ if (!isSelected) {
37
+ onSelect(layerId);
38
+ }
39
+ openContextMenu(e.clientX, e.clientY, layerId);
40
+ },
41
+ [isSelected, layerId, onSelect, openContextMenu]
42
+ );
43
+ const isInputFocused = React.useCallback(() => {
44
+ const activeElement = document.activeElement;
45
+ if (!activeElement) return false;
46
+ const tagName = activeElement.tagName.toLowerCase();
47
+ const isContentEditable = activeElement.isContentEditable;
48
+ return tagName === "input" || tagName === "textarea" || isContentEditable;
49
+ }, []);
50
+ const keyCombinations = React.useMemo(() => {
51
+ if (!isSelected) return [];
52
+ return [
53
+ {
54
+ keys: shortcutRegistry.SHORTCUTS.copy.keys,
55
+ key: shortcutRegistry.SHORTCUTS.copy.key,
56
+ preventDefault: false,
57
+ handler: (e) => {
58
+ if (isInputFocused()) return;
59
+ e.preventDefault();
60
+ handleCopy();
61
+ }
62
+ },
63
+ {
64
+ keys: shortcutRegistry.SHORTCUTS.cut.keys,
65
+ key: shortcutRegistry.SHORTCUTS.cut.key,
66
+ preventDefault: false,
67
+ handler: (e) => {
68
+ if (isInputFocused()) return;
69
+ e.preventDefault();
70
+ handleCut();
71
+ }
72
+ },
73
+ {
74
+ keys: shortcutRegistry.SHORTCUTS.paste.keys,
75
+ key: shortcutRegistry.SHORTCUTS.paste.key,
76
+ preventDefault: false,
77
+ handler: (e) => {
78
+ if (isInputFocused()) return;
79
+ if (!getCanPaste()) return;
80
+ e.preventDefault();
81
+ handlePaste();
82
+ }
83
+ },
84
+ {
85
+ keys: shortcutRegistry.SHORTCUTS.duplicate.keys,
86
+ key: shortcutRegistry.SHORTCUTS.duplicate.key,
87
+ preventDefault: false,
88
+ handler: (e) => {
89
+ if (isInputFocused()) return;
90
+ e.preventDefault();
91
+ handleDuplicate();
92
+ }
93
+ },
94
+ {
95
+ keys: shortcutRegistry.SHORTCUTS.delete.keys,
96
+ key: shortcutRegistry.SHORTCUTS.delete.key,
97
+ preventDefault: false,
98
+ handler: (e) => {
99
+ if (isInputFocused()) return;
100
+ e.preventDefault();
101
+ handleDelete();
102
+ }
103
+ }
104
+ ];
105
+ }, [isSelected, handleCopy, handleCut, handlePaste, handleDuplicate, handleDelete, getCanPaste, isInputFocused]);
106
+ useKeyboardShortcuts.useKeyboardShortcuts(keyCombinations);
107
+ if (React__default.isValidElement(children)) {
108
+ return React__default.cloneElement(children, {
109
+ onContextMenu: handleContextMenu,
110
+ className: className ? `${children.props.className || ""} ${className}`.trim() : children.props.className,
111
+ style: style ? { ...children.props.style, ...style } : children.props.style
112
+ });
113
+ }
114
+ return /* @__PURE__ */ jsxRuntime.jsx(
115
+ "span",
116
+ {
117
+ onContextMenu: handleContextMenu,
118
+ className,
119
+ style,
120
+ children
121
+ }
122
+ );
123
+ };
124
+
125
+ exports.LayerContextMenu = LayerContextMenu;