@beweco/aurora-ui 0.1.47 → 0.1.49

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 (31) hide show
  1. package/dist/assets/css/styles.css +1 -1
  2. package/dist/index.cjs.js +462 -280
  3. package/dist/index.esm.js +462 -282
  4. package/dist/types/components/assistant-orb/AssistantOrb.d.ts +11 -0
  5. package/dist/types/components/assistant-orb/AssistantOrb.d.ts.map +1 -0
  6. package/dist/types/components/assistant-orb/AssistantOrb.types.d.ts +30 -0
  7. package/dist/types/components/assistant-orb/AssistantOrb.types.d.ts.map +1 -0
  8. package/dist/types/components/assistant-orb/_internal/AuraGlow.d.ts +11 -0
  9. package/dist/types/components/assistant-orb/_internal/AuraGlow.d.ts.map +1 -0
  10. package/dist/types/components/assistant-orb/_internal/SpeechBubble.d.ts +12 -0
  11. package/dist/types/components/assistant-orb/_internal/SpeechBubble.d.ts.map +1 -0
  12. package/dist/types/components/assistant-orb/_internal/index.d.ts +3 -0
  13. package/dist/types/components/assistant-orb/_internal/index.d.ts.map +1 -0
  14. package/dist/types/components/assistant-orb/assistant-orb.constants.d.ts +9 -0
  15. package/dist/types/components/assistant-orb/assistant-orb.constants.d.ts.map +1 -0
  16. package/dist/types/components/assistant-orb/index.d.ts +3 -0
  17. package/dist/types/components/assistant-orb/index.d.ts.map +1 -0
  18. package/dist/types/components/menu/_internal/menu-nav-list/MenuNavList.d.ts.map +1 -1
  19. package/dist/types/components/two-column-layout-agent/TwoColumnLayoutAgent.d.ts +4 -0
  20. package/dist/types/components/two-column-layout-agent/TwoColumnLayoutAgent.d.ts.map +1 -0
  21. package/dist/types/components/two-column-layout-agent/TwoColumnLayoutAgent.types.d.ts +35 -0
  22. package/dist/types/components/two-column-layout-agent/TwoColumnLayoutAgent.types.d.ts.map +1 -0
  23. package/dist/types/components/two-column-layout-agent/index.d.ts +3 -0
  24. package/dist/types/components/two-column-layout-agent/index.d.ts.map +1 -0
  25. package/dist/types/hooks/index.d.ts +2 -0
  26. package/dist/types/hooks/index.d.ts.map +1 -0
  27. package/dist/types/hooks/useMediaQuery.d.ts +5 -0
  28. package/dist/types/hooks/useMediaQuery.d.ts.map +1 -0
  29. package/dist/types/index.d.ts +2 -0
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -6,7 +6,7 @@ import { Icon } from '@iconify/react';
6
6
  export { loadIcons } from '@iconify/react';
7
7
  import React, { useId, useState, useCallback, useMemo, useEffect, createContext, useContext, memo, useRef, createElement, useLayoutEffect } from 'react';
8
8
  import { ResponsiveContainer, AreaChart, CartesianGrid, XAxis, Tooltip, Area } from 'recharts';
9
- import { LazyMotion, domAnimation, m } from 'framer-motion';
9
+ import { LazyMotion, domAnimation, m, motion, AnimatePresence } from 'framer-motion';
10
10
  import { createPortal } from 'react-dom';
11
11
  import { useTheme } from '@heroui/use-theme';
12
12
 
@@ -1823,7 +1823,7 @@ KanbanColumn.displayName = "KanbanColumn";
1823
1823
  * Traducciones por defecto en español.
1824
1824
  * Se mezclan con las traducciones proporcionadas por el usuario.
1825
1825
  */
1826
- var DEFAULT_TRANSLATIONS$1 = {
1826
+ var DEFAULT_TRANSLATIONS$2 = {
1827
1827
  dropHere: "Soltar aquí",
1828
1828
  emptyMessage: "No hay elementos",
1829
1829
  };
@@ -1857,7 +1857,7 @@ var columnGapClasses = {
1857
1857
  var KanbanComponent = function (_a) {
1858
1858
  var columns = _a.columns, renderItem = _a.renderItem, onCardClick = _a.onCardClick, onItemMove = _a.onItemMove, isDraggable = _a.isDraggable, cardClassName = _a.cardClassName, isCardClickable = _a.isCardClickable, className = _a.className, _b = _a.columnWidth, columnWidth = _b === void 0 ? "280px" : _b, _c = _a.columnGap, columnGap = _c === void 0 ? "md" : _c, _d = _a.horizontalScroll, horizontalScroll = _d === void 0 ? true : _d, columnMaxHeight = _a.columnMaxHeight, renderColumnHeader = _a.renderColumnHeader, renderEmptyState = _a.renderEmptyState, _e = _a.translations, translations = _e === void 0 ? {} : _e, onLoadMore = _a.onLoadMore;
1859
1859
  // Mezclar traducciones del usuario con las por defecto
1860
- var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$1), translations);
1860
+ var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$2), translations);
1861
1861
  // Determinar si drag está habilitado
1862
1862
  var dragEnabled = isDraggable !== null && isDraggable !== void 0 ? isDraggable : !!onItemMove;
1863
1863
  // Estado del drag actual
@@ -1965,264 +1965,6 @@ var ImagePreview = function (_a) {
1965
1965
  : undefined, role: isClickable ? "button" : undefined, tabIndex: isClickable ? 0 : undefined, "aria-label": isClickable ? t.clickableImageAriaLabel : undefined }), showRemoveButton && onRemove && (jsx("button", { type: "button", onClick: function () { return handleRemove(image.id || "", index); }, "aria-label": t.removeButtonAriaLabel, className: "\n\t\t\t\t\t\t\t\t\tabsolute -top-2 -right-2 \n\t\t\t\t\t\t\t\t\tp-1 rounded-full \n\t\t\t\t\t\t\t\t\tbg-danger-500 hover:bg-danger-600 \n\t\t\t\t\t\t\t\t\ttext-white \n\t\t\t\t\t\t\t\t\tcursor-pointer \n\t\t\t\t\t\t\t\t\ttransition-colors\n\t\t\t\t\t\t\t\t\tfocus:outline-none \n\t\t\t\t\t\t\t\t\tfocus:ring-2 \n\t\t\t\t\t\t\t\t\tfocus:ring-danger-400 \n\t\t\t\t\t\t\t\t\tfocus:ring-offset-2\n\t\t\t\t\t\t\t\t", children: jsx(IconComponent, { size: size === "micro" ? "sm" : "md", icon: "solar:trash-bin-minimalistic-outline" }) }))] }) }, image.id || index)); }) }));
1966
1966
  };
1967
1967
 
1968
- /*
1969
- * Copyright 2020 Adobe. All rights reserved.
1970
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
1971
- * you may not use this file except in compliance with the License. You may obtain a copy
1972
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
1973
- *
1974
- * Unless required by applicable law or agreed to in writing, software distributed under
1975
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
1976
- * OF ANY KIND, either express or implied. See the License for the specific language
1977
- * governing permissions and limitations under the License.
1978
- */ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {
1979
- if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({
1980
- preventScroll: true
1981
- });
1982
- else {
1983
- let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);
1984
- element.focus();
1985
- $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);
1986
- }
1987
- }
1988
- let $7215afc6de606d6b$var$supportsPreventScrollCached = null;
1989
- function $7215afc6de606d6b$var$supportsPreventScroll() {
1990
- if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {
1991
- $7215afc6de606d6b$var$supportsPreventScrollCached = false;
1992
- try {
1993
- let focusElem = document.createElement('div');
1994
- focusElem.focus({
1995
- get preventScroll () {
1996
- $7215afc6de606d6b$var$supportsPreventScrollCached = true;
1997
- return true;
1998
- }
1999
- });
2000
- } catch {
2001
- // Ignore
2002
- }
2003
- }
2004
- return $7215afc6de606d6b$var$supportsPreventScrollCached;
2005
- }
2006
- function $7215afc6de606d6b$var$getScrollableElements(element) {
2007
- let parent = element.parentNode;
2008
- let scrollableElements = [];
2009
- let rootScrollingElement = document.scrollingElement || document.documentElement;
2010
- while(parent instanceof HTMLElement && parent !== rootScrollingElement){
2011
- if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({
2012
- element: parent,
2013
- scrollTop: parent.scrollTop,
2014
- scrollLeft: parent.scrollLeft
2015
- });
2016
- parent = parent.parentNode;
2017
- }
2018
- if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({
2019
- element: rootScrollingElement,
2020
- scrollTop: rootScrollingElement.scrollTop,
2021
- scrollLeft: rootScrollingElement.scrollLeft
2022
- });
2023
- return scrollableElements;
2024
- }
2025
- function $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {
2026
- for (let { element: element, scrollTop: scrollTop, scrollLeft: scrollLeft } of scrollableElements){
2027
- element.scrollTop = scrollTop;
2028
- element.scrollLeft = scrollLeft;
2029
- }
2030
- }
2031
-
2032
- /*
2033
- * Copyright 2020 Adobe. All rights reserved.
2034
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
2035
- * you may not use this file except in compliance with the License. You may obtain a copy
2036
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
2037
- *
2038
- * Unless required by applicable law or agreed to in writing, software distributed under
2039
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
2040
- * OF ANY KIND, either express or implied. See the License for the specific language
2041
- * governing permissions and limitations under the License.
2042
- */ function $c87311424ea30a05$var$testUserAgent(re) {
2043
- var _window_navigator_userAgentData;
2044
- if (typeof window === 'undefined' || window.navigator == null) return false;
2045
- return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);
2046
- }
2047
- function $c87311424ea30a05$var$testPlatform(re) {
2048
- var _window_navigator_userAgentData;
2049
- return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;
2050
- }
2051
- function $c87311424ea30a05$var$cached(fn) {
2052
- if (process.env.NODE_ENV === 'test') return fn;
2053
- let res = null;
2054
- return ()=>{
2055
- if (res == null) res = fn();
2056
- return res;
2057
- };
2058
- }
2059
- const $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {
2060
- return $c87311424ea30a05$var$testPlatform(/^Mac/i);
2061
- });
2062
- const $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {
2063
- return $c87311424ea30a05$var$testPlatform(/^iPhone/i);
2064
- });
2065
- const $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {
2066
- return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.
2067
- $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;
2068
- });
2069
- const $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {
2070
- return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();
2071
- });
2072
- $c87311424ea30a05$var$cached(function() {
2073
- return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();
2074
- });
2075
- const $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {
2076
- return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();
2077
- });
2078
- const $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {
2079
- return $c87311424ea30a05$var$testUserAgent(/Chrome/i);
2080
- });
2081
- $c87311424ea30a05$var$cached(function() {
2082
- return $c87311424ea30a05$var$testUserAgent(/Android/i);
2083
- });
2084
- const $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {
2085
- return $c87311424ea30a05$var$testUserAgent(/Firefox/i);
2086
- });
2087
-
2088
- /*
2089
- * Copyright 2023 Adobe. All rights reserved.
2090
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
2091
- * you may not use this file except in compliance with the License. You may obtain a copy
2092
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
2093
- *
2094
- * Unless required by applicable law or agreed to in writing, software distributed under
2095
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
2096
- * OF ANY KIND, either express or implied. See the License for the specific language
2097
- * governing permissions and limitations under the License.
2098
- */
2099
-
2100
-
2101
- const $ea8dcbcb9ea1b556$var$RouterContext = /*#__PURE__*/ (createContext)({
2102
- isNative: true,
2103
- open: $ea8dcbcb9ea1b556$var$openSyntheticLink,
2104
- useHref: (href)=>href
2105
- });
2106
- function $ea8dcbcb9ea1b556$export$9a302a45f65d0572() {
2107
- return (useContext)($ea8dcbcb9ea1b556$var$RouterContext);
2108
- }
2109
- function $ea8dcbcb9ea1b556$export$95185d699e05d4d7(target, modifiers, setOpening = true) {
2110
- var _window_event_type, _window_event;
2111
- let { metaKey: metaKey, ctrlKey: ctrlKey, altKey: altKey, shiftKey: shiftKey } = modifiers;
2112
- // Firefox does not recognize keyboard events as a user action by default, and the popup blocker
2113
- // will prevent links with target="_blank" from opening. However, it does allow the event if the
2114
- // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.
2115
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.
2116
- if (($c87311424ea30a05$export$b7d78993b74f766d)() && ((_window_event = window.event) === null || _window_event === void 0 ? void 0 : (_window_event_type = _window_event.type) === null || _window_event_type === void 0 ? void 0 : _window_event_type.startsWith('key')) && target.target === '_blank') {
2117
- if (($c87311424ea30a05$export$9ac100e40613ea10)()) metaKey = true;
2118
- else ctrlKey = true;
2119
- }
2120
- // WebKit does not support firing click events with modifier keys, but does support keyboard events.
2121
- // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184
2122
- let event = ($c87311424ea30a05$export$78551043582a6a98)() && ($c87311424ea30a05$export$9ac100e40613ea10)() && !($c87311424ea30a05$export$7bef049ce92e4224)() && process.env.NODE_ENV !== 'test' ? new KeyboardEvent('keydown', {
2123
- keyIdentifier: 'Enter',
2124
- metaKey: metaKey,
2125
- ctrlKey: ctrlKey,
2126
- altKey: altKey,
2127
- shiftKey: shiftKey
2128
- }) : new MouseEvent('click', {
2129
- metaKey: metaKey,
2130
- ctrlKey: ctrlKey,
2131
- altKey: altKey,
2132
- shiftKey: shiftKey,
2133
- bubbles: true,
2134
- cancelable: true
2135
- });
2136
- $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = setOpening;
2137
- ($7215afc6de606d6b$export$de79e2c695e052f3)(target);
2138
- target.dispatchEvent(event);
2139
- $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;
2140
- }
2141
- // https://github.com/parcel-bundler/parcel/issues/8724
2142
- $ea8dcbcb9ea1b556$export$95185d699e05d4d7.isOpening = false;
2143
- function $ea8dcbcb9ea1b556$var$getSyntheticLink(target, open) {
2144
- if (target instanceof HTMLAnchorElement) open(target);
2145
- else if (target.hasAttribute('data-href')) {
2146
- let link = document.createElement('a');
2147
- link.href = target.getAttribute('data-href');
2148
- if (target.hasAttribute('data-target')) link.target = target.getAttribute('data-target');
2149
- if (target.hasAttribute('data-rel')) link.rel = target.getAttribute('data-rel');
2150
- if (target.hasAttribute('data-download')) link.download = target.getAttribute('data-download');
2151
- if (target.hasAttribute('data-ping')) link.ping = target.getAttribute('data-ping');
2152
- if (target.hasAttribute('data-referrer-policy')) link.referrerPolicy = target.getAttribute('data-referrer-policy');
2153
- target.appendChild(link);
2154
- open(link);
2155
- target.removeChild(link);
2156
- }
2157
- }
2158
- function $ea8dcbcb9ea1b556$var$openSyntheticLink(target, modifiers) {
2159
- $ea8dcbcb9ea1b556$var$getSyntheticLink(target, (link)=>$ea8dcbcb9ea1b556$export$95185d699e05d4d7(link, modifiers));
2160
- }
2161
-
2162
- /*
2163
- * Copyright 2020 Adobe. All rights reserved.
2164
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
2165
- * you may not use this file except in compliance with the License. You may obtain a copy
2166
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
2167
- *
2168
- * Unless required by applicable law or agreed to in writing, software distributed under
2169
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
2170
- * OF ANY KIND, either express or implied. See the License for the specific language
2171
- * governing permissions and limitations under the License.
2172
- */
2173
- function $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange) {
2174
- let [stateValue, setStateValue] = (useState)(value || defaultValue);
2175
- let isControlledRef = (useRef)(value !== undefined);
2176
- let isControlled = value !== undefined;
2177
- (useEffect)(()=>{
2178
- let wasControlled = isControlledRef.current;
2179
- if (wasControlled !== isControlled && process.env.NODE_ENV !== 'production') console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);
2180
- isControlledRef.current = isControlled;
2181
- }, [
2182
- isControlled
2183
- ]);
2184
- let currentValue = isControlled ? value : stateValue;
2185
- let setValue = (useCallback)((value, ...args)=>{
2186
- let onChangeCaller = (value, ...onChangeArgs)=>{
2187
- if (onChange) {
2188
- if (!Object.is(currentValue, value)) onChange(value, ...onChangeArgs);
2189
- }
2190
- if (!isControlled) // If uncontrolled, mutate the currentValue local variable so that
2191
- // calling setState multiple times with the same value only emits onChange once.
2192
- // We do not use a ref for this because we specifically _do_ want the value to
2193
- // reset every render, and assigning to a ref in render breaks aborted suspended renders.
2194
- // eslint-disable-next-line react-hooks/exhaustive-deps
2195
- currentValue = value;
2196
- };
2197
- if (typeof value === 'function') {
2198
- if (process.env.NODE_ENV !== 'production') console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');
2199
- // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates
2200
- // when someone using useControlledState calls setControlledState(myFunc)
2201
- // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc
2202
- // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning
2203
- // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same
2204
- let updateFunction = (oldValue, ...functionArgs)=>{
2205
- let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);
2206
- onChangeCaller(interceptedValue, ...args);
2207
- if (!isControlled) return interceptedValue;
2208
- return oldValue;
2209
- };
2210
- setStateValue(updateFunction);
2211
- } else {
2212
- if (!isControlled) setStateValue(value);
2213
- onChangeCaller(value, ...args);
2214
- }
2215
- }, [
2216
- isControlled,
2217
- currentValue,
2218
- onChange
2219
- ]);
2220
- return [
2221
- currentValue,
2222
- setValue
2223
- ];
2224
- }
2225
-
2226
1968
  function normalizeClass(value) {
2227
1969
  if (typeof value === "string") {
2228
1970
  return value || undefined;
@@ -2280,37 +2022,25 @@ var EnumMenuNavListItem;
2280
2022
  * @forwardRef
2281
2023
  */
2282
2024
  var MenuNavList = React.forwardRef(function (_a, ref) {
2283
- var items = _a.items, isCollapsed = _a.isCollapsed, defaultSelectedKey = _a.defaultSelectedKey, onSelect = _a.onSelect, hideEndContent = _a.hideEndContent, _b = _a.sectionClasses, sectionClassesProp = _b === void 0 ? {} : _b, _c = _a.itemClasses, itemClassesProp = _c === void 0 ? {} : _c, iconClassName = _a.iconClassName, classNames = _a.classNames, className = _a.className, props = __rest(_a, ["items", "isCollapsed", "defaultSelectedKey", "onSelect", "hideEndContent", "sectionClasses", "itemClasses", "iconClassName", "classNames", "className"]);
2025
+ var items = _a.items, isCollapsed = _a.isCollapsed, defaultSelectedKey = _a.defaultSelectedKey; _a.onSelect; var hideEndContent = _a.hideEndContent, _b = _a.sectionClasses, sectionClassesProp = _b === void 0 ? {} : _b, _c = _a.itemClasses, itemClassesProp = _c === void 0 ? {} : _c, iconClassName = _a.iconClassName, classNames = _a.classNames, className = _a.className, props = __rest(_a, ["items", "isCollapsed", "defaultSelectedKey", "onSelect", "hideEndContent", "sectionClasses", "itemClasses", "iconClassName", "classNames", "className"]);
2284
2026
  var _d = useState(defaultSelectedKey), selected = _d[0], setSelected = _d[1];
2285
- var router = $ea8dcbcb9ea1b556$export$9a302a45f65d0572();
2286
2027
  // Component styles
2287
2028
  var sectionClasses = getSectionClasses(isCollapsed, sectionClassesProp);
2288
2029
  var itemClasses = getItemClasses(isCollapsed, itemClassesProp);
2289
- // Handles the click event on an item, updating the selection state and navigating.
2030
+ // Handles the click event on an item, updating the selection state.
2290
2031
  // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
2291
2032
  var handleItemPress = React.useCallback(function (item, parentKey) {
2292
2033
  var keySelected = typeof parentKey === "string" ? parentKey : item.key;
2293
2034
  setSelected(keySelected);
2294
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(keySelected);
2295
- // Use the router provider for client-side navigation (avoids full page reload)
2296
- if (item.href && item.href !== "#") {
2297
- if (!router.isNative) {
2298
- router.open(document.activeElement, new MouseEvent("click"), item.href);
2299
- }
2300
- else {
2301
- window.location.href = item.href;
2302
- }
2303
- }
2304
2035
  // Force blur to remove hover state after click.
2305
2036
  if (document.activeElement instanceof HTMLElement) {
2306
2037
  document.activeElement.blur();
2307
2038
  }
2308
- }, [setSelected, onSelect, router]);
2039
+ }, [setSelected]);
2309
2040
  // Renders the item displayed inside the Popover when the menu is collapsed.
2310
2041
  var renderCompactItem = React.useCallback(function (item, parentKey) {
2311
2042
  var _a, _b;
2312
- item.href; var itemWithoutHref = __rest(item, ["href"]);
2313
- return (createElement(ListboxItem, __assign({}, itemWithoutHref, { key: item.key, endContent: (_a = item.endContent) !== null && _a !== void 0 ? _a : null, startContent: item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_b = item.startContent) !== null && _b !== void 0 ? _b : null)), textValue: item.title, title: item.title, className: "data-[hover=true]:text-default-600", onPress: function () { return handleItemPress(item, parentKey); } })));
2043
+ return (createElement(ListboxItem, __assign({}, item, { key: item.key, endContent: (_a = item.endContent) !== null && _a !== void 0 ? _a : null, startContent: item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_b = item.startContent) !== null && _b !== void 0 ? _b : null)), textValue: item.title, title: item.title, className: "data-[hover=true]:text-default-600", onPress: function () { return handleItemPress(item, parentKey); } })));
2314
2044
  }, [handleItemPress, iconClassName]);
2315
2045
  // Renders a nested item, i.e., an item that has sub-items.
2316
2046
  // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
@@ -2319,8 +2049,10 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
2319
2049
  var isNestType = item.items &&
2320
2050
  ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
2321
2051
  (item === null || item === void 0 ? void 0 : item.type) === EnumMenuNavListItem.Nest;
2322
- item.href; var itemWithoutHref = __rest(item, ["href"]);
2323
- return (createElement(ListboxItem, __assign({}, itemWithoutHref, { key: item.key, classNames: {
2052
+ if (isNestType) {
2053
+ item.href = undefined;
2054
+ }
2055
+ return (createElement(ListboxItem, __assign({}, item, { key: item.key, classNames: {
2324
2056
  base: cn({
2325
2057
  "h-auto p-0": !isCollapsed && isNestType,
2326
2058
  }, {
@@ -2357,8 +2089,7 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
2357
2089
  return renderNestItem(item);
2358
2090
  }
2359
2091
  var isItemSelected = selected === item.key;
2360
- item.href; var itemWithoutHref = __rest(item, ["href"]);
2361
- return (createElement(ListboxItem, __assign({}, itemWithoutHref, { key: item.key, endContent: isCollapsed || hideEndContent ? null : ((_b = item.endContent) !== null && _b !== void 0 ? _b : null), startContent: isCollapsed ? null : item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_c = item.startContent) !== null && _c !== void 0 ? _c : null)), textValue: item.title, title: isCollapsed ? null : item.title, onPress: function () { return handleItemPress(item, parentKey); }, "aria-selected": isItemSelected, "aria-label": item.title || "Menu item ".concat(item.key) }), isCollapsed ? (jsx(Tooltip$1, { content: item.title, placement: "right", closeDelay: 200, shouldCloseOnBlur: false, classNames: {
2092
+ return (createElement(ListboxItem, __assign({}, item, { key: item.key, endContent: isCollapsed || hideEndContent ? null : ((_b = item.endContent) !== null && _b !== void 0 ? _b : null), startContent: isCollapsed ? null : item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_c = item.startContent) !== null && _c !== void 0 ? _c : null)), textValue: item.title, title: isCollapsed ? null : item.title, onPress: function () { return handleItemPress(item, parentKey); }, "aria-selected": isItemSelected, "aria-label": item.title || "Menu item ".concat(item.key) }), isCollapsed ? (jsx(Tooltip$1, { content: item.title, placement: "right", closeDelay: 200, shouldCloseOnBlur: false, classNames: {
2362
2093
  base: "text-default-500",
2363
2094
  }, children: jsx("div", { className: "flex w-full items-center justify-center", "aria-hidden": "true", children: item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_d = item.startContent) !== null && _d !== void 0 ? _d : null)) }) })) : null));
2364
2095
  },
@@ -2430,6 +2161,70 @@ var StepIndicator = function (_a) {
2430
2161
  return (jsxs("div", __assign({ className: cn("w-full", className) }, props, { children: [showStepText && (jsx("div", { className: "text-center text-sm font-medium text-default-400 mb-3", children: stepText })), jsx("div", { className: "w-full bg-content2 rounded-full h-2 overflow-hidden", children: jsx("div", { className: cn("h-full transition-all duration-300 ease-out rounded-full", colorClasses[color]), style: { width: "".concat(progressPercentage, "%") } }) })] })));
2431
2162
  };
2432
2163
 
2164
+ /*
2165
+ * Copyright 2020 Adobe. All rights reserved.
2166
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
2167
+ * you may not use this file except in compliance with the License. You may obtain a copy
2168
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
2169
+ *
2170
+ * Unless required by applicable law or agreed to in writing, software distributed under
2171
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
2172
+ * OF ANY KIND, either express or implied. See the License for the specific language
2173
+ * governing permissions and limitations under the License.
2174
+ */
2175
+ function $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange) {
2176
+ let [stateValue, setStateValue] = (useState)(value || defaultValue);
2177
+ let isControlledRef = (useRef)(value !== undefined);
2178
+ let isControlled = value !== undefined;
2179
+ (useEffect)(()=>{
2180
+ let wasControlled = isControlledRef.current;
2181
+ if (wasControlled !== isControlled && process.env.NODE_ENV !== 'production') console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);
2182
+ isControlledRef.current = isControlled;
2183
+ }, [
2184
+ isControlled
2185
+ ]);
2186
+ let currentValue = isControlled ? value : stateValue;
2187
+ let setValue = (useCallback)((value, ...args)=>{
2188
+ let onChangeCaller = (value, ...onChangeArgs)=>{
2189
+ if (onChange) {
2190
+ if (!Object.is(currentValue, value)) onChange(value, ...onChangeArgs);
2191
+ }
2192
+ if (!isControlled) // If uncontrolled, mutate the currentValue local variable so that
2193
+ // calling setState multiple times with the same value only emits onChange once.
2194
+ // We do not use a ref for this because we specifically _do_ want the value to
2195
+ // reset every render, and assigning to a ref in render breaks aborted suspended renders.
2196
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2197
+ currentValue = value;
2198
+ };
2199
+ if (typeof value === 'function') {
2200
+ if (process.env.NODE_ENV !== 'production') console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');
2201
+ // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates
2202
+ // when someone using useControlledState calls setControlledState(myFunc)
2203
+ // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc
2204
+ // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning
2205
+ // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same
2206
+ let updateFunction = (oldValue, ...functionArgs)=>{
2207
+ let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);
2208
+ onChangeCaller(interceptedValue, ...args);
2209
+ if (!isControlled) return interceptedValue;
2210
+ return oldValue;
2211
+ };
2212
+ setStateValue(updateFunction);
2213
+ } else {
2214
+ if (!isControlled) setStateValue(value);
2215
+ onChangeCaller(value, ...args);
2216
+ }
2217
+ }, [
2218
+ isControlled,
2219
+ currentValue,
2220
+ onChange
2221
+ ]);
2222
+ return [
2223
+ currentValue,
2224
+ setValue
2225
+ ];
2226
+ }
2227
+
2433
2228
  var defaultTranslations$7 = {
2434
2229
  checkIconTitle: "Check",
2435
2230
  };
@@ -3888,6 +3683,391 @@ function GlobalToast() {
3888
3683
  return (jsx("div", { className: "fixed top-4 right-4 z-[2000] w-full max-w-sm", children: jsx(Alert, { hideIconWrapper: true, color: toast.color, variant: "flat", title: toast.title, description: toast.description, isClosable: true, onClose: hideToast }) }));
3889
3684
  }
3890
3685
 
3686
+ /**
3687
+ * Subscribe to a CSS media query and return its current match state.
3688
+ */
3689
+ var useMediaQuery = function (query, initialValue) {
3690
+ if (initialValue === void 0) { initialValue = true; }
3691
+ var _a = useState(function () {
3692
+ if (typeof window === "undefined") {
3693
+ return initialValue;
3694
+ }
3695
+ return window.matchMedia(query).matches;
3696
+ }), matches = _a[0], setMatches = _a[1];
3697
+ useEffect(function () {
3698
+ if (typeof window === "undefined") {
3699
+ return;
3700
+ }
3701
+ var mediaQuery = window.matchMedia(query);
3702
+ var onMediaQueryChange = function (event) {
3703
+ setMatches(event.matches);
3704
+ };
3705
+ setMatches(mediaQuery.matches);
3706
+ if (typeof mediaQuery.addEventListener === "function") {
3707
+ mediaQuery.addEventListener("change", onMediaQueryChange);
3708
+ return function () { return mediaQuery.removeEventListener("change", onMediaQueryChange); };
3709
+ }
3710
+ var legacyMediaQuery = mediaQuery;
3711
+ legacyMediaQuery.addListener(onMediaQueryChange);
3712
+ return function () { return legacyMediaQuery.removeListener(onMediaQueryChange); };
3713
+ }, [query]);
3714
+ return matches;
3715
+ };
3716
+
3717
+ /** Default typing speed in milliseconds per character */
3718
+ var DEFAULT_TYPING_SPEED_MS = 20;
3719
+ /** Default system primary color token for the aura glow */
3720
+ var DEFAULT_AURA_COLOR = "hsl(var(--heroui-primary))";
3721
+ /** Default max width for the speech bubble */
3722
+ var DEFAULT_MAX_WIDTH = 420;
3723
+ /** Orb dimensions by size variant */
3724
+ var ORB_SIZES = {
3725
+ sm: 96,
3726
+ md: 128,
3727
+ lg: 160,
3728
+ xl: 192,
3729
+ };
3730
+
3731
+ var isHexColor = function (value) {
3732
+ var normalized = value.startsWith("#") ? value.slice(1) : value;
3733
+ return /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(normalized);
3734
+ };
3735
+ var hexToRgba = function (hexColor, alpha) {
3736
+ var hex = hexColor.replace("#", "");
3737
+ var parsed = hex.length === 3
3738
+ ? hex
3739
+ .split("")
3740
+ .map(function (c) { return c + c; })
3741
+ .join("")
3742
+ : hex;
3743
+ var r = parseInt(parsed.slice(0, 2), 16);
3744
+ var g = parseInt(parsed.slice(2, 4), 16);
3745
+ var b = parseInt(parsed.slice(4, 6), 16);
3746
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
3747
+ };
3748
+ var colorWithAlpha = function (color, alpha) {
3749
+ if (isHexColor(color)) {
3750
+ var normalized = color.startsWith("#") ? color : "#".concat(color);
3751
+ return hexToRgba(normalized, alpha);
3752
+ }
3753
+ return "color-mix(in srgb, ".concat(color, " ").concat(Math.round(alpha * 100), "%, transparent)");
3754
+ };
3755
+ var STATE_ANIMATIONS = {
3756
+ excited: {
3757
+ scale: [1, 1.05, 1],
3758
+ rotate: [0, 5, -5, 0],
3759
+ },
3760
+ thinking: {
3761
+ scale: [1, 0.95, 1],
3762
+ rotate: [0, 360],
3763
+ transition: {
3764
+ rotate: { duration: 8, repeat: Infinity, ease: "linear" },
3765
+ },
3766
+ },
3767
+ happy: {
3768
+ y: [0, -10, 0],
3769
+ },
3770
+ concerned: {
3771
+ scale: [1, 0.9, 1],
3772
+ opacity: [1, 0.8, 1],
3773
+ },
3774
+ learning: {
3775
+ scale: [1, 1.1, 1],
3776
+ rotate: [0, -5, 5, 0],
3777
+ },
3778
+ surprised: {
3779
+ scale: [1, 1.2, 1],
3780
+ y: [0, -15, 0],
3781
+ },
3782
+ inspired: {
3783
+ scale: [1, 1.15, 1],
3784
+ },
3785
+ };
3786
+ var AuraGlow = function (_a) {
3787
+ var _b;
3788
+ var _c = _a.state, state = _c === void 0 ? "happy" : _c, _d = _a.size, size = _d === void 0 ? "xl" : _d, _e = _a.animated, animated = _e === void 0 ? true : _e, _f = _a.className, className = _f === void 0 ? "" : _f;
3789
+ var auraBaseColor = DEFAULT_AURA_COLOR;
3790
+ var auraStrong = colorWithAlpha(auraBaseColor, 0.6);
3791
+ var auraMedium = colorWithAlpha(auraBaseColor, 0.45);
3792
+ var auraSoft = colorWithAlpha(auraBaseColor, 0.25);
3793
+ var auraGlow = colorWithAlpha(auraBaseColor, 0.8);
3794
+ var animations = animated && STATE_ANIMATIONS[state] ? STATE_ANIMATIONS[state] : {};
3795
+ var dimension = (_b = ORB_SIZES[size]) !== null && _b !== void 0 ? _b : ORB_SIZES.xl;
3796
+ return (jsxs(motion.div, { animate: animated
3797
+ ? __assign({ y: [0, -12, 0] }, animations) : {}, transition: {
3798
+ y: { duration: 5, repeat: Infinity, ease: "easeInOut" },
3799
+ default: { duration: 0.5 },
3800
+ }, className: className, style: {
3801
+ width: "".concat(dimension, "px"),
3802
+ height: "".concat(dimension, "px"),
3803
+ position: "relative",
3804
+ background: "none",
3805
+ border: "none",
3806
+ boxShadow: "none",
3807
+ outline: "none",
3808
+ }, children: [jsx(motion.div, { animate: {
3809
+ opacity: [0.2, 0.5, 0.2],
3810
+ scale: [1, 1.3, 1],
3811
+ rotate: [0, 180, 360],
3812
+ }, transition: {
3813
+ duration: 8,
3814
+ repeat: Infinity,
3815
+ ease: "easeInOut",
3816
+ }, className: "pointer-events-none", style: {
3817
+ position: "absolute",
3818
+ top: "-50%",
3819
+ left: "-50%",
3820
+ right: "-50%",
3821
+ bottom: "-50%",
3822
+ background: "radial-gradient(circle, ".concat(auraMedium, " 0%, ").concat(auraSoft, " 50%, transparent 70%)"),
3823
+ filter: "blur(40px)",
3824
+ borderRadius: "9999px",
3825
+ border: "none",
3826
+ boxShadow: "none",
3827
+ } }), jsx(motion.div, { animate: {
3828
+ opacity: [0.4, 0.7, 0.4],
3829
+ scale: [1.1, 1.25, 1.1],
3830
+ rotate: [360, 0],
3831
+ }, transition: {
3832
+ duration: 10,
3833
+ repeat: Infinity,
3834
+ ease: "linear",
3835
+ }, className: "pointer-events-none", style: {
3836
+ position: "absolute",
3837
+ top: "-30%",
3838
+ left: "-30%",
3839
+ right: "-30%",
3840
+ bottom: "-30%",
3841
+ background: "radial-gradient(ellipse, ".concat(auraStrong, " 0%, ").concat(auraMedium, " 40%, ").concat(auraSoft, " 70%, transparent 100%)"),
3842
+ filter: "blur(30px)",
3843
+ borderRadius: "9999px",
3844
+ border: "none",
3845
+ boxShadow: "none",
3846
+ } }), jsx(motion.div, { animate: {
3847
+ opacity: [0.6, 1, 0.6],
3848
+ scale: [0.9, 1.1, 0.9],
3849
+ }, transition: {
3850
+ duration: 3,
3851
+ repeat: Infinity,
3852
+ ease: "easeInOut",
3853
+ }, className: "pointer-events-none", style: {
3854
+ position: "absolute",
3855
+ top: 0,
3856
+ left: 0,
3857
+ right: 0,
3858
+ bottom: 0,
3859
+ background: "radial-gradient(circle, ".concat(auraGlow, " 0%, ").concat(auraStrong, " 30%, ").concat(auraSoft, " 60%, transparent 100%)"),
3860
+ filter: "blur(20px)",
3861
+ borderRadius: "9999px",
3862
+ border: "none",
3863
+ boxShadow: "none",
3864
+ } }), jsx(motion.div, { animate: {
3865
+ opacity: [0.3, 0.8, 0.3],
3866
+ rotate: [0, -360],
3867
+ scale: [1, 1.15, 1],
3868
+ }, transition: {
3869
+ duration: 12,
3870
+ repeat: Infinity,
3871
+ ease: "linear",
3872
+ }, className: "pointer-events-none", style: {
3873
+ position: "absolute",
3874
+ top: "10%",
3875
+ left: "10%",
3876
+ right: "10%",
3877
+ bottom: "10%",
3878
+ background: "conic-gradient(from 0deg, transparent 0deg, ".concat(auraMedium, " 90deg, ").concat(auraSoft, " 180deg, ").concat(auraMedium, " 270deg, transparent 360deg)"),
3879
+ filter: "blur(15px)",
3880
+ mixBlendMode: "screen",
3881
+ borderRadius: "9999px",
3882
+ border: "none",
3883
+ boxShadow: "none",
3884
+ } }), __spreadArray([], Array(3), true).map(function (_, i) { return (jsx(motion.div, { animate: {
3885
+ opacity: [0, 0.6, 0],
3886
+ scale: [0.5, 1.5, 0.5],
3887
+ x: [0, (i % 2 === 0 ? 1 : -1) * (15 + i * 5)],
3888
+ y: [0, (i % 2 === 0 ? -1 : 1) * (15 + i * 5)],
3889
+ }, transition: {
3890
+ duration: 4 + i,
3891
+ repeat: Infinity,
3892
+ delay: i * 1.5,
3893
+ ease: "easeInOut",
3894
+ }, className: "absolute w-4 h-4 rounded-full", style: {
3895
+ top: "".concat(30 + i * 20, "%"),
3896
+ left: "".concat(30 + i * 20, "%"),
3897
+ background: i % 2 === 0
3898
+ ? "radial-gradient(circle, ".concat(auraGlow, ", transparent)")
3899
+ : "radial-gradient(circle, ".concat(auraMedium, ", transparent)"),
3900
+ filter: "blur(8px)",
3901
+ } }, i)); })] }));
3902
+ };
3903
+
3904
+ var toGraphemes = function (value) {
3905
+ var IntlWithSegmenter = Intl;
3906
+ if (typeof Intl !== "undefined" && IntlWithSegmenter.Segmenter) {
3907
+ var seg = new IntlWithSegmenter.Segmenter("es", { granularity: "grapheme" });
3908
+ return Array.from(seg.segment(value), function (s) { return s.segment; });
3909
+ }
3910
+ return Array.from(value); // fallback
3911
+ };
3912
+ var SpeechBubble = memo(function (_a) {
3913
+ var text = _a.text, _b = _a.typing, typing = _b === void 0 ? false : _b, _c = _a.typingSpeed, typingSpeed = _c === void 0 ? DEFAULT_TYPING_SPEED_MS : _c, _d = _a.maxWidth, maxWidth = _d === void 0 ? 700 : _d, _e = _a.className, className = _e === void 0 ? "" : _e, onTypingComplete = _a.onTypingComplete;
3914
+ var _f = useState(typing ? "" : typeof text === "string" ? text : ""), displayedText = _f[0], setDisplayedText = _f[1];
3915
+ var _g = useState(typing), isTyping = _g[0], setIsTyping = _g[1];
3916
+ var onTypingCompleteRef = useRef(onTypingComplete);
3917
+ var intervalIdRef = useRef(null);
3918
+ useEffect(function () {
3919
+ onTypingCompleteRef.current = onTypingComplete;
3920
+ }, [onTypingComplete]);
3921
+ useEffect(function () {
3922
+ var currentText = typeof text === "string" ? toGraphemes(text) : [''];
3923
+ if (!typing) {
3924
+ setDisplayedText(currentText.join(''));
3925
+ setIsTyping(false);
3926
+ return;
3927
+ }
3928
+ if (intervalIdRef.current) {
3929
+ return;
3930
+ }
3931
+ setIsTyping(true);
3932
+ setDisplayedText("");
3933
+ var cancelled = false;
3934
+ var charIndex = 0;
3935
+ intervalIdRef.current = setInterval(function () {
3936
+ var _a, _b;
3937
+ if (cancelled)
3938
+ return;
3939
+ if (charIndex >= currentText.length) {
3940
+ clearInterval((_a = intervalIdRef.current) !== null && _a !== void 0 ? _a : undefined);
3941
+ intervalIdRef.current = null;
3942
+ setIsTyping(false);
3943
+ (_b = onTypingCompleteRef.current) === null || _b === void 0 ? void 0 : _b.call(onTypingCompleteRef);
3944
+ return;
3945
+ }
3946
+ var char = currentText[charIndex];
3947
+ charIndex++;
3948
+ setDisplayedText(function (prev) { return prev + char; });
3949
+ }, typingSpeed);
3950
+ return function () {
3951
+ var _a;
3952
+ if (intervalIdRef.current) {
3953
+ clearInterval((_a = intervalIdRef.current) !== null && _a !== void 0 ? _a : undefined);
3954
+ intervalIdRef.current = null;
3955
+ }
3956
+ cancelled = true;
3957
+ };
3958
+ }, []);
3959
+ return (jsxs(motion.div, { initial: { opacity: 0, y: 12, scale: 0.97 }, animate: { opacity: 1, y: 0, scale: 1 }, transition: {
3960
+ duration: 0.6,
3961
+ ease: [0.4, 0.0, 0.2, 1],
3962
+ }, className: "relative ".concat(className), style: { maxWidth: "".concat(maxWidth, "px") }, children: [jsx("div", { className: "bg-white/85 dark:bg-gray-900/85 backdrop-blur-xl rounded-3xl px-8 py-6 shadow-[0_8px_30px_rgba(0,0,0,0.04)] dark:shadow-[0_8px_30px_rgba(0,0,0,0.3)] border border-white/50 dark:border-gray-800/50", children: jsxs("p", { className: "text-lg text-gray-800 dark:text-gray-200 leading-relaxed font-sans font-normal", children: [displayedText, isTyping && (jsx(motion.span, { animate: { opacity: [0.3, 1, 0.3] }, transition: {
3963
+ duration: 1.2,
3964
+ repeat: Infinity,
3965
+ ease: "easeInOut",
3966
+ }, className: "inline-block ml-1.5 w-0.5 h-5 bg-blue-500/50 align-middle rounded-full" }))] }) }), jsx("div", { className: "absolute -top-2 left-10 w-4 h-4 bg-white/85 dark:bg-gray-900/85 border-l border-t border-white/50 dark:border-gray-800/50 transform rotate-45 backdrop-blur-xl" })] }));
3967
+ });
3968
+
3969
+ /**
3970
+ * AssistantOrb
3971
+ *
3972
+ * A compound component that renders an animated aurora orb
3973
+ * with a speech bubble featuring a character-by-character typing effect.
3974
+ * Designed for AI assistant UIs with AuraUI system theming.
3975
+ */
3976
+ var AssistantOrb = function (_a) {
3977
+ var _b;
3978
+ var text = _a.text, _c = _a.state, state = _c === void 0 ? "happy" : _c, _d = _a.size, size = _d === void 0 ? "xl" : _d, _e = _a.animated, animated = _e === void 0 ? true : _e, _f = _a.typing, typing = _f === void 0 ? false : _f, _g = _a.typingSpeed, typingSpeed = _g === void 0 ? DEFAULT_TYPING_SPEED_MS : _g, hint = _a.hint, _h = _a.maxWidth, maxWidth = _h === void 0 ? DEFAULT_MAX_WIDTH : _h, onTypingComplete = _a.onTypingComplete, translations = _a.translations, _j = _a.className, className = _j === void 0 ? "" : _j;
3979
+ var hintText = (_b = translations === null || translations === void 0 ? void 0 : translations.hint) !== null && _b !== void 0 ? _b : hint;
3980
+ var handleTypingComplete = useCallback(function () {
3981
+ onTypingComplete === null || onTypingComplete === void 0 ? void 0 : onTypingComplete();
3982
+ }, []);
3983
+ return (jsxs("div", { className: "relative flex flex-col items-center gap-6 max-w-md ".concat(className), children: [jsx(AuraGlow, { state: state, size: size, animated: animated }), jsx(SpeechBubble, { text: text, typing: typing, typingSpeed: typingSpeed, maxWidth: maxWidth, onTypingComplete: handleTypingComplete }), hintText && (jsx(motion.p, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: {
3984
+ delay: 0.6,
3985
+ duration: 0.6,
3986
+ ease: [0.4, 0.0, 0.2, 1],
3987
+ }, className: "text-sm text-gray-500 dark:text-gray-400 text-center mt-4 font-normal", children: hintText }))] }));
3988
+ };
3989
+
3990
+ var TYPING_SPEED_MS = 15;
3991
+ var DESKTOP_BREAKPOINT_PX = 1024;
3992
+ var WELCOME_GRADIENTS = [
3993
+ "linear-gradient(135deg, rgba(59, 130, 246, 0.03) 0%, rgba(147, 51, 234, 0.02) 50%, rgba(168, 85, 247, 0.02) 100%)",
3994
+ "linear-gradient(135deg, rgba(147, 51, 234, 0.03) 0%, rgba(168, 85, 247, 0.02) 50%, rgba(59, 130, 246, 0.02) 100%)",
3995
+ "linear-gradient(135deg, rgba(168, 85, 247, 0.03) 0%, rgba(59, 130, 246, 0.02) 50%, rgba(147, 51, 234, 0.02) 100%)",
3996
+ ];
3997
+ var AURORAS = [
3998
+ {
3999
+ size: "w-[700px] h-[700px]",
4000
+ color: "from-blue-400/4 to-transparent",
4001
+ position: { top: "10%", left: "10%" },
4002
+ duration: 45,
4003
+ },
4004
+ {
4005
+ size: "w-[600px] h-[600px]",
4006
+ color: "from-purple-400/4 to-transparent",
4007
+ position: { bottom: "15%", right: "15%" },
4008
+ duration: 50,
4009
+ },
4010
+ {
4011
+ size: "w-[500px] h-[500px]",
4012
+ color: "from-violet-400/3 to-transparent",
4013
+ position: { top: "50%", left: "50%" },
4014
+ duration: 55,
4015
+ },
4016
+ ];
4017
+ var DEFAULT_TRANSLATIONS$1 = {
4018
+ backButtonLabel: "Atras",
4019
+ };
4020
+ var BackButton = function (_a) {
4021
+ var onPress = _a.onPress, _b = _a.visible, visible = _b === void 0 ? true : _b, _c = _a.className, className = _c === void 0 ? "" : _c, label = _a.label;
4022
+ if (!visible) {
4023
+ return null;
4024
+ }
4025
+ return (jsx("div", { className: "fixed top-6 left-6 z-30 ".concat(className), children: jsx(Button$1, { variant: "light", size: "sm", onPress: onPress, className: "bg-transparent hover:bg-transparent text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 px-3", startContent: jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", "aria-hidden": "true", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M15 19l-7-7 7-7" }) }), children: label }) }));
4026
+ };
4027
+ var Aurora = function (_a) {
4028
+ var size = _a.size, color = _a.color, position = _a.position, duration = _a.duration, _b = _a.delay, delay = _b === void 0 ? 0 : _b;
4029
+ return (jsx(motion.div, { className: "absolute ".concat(size, " rounded-full bg-gradient-radial ").concat(color, " blur-3xl"), style: position, animate: {
4030
+ x: [0, 40, -20, 0],
4031
+ y: [0, -30, 20, 0],
4032
+ scale: [1, 1.1, 0.95, 1],
4033
+ opacity: [0.3, 0.5, 0.35, 0.3],
4034
+ }, transition: {
4035
+ duration: duration,
4036
+ repeat: Number.POSITIVE_INFINITY,
4037
+ ease: [0.4, 0.0, 0.2, 1],
4038
+ delay: delay,
4039
+ } }));
4040
+ };
4041
+ var AnimatedBackground = function (_a) {
4042
+ var _b = _a.className, className = _b === void 0 ? "" : _b;
4043
+ return (jsxs("div", { className: "absolute inset-0 z-0 overflow-hidden pointer-events-none ".concat(className), children: [jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-gray-50 via-white to-gray-50 dark:from-gray-950 dark:via-gray-900 dark:to-gray-950" }), jsx(motion.div, { className: "absolute inset-0", animate: { background: WELCOME_GRADIENTS }, transition: {
4044
+ duration: 30,
4045
+ repeat: Number.POSITIVE_INFINITY,
4046
+ ease: "linear",
4047
+ } }), AURORAS.map(function (aurora, index) { return (jsx(Aurora, __assign({}, aurora, { delay: index * 5 }), aurora.duration)); })] }));
4048
+ };
4049
+ var TwoColumnLayoutAgent = function (_a) {
4050
+ var _b = _a.assistantState, assistantState = _b === void 0 ? "happy" : _b, assistantSpeech = _a.assistantSpeech, _c = _a.assistantSize, assistantSize = _c === void 0 ? "xl" : _c, assistantHint = _a.assistantHint, _d = _a.enableSequence, enableSequence = _d === void 0 ? true : _d, children = _a.children, _e = _a.showBackButton, showBackButton = _e === void 0 ? false : _e, onBack = _a.onBack, _f = _a.translations, translations = _f === void 0 ? {} : _f, _g = _a.className, className = _g === void 0 ? "" : _g;
4051
+ var _h = useState(!enableSequence), showRightContent = _h[0], setShowRightContent = _h[1];
4052
+ var isDesktop = useMediaQuery("(min-width: ".concat(DESKTOP_BREAKPOINT_PX, "px)"));
4053
+ var t = useMemo(function () { return (__assign(__assign({}, DEFAULT_TRANSLATIONS$1), translations)); }, [translations]);
4054
+ var handleBackPress = onBack !== null && onBack !== void 0 ? onBack : (function () { return undefined; });
4055
+ useEffect(function () {
4056
+ if (enableSequence && !showRightContent) {
4057
+ var safetyTimeout_1 = setTimeout(function () {
4058
+ setShowRightContent(true);
4059
+ }, 10000);
4060
+ return function () { return clearTimeout(safetyTimeout_1); };
4061
+ }
4062
+ }, [enableSequence, showRightContent]);
4063
+ var handleTypingComplete = function () {
4064
+ setTimeout(function () {
4065
+ setShowRightContent(true);
4066
+ }, 100);
4067
+ };
4068
+ return (jsxs("div", { className: "min-h-screen relative isolate overflow-hidden ".concat(className), children: [jsx(BackButton, { onPress: handleBackPress, visible: showBackButton, label: t.backButtonLabel }), jsx(AnimatedBackground, {}), jsx("div", { className: "relative z-10 flex flex-col h-screen", children: jsxs("div", { className: "flex-grow flex overflow-hidden", children: [jsx(motion.div, { initial: { opacity: 0, x: -30 }, animate: { opacity: 1, x: 0 }, transition: { duration: 0.8, ease: [0.4, 0.0, 0.2, 1] }, className: "".concat(isDesktop ? "flex w-2/5" : "hidden", " flex-col items-center justify-center p-8 xl:p-12"), children: jsx(AssistantOrb, { text: assistantSpeech, state: assistantState, size: assistantSize, animated: true, typing: enableSequence, typingSpeed: TYPING_SPEED_MS, hint: assistantHint, onTypingComplete: handleTypingComplete }) }), jsxs("div", { className: "".concat(isDesktop ? "w-3/5 p-12" : "w-full p-6 sm:p-8", " flex flex-col items-center justify-center overflow-y-auto"), children: [!isDesktop && (jsx("div", { className: "mb-8 flex flex-col items-center gap-4", children: jsx(AssistantOrb, { text: assistantSpeech, state: assistantState, size: "lg", animated: true, typing: false }) })), jsx(AnimatePresence, { mode: "wait", children: showRightContent && (jsx(motion.div, { initial: { opacity: 0, x: 30 }, animate: { opacity: 1, x: 0 }, exit: { opacity: 0, x: -30 }, transition: { duration: 0.6, ease: [0.4, 0.0, 0.2, 1] }, className: "w-full max-w-2xl", children: children }, "right-content")) })] })] }) })] }));
4069
+ };
4070
+
3891
4071
  // Traducciones por defecto en español
3892
4072
  var defaultTranslations$1 = {
3893
4073
  uploadText: "Da clic y selecciona tus archivos",
@@ -5435,4 +5615,4 @@ var NavigationLoadingProvider = function (_a) {
5435
5615
  return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
5436
5616
  };
5437
5617
 
5438
- export { AccordionList, AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, DEFAULT_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$4 as defaultTranslations, sizeMap, themeColors, useAuraToast, useNavigationLoading, useThemeContext };
5618
+ export { AccordionList, AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, DEFAULT_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, TwoColumnLayoutAgent, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$4 as defaultTranslations, sizeMap, themeColors, useAuraToast, useMediaQuery, useNavigationLoading, useThemeContext };