framepexls-ui-lib 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/AnalyticsCharts.d.mts +4 -4
  2. package/dist/AnalyticsCharts.d.ts +4 -4
  3. package/dist/AppTopbar.d.mts +1 -2
  4. package/dist/AppTopbar.d.ts +1 -2
  5. package/dist/AssetPerformanceCard.d.mts +50 -0
  6. package/dist/AssetPerformanceCard.d.ts +50 -0
  7. package/dist/AssetPerformanceCard.js +342 -0
  8. package/dist/AssetPerformanceCard.mjs +319 -0
  9. package/dist/AssetTickerRow.d.mts +26 -0
  10. package/dist/AssetTickerRow.d.ts +26 -0
  11. package/dist/AssetTickerRow.js +255 -0
  12. package/dist/AssetTickerRow.mjs +225 -0
  13. package/dist/AuthTopbar.d.mts +2 -2
  14. package/dist/AuthTopbar.d.ts +2 -2
  15. package/dist/AuthTopbar.js +2 -1
  16. package/dist/AuthTopbar.mjs +2 -1
  17. package/dist/AvatarGroup.d.mts +2 -2
  18. package/dist/AvatarGroup.d.ts +2 -2
  19. package/dist/AvatarSquare.d.mts +2 -2
  20. package/dist/AvatarSquare.d.ts +2 -2
  21. package/dist/AvatarSquare.js +29 -27
  22. package/dist/AvatarSquare.mjs +29 -27
  23. package/dist/Badge.d.mts +1 -2
  24. package/dist/Badge.d.ts +1 -2
  25. package/dist/BadgeCluster.d.mts +2 -3
  26. package/dist/BadgeCluster.d.ts +2 -3
  27. package/dist/Breadcrumb.d.mts +1 -2
  28. package/dist/Breadcrumb.d.ts +1 -2
  29. package/dist/CalendarPanel.d.mts +2 -2
  30. package/dist/CalendarPanel.d.ts +2 -2
  31. package/dist/Carousel.d.mts +1 -2
  32. package/dist/Carousel.d.ts +1 -2
  33. package/dist/ChangeHistory.d.mts +1 -2
  34. package/dist/ChangeHistory.d.ts +1 -2
  35. package/dist/ChartCard.d.mts +1 -2
  36. package/dist/ChartCard.d.ts +1 -2
  37. package/dist/ChatCenter.d.mts +2 -2
  38. package/dist/ChatCenter.d.ts +2 -2
  39. package/dist/ChatbotCenter.d.mts +1 -2
  40. package/dist/ChatbotCenter.d.ts +1 -2
  41. package/dist/CheckboxPillsGroup.d.mts +1 -2
  42. package/dist/CheckboxPillsGroup.d.ts +1 -2
  43. package/dist/ColorPicker.d.mts +2 -2
  44. package/dist/ColorPicker.d.ts +2 -2
  45. package/dist/ColumnSelector.d.mts +1 -2
  46. package/dist/ColumnSelector.d.ts +1 -2
  47. package/dist/ComboSelect.d.mts +1 -2
  48. package/dist/ComboSelect.d.ts +1 -2
  49. package/dist/DataPageLayout.d.mts +64 -0
  50. package/dist/DataPageLayout.d.ts +64 -0
  51. package/dist/DataPageLayout.js +191 -0
  52. package/dist/DataPageLayout.mjs +157 -0
  53. package/dist/DataTable.d.mts +1 -2
  54. package/dist/DataTable.d.ts +1 -2
  55. package/dist/DataTableCard.d.mts +1 -2
  56. package/dist/DataTableCard.d.ts +1 -2
  57. package/dist/DataTableCardFooter.d.mts +2 -2
  58. package/dist/DataTableCardFooter.d.ts +2 -2
  59. package/dist/DateTimeField.d.mts +1 -2
  60. package/dist/DateTimeField.d.ts +1 -2
  61. package/dist/Dialog.d.mts +6 -7
  62. package/dist/Dialog.d.ts +6 -7
  63. package/dist/DocumentEditor.d.mts +3 -3
  64. package/dist/DocumentEditor.d.ts +3 -3
  65. package/dist/Drawer.d.mts +4 -5
  66. package/dist/Drawer.d.ts +4 -5
  67. package/dist/Dropdown.d.mts +7 -8
  68. package/dist/Dropdown.d.ts +7 -8
  69. package/dist/EmptyState.d.mts +1 -2
  70. package/dist/EmptyState.d.ts +1 -2
  71. package/dist/FiltersMultiSelect.d.mts +1 -2
  72. package/dist/FiltersMultiSelect.d.ts +1 -2
  73. package/dist/HeliipLoader.d.mts +2 -2
  74. package/dist/HeliipLoader.d.ts +2 -2
  75. package/dist/ImpersonationDialog.d.mts +2 -2
  76. package/dist/ImpersonationDialog.d.ts +2 -2
  77. package/dist/ImpersonationSwitcher.d.mts +2 -2
  78. package/dist/ImpersonationSwitcher.d.ts +2 -2
  79. package/dist/InfoGrid.d.mts +1 -2
  80. package/dist/InfoGrid.d.ts +1 -2
  81. package/dist/KnowledgeBase.d.mts +1 -2
  82. package/dist/KnowledgeBase.d.ts +1 -2
  83. package/dist/KpiCard.d.mts +2 -3
  84. package/dist/KpiCard.d.ts +2 -3
  85. package/dist/LanguageSwitcher.d.mts +2 -2
  86. package/dist/LanguageSwitcher.d.ts +2 -2
  87. package/dist/LicenseStatus.d.mts +1 -2
  88. package/dist/LicenseStatus.d.ts +1 -2
  89. package/dist/Link.d.mts +1 -2
  90. package/dist/Link.d.ts +1 -2
  91. package/dist/Login.d.mts +1 -2
  92. package/dist/Login.d.ts +1 -2
  93. package/dist/LoginCarousel.d.mts +2 -3
  94. package/dist/LoginCarousel.d.ts +2 -3
  95. package/dist/LoginGallery.d.mts +2 -3
  96. package/dist/LoginGallery.d.ts +2 -3
  97. package/dist/LoginTools.d.mts +1 -2
  98. package/dist/LoginTools.d.ts +1 -2
  99. package/dist/Map.d.mts +4 -5
  100. package/dist/Map.d.ts +4 -5
  101. package/dist/MarkdownEditor.d.mts +2 -2
  102. package/dist/MarkdownEditor.d.ts +2 -2
  103. package/dist/MediaCard.d.mts +2 -2
  104. package/dist/MediaCard.d.ts +2 -2
  105. package/dist/MediaLibraryLayout.d.mts +89 -0
  106. package/dist/MediaLibraryLayout.d.ts +89 -0
  107. package/dist/MediaLibraryLayout.js +369 -0
  108. package/dist/MediaLibraryLayout.mjs +348 -0
  109. package/dist/MediaSelector.d.mts +2 -2
  110. package/dist/MediaSelector.d.ts +2 -2
  111. package/dist/MediaTile.d.mts +2 -2
  112. package/dist/MediaTile.d.ts +2 -2
  113. package/dist/Money.d.mts +2 -2
  114. package/dist/Money.d.ts +2 -2
  115. package/dist/MotionProvider.d.mts +1 -2
  116. package/dist/MotionProvider.d.ts +1 -2
  117. package/dist/MultiComboSelect.d.mts +2 -3
  118. package/dist/MultiComboSelect.d.ts +2 -3
  119. package/dist/NotificationsCenter.d.mts +1 -2
  120. package/dist/NotificationsCenter.d.ts +1 -2
  121. package/dist/Numeric.d.mts +2 -2
  122. package/dist/Numeric.d.ts +2 -2
  123. package/dist/OmniSearch.d.mts +2 -3
  124. package/dist/OmniSearch.d.ts +2 -3
  125. package/dist/OrderButton.d.mts +2 -2
  126. package/dist/OrderButton.d.ts +2 -2
  127. package/dist/PageScaffold.d.mts +1 -2
  128. package/dist/PageScaffold.d.ts +1 -2
  129. package/dist/PageScaffold.js +1 -1
  130. package/dist/PageScaffold.mjs +1 -1
  131. package/dist/PageTransition.d.mts +1 -2
  132. package/dist/PageTransition.d.ts +1 -2
  133. package/dist/PageTransition.js +33 -27
  134. package/dist/PageTransition.mjs +33 -27
  135. package/dist/Pagination.d.mts +2 -2
  136. package/dist/Pagination.d.ts +2 -2
  137. package/dist/PasswordField.d.mts +1 -2
  138. package/dist/PasswordField.d.ts +1 -2
  139. package/dist/ProductCatalog.d.mts +2 -3
  140. package/dist/ProductCatalog.d.ts +2 -3
  141. package/dist/PromotionsCatalog.d.mts +2 -3
  142. package/dist/PromotionsCatalog.d.ts +2 -3
  143. package/dist/QrCode.d.mts +2 -2
  144. package/dist/QrCode.d.ts +2 -2
  145. package/dist/QuickActionsDock.d.mts +26 -0
  146. package/dist/QuickActionsDock.d.ts +26 -0
  147. package/dist/QuickActionsDock.js +99 -0
  148. package/dist/QuickActionsDock.mjs +79 -0
  149. package/dist/QuoteEditor.d.mts +2 -2
  150. package/dist/QuoteEditor.d.ts +2 -2
  151. package/dist/RechartsBarCard.d.mts +1 -2
  152. package/dist/RechartsBarCard.d.ts +1 -2
  153. package/dist/RechartsDonutCard.d.mts +1 -2
  154. package/dist/RechartsDonutCard.d.ts +1 -2
  155. package/dist/RechartsTimeSeriesCard.d.mts +1 -2
  156. package/dist/RechartsTimeSeriesCard.d.ts +1 -2
  157. package/dist/ReviewHistory.d.mts +3 -3
  158. package/dist/ReviewHistory.d.ts +3 -3
  159. package/dist/Reviews.d.mts +1 -2
  160. package/dist/Reviews.d.ts +1 -2
  161. package/dist/SearchInput.d.mts +2 -2
  162. package/dist/SearchInput.d.ts +2 -2
  163. package/dist/SegmentedTabs.d.mts +1 -2
  164. package/dist/SegmentedTabs.d.ts +1 -2
  165. package/dist/Select.d.mts +2 -2
  166. package/dist/Select.d.ts +2 -2
  167. package/dist/ShareAccess.d.mts +1 -2
  168. package/dist/ShareAccess.d.ts +1 -2
  169. package/dist/Sidebar.d.mts +3 -2
  170. package/dist/Sidebar.d.ts +3 -2
  171. package/dist/Sidebar.js +590 -377
  172. package/dist/Sidebar.mjs +590 -377
  173. package/dist/StatCard.d.mts +1 -2
  174. package/dist/StatCard.d.ts +1 -2
  175. package/dist/Steps.d.mts +3 -3
  176. package/dist/Steps.d.ts +3 -3
  177. package/dist/StorageUsage.d.mts +1 -2
  178. package/dist/StorageUsage.d.ts +1 -2
  179. package/dist/SupportChatWidget.d.mts +128 -0
  180. package/dist/SupportChatWidget.d.ts +128 -0
  181. package/dist/SupportChatWidget.js +696 -0
  182. package/dist/SupportChatWidget.mjs +678 -0
  183. package/dist/Table.d.mts +4 -5
  184. package/dist/Table.d.ts +4 -5
  185. package/dist/TableRecordButton.d.mts +1 -2
  186. package/dist/TableRecordButton.d.ts +1 -2
  187. package/dist/TimeAgo.d.mts +2 -2
  188. package/dist/TimeAgo.d.ts +2 -2
  189. package/dist/TimePanel.d.mts +1 -2
  190. package/dist/TimePanel.d.ts +1 -2
  191. package/dist/TimeRangeField.d.mts +2 -2
  192. package/dist/TimeRangeField.d.ts +2 -2
  193. package/dist/Toast.d.mts +1 -2
  194. package/dist/Toast.d.ts +1 -2
  195. package/dist/Tooltip.d.mts +1 -2
  196. package/dist/Tooltip.d.ts +1 -2
  197. package/dist/UploadCard.d.mts +1 -2
  198. package/dist/UploadCard.d.ts +1 -2
  199. package/dist/WordEditor.d.mts +3 -3
  200. package/dist/WordEditor.d.ts +3 -3
  201. package/dist/WorkflowDiagram.d.mts +1 -2
  202. package/dist/WorkflowDiagram.d.ts +1 -2
  203. package/dist/{animations-CHrNeawW.d.mts → animations-Di5tQRLw.d.mts} +2 -2
  204. package/dist/{animations-CHrNeawW.d.ts → animations-Di5tQRLw.d.ts} +2 -2
  205. package/dist/animations.d.mts +1 -1
  206. package/dist/animations.d.ts +1 -1
  207. package/dist/charts.d.mts +2 -1
  208. package/dist/charts.d.ts +2 -1
  209. package/dist/charts.js +6 -0
  210. package/dist/charts.mjs +6 -2
  211. package/dist/i18n.d.mts +1 -2
  212. package/dist/i18n.d.ts +1 -2
  213. package/dist/iconos/WorkflowEdgesSvg.d.mts +1 -2
  214. package/dist/iconos/WorkflowEdgesSvg.d.ts +1 -2
  215. package/dist/iconos/index.d.mts +1546 -1547
  216. package/dist/iconos/index.d.ts +1546 -1547
  217. package/dist/iconos/regular-icons.js +2 -2
  218. package/dist/iconos/regular-icons.mjs +2 -2
  219. package/dist/index.d.mts +11 -4
  220. package/dist/index.d.ts +11 -4
  221. package/dist/index.js +30 -0
  222. package/dist/index.mjs +167 -148
  223. package/dist/internal/AutoSize.d.mts +1 -2
  224. package/dist/internal/AutoSize.d.ts +1 -2
  225. package/dist/map.css +1 -1
  226. package/dist/theme/FontSizeController.d.mts +2 -2
  227. package/dist/theme/FontSizeController.d.ts +2 -2
  228. package/dist/theme/FontSizeController.js +1 -1
  229. package/dist/theme/FontSizeController.mjs +1 -1
  230. package/dist/theme/ThemeController.d.mts +2 -3
  231. package/dist/theme/ThemeController.d.ts +2 -3
  232. package/dist/theme/ThemeProvider.d.mts +1 -2
  233. package/dist/theme/ThemeProvider.d.ts +1 -2
  234. package/dist/theme/ThemeScript.d.mts +2 -2
  235. package/dist/theme/ThemeScript.d.ts +2 -2
  236. package/dist/theme/ThemeToggle.d.mts +2 -2
  237. package/dist/theme/ThemeToggle.d.ts +2 -2
  238. package/dist/theme/ThemeToggle.js +4 -4
  239. package/dist/theme/ThemeToggle.mjs +4 -4
  240. package/package.json +1 -1
@@ -188,7 +188,7 @@ function PageScaffold({
188
188
  }
189
189
  }
190
190
  ) : null,
191
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-[radial-gradient(1200px_820px_at_12%_0%,color-mix(in_oklab,var(--primary)_22%,transparent)_0%,transparent_62%),radial-gradient(980px_620px_at_92%_8%,color-mix(in_oklab,var(--ring)_14%,transparent)_0%,transparent_58%),radial-gradient(980px_720px_at_50%_112%,color-mix(in_oklab,var(--primary)_10%,transparent)_0%,transparent_62%),linear-gradient(180deg,color-mix(in_oklab,var(--bg)_28%,transparent)_0%,var(--bg)_100%)]" })
191
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-[radial-gradient(860px_520px_at_20%_136%,color-mix(in_oklab,var(--primary)_5%,transparent)_0%,transparent_38%),radial-gradient(760px_460px_at_84%_132%,color-mix(in_oklab,var(--ring)_3.5%,transparent)_0%,transparent_36%),linear-gradient(180deg,transparent_0%,transparent_76%,color-mix(in_oklab,var(--bg)_4%,transparent)_90%,var(--bg)_100%)]" })
192
192
  ]
193
193
  }
194
194
  );
@@ -155,7 +155,7 @@ function PageScaffold({
155
155
  }
156
156
  }
157
157
  ) : null,
158
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[radial-gradient(1200px_820px_at_12%_0%,color-mix(in_oklab,var(--primary)_22%,transparent)_0%,transparent_62%),radial-gradient(980px_620px_at_92%_8%,color-mix(in_oklab,var(--ring)_14%,transparent)_0%,transparent_58%),radial-gradient(980px_720px_at_50%_112%,color-mix(in_oklab,var(--primary)_10%,transparent)_0%,transparent_62%),linear-gradient(180deg,color-mix(in_oklab,var(--bg)_28%,transparent)_0%,var(--bg)_100%)]" })
158
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[radial-gradient(860px_520px_at_20%_136%,color-mix(in_oklab,var(--primary)_5%,transparent)_0%,transparent_38%),radial-gradient(760px_460px_at_84%_132%,color-mix(in_oklab,var(--ring)_3.5%,transparent)_0%,transparent_36%),linear-gradient(180deg,transparent_0%,transparent_76%,color-mix(in_oklab,var(--bg)_4%,transparent)_90%,var(--bg)_100%)]" })
159
159
  ]
160
160
  }
161
161
  );
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { Transition, Variants } from 'framer-motion';
4
3
 
@@ -24,6 +23,6 @@ type PageTransitionProps = {
24
23
  onExitComplete?: () => void;
25
24
  fallback?: React__default.ReactNode;
26
25
  };
27
- declare function PageTransition({ children, transitionKey, variant, mode, animateInitial, deferKey, resetScroll, presenceAffectsLayout, showOverlay, overlayDelayMs, overlayMinDurationMs, overlayZIndex, overlay, transition, variants, className, style, onExitComplete, fallback, }: PageTransitionProps): react_jsx_runtime.JSX.Element;
26
+ declare function PageTransition({ children, transitionKey, variant, mode, animateInitial, deferKey, resetScroll, presenceAffectsLayout, showOverlay, overlayDelayMs, overlayMinDurationMs, overlayZIndex, overlay, transition, variants, className, style, onExitComplete, fallback, }: PageTransitionProps): React__default.JSX.Element;
28
27
 
29
28
  export { type PageTransitionProps, type PageTransitionVariant, PageTransition as default };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { Transition, Variants } from 'framer-motion';
4
3
 
@@ -24,6 +23,6 @@ type PageTransitionProps = {
24
23
  onExitComplete?: () => void;
25
24
  fallback?: React__default.ReactNode;
26
25
  };
27
- declare function PageTransition({ children, transitionKey, variant, mode, animateInitial, deferKey, resetScroll, presenceAffectsLayout, showOverlay, overlayDelayMs, overlayMinDurationMs, overlayZIndex, overlay, transition, variants, className, style, onExitComplete, fallback, }: PageTransitionProps): react_jsx_runtime.JSX.Element;
26
+ declare function PageTransition({ children, transitionKey, variant, mode, animateInitial, deferKey, resetScroll, presenceAffectsLayout, showOverlay, overlayDelayMs, overlayMinDurationMs, overlayZIndex, overlay, transition, variants, className, style, onExitComplete, fallback, }: PageTransitionProps): React__default.JSX.Element;
28
27
 
29
28
  export { type PageTransitionProps, type PageTransitionVariant, PageTransition as default };
@@ -34,6 +34,7 @@ __export(PageTransition_exports, {
34
34
  module.exports = __toCommonJS(PageTransition_exports);
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
+ var import_react_dom = require("react-dom");
37
38
  var import_framer_motion = require("framer-motion");
38
39
  var import_animations = require("./animations");
39
40
  var import_HeliipLoader = __toESM(require("./HeliipLoader"));
@@ -65,7 +66,7 @@ function PageTransition({
65
66
  showOverlay = false,
66
67
  overlayDelayMs = 80,
67
68
  overlayMinDurationMs = 1e3,
68
- overlayZIndex = 80,
69
+ overlayZIndex = 12e3,
69
70
  overlay,
70
71
  transition = import_animations.microTransition,
71
72
  variants,
@@ -80,6 +81,10 @@ function PageTransition({
80
81
  const prevKeyRef = import_react.default.useRef(transitionKey);
81
82
  const timersRef = import_react.default.useRef({});
82
83
  const [overlayOpen, setOverlayOpen] = import_react.default.useState(false);
84
+ const [portalNode, setPortalNode] = import_react.default.useState(null);
85
+ import_react.default.useEffect(() => {
86
+ setPortalNode(document.body);
87
+ }, []);
83
88
  import_react.default.useEffect(() => {
84
89
  if (!resetScroll) return;
85
90
  const reset = () => {
@@ -125,33 +130,34 @@ function PageTransition({
125
130
  if (timersRef.current.hide) window.clearTimeout(timersRef.current.hide);
126
131
  };
127
132
  }, [showOverlay, transitionKey, overlayDelayMs, overlayMinDurationMs]);
133
+ const overlayContent = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: showOverlay && overlayOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
134
+ import_framer_motion.motion.div,
135
+ {
136
+ className: "fixed inset-0",
137
+ style: { zIndex: overlayZIndex },
138
+ initial: { opacity: 0 },
139
+ animate: { opacity: 1 },
140
+ exit: { opacity: 0 },
141
+ transition: import_animations.microTransition,
142
+ children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-black/55" }),
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
145
+ import_framer_motion.motion.div,
146
+ {
147
+ className: "absolute left-1/2 top-1/2 w-[min(520px,92vw)] -translate-x-1/2 -translate-y-1/2",
148
+ initial: { opacity: 0, y: 10, scale: 0.98 },
149
+ animate: { opacity: 1, y: 0, scale: 1 },
150
+ exit: { opacity: 0, y: 10, scale: 0.98 },
151
+ transition: import_animations.microTransition,
152
+ children: overlay != null ? overlay : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_HeliipLoader.default, {})
153
+ }
154
+ )
155
+ ]
156
+ },
157
+ "fx-route-overlay"
158
+ ) : null });
128
159
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
129
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: showOverlay && overlayOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
130
- import_framer_motion.motion.div,
131
- {
132
- className: "fixed inset-0",
133
- style: { zIndex: overlayZIndex },
134
- initial: { opacity: 0 },
135
- animate: { opacity: 1 },
136
- exit: { opacity: 0 },
137
- transition: import_animations.microTransition,
138
- children: [
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-black/55" }),
140
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
141
- import_framer_motion.motion.div,
142
- {
143
- className: "absolute left-1/2 top-1/2 w-[min(520px,92vw)] -translate-x-1/2 -translate-y-1/2",
144
- initial: { opacity: 0, y: 10, scale: 0.98 },
145
- animate: { opacity: 1, y: 0, scale: 1 },
146
- exit: { opacity: 0, y: 10, scale: 0.98 },
147
- transition: import_animations.microTransition,
148
- children: overlay != null ? overlay : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_HeliipLoader.default, {})
149
- }
150
- )
151
- ]
152
- },
153
- "fx-route-overlay"
154
- ) : null }),
160
+ portalNode ? (0, import_react_dom.createPortal)(overlayContent, portalNode) : overlayContent,
155
161
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
156
162
  import_framer_motion.AnimatePresence,
157
163
  {
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
+ import { createPortal } from "react-dom";
4
5
  import { AnimatePresence, motion } from "framer-motion";
5
6
  import { fadeInOut, microTransition, popOver, slideFromBottom } from "./animations.mjs";
6
7
  import HeliipLoader from "./HeliipLoader.mjs";
@@ -32,7 +33,7 @@ function PageTransition({
32
33
  showOverlay = false,
33
34
  overlayDelayMs = 80,
34
35
  overlayMinDurationMs = 1e3,
35
- overlayZIndex = 80,
36
+ overlayZIndex = 12e3,
36
37
  overlay,
37
38
  transition = microTransition,
38
39
  variants,
@@ -47,6 +48,10 @@ function PageTransition({
47
48
  const prevKeyRef = React.useRef(transitionKey);
48
49
  const timersRef = React.useRef({});
49
50
  const [overlayOpen, setOverlayOpen] = React.useState(false);
51
+ const [portalNode, setPortalNode] = React.useState(null);
52
+ React.useEffect(() => {
53
+ setPortalNode(document.body);
54
+ }, []);
50
55
  React.useEffect(() => {
51
56
  if (!resetScroll) return;
52
57
  const reset = () => {
@@ -92,33 +97,34 @@ function PageTransition({
92
97
  if (timersRef.current.hide) window.clearTimeout(timersRef.current.hide);
93
98
  };
94
99
  }, [showOverlay, transitionKey, overlayDelayMs, overlayMinDurationMs]);
100
+ const overlayContent = /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: showOverlay && overlayOpen ? /* @__PURE__ */ jsxs(
101
+ motion.div,
102
+ {
103
+ className: "fixed inset-0",
104
+ style: { zIndex: overlayZIndex },
105
+ initial: { opacity: 0 },
106
+ animate: { opacity: 1 },
107
+ exit: { opacity: 0 },
108
+ transition: microTransition,
109
+ children: [
110
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/55" }),
111
+ /* @__PURE__ */ jsx(
112
+ motion.div,
113
+ {
114
+ className: "absolute left-1/2 top-1/2 w-[min(520px,92vw)] -translate-x-1/2 -translate-y-1/2",
115
+ initial: { opacity: 0, y: 10, scale: 0.98 },
116
+ animate: { opacity: 1, y: 0, scale: 1 },
117
+ exit: { opacity: 0, y: 10, scale: 0.98 },
118
+ transition: microTransition,
119
+ children: overlay != null ? overlay : /* @__PURE__ */ jsx(HeliipLoader, {})
120
+ }
121
+ )
122
+ ]
123
+ },
124
+ "fx-route-overlay"
125
+ ) : null });
95
126
  return /* @__PURE__ */ jsxs(Fragment, { children: [
96
- /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: showOverlay && overlayOpen ? /* @__PURE__ */ jsxs(
97
- motion.div,
98
- {
99
- className: "fixed inset-0",
100
- style: { zIndex: overlayZIndex },
101
- initial: { opacity: 0 },
102
- animate: { opacity: 1 },
103
- exit: { opacity: 0 },
104
- transition: microTransition,
105
- children: [
106
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/55" }),
107
- /* @__PURE__ */ jsx(
108
- motion.div,
109
- {
110
- className: "absolute left-1/2 top-1/2 w-[min(520px,92vw)] -translate-x-1/2 -translate-y-1/2",
111
- initial: { opacity: 0, y: 10, scale: 0.98 },
112
- animate: { opacity: 1, y: 0, scale: 1 },
113
- exit: { opacity: 0, y: 10, scale: 0.98 },
114
- transition: microTransition,
115
- children: overlay != null ? overlay : /* @__PURE__ */ jsx(HeliipLoader, {})
116
- }
117
- )
118
- ]
119
- },
120
- "fx-route-overlay"
121
- ) : null }),
127
+ portalNode ? createPortal(overlayContent, portalNode) : overlayContent,
122
128
  /* @__PURE__ */ jsx(
123
129
  AnimatePresence,
124
130
  {
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type PaginationProps = {
4
4
  page: number;
@@ -13,6 +13,6 @@ type PaginationProps = {
13
13
  }>;
14
14
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
15
15
  };
16
- declare function Pagination({ page, totalPages, onPageChange, maxButtons, className, color, labels, }: PaginationProps): react_jsx_runtime.JSX.Element;
16
+ declare function Pagination({ page, totalPages, onPageChange, maxButtons, className, color, labels, }: PaginationProps): React__default.JSX.Element;
17
17
 
18
18
  export { type PaginationProps, Pagination as default };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type PaginationProps = {
4
4
  page: number;
@@ -13,6 +13,6 @@ type PaginationProps = {
13
13
  }>;
14
14
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
15
15
  };
16
- declare function Pagination({ page, totalPages, onPageChange, maxButtons, className, color, labels, }: PaginationProps): react_jsx_runtime.JSX.Element;
16
+ declare function Pagination({ page, totalPages, onPageChange, maxButtons, className, color, labels, }: PaginationProps): React__default.JSX.Element;
17
17
 
18
18
  export { type PaginationProps, Pagination as default };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { Tone } from './Badge.mjs';
4
3
 
@@ -78,7 +77,7 @@ type PasswordFieldProps = {
78
77
  onValidationChange?: (result: PasswordValidation) => void;
79
78
  labels?: PasswordFieldLabels;
80
79
  };
81
- declare function PasswordField({ value, onChange, className, inputClassName, id, name, autoComplete, disabled, required, rules, showStrength, showRequirements, showTips, generator, onValidationChange, labels: labelsOverride, }: PasswordFieldProps): react_jsx_runtime.JSX.Element;
80
+ declare function PasswordField({ value, onChange, className, inputClassName, id, name, autoComplete, disabled, required, rules, showStrength, showRequirements, showTips, generator, onValidationChange, labels: labelsOverride, }: PasswordFieldProps): React__default.JSX.Element;
82
81
  declare function validatePassword(value: string, rules?: PasswordRules): PasswordValidation;
83
82
  declare function generatePassword(options?: PasswordGeneratorOptions): string;
84
83
 
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { Tone } from './Badge.js';
4
3
 
@@ -78,7 +77,7 @@ type PasswordFieldProps = {
78
77
  onValidationChange?: (result: PasswordValidation) => void;
79
78
  labels?: PasswordFieldLabels;
80
79
  };
81
- declare function PasswordField({ value, onChange, className, inputClassName, id, name, autoComplete, disabled, required, rules, showStrength, showRequirements, showTips, generator, onValidationChange, labels: labelsOverride, }: PasswordFieldProps): react_jsx_runtime.JSX.Element;
80
+ declare function PasswordField({ value, onChange, className, inputClassName, id, name, autoComplete, disabled, required, rules, showStrength, showRequirements, showTips, generator, onValidationChange, labels: labelsOverride, }: PasswordFieldProps): React__default.JSX.Element;
82
81
  declare function validatePassword(value: string, rules?: PasswordRules): PasswordValidation;
83
82
  declare function generatePassword(options?: PasswordGeneratorOptions): string;
84
83
 
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
  import { Tone } from './Badge.mjs';
3
- import 'react';
4
3
 
5
4
  type ProductStatus = "active" | "inactive" | "archived" | "draft";
6
5
  type ProductCatalogItem = {
@@ -71,6 +70,6 @@ type ProductCatalogProps = {
71
70
  labels?: ProductCatalogLabels;
72
71
  onItemOpen?: (item: ProductCatalogItem) => void;
73
72
  };
74
- declare function ProductCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableCategoryFilter, enableStatusFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: ProductCatalogProps): react_jsx_runtime.JSX.Element;
73
+ declare function ProductCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableCategoryFilter, enableStatusFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: ProductCatalogProps): React__default.JSX.Element;
75
74
 
76
75
  export { type ProductCatalogItem, type ProductCatalogLabels, type ProductCatalogProps, type ProductStatus, ProductCatalog as default };
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
  import { Tone } from './Badge.js';
3
- import 'react';
4
3
 
5
4
  type ProductStatus = "active" | "inactive" | "archived" | "draft";
6
5
  type ProductCatalogItem = {
@@ -71,6 +70,6 @@ type ProductCatalogProps = {
71
70
  labels?: ProductCatalogLabels;
72
71
  onItemOpen?: (item: ProductCatalogItem) => void;
73
72
  };
74
- declare function ProductCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableCategoryFilter, enableStatusFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: ProductCatalogProps): react_jsx_runtime.JSX.Element;
73
+ declare function ProductCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableCategoryFilter, enableStatusFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: ProductCatalogProps): React__default.JSX.Element;
75
74
 
76
75
  export { type ProductCatalogItem, type ProductCatalogLabels, type ProductCatalogProps, type ProductStatus, ProductCatalog as default };
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
  import { Tone } from './Badge.mjs';
3
- import 'react';
4
3
 
5
4
  type PromotionStatus = "active" | "scheduled" | "paused" | "expired" | "draft";
6
5
  type PromotionDiscount = {
@@ -98,6 +97,6 @@ type PromotionsCatalogProps = {
98
97
  labels?: PromotionsCatalogLabels;
99
98
  onItemOpen?: (item: PromotionCatalogItem) => void;
100
99
  };
101
- declare function PromotionsCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableStatusFilter, enableChannelFilter, enableAudienceFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: PromotionsCatalogProps): react_jsx_runtime.JSX.Element;
100
+ declare function PromotionsCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableStatusFilter, enableChannelFilter, enableAudienceFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: PromotionsCatalogProps): React__default.JSX.Element;
102
101
 
103
102
  export { type PromotionCatalogItem, type PromotionDiscount, type PromotionStatus, type PromotionsCatalogLabels, type PromotionsCatalogProps, PromotionsCatalog as default };
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
  import { Tone } from './Badge.js';
3
- import 'react';
4
3
 
5
4
  type PromotionStatus = "active" | "scheduled" | "paused" | "expired" | "draft";
6
5
  type PromotionDiscount = {
@@ -98,6 +97,6 @@ type PromotionsCatalogProps = {
98
97
  labels?: PromotionsCatalogLabels;
99
98
  onItemOpen?: (item: PromotionCatalogItem) => void;
100
99
  };
101
- declare function PromotionsCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableStatusFilter, enableChannelFilter, enableAudienceFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: PromotionsCatalogProps): react_jsx_runtime.JSX.Element;
100
+ declare function PromotionsCatalog({ items, value, onChange, multiple, allowDeselectSingle, maxSelected, disabled, persistKey, loading, loadingMinDurationMs, pageSize, defaultView, showViewToggle, enableStatusFilter, enableChannelFilter, enableAudienceFilter, enableTagsFilter, maxTagOptions, className, labels, onItemOpen, }: PromotionsCatalogProps): React__default.JSX.Element;
102
101
 
103
102
  export { type PromotionCatalogItem, type PromotionDiscount, type PromotionStatus, type PromotionsCatalogLabels, type PromotionsCatalogProps, PromotionsCatalog as default };
package/dist/QrCode.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type QrCodeProps = {
4
4
  value: string;
@@ -6,6 +6,6 @@ type QrCodeProps = {
6
6
  className?: string;
7
7
  margin?: number;
8
8
  };
9
- declare function QrCode({ value, size, className, margin }: QrCodeProps): react_jsx_runtime.JSX.Element;
9
+ declare function QrCode({ value, size, className, margin }: QrCodeProps): React__default.JSX.Element;
10
10
 
11
11
  export { type QrCodeProps, QrCode as default };
package/dist/QrCode.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type QrCodeProps = {
4
4
  value: string;
@@ -6,6 +6,6 @@ type QrCodeProps = {
6
6
  className?: string;
7
7
  margin?: number;
8
8
  };
9
- declare function QrCode({ value, size, className, margin }: QrCodeProps): react_jsx_runtime.JSX.Element;
9
+ declare function QrCode({ value, size, className, margin }: QrCodeProps): React__default.JSX.Element;
10
10
 
11
11
  export { type QrCodeProps, QrCode as default };
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+
3
+ type QuickActionsDockDisplay = "icon" | "label" | "description";
4
+ type QuickActionItem = {
5
+ id: string;
6
+ label: string;
7
+ description?: string;
8
+ icon: React__default.ComponentType<React__default.SVGProps<SVGSVGElement>>;
9
+ accent?: string;
10
+ disabled?: boolean;
11
+ display?: QuickActionsDockDisplay;
12
+ onSelect: () => void;
13
+ };
14
+ type QuickActionsDockProps = {
15
+ items: QuickActionItem[];
16
+ loading?: boolean;
17
+ display?: QuickActionsDockDisplay;
18
+ sticky?: boolean;
19
+ stickyClassName?: string;
20
+ stickyReserveClassName?: string;
21
+ ariaLabel?: string;
22
+ className?: string;
23
+ };
24
+ declare function QuickActionsDock({ items, loading, display, sticky, stickyClassName, stickyReserveClassName, ariaLabel, className, }: QuickActionsDockProps): React__default.JSX.Element | null;
25
+
26
+ export { type QuickActionItem, type QuickActionsDockDisplay, type QuickActionsDockProps, QuickActionsDock as default };
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+
3
+ type QuickActionsDockDisplay = "icon" | "label" | "description";
4
+ type QuickActionItem = {
5
+ id: string;
6
+ label: string;
7
+ description?: string;
8
+ icon: React__default.ComponentType<React__default.SVGProps<SVGSVGElement>>;
9
+ accent?: string;
10
+ disabled?: boolean;
11
+ display?: QuickActionsDockDisplay;
12
+ onSelect: () => void;
13
+ };
14
+ type QuickActionsDockProps = {
15
+ items: QuickActionItem[];
16
+ loading?: boolean;
17
+ display?: QuickActionsDockDisplay;
18
+ sticky?: boolean;
19
+ stickyClassName?: string;
20
+ stickyReserveClassName?: string;
21
+ ariaLabel?: string;
22
+ className?: string;
23
+ };
24
+ declare function QuickActionsDock({ items, loading, display, sticky, stickyClassName, stickyReserveClassName, ariaLabel, className, }: QuickActionsDockProps): React__default.JSX.Element | null;
25
+
26
+ export { type QuickActionItem, type QuickActionsDockDisplay, type QuickActionsDockProps, QuickActionsDock as default };
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var QuickActionsDock_exports = {};
21
+ __export(QuickActionsDock_exports, {
22
+ default: () => QuickActionsDock
23
+ });
24
+ module.exports = __toCommonJS(QuickActionsDock_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ function cx(...values) {
27
+ return values.filter(Boolean).join(" ");
28
+ }
29
+ function itemSize(display) {
30
+ if (display === "icon") return "h-14 w-14 justify-center p-0";
31
+ if (display === "label") return "min-h-[72px] w-[11.5rem] p-3";
32
+ return "min-h-[96px] w-[17rem] p-3";
33
+ }
34
+ function QuickActionsDock({
35
+ items,
36
+ loading = false,
37
+ display = "description",
38
+ sticky = false,
39
+ stickyClassName = "lg:sticky lg:top-4",
40
+ stickyReserveClassName = "",
41
+ ariaLabel = "Acciones r\xE1pidas",
42
+ className
43
+ }) {
44
+ if (!items.length) return null;
45
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ "section",
47
+ {
48
+ "aria-label": ariaLabel,
49
+ className: cx("relative z-20", sticky && stickyClassName, sticky && stickyReserveClassName, className),
50
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "overflow-hidden rounded-[1.75rem] border border-[color-mix(in_oklab,var(--border)_72%,transparent)] bg-[color-mix(in_oklab,var(--card)_94%,transparent)] p-2 shadow-[0_20px_54px_rgba(15,23,42,0.10)] backdrop-blur-xl", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "overflow-x-auto overscroll-x-contain [scrollbar-width:thin]", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex w-max min-w-full gap-2", children: items.map((item) => {
51
+ var _a, _b;
52
+ const Icon = item.icon;
53
+ const accent = (_a = item.accent) != null ? _a : "var(--primary)";
54
+ const resolvedDisplay = (_b = item.display) != null ? _b : display;
55
+ const showLabel = resolvedDisplay !== "icon";
56
+ const showDescription = resolvedDisplay === "description" && Boolean(item.description);
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
58
+ "button",
59
+ {
60
+ type: "button",
61
+ title: resolvedDisplay === "icon" ? item.label : void 0,
62
+ "aria-label": item.label,
63
+ disabled: loading || item.disabled,
64
+ onClick: item.onSelect,
65
+ className: cx(
66
+ "group relative shrink-0 overflow-hidden rounded-[1.35rem] border border-[color-mix(in_oklab,var(--border)_76%,transparent)] bg-[linear-gradient(180deg,color-mix(in_oklab,var(--surface)_92%,white),color-mix(in_oklab,var(--card)_98%,transparent))] text-left shadow-sm transition hover:-translate-y-0.5 hover:border-[color-mix(in_oklab,var(--ring)_34%,var(--border))] hover:shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_oklab,var(--ring)_38%,transparent)] disabled:pointer-events-none disabled:opacity-55",
67
+ itemSize(resolvedDisplay)
68
+ ),
69
+ children: [
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
71
+ "div",
72
+ {
73
+ "aria-hidden": "true",
74
+ className: "absolute -right-8 -top-10 h-24 w-24 rounded-full opacity-15 blur-2xl transition group-hover:opacity-25",
75
+ style: { background: accent }
76
+ }
77
+ ),
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cx("relative flex items-start gap-3", resolvedDisplay === "icon" && "items-center justify-center"), children: [
79
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
80
+ "span",
81
+ {
82
+ className: "grid h-11 w-11 shrink-0 place-items-center rounded-2xl text-white shadow-sm",
83
+ style: { background: accent },
84
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-5 w-5", "aria-hidden": true })
85
+ }
86
+ ),
87
+ showLabel ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "min-w-0", children: [
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "block text-sm font-semibold tracking-tight text-[var(--foreground)]", children: item.label }),
89
+ showDescription ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mt-1 block max-h-10 overflow-hidden text-xs leading-5 text-[var(--muted)]", children: item.description }) : null
90
+ ] }) : null
91
+ ] })
92
+ ]
93
+ },
94
+ item.id
95
+ );
96
+ }) }) }) })
97
+ }
98
+ );
99
+ }
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ function cx(...values) {
4
+ return values.filter(Boolean).join(" ");
5
+ }
6
+ function itemSize(display) {
7
+ if (display === "icon") return "h-14 w-14 justify-center p-0";
8
+ if (display === "label") return "min-h-[72px] w-[11.5rem] p-3";
9
+ return "min-h-[96px] w-[17rem] p-3";
10
+ }
11
+ function QuickActionsDock({
12
+ items,
13
+ loading = false,
14
+ display = "description",
15
+ sticky = false,
16
+ stickyClassName = "lg:sticky lg:top-4",
17
+ stickyReserveClassName = "",
18
+ ariaLabel = "Acciones r\xE1pidas",
19
+ className
20
+ }) {
21
+ if (!items.length) return null;
22
+ return /* @__PURE__ */ jsx(
23
+ "section",
24
+ {
25
+ "aria-label": ariaLabel,
26
+ className: cx("relative z-20", sticky && stickyClassName, sticky && stickyReserveClassName, className),
27
+ children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden rounded-[1.75rem] border border-[color-mix(in_oklab,var(--border)_72%,transparent)] bg-[color-mix(in_oklab,var(--card)_94%,transparent)] p-2 shadow-[0_20px_54px_rgba(15,23,42,0.10)] backdrop-blur-xl", children: /* @__PURE__ */ jsx("div", { className: "overflow-x-auto overscroll-x-contain [scrollbar-width:thin]", children: /* @__PURE__ */ jsx("div", { className: "flex w-max min-w-full gap-2", children: items.map((item) => {
28
+ var _a, _b;
29
+ const Icon = item.icon;
30
+ const accent = (_a = item.accent) != null ? _a : "var(--primary)";
31
+ const resolvedDisplay = (_b = item.display) != null ? _b : display;
32
+ const showLabel = resolvedDisplay !== "icon";
33
+ const showDescription = resolvedDisplay === "description" && Boolean(item.description);
34
+ return /* @__PURE__ */ jsxs(
35
+ "button",
36
+ {
37
+ type: "button",
38
+ title: resolvedDisplay === "icon" ? item.label : void 0,
39
+ "aria-label": item.label,
40
+ disabled: loading || item.disabled,
41
+ onClick: item.onSelect,
42
+ className: cx(
43
+ "group relative shrink-0 overflow-hidden rounded-[1.35rem] border border-[color-mix(in_oklab,var(--border)_76%,transparent)] bg-[linear-gradient(180deg,color-mix(in_oklab,var(--surface)_92%,white),color-mix(in_oklab,var(--card)_98%,transparent))] text-left shadow-sm transition hover:-translate-y-0.5 hover:border-[color-mix(in_oklab,var(--ring)_34%,var(--border))] hover:shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_oklab,var(--ring)_38%,transparent)] disabled:pointer-events-none disabled:opacity-55",
44
+ itemSize(resolvedDisplay)
45
+ ),
46
+ children: [
47
+ /* @__PURE__ */ jsx(
48
+ "div",
49
+ {
50
+ "aria-hidden": "true",
51
+ className: "absolute -right-8 -top-10 h-24 w-24 rounded-full opacity-15 blur-2xl transition group-hover:opacity-25",
52
+ style: { background: accent }
53
+ }
54
+ ),
55
+ /* @__PURE__ */ jsxs("div", { className: cx("relative flex items-start gap-3", resolvedDisplay === "icon" && "items-center justify-center"), children: [
56
+ /* @__PURE__ */ jsx(
57
+ "span",
58
+ {
59
+ className: "grid h-11 w-11 shrink-0 place-items-center rounded-2xl text-white shadow-sm",
60
+ style: { background: accent },
61
+ children: /* @__PURE__ */ jsx(Icon, { className: "h-5 w-5", "aria-hidden": true })
62
+ }
63
+ ),
64
+ showLabel ? /* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
65
+ /* @__PURE__ */ jsx("span", { className: "block text-sm font-semibold tracking-tight text-[var(--foreground)]", children: item.label }),
66
+ showDescription ? /* @__PURE__ */ jsx("span", { className: "mt-1 block max-h-10 overflow-hidden text-xs leading-5 text-[var(--muted)]", children: item.description }) : null
67
+ ] }) : null
68
+ ] })
69
+ ]
70
+ },
71
+ item.id
72
+ );
73
+ }) }) }) })
74
+ }
75
+ );
76
+ }
77
+ export {
78
+ QuickActionsDock as default
79
+ };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
  import { Option } from './Select.mjs';
3
3
  import { QuoteDraft, Currency } from './quote.mjs';
4
4
 
@@ -44,6 +44,6 @@ type QuoteEditorProps = {
44
44
  className?: string;
45
45
  labels?: QuoteEditorLabels;
46
46
  };
47
- declare function QuoteEditor({ value, onChange, clientOptions, currencyOptions, locale, readOnly, className, labels, }: QuoteEditorProps): react_jsx_runtime.JSX.Element;
47
+ declare function QuoteEditor({ value, onChange, clientOptions, currencyOptions, locale, readOnly, className, labels, }: QuoteEditorProps): React__default.JSX.Element;
48
48
 
49
49
  export { type QuoteEditorClientOption, type QuoteEditorLabels, type QuoteEditorProps, QuoteEditor as default };