@alquimia-ai/ui 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/components/atoms/index.d.mts +4 -1
  2. package/dist/components/atoms/index.d.ts +4 -1
  3. package/dist/components/atoms/index.js +39 -17
  4. package/dist/components/atoms/index.js.map +1 -1
  5. package/dist/components/atoms/index.mjs +35 -13
  6. package/dist/components/atoms/index.mjs.map +1 -1
  7. package/dist/components/hooks/index.js +41 -32
  8. package/dist/components/hooks/index.js.map +1 -1
  9. package/dist/components/hooks/index.mjs +42 -33
  10. package/dist/components/hooks/index.mjs.map +1 -1
  11. package/dist/components/index.d.mts +2 -1
  12. package/dist/components/index.d.ts +2 -1
  13. package/dist/components/index.js +39 -17
  14. package/dist/components/index.js.map +1 -1
  15. package/dist/components/index.mjs +35 -13
  16. package/dist/components/index.mjs.map +1 -1
  17. package/dist/components/molecules/documents/index.js +82 -52
  18. package/dist/components/molecules/documents/index.js.map +1 -1
  19. package/dist/components/molecules/documents/index.mjs +67 -37
  20. package/dist/components/molecules/documents/index.mjs.map +1 -1
  21. package/dist/components/molecules/index.js +186 -156
  22. package/dist/components/molecules/index.js.map +1 -1
  23. package/dist/components/molecules/index.mjs +179 -149
  24. package/dist/components/molecules/index.mjs.map +1 -1
  25. package/dist/components/molecules/viewers/index.js +31 -10
  26. package/dist/components/molecules/viewers/index.js.map +1 -1
  27. package/dist/components/molecules/viewers/index.mjs +30 -9
  28. package/dist/components/molecules/viewers/index.mjs.map +1 -1
  29. package/dist/components/organisms/index.d.mts +3 -1
  30. package/dist/components/organisms/index.d.ts +3 -1
  31. package/dist/components/organisms/index.js +228 -196
  32. package/dist/components/organisms/index.js.map +1 -1
  33. package/dist/components/organisms/index.mjs +217 -185
  34. package/dist/components/organisms/index.mjs.map +1 -1
  35. package/dist/components/templates/cards/index.js +57 -36
  36. package/dist/components/templates/cards/index.js.map +1 -1
  37. package/dist/components/templates/cards/index.mjs +45 -24
  38. package/dist/components/templates/cards/index.mjs.map +1 -1
  39. package/dist/components/templates/index.js +57 -36
  40. package/dist/components/templates/index.js.map +1 -1
  41. package/dist/components/templates/index.mjs +45 -24
  42. package/dist/components/templates/index.mjs.map +1 -1
  43. package/dist/index.d.mts +3 -2
  44. package/dist/index.d.ts +3 -2
  45. package/dist/index.js +283 -250
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.mjs +262 -229
  48. package/dist/index.mjs.map +1 -1
  49. package/dist/package.json +137 -0
  50. package/dist/types/index.d.mts +12 -1
  51. package/dist/types/index.d.ts +12 -1
  52. package/dist/types/index.js.map +1 -1
  53. package/dist/types/index.mjs.map +1 -1
  54. package/package.json +21 -3
package/dist/index.js CHANGED
@@ -147,6 +147,7 @@ __export(index_exports, {
147
147
  SelectSeparator: () => SelectSeparator,
148
148
  SelectTrigger: () => SelectTrigger,
149
149
  SelectValue: () => SelectValue,
150
+ Separator: () => Separator2,
150
151
  Sidebar: () => Sidebar,
151
152
  SidebarFooter: () => SidebarFooter,
152
153
  Skeleton: () => Skeleton,
@@ -1560,8 +1561,29 @@ var Loader = React22.forwardRef(
1560
1561
  );
1561
1562
  Loader.displayName = "Loader";
1562
1563
 
1563
- // src/components/hooks/use-toast.ts
1564
+ // src/components/atoms/ui/separator.tsx
1564
1565
  var React23 = __toESM(require("react"));
1566
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"));
1567
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1568
+ var Separator2 = React23.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1569
+ SeparatorPrimitive.Root,
1570
+ {
1571
+ ref,
1572
+ decorative,
1573
+ orientation,
1574
+ className: cn(
1575
+ "shrink-0 bg-border",
1576
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
1577
+ className,
1578
+ "alq--separator"
1579
+ ),
1580
+ ...props
1581
+ }
1582
+ ));
1583
+ Separator2.displayName = SeparatorPrimitive.Root.displayName;
1584
+
1585
+ // src/components/hooks/use-toast.ts
1586
+ var React24 = __toESM(require("react"));
1565
1587
  var TOAST_LIMIT = 1;
1566
1588
  var TOAST_REMOVE_DELAY = 1e6;
1567
1589
  var count = 0;
@@ -1662,8 +1684,8 @@ function toast({ ...props }) {
1662
1684
  };
1663
1685
  }
1664
1686
  function useToast() {
1665
- const [state, setState] = React23.useState(memoryState);
1666
- React23.useEffect(() => {
1687
+ const [state, setState] = React24.useState(memoryState);
1688
+ React24.useEffect(() => {
1667
1689
  listeners.push(setState);
1668
1690
  return () => {
1669
1691
  const index = listeners.indexOf(setState);
@@ -1680,29 +1702,29 @@ function useToast() {
1680
1702
  }
1681
1703
 
1682
1704
  // src/components/atoms/ui/toaster.tsx
1683
- var import_jsx_runtime28 = require("react/jsx-runtime");
1705
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1684
1706
  function Toaster() {
1685
1707
  const { toasts } = useToast();
1686
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(ToastProvider, { children: [
1708
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(ToastProvider, { children: [
1687
1709
  toasts.map(function({ id, title, description, action, ...props }) {
1688
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Toast, { ...props, children: [
1689
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "grid gap-1", children: [
1690
- title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ToastTitle, { children: title }),
1691
- description && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ToastDescription, { children: description })
1710
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Toast, { ...props, children: [
1711
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "grid gap-1", children: [
1712
+ title && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ToastTitle, { children: title }),
1713
+ description && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ToastDescription, { children: description })
1692
1714
  ] }),
1693
1715
  action,
1694
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ToastClose, {})
1716
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ToastClose, {})
1695
1717
  ] }, id);
1696
1718
  }),
1697
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ToastViewport, {})
1719
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(ToastViewport, {})
1698
1720
  ] });
1699
1721
  }
1700
1722
 
1701
1723
  // src/components/atoms/ui/think-indicator.tsx
1702
- var React24 = __toESM(require("react"));
1724
+ var React25 = __toESM(require("react"));
1703
1725
  var import_react3 = require("react");
1704
1726
  var import_class_variance_authority8 = require("class-variance-authority");
1705
- var import_jsx_runtime29 = require("react/jsx-runtime");
1727
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1706
1728
  var thinkIndicatorVariants = (0, import_class_variance_authority8.cva)(
1707
1729
  "flex items-center gap-3",
1708
1730
  {
@@ -1724,7 +1746,7 @@ var thinkIndicatorVariants = (0, import_class_variance_authority8.cva)(
1724
1746
  }
1725
1747
  }
1726
1748
  );
1727
- var ThinkIndicator = React24.forwardRef(
1749
+ var ThinkIndicator = React25.forwardRef(
1728
1750
  ({
1729
1751
  className,
1730
1752
  variant,
@@ -1755,14 +1777,14 @@ var ThinkIndicator = React24.forwardRef(
1755
1777
  }
1756
1778
  return () => clearInterval(timer);
1757
1779
  }, [thoughts, interval, currentThoughtIndex]);
1758
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1780
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1759
1781
  "div",
1760
1782
  {
1761
1783
  ref,
1762
1784
  className: cn(thinkIndicatorVariants({ variant, size }), className, "alq--think-indicator"),
1763
1785
  ...props,
1764
1786
  children: [
1765
- loader || /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1787
+ loader || /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1766
1788
  Loader,
1767
1789
  {
1768
1790
  className: cn(
@@ -1770,7 +1792,7 @@ var ThinkIndicator = React24.forwardRef(
1770
1792
  )
1771
1793
  }
1772
1794
  ),
1773
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1795
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1774
1796
  "div",
1775
1797
  {
1776
1798
  className: cn(
@@ -1790,30 +1812,30 @@ ThinkIndicator.displayName = "ThinkIndicator";
1790
1812
 
1791
1813
  // src/components/templates/messages-window.tsx
1792
1814
  var import_react4 = require("react");
1793
- var import_jsx_runtime30 = require("react/jsx-runtime");
1815
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1794
1816
  var MessagesWindow = (0, import_react4.forwardRef)(
1795
1817
  ({ className, ...props }, ref) => {
1796
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: cn(className, "alq--messages--window"), ...props });
1818
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: cn(className, "alq--messages--window"), ...props });
1797
1819
  }
1798
1820
  );
1799
1821
  MessagesWindow.displayName = "MessagesWindow";
1800
1822
 
1801
1823
  // src/components/templates/query-box.tsx
1802
1824
  var import_react5 = require("react");
1803
- var import_jsx_runtime31 = require("react/jsx-runtime");
1825
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1804
1826
  var QueryBox = (0, import_react5.forwardRef)(
1805
1827
  ({ className, ...props }, ref) => {
1806
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: cn(className, "alq--querybox"), ...props });
1828
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: cn(className, "alq--querybox"), ...props });
1807
1829
  }
1808
1830
  );
1809
1831
  QueryBox.displayName = "QueryBox";
1810
1832
 
1811
1833
  // src/components/templates/hero/index.tsx
1812
1834
  var import_react6 = require("react");
1813
- var import_jsx_runtime32 = require("react/jsx-runtime");
1835
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1814
1836
  var Hero = (0, import_react6.forwardRef)(
1815
1837
  ({ className, children, ...props }, ref) => {
1816
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1838
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1817
1839
  "div",
1818
1840
  {
1819
1841
  ref,
@@ -1826,7 +1848,7 @@ var Hero = (0, import_react6.forwardRef)(
1826
1848
  );
1827
1849
  var HeroContent = (0, import_react6.forwardRef)(
1828
1850
  ({ className, children, ...props }, ref) => {
1829
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1851
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1830
1852
  "div",
1831
1853
  {
1832
1854
  ref,
@@ -1841,21 +1863,21 @@ Hero.displayName = "Hero";
1841
1863
  HeroContent.displayName = "HeroContent";
1842
1864
 
1843
1865
  // src/components/templates/cards/with-image-heading-description.tsx
1844
- var import_jsx_runtime33 = require("react/jsx-runtime");
1866
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1845
1867
  var CardWithImageHeadingDescriptionVertical = (props) => {
1846
1868
  const { showBorder, image, heading, description } = props;
1847
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Card, { className: cn("w-[360px]", !showBorder && "border-none shadow-none"), children: [
1869
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Card, { className: cn("w-[360px]", !showBorder && "border-none shadow-none"), children: [
1848
1870
  image,
1849
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CardHeader, { children: [
1850
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardTitle, { children: heading }),
1851
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1871
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(CardHeader, { children: [
1872
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardTitle, { children: heading }),
1873
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1852
1874
  ] }),
1853
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardContent, {})
1875
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardContent, {})
1854
1876
  ] });
1855
1877
  };
1856
1878
  var CardImageWithHeadingAndDescriptionHorizontal = (props) => {
1857
1879
  const { showBorder, image, heading, description } = props;
1858
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1880
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1859
1881
  Card,
1860
1882
  {
1861
1883
  className: cn(
@@ -1864,42 +1886,42 @@ var CardImageWithHeadingAndDescriptionHorizontal = (props) => {
1864
1886
  ),
1865
1887
  children: [
1866
1888
  image,
1867
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CardHeader, { children: [
1868
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardTitle, { children: heading }),
1869
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1889
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(CardHeader, { children: [
1890
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardTitle, { children: heading }),
1891
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1870
1892
  ] }),
1871
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardContent, {})
1893
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardContent, {})
1872
1894
  ]
1873
1895
  }
1874
1896
  );
1875
1897
  };
1876
1898
 
1877
1899
  // src/components/templates/cards/with-image-heading-description-avatar.tsx
1878
- var import_jsx_runtime34 = require("react/jsx-runtime");
1900
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1879
1901
  var AvatarInfo = (props) => {
1880
1902
  const { userName, email, avatarImage } = props;
1881
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex space-x-2 items-center", children: [
1882
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Avatar, { className: "w-16 h-16", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AvatarImage, { src: avatarImage }) }),
1883
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { children: [
1884
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "small", className: "font-semibold", children: userName }),
1885
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "tiny", className: "text-font-weak-color", children: email })
1903
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex space-x-2 items-center", children: [
1904
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Avatar, { className: "w-16 h-16", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AvatarImage, { src: avatarImage }) }),
1905
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { children: [
1906
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Typography, { typeStyle: "small", className: "font-semibold", children: userName }),
1907
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Typography, { typeStyle: "tiny", className: "text-font-weak-color", children: email })
1886
1908
  ] })
1887
1909
  ] });
1888
1910
  };
1889
1911
  var CardWithImageHeadingDescriptionAvatarVertical = (props) => {
1890
1912
  const { showBorder, image, heading, description } = props;
1891
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(Card, { className: cn("w-[360px]", !showBorder && "border-none shadow-none"), children: [
1913
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Card, { className: cn("w-[360px]", !showBorder && "border-none shadow-none"), children: [
1892
1914
  image,
1893
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(CardHeader, { children: [
1894
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardTitle, { children: heading }),
1895
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1915
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(CardHeader, { children: [
1916
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CardTitle, { children: heading }),
1917
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1896
1918
  ] }),
1897
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AvatarInfo, { ...props }) })
1919
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AvatarInfo, { ...props }) })
1898
1920
  ] });
1899
1921
  };
1900
1922
  var CardImageWithHeadingAndDescriptionAvatarHorizontal = (props) => {
1901
1923
  const { showBorder, image, heading, description } = props;
1902
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1924
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
1903
1925
  Card,
1904
1926
  {
1905
1927
  className: cn(
@@ -1908,12 +1930,12 @@ var CardImageWithHeadingAndDescriptionAvatarHorizontal = (props) => {
1908
1930
  ),
1909
1931
  children: [
1910
1932
  image,
1911
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { children: [
1912
- /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(CardHeader, { children: [
1913
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardTitle, { children: heading }),
1914
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1933
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { children: [
1934
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(CardHeader, { children: [
1935
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CardTitle, { children: heading }),
1936
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Typography, { typeStyle: "small", className: "text-font-weak-color", children: description })
1915
1937
  ] }),
1916
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AvatarInfo, { ...props }) })
1938
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AvatarInfo, { ...props }) })
1917
1939
  ] })
1918
1940
  ]
1919
1941
  }
@@ -1923,7 +1945,7 @@ var CardImageWithHeadingAndDescriptionAvatarHorizontal = (props) => {
1923
1945
  // src/components/organisms/whisper.tsx
1924
1946
  var import_react7 = require("react");
1925
1947
  var import_lucide_react8 = require("lucide-react");
1926
- var import_jsx_runtime35 = require("react/jsx-runtime");
1948
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1927
1949
  function Whisper({
1928
1950
  className,
1929
1951
  message,
@@ -1971,20 +1993,20 @@ function Whisper({
1971
1993
  handleAudioPlay();
1972
1994
  }
1973
1995
  };
1974
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: cn(className), children: [
1975
- isMessageStreaming && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "p-2 w-[24px] h-[24px]" }),
1976
- !isMessageStreaming && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { onClick: () => handleTextToSpeech(content), children: [
1977
- isPlaying && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { className: "p-2 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react8.AudioLinesIcon, { size: 20 }) }),
1978
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { className: "p-2 items-center justify-center", children: [
1996
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn(className), children: [
1997
+ isMessageStreaming && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "p-2 w-[24px] h-[24px]" }),
1998
+ !isMessageStreaming && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { onClick: () => handleTextToSpeech(content), children: [
1999
+ isPlaying && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("button", { className: "p-2 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react8.AudioLinesIcon, { size: 20 }) }),
2000
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("button", { className: "p-2 items-center justify-center", children: [
1979
2001
  " ",
1980
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react8.LoaderPinwheelIcon, { size: 20, className: "circular-animation" })
2002
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react8.LoaderPinwheelIcon, { size: 20, className: "circular-animation" })
1981
2003
  ] }),
1982
- !isLoading && !isPlaying && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2004
+ !isLoading && !isPlaying && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1983
2005
  "button",
1984
2006
  {
1985
2007
  disabled: isLoading,
1986
2008
  className: "p-2 items-center justify-center",
1987
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react8.PlayCircleIcon, { size: 20 })
2009
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react8.PlayCircleIcon, { size: 20 })
1988
2010
  }
1989
2011
  )
1990
2012
  ] })
@@ -1993,7 +2015,7 @@ function Whisper({
1993
2015
 
1994
2016
  // src/components/organisms/speechToText.tsx
1995
2017
  var import_react8 = require("react");
1996
- var import_jsx_runtime36 = require("react/jsx-runtime");
2018
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1997
2019
  function SpeechToText({
1998
2020
  className,
1999
2021
  speechToText,
@@ -2055,19 +2077,19 @@ function SpeechToText({
2055
2077
  }
2056
2078
  };
2057
2079
  const recordIcons = isRecording ? RecordAudioIcon : IdleAudioIcon;
2058
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: cn(className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("button", { disabled: isLoading, type: "button", onClick: handleRecordButtonClick, children: recordIcons }) });
2080
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: cn(className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("button", { disabled: isLoading, type: "button", onClick: handleRecordButtonClick, children: recordIcons }) });
2059
2081
  }
2060
2082
 
2061
2083
  // src/components/organisms/assistant.tsx
2062
- var React33 = __toESM(require("react"));
2084
+ var React34 = __toESM(require("react"));
2063
2085
  var import_react12 = require("react");
2064
2086
 
2065
2087
  // src/components/molecules/page-container.tsx
2066
2088
  var import_react9 = require("react");
2067
- var import_jsx_runtime37 = require("react/jsx-runtime");
2089
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2068
2090
  var PageContainer = (0, import_react9.forwardRef)(
2069
2091
  ({ className, ...props }, ref) => {
2070
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2092
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2071
2093
  "div",
2072
2094
  {
2073
2095
  ref,
@@ -2080,11 +2102,11 @@ var PageContainer = (0, import_react9.forwardRef)(
2080
2102
  PageContainer.displayName = "PageContainer";
2081
2103
 
2082
2104
  // src/components/molecules/assistant-button.tsx
2083
- var React25 = __toESM(require("react"));
2105
+ var React26 = __toESM(require("react"));
2084
2106
  var import_react10 = require("react");
2085
- var import_jsx_runtime38 = require("react/jsx-runtime");
2086
- var AssistantSuggestions = React25.forwardRef(({ suggestions, showSuggestions, className }, ref) => {
2087
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2107
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2108
+ var AssistantSuggestions = React26.forwardRef(({ suggestions, showSuggestions, className }, ref) => {
2109
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2088
2110
  "div",
2089
2111
  {
2090
2112
  ref,
@@ -2094,7 +2116,7 @@ var AssistantSuggestions = React25.forwardRef(({ suggestions, showSuggestions, c
2094
2116
  showSuggestions ? "opacity-100 translate-y-0" : "opacity-0 translate-y-4",
2095
2117
  className
2096
2118
  ),
2097
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "rounded-lg p-2 pr-0 w-64", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2119
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "rounded-lg p-2 pr-0 w-64", children: suggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
2098
2120
  "button",
2099
2121
  {
2100
2122
  onClick: () => suggestion.action?.(),
@@ -2110,8 +2132,8 @@ var AssistantSuggestions = React25.forwardRef(({ suggestions, showSuggestions, c
2110
2132
  showSuggestions ? "opacity-100 translate-y-0" : "opacity-0 translate-y-4"
2111
2133
  ),
2112
2134
  children: [
2113
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(suggestion.icon, { className: "w-5 h-5 text-primary" }),
2114
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-xs whitespace-nowrap font-normal", children: suggestion.label })
2135
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(suggestion.icon, { className: "w-5 h-5 text-primary" }),
2136
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "text-xs whitespace-nowrap font-normal", children: suggestion.label })
2115
2137
  ]
2116
2138
  },
2117
2139
  index
@@ -2120,7 +2142,7 @@ var AssistantSuggestions = React25.forwardRef(({ suggestions, showSuggestions, c
2120
2142
  );
2121
2143
  });
2122
2144
  AssistantSuggestions.displayName = "Suggestions";
2123
- var AssistantButton = React25.forwardRef(
2145
+ var AssistantButton = React26.forwardRef(
2124
2146
  ({
2125
2147
  icon: Icon2,
2126
2148
  clickAction,
@@ -2141,7 +2163,7 @@ var AssistantButton = React25.forwardRef(
2141
2163
  setShowSuggestions(false);
2142
2164
  setTimeout(() => setIsVisible(false), 300);
2143
2165
  };
2144
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2166
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2145
2167
  "div",
2146
2168
  {
2147
2169
  ref,
@@ -2152,15 +2174,15 @@ var AssistantButton = React25.forwardRef(
2152
2174
  ),
2153
2175
  onMouseEnter: handleMouseEnter,
2154
2176
  onMouseLeave: handleMouseLeave,
2155
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "relative group", children: [
2156
- isVisible && suggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2177
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "relative group", children: [
2178
+ isVisible && suggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2157
2179
  AssistantSuggestions,
2158
2180
  {
2159
2181
  suggestions,
2160
2182
  showSuggestions
2161
2183
  }
2162
2184
  ),
2163
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2185
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2164
2186
  Button,
2165
2187
  {
2166
2188
  variant: "outline",
@@ -2174,7 +2196,7 @@ var AssistantButton = React25.forwardRef(
2174
2196
  "alq--assistant-button"
2175
2197
  ),
2176
2198
  onClick: clickAction,
2177
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2199
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2178
2200
  Icon2,
2179
2201
  {
2180
2202
  style: { width: "22px", height: "22px" },
@@ -2191,19 +2213,19 @@ var AssistantButton = React25.forwardRef(
2191
2213
  AssistantButton.displayName = "AssistantButton";
2192
2214
 
2193
2215
  // src/components/molecules/carousel.tsx
2194
- var React26 = __toESM(require("react"));
2216
+ var React27 = __toESM(require("react"));
2195
2217
  var import_embla_carousel_react = __toESM(require("embla-carousel-react"));
2196
2218
  var import_lucide_react9 = require("lucide-react");
2197
- var import_jsx_runtime39 = require("react/jsx-runtime");
2198
- var CarouselContext = React26.createContext(null);
2219
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2220
+ var CarouselContext = React27.createContext(null);
2199
2221
  function useCarousel() {
2200
- const context = React26.useContext(CarouselContext);
2222
+ const context = React27.useContext(CarouselContext);
2201
2223
  if (!context) {
2202
2224
  throw new Error("useCarousel must be used within a <Carousel />");
2203
2225
  }
2204
2226
  return context;
2205
2227
  }
2206
- var Carousel = React26.forwardRef(
2228
+ var Carousel = React27.forwardRef(
2207
2229
  ({
2208
2230
  orientation = "horizontal",
2209
2231
  opts,
@@ -2220,22 +2242,22 @@ var Carousel = React26.forwardRef(
2220
2242
  },
2221
2243
  plugins
2222
2244
  );
2223
- const [canScrollPrev, setCanScrollPrev] = React26.useState(false);
2224
- const [canScrollNext, setCanScrollNext] = React26.useState(false);
2225
- const onSelect = React26.useCallback((api2) => {
2245
+ const [canScrollPrev, setCanScrollPrev] = React27.useState(false);
2246
+ const [canScrollNext, setCanScrollNext] = React27.useState(false);
2247
+ const onSelect = React27.useCallback((api2) => {
2226
2248
  if (!api2) {
2227
2249
  return;
2228
2250
  }
2229
2251
  setCanScrollPrev(api2.canScrollPrev());
2230
2252
  setCanScrollNext(api2.canScrollNext());
2231
2253
  }, []);
2232
- const scrollPrev = React26.useCallback(() => {
2254
+ const scrollPrev = React27.useCallback(() => {
2233
2255
  api?.scrollPrev();
2234
2256
  }, [api]);
2235
- const scrollNext = React26.useCallback(() => {
2257
+ const scrollNext = React27.useCallback(() => {
2236
2258
  api?.scrollNext();
2237
2259
  }, [api]);
2238
- const handleKeyDown = React26.useCallback(
2260
+ const handleKeyDown = React27.useCallback(
2239
2261
  (event) => {
2240
2262
  if (event.key === "ArrowLeft") {
2241
2263
  event.preventDefault();
@@ -2247,13 +2269,13 @@ var Carousel = React26.forwardRef(
2247
2269
  },
2248
2270
  [scrollPrev, scrollNext]
2249
2271
  );
2250
- React26.useEffect(() => {
2272
+ React27.useEffect(() => {
2251
2273
  if (!api || !setApi) {
2252
2274
  return;
2253
2275
  }
2254
2276
  setApi(api);
2255
2277
  }, [api, setApi]);
2256
- React26.useEffect(() => {
2278
+ React27.useEffect(() => {
2257
2279
  if (!api) {
2258
2280
  return;
2259
2281
  }
@@ -2264,7 +2286,7 @@ var Carousel = React26.forwardRef(
2264
2286
  api?.off("select", onSelect);
2265
2287
  };
2266
2288
  }, [api, onSelect]);
2267
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2289
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2268
2290
  CarouselContext.Provider,
2269
2291
  {
2270
2292
  value: {
@@ -2277,7 +2299,7 @@ var Carousel = React26.forwardRef(
2277
2299
  canScrollPrev,
2278
2300
  canScrollNext
2279
2301
  },
2280
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2302
+ children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2281
2303
  "div",
2282
2304
  {
2283
2305
  ref,
@@ -2294,9 +2316,9 @@ var Carousel = React26.forwardRef(
2294
2316
  }
2295
2317
  );
2296
2318
  Carousel.displayName = "Carousel";
2297
- var CarouselContent = React26.forwardRef(({ className, ...props }, ref) => {
2319
+ var CarouselContent = React27.forwardRef(({ className, ...props }, ref) => {
2298
2320
  const { carouselRef, orientation } = useCarousel();
2299
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2321
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2300
2322
  "div",
2301
2323
  {
2302
2324
  ref,
@@ -2310,9 +2332,9 @@ var CarouselContent = React26.forwardRef(({ className, ...props }, ref) => {
2310
2332
  ) });
2311
2333
  });
2312
2334
  CarouselContent.displayName = "CarouselContent";
2313
- var CarouselItem = React26.forwardRef(({ className, ...props }, ref) => {
2335
+ var CarouselItem = React27.forwardRef(({ className, ...props }, ref) => {
2314
2336
  const { orientation } = useCarousel();
2315
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2337
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2316
2338
  "div",
2317
2339
  {
2318
2340
  ref,
@@ -2328,9 +2350,9 @@ var CarouselItem = React26.forwardRef(({ className, ...props }, ref) => {
2328
2350
  );
2329
2351
  });
2330
2352
  CarouselItem.displayName = "CarouselItem";
2331
- var CarouselPrevious = React26.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
2353
+ var CarouselPrevious = React27.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
2332
2354
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
2333
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
2355
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2334
2356
  Button,
2335
2357
  {
2336
2358
  ref,
@@ -2345,16 +2367,16 @@ var CarouselPrevious = React26.forwardRef(({ className, variant = "outline", siz
2345
2367
  onClick: scrollPrev,
2346
2368
  ...props,
2347
2369
  children: [
2348
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react9.ArrowLeft, { className: "h-4 w-4" }),
2349
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "sr-only", children: "Previous slide" })
2370
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react9.ArrowLeft, { className: "h-4 w-4" }),
2371
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "sr-only", children: "Previous slide" })
2350
2372
  ]
2351
2373
  }
2352
2374
  );
2353
2375
  });
2354
2376
  CarouselPrevious.displayName = "CarouselPrevious";
2355
- var CarouselNext = React26.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
2377
+ var CarouselNext = React27.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
2356
2378
  const { orientation, scrollNext, canScrollNext } = useCarousel();
2357
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
2379
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2358
2380
  Button,
2359
2381
  {
2360
2382
  ref,
@@ -2369,8 +2391,8 @@ var CarouselNext = React26.forwardRef(({ className, variant = "outline", size =
2369
2391
  onClick: scrollNext,
2370
2392
  ...props,
2371
2393
  children: [
2372
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react9.ArrowRight, { className: "h-4 w-4" }),
2373
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "sr-only", children: "Next slide" })
2394
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react9.ArrowRight, { className: "h-4 w-4" }),
2395
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "sr-only", children: "Next slide" })
2374
2396
  ]
2375
2397
  }
2376
2398
  );
@@ -2378,12 +2400,12 @@ var CarouselNext = React26.forwardRef(({ className, variant = "outline", size =
2378
2400
  CarouselNext.displayName = "CarouselNext";
2379
2401
 
2380
2402
  // src/components/molecules/navigation-menu.tsx
2381
- var React27 = __toESM(require("react"));
2403
+ var React28 = __toESM(require("react"));
2382
2404
  var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"));
2383
2405
  var import_class_variance_authority9 = require("class-variance-authority");
2384
2406
  var import_lucide_react10 = require("lucide-react");
2385
- var import_jsx_runtime40 = require("react/jsx-runtime");
2386
- var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2407
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2408
+ var NavigationMenu = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2387
2409
  NavigationMenuPrimitive.Root,
2388
2410
  {
2389
2411
  ref,
@@ -2394,12 +2416,12 @@ var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref)
2394
2416
  ...props,
2395
2417
  children: [
2396
2418
  children,
2397
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(NavigationMenuViewport, {})
2419
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(NavigationMenuViewport, {})
2398
2420
  ]
2399
2421
  }
2400
2422
  ));
2401
2423
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2402
- var NavigationMenuList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2424
+ var NavigationMenuList = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2403
2425
  NavigationMenuPrimitive.List,
2404
2426
  {
2405
2427
  ref,
@@ -2415,7 +2437,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
2415
2437
  var navigationMenuTriggerStyle = (0, import_class_variance_authority9.cva)(
2416
2438
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
2417
2439
  );
2418
- var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2440
+ var NavigationMenuTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2419
2441
  NavigationMenuPrimitive.Trigger,
2420
2442
  {
2421
2443
  ref,
@@ -2424,7 +2446,7 @@ var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props
2424
2446
  children: [
2425
2447
  children,
2426
2448
  " ",
2427
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2449
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2428
2450
  import_lucide_react10.ChevronDown,
2429
2451
  {
2430
2452
  className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
@@ -2435,7 +2457,7 @@ var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props
2435
2457
  }
2436
2458
  ));
2437
2459
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2438
- var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2460
+ var NavigationMenuContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2439
2461
  NavigationMenuPrimitive.Content,
2440
2462
  {
2441
2463
  ref,
@@ -2448,7 +2470,7 @@ var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) =>
2448
2470
  ));
2449
2471
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2450
2472
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
2451
- var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2473
+ var NavigationMenuViewport = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2452
2474
  NavigationMenuPrimitive.Viewport,
2453
2475
  {
2454
2476
  className: cn(
@@ -2460,7 +2482,7 @@ var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) =
2460
2482
  }
2461
2483
  ) }));
2462
2484
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2463
- var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2485
+ var NavigationMenuIndicator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2464
2486
  NavigationMenuPrimitive.Indicator,
2465
2487
  {
2466
2488
  ref,
@@ -2469,15 +2491,15 @@ var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref)
2469
2491
  className
2470
2492
  ),
2471
2493
  ...props,
2472
- children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
2494
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
2473
2495
  }
2474
2496
  ));
2475
2497
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2476
2498
 
2477
2499
  // src/components/molecules/sidebar.tsx
2478
- var React28 = __toESM(require("react"));
2500
+ var React29 = __toESM(require("react"));
2479
2501
  var import_class_variance_authority10 = require("class-variance-authority");
2480
- var import_jsx_runtime41 = require("react/jsx-runtime");
2502
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2481
2503
  var sidebarVariants = (0, import_class_variance_authority10.cva)(
2482
2504
  "flex flex-col border-r",
2483
2505
  {
@@ -2493,7 +2515,7 @@ var sidebarVariants = (0, import_class_variance_authority10.cva)(
2493
2515
  }
2494
2516
  }
2495
2517
  );
2496
- var SidebarFooter = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2518
+ var SidebarFooter = React29.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2497
2519
  "div",
2498
2520
  {
2499
2521
  ref,
@@ -2503,7 +2525,7 @@ var SidebarFooter = React28.forwardRef(({ className, children, ...props }, ref)
2503
2525
  }
2504
2526
  ));
2505
2527
  SidebarFooter.displayName = "SidebarFooter";
2506
- var Sidebar = React28.forwardRef(
2528
+ var Sidebar = React29.forwardRef(
2507
2529
  ({
2508
2530
  className,
2509
2531
  items,
@@ -2516,8 +2538,8 @@ var Sidebar = React28.forwardRef(
2516
2538
  buttonClassName,
2517
2539
  ...props
2518
2540
  }, ref) => {
2519
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn(className, "alq--navigation-sidebar h-full"), ref, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("aside", { className: cn(sidebarVariants({ size }), "h-full"), children: [
2520
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ScrollArea, { className: "flex-grow justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex flex-col gap-2 p-4", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2541
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: cn(className, "alq--navigation-sidebar h-full"), ref, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("aside", { className: cn(sidebarVariants({ size }), "h-full"), children: [
2542
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ScrollArea, { className: "flex-grow justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "flex flex-col gap-2 p-4", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
2521
2543
  Button,
2522
2544
  {
2523
2545
  variant: selectedSection?.name === item.name ? selectedVariant : defaultVariant,
@@ -2529,13 +2551,13 @@ var Sidebar = React28.forwardRef(
2529
2551
  }
2530
2552
  },
2531
2553
  children: [
2532
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(item.icon, { className: "mr-2 h-4 w-4" }),
2554
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(item.icon, { className: "mr-2 h-4 w-4" }),
2533
2555
  item.name
2534
2556
  ]
2535
2557
  },
2536
2558
  item.name
2537
2559
  )) }) }),
2538
- footerContent && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SidebarFooter, { children: footerContent })
2560
+ footerContent && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SidebarFooter, { children: footerContent })
2539
2561
  ] }) });
2540
2562
  }
2541
2563
  );
@@ -2543,10 +2565,10 @@ var Sidebar = React28.forwardRef(
2543
2565
  // src/components/molecules/sonner.tsx
2544
2566
  var import_next_themes = require("next-themes");
2545
2567
  var import_sonner = require("sonner");
2546
- var import_jsx_runtime42 = require("react/jsx-runtime");
2568
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2547
2569
  var Toaster2 = ({ ...props }) => {
2548
2570
  const { theme = "system" } = (0, import_next_themes.useTheme)();
2549
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
2571
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2550
2572
  import_sonner.Toaster,
2551
2573
  {
2552
2574
  theme,
@@ -2565,14 +2587,14 @@ var Toaster2 = ({ ...props }) => {
2565
2587
  };
2566
2588
 
2567
2589
  // src/components/molecules/rating-stars.tsx
2568
- var React29 = __toESM(require("react"));
2590
+ var React30 = __toESM(require("react"));
2569
2591
  var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
2570
2592
  var import_lucide_react11 = require("lucide-react");
2571
- var import_jsx_runtime43 = require("react/jsx-runtime");
2593
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2572
2594
  var TooltipProvider = TooltipPrimitive.Provider;
2573
2595
  var Tooltip = TooltipPrimitive.Root;
2574
2596
  var TooltipTrigger = TooltipPrimitive.Trigger;
2575
- var TooltipContent = React29.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2597
+ var TooltipContent = React30.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2576
2598
  TooltipPrimitive.Content,
2577
2599
  {
2578
2600
  ref,
@@ -2585,14 +2607,14 @@ var TooltipContent = React29.forwardRef(({ className, sideOffset = 4, ...props }
2585
2607
  }
2586
2608
  ));
2587
2609
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2588
- var StarRating = React29.forwardRef(({ rating, onRate }, ref) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { ref, className: "flex", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2610
+ var StarRating = React30.forwardRef(({ rating, onRate }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { ref, className: "flex", children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2589
2611
  Button,
2590
2612
  {
2591
2613
  onClick: () => onRate(star),
2592
2614
  variant: "link",
2593
2615
  className: "p-1 transition-colors [&_svg]:size-5 h-5",
2594
2616
  "aria-label": `Rate ${star} star${star !== 1 ? "s" : ""}`,
2595
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2617
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2596
2618
  import_lucide_react11.Star,
2597
2619
  {
2598
2620
  className: cn(
@@ -2605,19 +2627,19 @@ var StarRating = React29.forwardRef(({ rating, onRate }, ref) => /* @__PURE__ */
2605
2627
  star
2606
2628
  )) }));
2607
2629
  StarRating.displayName = "StarRating";
2608
- var RatingStars = React29.forwardRef(({
2630
+ var RatingStars = React30.forwardRef(({
2609
2631
  currentRating = 0,
2610
2632
  onRate,
2611
2633
  className,
2612
2634
  isLoading
2613
2635
  }, ref) => {
2614
- const [open, setOpen] = React29.useState(false);
2615
- const [animate, setAnimate] = React29.useState(false);
2636
+ const [open, setOpen] = React30.useState(false);
2637
+ const [animate, setAnimate] = React30.useState(false);
2616
2638
  const handleRate = (rating) => {
2617
2639
  onRate(rating);
2618
2640
  setOpen(false);
2619
2641
  };
2620
- React29.useEffect(() => {
2642
+ React30.useEffect(() => {
2621
2643
  if (currentRating > 0) {
2622
2644
  setAnimate(true);
2623
2645
  const timer = setTimeout(() => setAnimate(false), 150);
@@ -2625,8 +2647,8 @@ var RatingStars = React29.forwardRef(({
2625
2647
  }
2626
2648
  }, [currentRating]);
2627
2649
  const hasRated = currentRating > 0;
2628
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Tooltip, { open, onOpenChange: setOpen, children: [
2629
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2650
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Tooltip, { open, onOpenChange: setOpen, children: [
2651
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2630
2652
  Button,
2631
2653
  {
2632
2654
  ref,
@@ -2637,7 +2659,7 @@ var RatingStars = React29.forwardRef(({
2637
2659
  ),
2638
2660
  disabled: isLoading,
2639
2661
  onClick: () => setOpen(!open),
2640
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2662
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2641
2663
  import_lucide_react11.Star,
2642
2664
  {
2643
2665
  className: cn(
@@ -2650,7 +2672,7 @@ var RatingStars = React29.forwardRef(({
2650
2672
  )
2651
2673
  }
2652
2674
  ) }),
2653
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipContent, { side: "top", align: "center", className: "p-0", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "p-2 bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2675
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TooltipContent, { side: "top", align: "center", className: "p-0", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "p-2 bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2654
2676
  StarRating,
2655
2677
  {
2656
2678
  rating: currentRating,
@@ -2662,10 +2684,10 @@ var RatingStars = React29.forwardRef(({
2662
2684
  RatingStars.displayName = "RatingStars";
2663
2685
 
2664
2686
  // src/components/molecules/rating-thumbs.tsx
2665
- var React30 = __toESM(require("react"));
2687
+ var React31 = __toESM(require("react"));
2666
2688
  var import_lucide_react12 = require("lucide-react");
2667
- var import_jsx_runtime44 = require("react/jsx-runtime");
2668
- var RatingThumbs = React30.forwardRef(
2689
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2690
+ var RatingThumbs = React31.forwardRef(
2669
2691
  ({
2670
2692
  currentRating,
2671
2693
  onRate,
@@ -2673,15 +2695,15 @@ var RatingThumbs = React30.forwardRef(
2673
2695
  className,
2674
2696
  isLoading
2675
2697
  }, ref) => {
2676
- const [animate, setAnimate] = React30.useState(false);
2677
- React30.useEffect(() => {
2698
+ const [animate, setAnimate] = React31.useState(false);
2699
+ React31.useEffect(() => {
2678
2700
  if (currentRating) {
2679
2701
  setAnimate(true);
2680
2702
  const timer = setTimeout(() => setAnimate(false), 150);
2681
2703
  return () => clearTimeout(timer);
2682
2704
  }
2683
2705
  }, [currentRating]);
2684
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
2706
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
2685
2707
  "div",
2686
2708
  {
2687
2709
  ref,
@@ -2692,7 +2714,7 @@ var RatingThumbs = React30.forwardRef(
2692
2714
  className
2693
2715
  ),
2694
2716
  children: [
2695
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2717
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2696
2718
  Button,
2697
2719
  {
2698
2720
  variant: "link",
@@ -2703,7 +2725,7 @@ var RatingThumbs = React30.forwardRef(
2703
2725
  ),
2704
2726
  "aria-label": "Thumbs up",
2705
2727
  disabled: isLoading,
2706
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2728
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2707
2729
  import_lucide_react12.ThumbsUp,
2708
2730
  {
2709
2731
  className: cn(
@@ -2716,7 +2738,7 @@ var RatingThumbs = React30.forwardRef(
2716
2738
  )
2717
2739
  }
2718
2740
  ),
2719
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2741
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2720
2742
  Button,
2721
2743
  {
2722
2744
  variant: "link",
@@ -2727,7 +2749,7 @@ var RatingThumbs = React30.forwardRef(
2727
2749
  ),
2728
2750
  "aria-label": "Thumbs down",
2729
2751
  disabled: isLoading,
2730
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2752
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2731
2753
  import_lucide_react12.ThumbsDown,
2732
2754
  {
2733
2755
  className: cn(
@@ -2748,30 +2770,30 @@ var RatingThumbs = React30.forwardRef(
2748
2770
  RatingThumbs.displayName = "RatingThumbs";
2749
2771
 
2750
2772
  // src/components/molecules/rating-comment.tsx
2751
- var React31 = __toESM(require("react"));
2773
+ var React32 = __toESM(require("react"));
2752
2774
  var import_lucide_react13 = require("lucide-react");
2753
- var import_jsx_runtime45 = require("react/jsx-runtime");
2754
- var RatingComment = React31.forwardRef(
2775
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2776
+ var RatingComment = React32.forwardRef(
2755
2777
  ({ currentRating, onRate, className, isLoading }, ref) => {
2756
- const [open, setOpen] = React31.useState(false);
2757
- const [comment, setComment] = React31.useState("");
2758
- const [animate, setAnimate] = React31.useState(false);
2778
+ const [open, setOpen] = React32.useState(false);
2779
+ const [comment, setComment] = React32.useState("");
2780
+ const [animate, setAnimate] = React32.useState(false);
2759
2781
  const handleRate = () => {
2760
2782
  onRate(comment);
2761
2783
  setOpen(false);
2762
2784
  };
2763
- React31.useEffect(() => {
2785
+ React32.useEffect(() => {
2764
2786
  if (currentRating) {
2765
2787
  setAnimate(true);
2766
2788
  const timer = setTimeout(() => setAnimate(false), 150);
2767
2789
  return () => clearTimeout(timer);
2768
2790
  }
2769
2791
  }, [currentRating]);
2770
- React31.useEffect(() => {
2792
+ React32.useEffect(() => {
2771
2793
  setComment("");
2772
2794
  }, [open]);
2773
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Dialog, { open, onOpenChange: setOpen, children: [
2774
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2795
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Dialog, { open, onOpenChange: setOpen, children: [
2796
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2775
2797
  Button,
2776
2798
  {
2777
2799
  ref,
@@ -2782,7 +2804,7 @@ var RatingComment = React31.forwardRef(
2782
2804
  className
2783
2805
  ),
2784
2806
  disabled: isLoading,
2785
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2807
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2786
2808
  import_lucide_react13.Book,
2787
2809
  {
2788
2810
  className: cn(
@@ -2795,10 +2817,10 @@ var RatingComment = React31.forwardRef(
2795
2817
  )
2796
2818
  }
2797
2819
  ) }),
2798
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DialogOverlay, { className: "fixed inset-0 bg-black bg-opacity-50" }),
2799
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(DialogContent, { "aria-describedby": void 0, children: [
2800
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DialogTitle, { className: "text-lg font-medium", children: "Deja un comentario" }),
2801
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2820
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DialogOverlay, { className: "fixed inset-0 bg-black bg-opacity-50" }),
2821
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(DialogContent, { "aria-describedby": void 0, children: [
2822
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DialogTitle, { className: "text-lg font-medium", children: "Deja un comentario" }),
2823
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2802
2824
  "textarea",
2803
2825
  {
2804
2826
  className: "mt-4 w-full p-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-primary",
@@ -2807,7 +2829,7 @@ var RatingComment = React31.forwardRef(
2807
2829
  onChange: (e) => setComment(e.target.value)
2808
2830
  }
2809
2831
  ),
2810
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2832
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2811
2833
  Button,
2812
2834
  {
2813
2835
  onClick: handleRate,
@@ -2822,59 +2844,68 @@ var RatingComment = React31.forwardRef(
2822
2844
  RatingComment.displayName = "RatingComment";
2823
2845
 
2824
2846
  // src/components/molecules/call-out.tsx
2825
- var React32 = __toESM(require("react"));
2847
+ var React33 = __toESM(require("react"));
2826
2848
 
2827
2849
  // src/components/hooks/use-text-streaming.ts
2828
2850
  var import_react11 = require("react");
2829
2851
  var CHAR_DELAY = 25;
2830
- var PUNCTUATION_DELAY = 200;
2831
- var PUNCTUATION_MARKS = [".", "!", "?", ";", ":"];
2852
+ var PUNCTUATION_DELAY = 400;
2832
2853
  function useTextStreaming(content, shouldStream, handleIsTextStreaming) {
2833
- const [displayedContent, setDisplayedContent] = (0, import_react11.useState)("");
2834
- const timeoutId = (0, import_react11.useRef)(null);
2854
+ const [displayedText, setDisplayedText] = (0, import_react11.useState)("");
2855
+ const contentRef = (0, import_react11.useRef)(content);
2856
+ const indexRef = (0, import_react11.useRef)(0);
2857
+ const timerRef = (0, import_react11.useRef)(null);
2835
2858
  const hasStartedStreaming = (0, import_react11.useRef)(false);
2836
- const getDelayForChar = (text, position) => {
2837
- if (position === 0) return CHAR_DELAY;
2838
- const previousChar = text[position - 1] || "";
2839
- const isEllipsis = text.slice(position - 1, position + 2) === "...";
2840
- if (isEllipsis) {
2841
- return CHAR_DELAY;
2842
- }
2843
- return PUNCTUATION_MARKS.includes(previousChar) ? PUNCTUATION_DELAY : CHAR_DELAY;
2844
- };
2845
2859
  (0, import_react11.useEffect)(() => {
2846
- if (!shouldStream && !hasStartedStreaming.current) {
2847
- setDisplayedContent(content);
2848
- handleIsTextStreaming?.(false);
2849
- return;
2860
+ contentRef.current = content;
2861
+ if (hasStartedStreaming.current && !timerRef.current && indexRef.current < contentRef.current.length) {
2862
+ typeNext();
2850
2863
  }
2851
- handleIsTextStreaming?.(true);
2852
- hasStartedStreaming.current = true;
2853
- if (displayedContent.length < content.length) {
2854
- const delay = getDelayForChar(content, displayedContent.length);
2855
- timeoutId.current = setTimeout(() => {
2856
- setDisplayedContent((prev) => prev + content[prev.length]);
2864
+ }, [content]);
2865
+ const typeNext = (0, import_react11.useCallback)(() => {
2866
+ if (indexRef.current < contentRef.current.length) {
2867
+ const nextChar = contentRef.current.charAt(indexRef.current);
2868
+ setDisplayedText((prev) => prev + nextChar);
2869
+ indexRef.current++;
2870
+ const delay = /[.!?;:]/.test(nextChar) ? PUNCTUATION_DELAY : CHAR_DELAY;
2871
+ timerRef.current = setTimeout(() => {
2872
+ timerRef.current = null;
2873
+ typeNext();
2857
2874
  }, delay);
2858
2875
  } else {
2859
2876
  handleIsTextStreaming?.(false);
2860
2877
  }
2878
+ }, []);
2879
+ (0, import_react11.useEffect)(() => {
2880
+ if (!shouldStream && !hasStartedStreaming.current) {
2881
+ setDisplayedText(contentRef.current);
2882
+ indexRef.current = contentRef.current.length;
2883
+ if (timerRef.current) {
2884
+ clearTimeout(timerRef.current);
2885
+ timerRef.current = null;
2886
+ }
2887
+ handleIsTextStreaming?.(false);
2888
+ } else {
2889
+ if (indexRef.current < contentRef.current.length && !timerRef.current) {
2890
+ handleIsTextStreaming?.(true);
2891
+ hasStartedStreaming.current = true;
2892
+ typeNext();
2893
+ }
2894
+ }
2861
2895
  return () => {
2862
- if (timeoutId.current) clearTimeout(timeoutId.current);
2896
+ if (timerRef.current) {
2897
+ clearTimeout(timerRef.current);
2898
+ timerRef.current = null;
2899
+ }
2863
2900
  };
2864
- }, [
2865
- content,
2866
- displayedContent,
2867
- shouldStream,
2868
- getDelayForChar,
2869
- handleIsTextStreaming
2870
- ]);
2871
- return displayedContent;
2901
+ }, [shouldStream, typeNext]);
2902
+ return displayedText;
2872
2903
  }
2873
2904
 
2874
2905
  // src/components/molecules/call-out.tsx
2875
- var import_jsx_runtime46 = require("react/jsx-runtime");
2876
- var CallOut = React32.forwardRef(({ className, children, role, ...props }, ref) => {
2877
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2906
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2907
+ var CallOut = React33.forwardRef(({ className, children, role, ...props }, ref) => {
2908
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2878
2909
  "div",
2879
2910
  {
2880
2911
  ref,
@@ -2885,8 +2916,8 @@ var CallOut = React32.forwardRef(({ className, children, role, ...props }, ref)
2885
2916
  }
2886
2917
  );
2887
2918
  });
2888
- var CallOutDate = React32.forwardRef(({ className, children, ...props }, ref) => {
2889
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2919
+ var CallOutDate = React33.forwardRef(({ className, children, ...props }, ref) => {
2920
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2890
2921
  "div",
2891
2922
  {
2892
2923
  ref,
@@ -2900,13 +2931,13 @@ var CallOutDate = React32.forwardRef(({ className, children, ...props }, ref) =>
2900
2931
  }
2901
2932
  );
2902
2933
  });
2903
- var CallOutActions = React32.forwardRef(({ className, actions, role, message, ...props }, ref) => {
2904
- const [isLoading, setIsLoading] = React32.useState(false);
2905
- const [isClicked, setIsClicked] = React32.useState(false);
2934
+ var CallOutActions = React33.forwardRef(({ className, actions, role, message, ...props }, ref) => {
2935
+ const [isLoading, setIsLoading] = React33.useState(false);
2936
+ const [isClicked, setIsClicked] = React33.useState(false);
2906
2937
  if (role === "user") {
2907
2938
  return null;
2908
2939
  }
2909
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { ref, className: cn("alq--callout-actions", className), ...props, children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2940
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { ref, className: cn("alq--callout-actions", className), ...props, children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2910
2941
  "button",
2911
2942
  {
2912
2943
  className: cn(
@@ -2928,7 +2959,7 @@ var CallOutActions = React32.forwardRef(({ className, actions, role, message, ..
2928
2959
  });
2929
2960
  },
2930
2961
  children: [
2931
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2962
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2932
2963
  "span",
2933
2964
  {
2934
2965
  className: cn("alq-action-icon-wrapper", {
@@ -2937,18 +2968,18 @@ var CallOutActions = React32.forwardRef(({ className, actions, role, message, ..
2937
2968
  children: action.icon
2938
2969
  }
2939
2970
  ),
2940
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("label", { children: action.label })
2971
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("label", { children: action.label })
2941
2972
  ]
2942
2973
  },
2943
2974
  action.label
2944
2975
  )) });
2945
2976
  });
2946
- var CallOutResponse = React32.forwardRef(
2977
+ var CallOutResponse = React33.forwardRef(
2947
2978
  ({ className, children, role, additionalInfo, isStreaming, handleIsTextStreaming, ...props }, ref) => {
2948
2979
  const content = String(children || "");
2949
2980
  const shouldStream = role === "assistant" && isStreaming;
2950
2981
  const displayedContent = useTextStreaming(content, shouldStream ?? false, handleIsTextStreaming);
2951
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2982
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2952
2983
  "div",
2953
2984
  {
2954
2985
  ref,
@@ -2961,8 +2992,8 @@ var CallOutResponse = React32.forwardRef(
2961
2992
  ),
2962
2993
  ...props,
2963
2994
  children: [
2964
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(RichText, { content: displayedContent }),
2965
- additionalInfo && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2995
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(RichText, { content: displayedContent }),
2996
+ additionalInfo && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2966
2997
  "div",
2967
2998
  {
2968
2999
  className: cn(
@@ -2985,19 +3016,19 @@ CallOutResponse.displayName = "CallOutResponse";
2985
3016
 
2986
3017
  // src/components/organisms/assistant.tsx
2987
3018
  var import_lucide_react14 = require("lucide-react");
2988
- var import_jsx_runtime47 = require("react/jsx-runtime");
2989
- var Assistant = React33.forwardRef(
3019
+ var import_jsx_runtime48 = require("react/jsx-runtime");
3020
+ var Assistant = React34.forwardRef(
2990
3021
  ({ className, sdk, title, description, children, ...props }, ref) => {
2991
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3022
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
2992
3023
  "div",
2993
3024
  {
2994
3025
  ref,
2995
3026
  className: cn("flex flex-col h-full bg-background text-foreground", className),
2996
3027
  ...props,
2997
3028
  children: [
2998
- (title || description) && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(AssistantHeader, { children: [
2999
- title && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(AssistantTitle, { title }),
3000
- description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(AssistantDescription, { description })
3029
+ (title || description) && /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(AssistantHeader, { children: [
3030
+ title && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(AssistantTitle, { title }),
3031
+ description && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(AssistantDescription, { description })
3001
3032
  ] }),
3002
3033
  children
3003
3034
  ]
@@ -3006,14 +3037,14 @@ var Assistant = React33.forwardRef(
3006
3037
  }
3007
3038
  );
3008
3039
  Assistant.displayName = "Assistant";
3009
- var AssistantTitle = React33.forwardRef(
3010
- ({ className, title, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { ref, className: cn("text-foreground", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Typography, { typeStyle: "heading1", as: "h1", children: title }) })
3040
+ var AssistantTitle = React34.forwardRef(
3041
+ ({ className, title, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { ref, className: cn("text-foreground", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Typography, { typeStyle: "heading1", as: "h1", children: title }) })
3011
3042
  );
3012
3043
  AssistantTitle.displayName = "AssistantTitle";
3013
- var AssistantDescription = React33.forwardRef(({ className, description, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { ref, className: cn("text-foreground", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Typography, { typeStyle: "display", as: "p", children: description }) }));
3044
+ var AssistantDescription = React34.forwardRef(({ className, description, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { ref, className: cn("text-foreground", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Typography, { typeStyle: "display", as: "p", children: description }) }));
3014
3045
  AssistantDescription.displayName = "AssistantDescription";
3015
- var AssistantHeader = React33.forwardRef(
3016
- ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3046
+ var AssistantHeader = React34.forwardRef(
3047
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3017
3048
  "div",
3018
3049
  {
3019
3050
  ref,
@@ -3024,7 +3055,7 @@ var AssistantHeader = React33.forwardRef(
3024
3055
  )
3025
3056
  );
3026
3057
  AssistantHeader.displayName = "AssistantHeader";
3027
- var AssistantMessageArea = React33.forwardRef(
3058
+ var AssistantMessageArea = React34.forwardRef(
3028
3059
  ({
3029
3060
  className,
3030
3061
  messages,
@@ -3033,25 +3064,26 @@ var AssistantMessageArea = React33.forwardRef(
3033
3064
  streamingMessageId,
3034
3065
  thinkIndicator,
3035
3066
  handleIsTextStreaming,
3067
+ toolFactory,
3036
3068
  ...props
3037
3069
  }, ref) => {
3038
3070
  (0, import_react12.useEffect)(() => {
3039
3071
  messagesEndRef.current?.scrollIntoView({ behavior: "instant" });
3040
3072
  }, []);
3041
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3073
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3042
3074
  "div",
3043
3075
  {
3044
3076
  ref,
3045
3077
  className: cn("p-6 overflow-y-auto flex-grow bg-background", className),
3046
3078
  ...props,
3047
3079
  children: [
3048
- messages.map((message) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3080
+ messages.map((message) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3049
3081
  CallOut,
3050
3082
  {
3051
3083
  role: message.role,
3052
3084
  message,
3053
3085
  children: [
3054
- message.created_at && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "text-xs text-muted-foreground/80 pb-1", children: new Date(Number(message.created_at)).toLocaleString("es-ES", {
3086
+ message.created_at && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "text-xs text-muted-foreground/80 pb-1", children: new Date(Number(message.created_at)).toLocaleString("es-ES", {
3055
3087
  day: "2-digit",
3056
3088
  month: "2-digit",
3057
3089
  year: "numeric",
@@ -3060,8 +3092,8 @@ var AssistantMessageArea = React33.forwardRef(
3060
3092
  second: "2-digit",
3061
3093
  hour12: false
3062
3094
  }) }),
3063
- message.loading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { children: thinkIndicator ?? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ThinkIndicator, {}) }),
3064
- message.error_code && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3095
+ message.loading && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { children: thinkIndicator ?? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(ThinkIndicator, {}) }),
3096
+ message.error_code && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3065
3097
  CallOutResponse,
3066
3098
  {
3067
3099
  role: "assistant",
@@ -3069,7 +3101,8 @@ var AssistantMessageArea = React33.forwardRef(
3069
3101
  children: "We have an internal error, please try again later."
3070
3102
  }
3071
3103
  ),
3072
- message.content && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3104
+ message.tooler && message.tooler?.tool_output && !message.error_code && toolFactory?.createTool(message.tooler?.tool_summary?.name, message.tooler?.tool_output?.result),
3105
+ message.content && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3073
3106
  CallOutResponse,
3074
3107
  {
3075
3108
  role: message.role,
@@ -3079,7 +3112,7 @@ var AssistantMessageArea = React33.forwardRef(
3079
3112
  children: message.content
3080
3113
  }
3081
3114
  ),
3082
- actions && streamingMessageId !== message.id && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3115
+ actions && streamingMessageId !== message.id && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3083
3116
  CallOutActions,
3084
3117
  {
3085
3118
  actions,
@@ -3092,14 +3125,14 @@ var AssistantMessageArea = React33.forwardRef(
3092
3125
  },
3093
3126
  message.id
3094
3127
  ) }, message.id)),
3095
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { ref: messagesEndRef })
3128
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { ref: messagesEndRef })
3096
3129
  ]
3097
3130
  }
3098
3131
  );
3099
3132
  }
3100
3133
  );
3101
3134
  AssistantMessageArea.displayName = "AssistantMessageArea";
3102
- var AssistantInput = React33.forwardRef(
3135
+ var AssistantInput = React34.forwardRef(
3103
3136
  ({
3104
3137
  className,
3105
3138
  sendMessageFunc,
@@ -3109,7 +3142,7 @@ var AssistantInput = React33.forwardRef(
3109
3142
  isMessageStreaming,
3110
3143
  ...props
3111
3144
  }, ref) => {
3112
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3145
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3113
3146
  "form",
3114
3147
  {
3115
3148
  onSubmit: sendMessageFunc,
@@ -3117,7 +3150,7 @@ var AssistantInput = React33.forwardRef(
3117
3150
  ref,
3118
3151
  ...props,
3119
3152
  children: [
3120
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3153
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3121
3154
  "input",
3122
3155
  {
3123
3156
  type: "text",
@@ -3134,7 +3167,7 @@ var AssistantInput = React33.forwardRef(
3134
3167
  )
3135
3168
  }
3136
3169
  ),
3137
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3170
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3138
3171
  "button",
3139
3172
  {
3140
3173
  type: "submit",
@@ -3143,7 +3176,7 @@ var AssistantInput = React33.forwardRef(
3143
3176
  "w-10 h-10 rounded-full flex items-center justify-center alq--assistant-button-send",
3144
3177
  isButtonDisabled ? "bg-muted text-muted-foreground" : "bg-primary text-primary-foreground hover:bg-primary/90"
3145
3178
  ),
3146
- children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react14.Send, { className: "w-5 h-5" })
3179
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react14.Send, { className: "w-5 h-5" })
3147
3180
  }
3148
3181
  )
3149
3182
  ]
@@ -3194,7 +3227,7 @@ var useDocumentReader = (url, getDocument) => {
3194
3227
  var import_react14 = require("react");
3195
3228
 
3196
3229
  // src/components/organisms/rating-dialog.tsx
3197
- var import_jsx_runtime48 = require("react/jsx-runtime");
3230
+ var import_jsx_runtime49 = require("react/jsx-runtime");
3198
3231
  function RatingDialog({
3199
3232
  sendRating,
3200
3233
  topicId,
@@ -3210,20 +3243,20 @@ function RatingDialog({
3210
3243
  success ? setHasRatedTopic(true) : toast2({
3211
3244
  title: "Error",
3212
3245
  description: `Hubo un error al enviar la calificaci\xF3n`,
3213
- action: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(ToastAction, { altText: "Goto schedule to undo", children: "Cerrar" })
3246
+ action: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ToastAction, { altText: "Goto schedule to undo", children: "Cerrar" })
3214
3247
  });
3215
3248
  };
3216
3249
  const handleCancelRate = () => {
3217
3250
  setHasRatedTopic(true);
3218
3251
  onOpenChange(false);
3219
3252
  };
3220
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Dialog, { open: isOpen, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogContent, { className: "sm:max-w-md", children: [
3221
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DialogHeader, { children: [
3222
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogTitle, { children: "Calific\xE1 esta conversaci\xF3n" }),
3223
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DialogDescription, { children: "Por favor, compart\xED tu opini\xF3n sobre el asistente." })
3253
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Dialog, { open: isOpen, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogContent, { className: "sm:max-w-md", children: [
3254
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(DialogHeader, { children: [
3255
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogTitle, { children: "Calific\xE1 esta conversaci\xF3n" }),
3256
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(DialogDescription, { children: "Por favor, compart\xED tu opini\xF3n sobre el asistente." })
3224
3257
  ] }),
3225
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "flex flex-row justify-center gap-4 py-4", children: [
3226
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3258
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-row justify-center gap-4 py-4", children: [
3259
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3227
3260
  RatingStars,
3228
3261
  {
3229
3262
  currentRating: ratingStars,
@@ -3232,7 +3265,7 @@ function RatingDialog({
3232
3265
  className: "p-2 rounded"
3233
3266
  }
3234
3267
  ),
3235
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3268
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3236
3269
  RatingThumbs,
3237
3270
  {
3238
3271
  currentRating: ratingComment,
@@ -3241,7 +3274,7 @@ function RatingDialog({
3241
3274
  isLoading
3242
3275
  }
3243
3276
  ),
3244
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3277
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3245
3278
  RatingComment,
3246
3279
  {
3247
3280
  currentRating: ratingComment,
@@ -3250,7 +3283,7 @@ function RatingDialog({
3250
3283
  }
3251
3284
  )
3252
3285
  ] }),
3253
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "flex flex-row justify-center gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, { onClick: handleCancelRate, variant: "secondary", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Typography, { as: "p", typeStyle: "tiny", children: "No, gracias." }) }) })
3286
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex flex-row justify-center gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { onClick: handleCancelRate, variant: "secondary", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Typography, { as: "p", typeStyle: "tiny", children: "No, gracias." }) }) })
3254
3287
  ] }) });
3255
3288
  }
3256
3289