@aigentyc/chat-sdk 0.5.0 → 0.5.2

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 (85) hide show
  1. package/dist/{ChatInterface-2MN5cpYB.d.ts → ChatInterface-CRmM_RG_.d.ts} +9 -1
  2. package/dist/{ChatInterface-BnVyOUG5.d.cts → ChatInterface-DKF3BY42.d.cts} +9 -1
  3. package/dist/{SlotsContext-BZBi51ZT.d.ts → SlotsContext-B_087V7B.d.ts} +11 -2
  4. package/dist/{SlotsContext-D_C7zlUA.d.cts → SlotsContext-DAQiASVu.d.cts} +11 -2
  5. package/dist/ai-elements.cjs +39 -27
  6. package/dist/ai-elements.d.cts +63 -1
  7. package/dist/ai-elements.d.ts +63 -1
  8. package/dist/ai-elements.js +2 -2
  9. package/dist/{chunk-3MP2EGEJ.cjs → chunk-72QJ2ORD.cjs} +4 -2
  10. package/dist/chunk-72QJ2ORD.cjs.map +1 -0
  11. package/dist/{chunk-KTYYLZN7.cjs → chunk-B277MAUK.cjs} +76 -4
  12. package/dist/chunk-B277MAUK.cjs.map +1 -0
  13. package/dist/{chunk-P3RPAI4F.cjs → chunk-BYX6IOGX.cjs} +4 -4
  14. package/dist/{chunk-P3RPAI4F.cjs.map → chunk-BYX6IOGX.cjs.map} +1 -1
  15. package/dist/chunk-CNPYBLLT.js +81 -0
  16. package/dist/chunk-CNPYBLLT.js.map +1 -0
  17. package/dist/{chunk-FJZL33KP.js → chunk-CW6LCVNC.js} +3 -3
  18. package/dist/{chunk-FJZL33KP.js.map → chunk-CW6LCVNC.js.map} +1 -1
  19. package/dist/{chunk-D75TDRBH.js → chunk-JAEXKKSE.js} +41 -35
  20. package/dist/chunk-JAEXKKSE.js.map +1 -0
  21. package/dist/{chunk-Q3UJEIBN.cjs → chunk-JEK2V5I3.cjs} +6 -6
  22. package/dist/{chunk-Q3UJEIBN.cjs.map → chunk-JEK2V5I3.cjs.map} +1 -1
  23. package/dist/{chunk-7ESWDFF5.cjs → chunk-KHQYSEYN.cjs} +244 -146
  24. package/dist/chunk-KHQYSEYN.cjs.map +1 -0
  25. package/dist/{chunk-QYCEHFAB.js → chunk-LDQVDUUJ.js} +4 -2
  26. package/dist/chunk-LDQVDUUJ.js.map +1 -0
  27. package/dist/{chunk-5XF3NEFB.js → chunk-O5TPHZRP.js} +74 -5
  28. package/dist/chunk-O5TPHZRP.js.map +1 -0
  29. package/dist/{chunk-BWWN5LSE.js → chunk-PNUHUUA3.js} +221 -124
  30. package/dist/chunk-PNUHUUA3.js.map +1 -0
  31. package/dist/{chunk-52ZHMTAA.cjs → chunk-UXVOUC2A.cjs} +41 -35
  32. package/dist/chunk-UXVOUC2A.cjs.map +1 -0
  33. package/dist/{chunk-IU7Q7O5G.js → chunk-VQPOUMBC.js} +3 -3
  34. package/dist/{chunk-IU7Q7O5G.js.map → chunk-VQPOUMBC.js.map} +1 -1
  35. package/dist/chunk-VYBHYFG3.cjs +87 -0
  36. package/dist/chunk-VYBHYFG3.cjs.map +1 -0
  37. package/dist/components.cjs +20 -19
  38. package/dist/components.cjs.map +1 -1
  39. package/dist/components.d.cts +2 -2
  40. package/dist/components.d.ts +2 -2
  41. package/dist/components.js +8 -7
  42. package/dist/components.js.map +1 -1
  43. package/dist/core.cjs +21 -82
  44. package/dist/core.cjs.map +1 -1
  45. package/dist/core.d.cts +2 -2
  46. package/dist/core.d.ts +2 -2
  47. package/dist/core.js +2 -78
  48. package/dist/core.js.map +1 -1
  49. package/dist/hooks.cjs +9 -8
  50. package/dist/hooks.cjs.map +1 -1
  51. package/dist/hooks.d.cts +2 -2
  52. package/dist/hooks.d.ts +2 -2
  53. package/dist/hooks.js +4 -3
  54. package/dist/hooks.js.map +1 -1
  55. package/dist/i18n.cjs +5 -5
  56. package/dist/i18n.d.cts +2 -2
  57. package/dist/i18n.d.ts +2 -2
  58. package/dist/i18n.js +1 -1
  59. package/dist/index.cjs +35 -26
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +28 -6
  62. package/dist/index.d.ts +28 -6
  63. package/dist/index.js +18 -13
  64. package/dist/index.js.map +1 -1
  65. package/dist/llms-full.txt +10 -10
  66. package/dist/styles.css +1 -1
  67. package/dist/theme.cjs +4 -4
  68. package/dist/theme.d.cts +1 -1
  69. package/dist/theme.d.ts +1 -1
  70. package/dist/theme.js +2 -2
  71. package/dist/tools.cjs +6 -5
  72. package/dist/tools.d.cts +2 -2
  73. package/dist/tools.d.ts +2 -2
  74. package/dist/tools.js +3 -2
  75. package/dist/{types-bsR_-fq8.d.cts → types-DRa1zFlN.d.cts} +10 -1
  76. package/dist/{types-bsR_-fq8.d.ts → types-DRa1zFlN.d.ts} +10 -1
  77. package/package.json +2 -2
  78. package/dist/chunk-3MP2EGEJ.cjs.map +0 -1
  79. package/dist/chunk-52ZHMTAA.cjs.map +0 -1
  80. package/dist/chunk-5XF3NEFB.js.map +0 -1
  81. package/dist/chunk-7ESWDFF5.cjs.map +0 -1
  82. package/dist/chunk-BWWN5LSE.js.map +0 -1
  83. package/dist/chunk-D75TDRBH.js.map +0 -1
  84. package/dist/chunk-KTYYLZN7.cjs.map +0 -1
  85. package/dist/chunk-QYCEHFAB.js.map +0 -1
package/dist/hooks.cjs CHANGED
@@ -5,11 +5,12 @@ var chunkNBZDBH4M_cjs = require('./chunk-NBZDBH4M.cjs');
5
5
  var chunkKBGPBUTI_cjs = require('./chunk-KBGPBUTI.cjs');
6
6
  require('./chunk-NG7OTWXQ.cjs');
7
7
  var chunkDVWX2UGY_cjs = require('./chunk-DVWX2UGY.cjs');
8
- var chunkP3RPAI4F_cjs = require('./chunk-P3RPAI4F.cjs');
8
+ var chunkBYX6IOGX_cjs = require('./chunk-BYX6IOGX.cjs');
9
9
  var chunkDDATCJ3O_cjs = require('./chunk-DDATCJ3O.cjs');
10
10
  require('./chunk-X7R334SB.cjs');
11
- var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
12
- var chunk52ZHMTAA_cjs = require('./chunk-52ZHMTAA.cjs');
11
+ var chunk72QJ2ORD_cjs = require('./chunk-72QJ2ORD.cjs');
12
+ var chunkUXVOUC2A_cjs = require('./chunk-UXVOUC2A.cjs');
13
+ require('./chunk-VYBHYFG3.cjs');
13
14
  var react = require('react');
14
15
 
15
16
  function useImageLoader() {
@@ -301,7 +302,7 @@ Object.defineProperty(exports, "usePreviewEmbed", {
301
302
  });
302
303
  Object.defineProperty(exports, "useTheme", {
303
304
  enumerable: true,
304
- get: function () { return chunkP3RPAI4F_cjs.useTheme; }
305
+ get: function () { return chunkBYX6IOGX_cjs.useTheme; }
305
306
  });
306
307
  Object.defineProperty(exports, "LATIN", {
307
308
  enumerable: true,
@@ -321,19 +322,19 @@ Object.defineProperty(exports, "useKeyboardLanguage", {
321
322
  });
322
323
  Object.defineProperty(exports, "useI18n", {
323
324
  enumerable: true,
324
- get: function () { return chunk3MP2EGEJ_cjs.useI18n; }
325
+ get: function () { return chunk72QJ2ORD_cjs.useI18n; }
325
326
  });
326
327
  Object.defineProperty(exports, "useChatContext", {
327
328
  enumerable: true,
328
- get: function () { return chunk52ZHMTAA_cjs.useChatContext; }
329
+ get: function () { return chunkUXVOUC2A_cjs.useChatContext; }
329
330
  });
330
331
  Object.defineProperty(exports, "useSlot", {
331
332
  enumerable: true,
332
- get: function () { return chunk52ZHMTAA_cjs.useSlot; }
333
+ get: function () { return chunkUXVOUC2A_cjs.useSlot; }
333
334
  });
334
335
  Object.defineProperty(exports, "useSlots", {
335
336
  enumerable: true,
336
- get: function () { return chunk52ZHMTAA_cjs.useSlots; }
337
+ get: function () { return chunkUXVOUC2A_cjs.useSlots; }
337
338
  });
338
339
  exports.useImageLoader = useImageLoader;
339
340
  exports.useMultiImageLoader = useMultiImageLoader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/use-image-loader.ts","../src/hooks/use-pagination.ts","../src/hooks/use-slider-drag.ts","../src/hooks/use-order-tracking.ts"],"names":["useState","useCallback","useMemo","useEffect"],"mappings":"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","file":"hooks.cjs","sourcesContent":["\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\ninterface UseImageLoaderReturn {\n /** Whether the image has finished loading. */\n loaded: boolean;\n /** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */\n onLoad: () => void;\n /** Reset loaded state to false. */\n reset: () => void;\n}\n\n/**\n * Tracks load state for a single image element.\n */\nexport function useImageLoader(): UseImageLoaderReturn {\n const [loaded, setLoaded] = useState(false);\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n const reset = useCallback(() => {\n setLoaded(false);\n }, []);\n\n return { loaded, onLoad, reset };\n}\n\ninterface UseMultiImageLoaderReturn {\n /** Check if a specific image has loaded. */\n isLoaded: (key: string) => boolean;\n /** Returns a callback for the given key to mark it as loaded. */\n onLoad: (key: string) => () => void;\n /** Reset a specific image's loaded state. */\n reset: (key: string) => void;\n /** Reset all images' loaded states. */\n resetAll: () => void;\n}\n\n/**\n * Tracks load state for multiple images by key.\n */\nexport function useMultiImageLoader(): UseMultiImageLoaderReturn {\n const [loadedMap, setLoadedMap] = useState<Set<string>>(new Set());\n\n const isLoaded = useCallback(\n (key: string) => loadedMap.has(key),\n [loadedMap]\n );\n\n const onLoad = useCallback(\n (key: string) => () => {\n setLoadedMap((prev) => new Set(prev).add(key));\n },\n []\n );\n\n const reset = useCallback((key: string) => {\n setLoadedMap((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setLoadedMap(new Set());\n }, []);\n\n return { isLoaded, onLoad, reset, resetAll };\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\ninterface UsePaginationOptions<T> {\n /** The full list of items to paginate. */\n items: T[];\n /** Number of items per page. */\n itemsPerPage: number;\n /** Optional callback when the page changes. */\n onPageChange?: (\n direction: \"next\" | \"prev\",\n newPage: number,\n totalPages: number\n ) => void;\n}\n\ninterface UsePaginationReturn<T> {\n /** Current page index (0-based). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Items for the current page. */\n currentItems: T[];\n /** Go to the next page. */\n goNext: () => void;\n /** Go to the previous page. */\n goPrev: () => void;\n /** Go to a specific page (0-based). */\n goToPage: (page: number) => void;\n /** Whether the current page is the first page. */\n isFirstPage: boolean;\n /** Whether the current page is the last page. */\n isLastPage: boolean;\n}\n\n/**\n * Generic pagination hook for any list of items.\n */\nexport function usePagination<T>({\n items,\n itemsPerPage,\n onPageChange,\n}: UsePaginationOptions<T>): UsePaginationReturn<T> {\n const [page, setPage] = useState(0);\n\n const totalPages = useMemo(\n () => Math.ceil(items.length / itemsPerPage),\n [items.length, itemsPerPage]\n );\n\n const currentItems = useMemo(\n () => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),\n [items, page, itemsPerPage]\n );\n\n const goNext = useCallback(() => {\n if (page < totalPages - 1) {\n const newPage = page + 1;\n setPage(newPage);\n onPageChange?.(\"next\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goPrev = useCallback(() => {\n if (page > 0) {\n const newPage = page - 1;\n setPage(newPage);\n onPageChange?.(\"prev\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goToPage = useCallback(\n (newPage: number) => {\n if (newPage >= 0 && newPage < totalPages) {\n const direction = newPage > page ? \"next\" : \"prev\";\n setPage(newPage);\n onPageChange?.(direction, newPage, totalPages);\n }\n },\n [page, totalPages, onPageChange]\n );\n\n const isFirstPage = page === 0;\n const isLastPage = page >= totalPages - 1;\n\n return {\n page,\n totalPages,\n currentItems,\n goNext,\n goPrev,\n goToPage,\n isFirstPage,\n isLastPage,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\ninterface UseSliderDragOptions {\n /** Ref to the container element. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Initial slider position as a percentage (0-100). Defaults to 50. */\n initialPosition?: number;\n /** Minimum allowed position. Defaults to 0. */\n minPosition?: number;\n /** Maximum allowed position. Defaults to 100. */\n maxPosition?: number;\n}\n\ninterface UseSliderDragReturn {\n /** Current slider position as a percentage (0-100). */\n sliderPosition: number;\n /** Whether the user is currently dragging. */\n isDragging: boolean;\n /** Call this on mousedown/touchstart to begin dragging. */\n handleMouseDown: () => void;\n /** Programmatically set the slider position. */\n setSliderPosition: (position: number) => void;\n}\n\n/**\n * Handles mouse and touch drag interactions for a horizontal slider.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useSliderDrag({\n containerRef,\n initialPosition = 50,\n minPosition = 0,\n maxPosition = 100,\n}: UseSliderDragOptions): UseSliderDragReturn {\n const [sliderPosition, setSliderPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleSliderMove = useCallback(\n (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = clientX - rect.left;\n const percentage = Math.max(\n minPosition,\n Math.min(maxPosition, (x / rect.width) * 100)\n );\n setSliderPosition(percentage);\n },\n [containerRef, minPosition, maxPosition]\n );\n\n const handleMouseDown = useCallback(() => {\n setIsDragging(true);\n }, []);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n handleSliderMove(e.clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (isDragging && e.touches[0]) {\n handleSliderMove(e.touches[0].clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);\n\n return {\n sliderPosition,\n isDragging,\n handleMouseDown,\n setSliderPosition,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\ntype OrderStatus = \"idle\" | \"pending\" | \"added\" | \"error\";\n\ninterface UseOrderTrackingOptions {\n /** Product ID to track. */\n productId?: string;\n}\n\ninterface UseOrderTrackingReturn {\n /** Current order status. */\n orderStatus: OrderStatus;\n /** Error message if status is \"error\". */\n orderError: string | null;\n /** Mark the order as pending. */\n startOrder: () => void;\n /** Reset to idle state. */\n reset: () => void;\n}\n\n/**\n * Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useOrderTracking({\n productId,\n}: UseOrderTrackingOptions): UseOrderTrackingReturn {\n const [orderStatus, setOrderStatus] = useState<OrderStatus>(\"idle\");\n const [orderError, setOrderError] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !productId) return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id === productId) {\n if (success) {\n setOrderStatus(\"added\");\n setOrderError(null);\n } else {\n setOrderStatus(\"error\");\n setOrderError(error || \"Failed to add to cart\");\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, [productId]);\n\n const startOrder = useCallback(() => {\n setOrderStatus(\"pending\");\n setOrderError(null);\n }, []);\n\n const reset = useCallback(() => {\n setOrderStatus(\"idle\");\n setOrderError(null);\n }, []);\n\n return { orderStatus, orderError, startOrder, reset };\n}\n\ninterface UseMultiOrderTrackingReturn {\n /** Get status for a specific product. */\n getStatus: (productId: string) => OrderStatus;\n /** Get error message for a specific product. */\n getError: (productId: string) => string | undefined;\n /** Mark a product order as pending. */\n startOrder: (productId: string) => void;\n /** Reset a specific product's order status. */\n reset: (productId: string) => void;\n /** Reset all tracked products. */\n resetAll: () => void;\n}\n\n/**\n * Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useMultiOrderTracking(): UseMultiOrderTrackingReturn {\n const [statusMap, setStatusMap] = useState<Map<string, OrderStatus>>(\n new Map()\n );\n const [errorMap, setErrorMap] = useState<Map<string, string>>(new Map());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id) {\n if (success) {\n setStatusMap((prev) => new Map(prev).set(product_id, \"added\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(product_id);\n return next;\n });\n } else {\n setStatusMap((prev) => new Map(prev).set(product_id, \"error\"));\n setErrorMap((prev) =>\n new Map(prev).set(product_id, error || \"Failed to add to cart\")\n );\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, []);\n\n const getStatus = useCallback(\n (productId: string) => statusMap.get(productId) || \"idle\",\n [statusMap]\n );\n\n const getError = useCallback(\n (productId: string) => errorMap.get(productId),\n [errorMap]\n );\n\n const startOrder = useCallback((productId: string) => {\n setStatusMap((prev) => new Map(prev).set(productId, \"pending\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const reset = useCallback((productId: string) => {\n setStatusMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setStatusMap(new Map());\n setErrorMap(new Map());\n }, []);\n\n return { getStatus, getError, startOrder, reset, resetAll };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/use-image-loader.ts","../src/hooks/use-pagination.ts","../src/hooks/use-slider-drag.ts","../src/hooks/use-order-tracking.ts"],"names":["useState","useCallback","useMemo","useEffect"],"mappings":";;;;;;;;;;;;;;AAgBO,SAAS,cAAA,GAAuC;AACrD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,MAAA,GAASC,kBAAY,MAAM;AAC/B,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,kBAAY,MAAM;AAC9B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAM;AACjC;AAgBO,SAAS,mBAAA,GAAiD;AAC/D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAID,cAAA,iBAAsB,IAAI,KAAK,CAAA;AAEjE,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,GAAA,KAAgB,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA;AAAA,IAClC,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,MAAM,MAAA,GAASA,iBAAA;AAAA,IACb,CAAC,QAAgB,MAAM;AACrB,MAAA,YAAA,CAAa,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,KAAA,GAAQA,iBAAA,CAAY,CAAC,GAAA,KAAgB;AACzC,IAAA,YAAA,CAAa,CAAC,IAAA,KAAS;AACrB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AACf,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAWA,kBAAY,MAAM;AACjC,IAAA,YAAA,iBAAa,IAAI,KAAK,CAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAS;AAC7C;ACjCO,SAAS,aAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAoD;AAClD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAID,eAAS,CAAC,CAAA;AAElC,EAAA,MAAM,UAAA,GAAaE,aAAA;AAAA,IACjB,MAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAS,YAAY,CAAA;AAAA,IAC3C,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAY;AAAA,GAC7B;AAEA,EAAA,MAAM,YAAA,GAAeA,aAAA;AAAA,IACnB,MAAM,KAAA,CAAM,KAAA,CAAM,OAAO,YAAA,EAAA,CAAe,IAAA,GAAO,KAAK,YAAY,CAAA;AAAA,IAChE,CAAC,KAAA,EAAO,IAAA,EAAM,YAAY;AAAA,GAC5B;AAEA,EAAA,MAAM,MAAA,GAASD,kBAAY,MAAM;AAC/B,IAAA,IAAI,IAAA,GAAO,aAAa,CAAA,EAAG;AACzB,MAAA,MAAM,UAAU,IAAA,GAAO,CAAA;AACvB,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,YAAA,GAAe,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,IAC5C;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,YAAY,CAAC,CAAA;AAEnC,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM;AAC/B,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,MAAM,UAAU,IAAA,GAAO,CAAA;AACvB,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,YAAA,GAAe,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,IAC5C;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,YAAY,CAAC,CAAA;AAEnC,EAAA,MAAM,QAAA,GAAWA,iBAAAA;AAAA,IACf,CAAC,OAAA,KAAoB;AACnB,MAAA,IAAI,OAAA,IAAW,CAAA,IAAK,OAAA,GAAU,UAAA,EAAY;AACxC,QAAA,MAAM,SAAA,GAAY,OAAA,GAAU,IAAA,GAAO,MAAA,GAAS,MAAA;AAC5C,QAAA,OAAA,CAAQ,OAAO,CAAA;AACf,QAAA,YAAA,GAAe,SAAA,EAAW,SAAS,UAAU,CAAA;AAAA,MAC/C;AAAA,IACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,UAAA,EAAY,YAAY;AAAA,GACjC;AAEA,EAAA,MAAM,cAAc,IAAA,KAAS,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,GAAa,CAAA;AAExC,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF;AClEO,SAAS,aAAA,CAAc;AAAA,EAC5B,YAAA;AAAA,EACA,eAAA,GAAkB,EAAA;AAAA,EAClB,WAAA,GAAc,CAAA;AAAA,EACd,WAAA,GAAc;AAChB,CAAA,EAA8C;AAC5C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAID,eAAS,eAAe,CAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,KAAK,CAAA;AAElD,EAAA,MAAM,gBAAA,GAAmBC,iBAAAA;AAAA,IACvB,CAAC,OAAA,KAAoB;AACnB,MAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB;AACxD,MAAA,MAAM,CAAA,GAAI,UAAU,IAAA,CAAK,IAAA;AACzB,MAAA,MAAM,aAAa,IAAA,CAAK,GAAA;AAAA,QACtB,WAAA;AAAA,QACA,KAAK,GAAA,CAAI,WAAA,EAAc,CAAA,GAAI,IAAA,CAAK,QAAS,GAAG;AAAA,OAC9C;AACA,MAAA,iBAAA,CAAkB,UAAU,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,WAAA,EAAa,WAAW;AAAA,GACzC;AAEA,EAAA,MAAM,eAAA,GAAkBA,kBAAY,MAAM;AACxC,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgBA,kBAAY,MAAM;AACtC,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkBA,iBAAAA;AAAA,IACtB,CAAC,CAAA,KAAkB;AACjB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,gBAAA,CAAiB,EAAE,OAAO,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,gBAAgB;AAAA,GAC/B;AAEA,EAAA,MAAM,eAAA,GAAkBA,iBAAAA;AAAA,IACtB,CAAC,CAAA,KAAkB;AACjB,MAAA,IAAI,UAAA,IAAc,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC9B,QAAA,gBAAA,CAAiB,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAO,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,gBAAgB;AAAA,GAC/B;AAEA,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,MAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,MAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,aAAa,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,aAAa,CAAA;AACnD,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,YAAY,aAAa,CAAA;AAAA,IACtD,CAAA;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,eAAA,EAAiB,aAAA,EAAe,eAAe,CAAC,CAAA;AAEhE,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AC5EO,SAAS,gBAAA,CAAiB;AAAA,EAC/B;AACF,CAAA,EAAoD;AAClD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIH,eAAsB,MAAM,CAAA;AAClE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAEhE,EAAAG,gBAAU,MAAM;AACd,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,SAAA,EAAW;AAEjD,IAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAa;AACxC,MAAA,MAAM,WAAA,GAAc,CAAA;AAKpB,MAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,OAAM,GAAI,WAAA,CAAY,UAAU,EAAC;AAE9D,MAAA,IAAI,eAAe,SAAA,EAAW;AAC5B,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,cAAA,CAAe,OAAO,CAAA;AACtB,UAAA,aAAA,CAAc,IAAI,CAAA;AAAA,QACpB,CAAA,MAAO;AACL,UAAA,cAAA,CAAe,OAAO,CAAA;AACtB,UAAA,aAAA,CAAc,SAAS,uBAAuB,CAAA;AAAA,QAChD;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA;AAAA,MACL,mCAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA;AAAA,QACL,mCAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,UAAA,GAAaF,kBAAY,MAAM;AACnC,IAAA,cAAA,CAAe,SAAS,CAAA;AACxB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,kBAAY,MAAM;AAC9B,IAAA,cAAA,CAAe,MAAM,CAAA;AACrB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,WAAA,EAAa,UAAA,EAAY,UAAA,EAAY,KAAA,EAAM;AACtD;AAmBO,SAAS,qBAAA,GAAqD;AACnE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAID,cAAAA;AAAA,wBAC5B,GAAA;AAAI,GACV;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAIA,cAAAA,iBAA8B,IAAI,KAAK,CAAA;AAEvE,EAAAG,gBAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAa;AACxC,MAAA,MAAM,WAAA,GAAc,CAAA;AAKpB,MAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,OAAM,GAAI,WAAA,CAAY,UAAU,EAAC;AAE9D,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,YAAA,CAAa,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,UAAA,EAAY,OAAO,CAAC,CAAA;AAC7D,UAAA,WAAA,CAAY,CAAC,IAAA,KAAS;AACpB,YAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,YAAA,IAAA,CAAK,OAAO,UAAU,CAAA;AACtB,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AAAA,QACH,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,UAAA,EAAY,OAAO,CAAC,CAAA;AAC7D,UAAA,WAAA;AAAA,YAAY,CAAC,SACX,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,UAAA,EAAY,KAAA,IAAS,uBAAuB;AAAA,WAChE;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,gBAAA;AAAA,MACL,mCAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA;AAAA,QACL,mCAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAYF,iBAAAA;AAAA,IAChB,CAAC,SAAA,KAAsB,SAAA,CAAU,GAAA,CAAI,SAAS,CAAA,IAAK,MAAA;AAAA,IACnD,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,MAAM,QAAA,GAAWA,iBAAAA;AAAA,IACf,CAAC,SAAA,KAAsB,QAAA,CAAS,GAAA,CAAI,SAAS,CAAA;AAAA,IAC7C,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,UAAA,GAAaA,iBAAAA,CAAY,CAAC,SAAA,KAAsB;AACpD,IAAA,YAAA,CAAa,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,SAAA,EAAW,SAAS,CAAC,CAAA;AAC9D,IAAA,WAAA,CAAY,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,SAAS,CAAA;AACrB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,iBAAAA,CAAY,CAAC,SAAA,KAAsB;AAC/C,IAAA,YAAA,CAAa,CAAC,IAAA,KAAS;AACrB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,SAAS,CAAA;AACrB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,SAAS,CAAA;AACrB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAWA,kBAAY,MAAM;AACjC,IAAA,YAAA,iBAAa,IAAI,KAAK,CAAA;AACtB,IAAA,WAAA,iBAAY,IAAI,KAAK,CAAA;AAAA,EACvB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAE,SAAA,EAAW,QAAA,EAAU,UAAA,EAAY,OAAO,QAAA,EAAS;AAC5D","file":"hooks.cjs","sourcesContent":["\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\ninterface UseImageLoaderReturn {\n /** Whether the image has finished loading. */\n loaded: boolean;\n /** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */\n onLoad: () => void;\n /** Reset loaded state to false. */\n reset: () => void;\n}\n\n/**\n * Tracks load state for a single image element.\n */\nexport function useImageLoader(): UseImageLoaderReturn {\n const [loaded, setLoaded] = useState(false);\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n const reset = useCallback(() => {\n setLoaded(false);\n }, []);\n\n return { loaded, onLoad, reset };\n}\n\ninterface UseMultiImageLoaderReturn {\n /** Check if a specific image has loaded. */\n isLoaded: (key: string) => boolean;\n /** Returns a callback for the given key to mark it as loaded. */\n onLoad: (key: string) => () => void;\n /** Reset a specific image's loaded state. */\n reset: (key: string) => void;\n /** Reset all images' loaded states. */\n resetAll: () => void;\n}\n\n/**\n * Tracks load state for multiple images by key.\n */\nexport function useMultiImageLoader(): UseMultiImageLoaderReturn {\n const [loadedMap, setLoadedMap] = useState<Set<string>>(new Set());\n\n const isLoaded = useCallback(\n (key: string) => loadedMap.has(key),\n [loadedMap]\n );\n\n const onLoad = useCallback(\n (key: string) => () => {\n setLoadedMap((prev) => new Set(prev).add(key));\n },\n []\n );\n\n const reset = useCallback((key: string) => {\n setLoadedMap((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setLoadedMap(new Set());\n }, []);\n\n return { isLoaded, onLoad, reset, resetAll };\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\ninterface UsePaginationOptions<T> {\n /** The full list of items to paginate. */\n items: T[];\n /** Number of items per page. */\n itemsPerPage: number;\n /** Optional callback when the page changes. */\n onPageChange?: (\n direction: \"next\" | \"prev\",\n newPage: number,\n totalPages: number\n ) => void;\n}\n\ninterface UsePaginationReturn<T> {\n /** Current page index (0-based). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Items for the current page. */\n currentItems: T[];\n /** Go to the next page. */\n goNext: () => void;\n /** Go to the previous page. */\n goPrev: () => void;\n /** Go to a specific page (0-based). */\n goToPage: (page: number) => void;\n /** Whether the current page is the first page. */\n isFirstPage: boolean;\n /** Whether the current page is the last page. */\n isLastPage: boolean;\n}\n\n/**\n * Generic pagination hook for any list of items.\n */\nexport function usePagination<T>({\n items,\n itemsPerPage,\n onPageChange,\n}: UsePaginationOptions<T>): UsePaginationReturn<T> {\n const [page, setPage] = useState(0);\n\n const totalPages = useMemo(\n () => Math.ceil(items.length / itemsPerPage),\n [items.length, itemsPerPage]\n );\n\n const currentItems = useMemo(\n () => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),\n [items, page, itemsPerPage]\n );\n\n const goNext = useCallback(() => {\n if (page < totalPages - 1) {\n const newPage = page + 1;\n setPage(newPage);\n onPageChange?.(\"next\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goPrev = useCallback(() => {\n if (page > 0) {\n const newPage = page - 1;\n setPage(newPage);\n onPageChange?.(\"prev\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goToPage = useCallback(\n (newPage: number) => {\n if (newPage >= 0 && newPage < totalPages) {\n const direction = newPage > page ? \"next\" : \"prev\";\n setPage(newPage);\n onPageChange?.(direction, newPage, totalPages);\n }\n },\n [page, totalPages, onPageChange]\n );\n\n const isFirstPage = page === 0;\n const isLastPage = page >= totalPages - 1;\n\n return {\n page,\n totalPages,\n currentItems,\n goNext,\n goPrev,\n goToPage,\n isFirstPage,\n isLastPage,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\ninterface UseSliderDragOptions {\n /** Ref to the container element. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Initial slider position as a percentage (0-100). Defaults to 50. */\n initialPosition?: number;\n /** Minimum allowed position. Defaults to 0. */\n minPosition?: number;\n /** Maximum allowed position. Defaults to 100. */\n maxPosition?: number;\n}\n\ninterface UseSliderDragReturn {\n /** Current slider position as a percentage (0-100). */\n sliderPosition: number;\n /** Whether the user is currently dragging. */\n isDragging: boolean;\n /** Call this on mousedown/touchstart to begin dragging. */\n handleMouseDown: () => void;\n /** Programmatically set the slider position. */\n setSliderPosition: (position: number) => void;\n}\n\n/**\n * Handles mouse and touch drag interactions for a horizontal slider.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useSliderDrag({\n containerRef,\n initialPosition = 50,\n minPosition = 0,\n maxPosition = 100,\n}: UseSliderDragOptions): UseSliderDragReturn {\n const [sliderPosition, setSliderPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleSliderMove = useCallback(\n (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = clientX - rect.left;\n const percentage = Math.max(\n minPosition,\n Math.min(maxPosition, (x / rect.width) * 100)\n );\n setSliderPosition(percentage);\n },\n [containerRef, minPosition, maxPosition]\n );\n\n const handleMouseDown = useCallback(() => {\n setIsDragging(true);\n }, []);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n handleSliderMove(e.clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (isDragging && e.touches[0]) {\n handleSliderMove(e.touches[0].clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);\n\n return {\n sliderPosition,\n isDragging,\n handleMouseDown,\n setSliderPosition,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\ntype OrderStatus = \"idle\" | \"pending\" | \"added\" | \"error\";\n\ninterface UseOrderTrackingOptions {\n /** Product ID to track. */\n productId?: string;\n}\n\ninterface UseOrderTrackingReturn {\n /** Current order status. */\n orderStatus: OrderStatus;\n /** Error message if status is \"error\". */\n orderError: string | null;\n /** Mark the order as pending. */\n startOrder: () => void;\n /** Reset to idle state. */\n reset: () => void;\n}\n\n/**\n * Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useOrderTracking({\n productId,\n}: UseOrderTrackingOptions): UseOrderTrackingReturn {\n const [orderStatus, setOrderStatus] = useState<OrderStatus>(\"idle\");\n const [orderError, setOrderError] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !productId) return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id === productId) {\n if (success) {\n setOrderStatus(\"added\");\n setOrderError(null);\n } else {\n setOrderStatus(\"error\");\n setOrderError(error || \"Failed to add to cart\");\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, [productId]);\n\n const startOrder = useCallback(() => {\n setOrderStatus(\"pending\");\n setOrderError(null);\n }, []);\n\n const reset = useCallback(() => {\n setOrderStatus(\"idle\");\n setOrderError(null);\n }, []);\n\n return { orderStatus, orderError, startOrder, reset };\n}\n\ninterface UseMultiOrderTrackingReturn {\n /** Get status for a specific product. */\n getStatus: (productId: string) => OrderStatus;\n /** Get error message for a specific product. */\n getError: (productId: string) => string | undefined;\n /** Mark a product order as pending. */\n startOrder: (productId: string) => void;\n /** Reset a specific product's order status. */\n reset: (productId: string) => void;\n /** Reset all tracked products. */\n resetAll: () => void;\n}\n\n/**\n * Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useMultiOrderTracking(): UseMultiOrderTrackingReturn {\n const [statusMap, setStatusMap] = useState<Map<string, OrderStatus>>(\n new Map()\n );\n const [errorMap, setErrorMap] = useState<Map<string, string>>(new Map());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id) {\n if (success) {\n setStatusMap((prev) => new Map(prev).set(product_id, \"added\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(product_id);\n return next;\n });\n } else {\n setStatusMap((prev) => new Map(prev).set(product_id, \"error\"));\n setErrorMap((prev) =>\n new Map(prev).set(product_id, error || \"Failed to add to cart\")\n );\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, []);\n\n const getStatus = useCallback(\n (productId: string) => statusMap.get(productId) || \"idle\",\n [statusMap]\n );\n\n const getError = useCallback(\n (productId: string) => errorMap.get(productId),\n [errorMap]\n );\n\n const startOrder = useCallback((productId: string) => {\n setStatusMap((prev) => new Map(prev).set(productId, \"pending\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const reset = useCallback((productId: string) => {\n setStatusMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setStatusMap(new Map());\n setErrorMap(new Map());\n }, []);\n\n return { getStatus, getError, startOrder, reset, resetAll };\n}\n"]}
package/dist/hooks.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- export { A as AutoResizeOptions, K as KeyboardLanguageOptions, L as LATIN, a as LiveChatReturn, U as UseAigentycChatOptions, c as UseAigentycChatReturn, d as detectLanguage, s as scriptLanguageOf, u as useAigentycChat, e as useAutoResize, f as useChatContext, g as useKeyboardLanguage, h as useLiveChat, i as useSlot, j as useSlots } from './SlotsContext-D_C7zlUA.cjs';
1
+ export { A as AutoResizeOptions, K as KeyboardLanguageOptions, L as LATIN, a as LiveChatReturn, U as UseAigentycChatOptions, c as UseAigentycChatReturn, d as detectLanguage, s as scriptLanguageOf, u as useAigentycChat, e as useAutoResize, f as useChatContext, g as useKeyboardLanguage, h as useLiveChat, i as useSlot, j as useSlots } from './SlotsContext-DAQiASVu.cjs';
2
2
  export { useTheme } from './theme.cjs';
3
3
  export { useI18n } from './i18n.cjs';
4
4
  import { RefObject } from 'react';
5
5
  export { u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.cjs';
6
- import './types-bsR_-fq8.cjs';
6
+ import './types-DRa1zFlN.cjs';
7
7
  import 'react/jsx-runtime';
8
8
 
9
9
  /** Information about a preview to display in an embedded panel. */
package/dist/hooks.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { A as AutoResizeOptions, K as KeyboardLanguageOptions, L as LATIN, a as LiveChatReturn, U as UseAigentycChatOptions, c as UseAigentycChatReturn, d as detectLanguage, s as scriptLanguageOf, u as useAigentycChat, e as useAutoResize, f as useChatContext, g as useKeyboardLanguage, h as useLiveChat, i as useSlot, j as useSlots } from './SlotsContext-BZBi51ZT.js';
1
+ export { A as AutoResizeOptions, K as KeyboardLanguageOptions, L as LATIN, a as LiveChatReturn, U as UseAigentycChatOptions, c as UseAigentycChatReturn, d as detectLanguage, s as scriptLanguageOf, u as useAigentycChat, e as useAutoResize, f as useChatContext, g as useKeyboardLanguage, h as useLiveChat, i as useSlot, j as useSlots } from './SlotsContext-B_087V7B.js';
2
2
  export { useTheme } from './theme.js';
3
3
  export { useI18n } from './i18n.js';
4
4
  import { RefObject } from 'react';
5
5
  export { u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.js';
6
- import './types-bsR_-fq8.js';
6
+ import './types-DRa1zFlN.js';
7
7
  import 'react/jsx-runtime';
8
8
 
9
9
  /** Information about a preview to display in an embedded panel. */
package/dist/hooks.js CHANGED
@@ -3,11 +3,12 @@ export { useAigentycChat } from './chunk-3H4CX3MS.js';
3
3
  export { useInteractionTracker } from './chunk-MT2AMINB.js';
4
4
  import './chunk-BKDV2H6Z.js';
5
5
  export { useAutoResize, useIsMobile, useLiveChat, usePreviewEmbed } from './chunk-P7UR37HP.js';
6
- export { useTheme } from './chunk-IU7Q7O5G.js';
6
+ export { useTheme } from './chunk-VQPOUMBC.js';
7
7
  export { LATIN, detectLanguage, scriptLanguageOf, useKeyboardLanguage } from './chunk-BYTPAQ7F.js';
8
8
  import './chunk-MZQKGNWF.js';
9
- export { useI18n } from './chunk-QYCEHFAB.js';
10
- export { useChatContext, useSlot, useSlots } from './chunk-D75TDRBH.js';
9
+ export { useI18n } from './chunk-LDQVDUUJ.js';
10
+ export { useChatContext, useSlot, useSlots } from './chunk-JAEXKKSE.js';
11
+ import './chunk-CNPYBLLT.js';
11
12
  import { useState, useCallback, useMemo, useEffect } from 'react';
12
13
 
13
14
  function useImageLoader() {
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/use-image-loader.ts","../src/hooks/use-pagination.ts","../src/hooks/use-slider-drag.ts","../src/hooks/use-order-tracking.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"hooks.js","sourcesContent":["\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\ninterface UseImageLoaderReturn {\n /** Whether the image has finished loading. */\n loaded: boolean;\n /** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */\n onLoad: () => void;\n /** Reset loaded state to false. */\n reset: () => void;\n}\n\n/**\n * Tracks load state for a single image element.\n */\nexport function useImageLoader(): UseImageLoaderReturn {\n const [loaded, setLoaded] = useState(false);\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n const reset = useCallback(() => {\n setLoaded(false);\n }, []);\n\n return { loaded, onLoad, reset };\n}\n\ninterface UseMultiImageLoaderReturn {\n /** Check if a specific image has loaded. */\n isLoaded: (key: string) => boolean;\n /** Returns a callback for the given key to mark it as loaded. */\n onLoad: (key: string) => () => void;\n /** Reset a specific image's loaded state. */\n reset: (key: string) => void;\n /** Reset all images' loaded states. */\n resetAll: () => void;\n}\n\n/**\n * Tracks load state for multiple images by key.\n */\nexport function useMultiImageLoader(): UseMultiImageLoaderReturn {\n const [loadedMap, setLoadedMap] = useState<Set<string>>(new Set());\n\n const isLoaded = useCallback(\n (key: string) => loadedMap.has(key),\n [loadedMap]\n );\n\n const onLoad = useCallback(\n (key: string) => () => {\n setLoadedMap((prev) => new Set(prev).add(key));\n },\n []\n );\n\n const reset = useCallback((key: string) => {\n setLoadedMap((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setLoadedMap(new Set());\n }, []);\n\n return { isLoaded, onLoad, reset, resetAll };\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\ninterface UsePaginationOptions<T> {\n /** The full list of items to paginate. */\n items: T[];\n /** Number of items per page. */\n itemsPerPage: number;\n /** Optional callback when the page changes. */\n onPageChange?: (\n direction: \"next\" | \"prev\",\n newPage: number,\n totalPages: number\n ) => void;\n}\n\ninterface UsePaginationReturn<T> {\n /** Current page index (0-based). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Items for the current page. */\n currentItems: T[];\n /** Go to the next page. */\n goNext: () => void;\n /** Go to the previous page. */\n goPrev: () => void;\n /** Go to a specific page (0-based). */\n goToPage: (page: number) => void;\n /** Whether the current page is the first page. */\n isFirstPage: boolean;\n /** Whether the current page is the last page. */\n isLastPage: boolean;\n}\n\n/**\n * Generic pagination hook for any list of items.\n */\nexport function usePagination<T>({\n items,\n itemsPerPage,\n onPageChange,\n}: UsePaginationOptions<T>): UsePaginationReturn<T> {\n const [page, setPage] = useState(0);\n\n const totalPages = useMemo(\n () => Math.ceil(items.length / itemsPerPage),\n [items.length, itemsPerPage]\n );\n\n const currentItems = useMemo(\n () => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),\n [items, page, itemsPerPage]\n );\n\n const goNext = useCallback(() => {\n if (page < totalPages - 1) {\n const newPage = page + 1;\n setPage(newPage);\n onPageChange?.(\"next\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goPrev = useCallback(() => {\n if (page > 0) {\n const newPage = page - 1;\n setPage(newPage);\n onPageChange?.(\"prev\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goToPage = useCallback(\n (newPage: number) => {\n if (newPage >= 0 && newPage < totalPages) {\n const direction = newPage > page ? \"next\" : \"prev\";\n setPage(newPage);\n onPageChange?.(direction, newPage, totalPages);\n }\n },\n [page, totalPages, onPageChange]\n );\n\n const isFirstPage = page === 0;\n const isLastPage = page >= totalPages - 1;\n\n return {\n page,\n totalPages,\n currentItems,\n goNext,\n goPrev,\n goToPage,\n isFirstPage,\n isLastPage,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\ninterface UseSliderDragOptions {\n /** Ref to the container element. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Initial slider position as a percentage (0-100). Defaults to 50. */\n initialPosition?: number;\n /** Minimum allowed position. Defaults to 0. */\n minPosition?: number;\n /** Maximum allowed position. Defaults to 100. */\n maxPosition?: number;\n}\n\ninterface UseSliderDragReturn {\n /** Current slider position as a percentage (0-100). */\n sliderPosition: number;\n /** Whether the user is currently dragging. */\n isDragging: boolean;\n /** Call this on mousedown/touchstart to begin dragging. */\n handleMouseDown: () => void;\n /** Programmatically set the slider position. */\n setSliderPosition: (position: number) => void;\n}\n\n/**\n * Handles mouse and touch drag interactions for a horizontal slider.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useSliderDrag({\n containerRef,\n initialPosition = 50,\n minPosition = 0,\n maxPosition = 100,\n}: UseSliderDragOptions): UseSliderDragReturn {\n const [sliderPosition, setSliderPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleSliderMove = useCallback(\n (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = clientX - rect.left;\n const percentage = Math.max(\n minPosition,\n Math.min(maxPosition, (x / rect.width) * 100)\n );\n setSliderPosition(percentage);\n },\n [containerRef, minPosition, maxPosition]\n );\n\n const handleMouseDown = useCallback(() => {\n setIsDragging(true);\n }, []);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n handleSliderMove(e.clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (isDragging && e.touches[0]) {\n handleSliderMove(e.touches[0].clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);\n\n return {\n sliderPosition,\n isDragging,\n handleMouseDown,\n setSliderPosition,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\ntype OrderStatus = \"idle\" | \"pending\" | \"added\" | \"error\";\n\ninterface UseOrderTrackingOptions {\n /** Product ID to track. */\n productId?: string;\n}\n\ninterface UseOrderTrackingReturn {\n /** Current order status. */\n orderStatus: OrderStatus;\n /** Error message if status is \"error\". */\n orderError: string | null;\n /** Mark the order as pending. */\n startOrder: () => void;\n /** Reset to idle state. */\n reset: () => void;\n}\n\n/**\n * Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useOrderTracking({\n productId,\n}: UseOrderTrackingOptions): UseOrderTrackingReturn {\n const [orderStatus, setOrderStatus] = useState<OrderStatus>(\"idle\");\n const [orderError, setOrderError] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !productId) return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id === productId) {\n if (success) {\n setOrderStatus(\"added\");\n setOrderError(null);\n } else {\n setOrderStatus(\"error\");\n setOrderError(error || \"Failed to add to cart\");\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, [productId]);\n\n const startOrder = useCallback(() => {\n setOrderStatus(\"pending\");\n setOrderError(null);\n }, []);\n\n const reset = useCallback(() => {\n setOrderStatus(\"idle\");\n setOrderError(null);\n }, []);\n\n return { orderStatus, orderError, startOrder, reset };\n}\n\ninterface UseMultiOrderTrackingReturn {\n /** Get status for a specific product. */\n getStatus: (productId: string) => OrderStatus;\n /** Get error message for a specific product. */\n getError: (productId: string) => string | undefined;\n /** Mark a product order as pending. */\n startOrder: (productId: string) => void;\n /** Reset a specific product's order status. */\n reset: (productId: string) => void;\n /** Reset all tracked products. */\n resetAll: () => void;\n}\n\n/**\n * Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useMultiOrderTracking(): UseMultiOrderTrackingReturn {\n const [statusMap, setStatusMap] = useState<Map<string, OrderStatus>>(\n new Map()\n );\n const [errorMap, setErrorMap] = useState<Map<string, string>>(new Map());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id) {\n if (success) {\n setStatusMap((prev) => new Map(prev).set(product_id, \"added\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(product_id);\n return next;\n });\n } else {\n setStatusMap((prev) => new Map(prev).set(product_id, \"error\"));\n setErrorMap((prev) =>\n new Map(prev).set(product_id, error || \"Failed to add to cart\")\n );\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, []);\n\n const getStatus = useCallback(\n (productId: string) => statusMap.get(productId) || \"idle\",\n [statusMap]\n );\n\n const getError = useCallback(\n (productId: string) => errorMap.get(productId),\n [errorMap]\n );\n\n const startOrder = useCallback((productId: string) => {\n setStatusMap((prev) => new Map(prev).set(productId, \"pending\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const reset = useCallback((productId: string) => {\n setStatusMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setStatusMap(new Map());\n setErrorMap(new Map());\n }, []);\n\n return { getStatus, getError, startOrder, reset, resetAll };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/use-image-loader.ts","../src/hooks/use-pagination.ts","../src/hooks/use-slider-drag.ts","../src/hooks/use-order-tracking.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"hooks.js","sourcesContent":["\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\ninterface UseImageLoaderReturn {\n /** Whether the image has finished loading. */\n loaded: boolean;\n /** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */\n onLoad: () => void;\n /** Reset loaded state to false. */\n reset: () => void;\n}\n\n/**\n * Tracks load state for a single image element.\n */\nexport function useImageLoader(): UseImageLoaderReturn {\n const [loaded, setLoaded] = useState(false);\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n const reset = useCallback(() => {\n setLoaded(false);\n }, []);\n\n return { loaded, onLoad, reset };\n}\n\ninterface UseMultiImageLoaderReturn {\n /** Check if a specific image has loaded. */\n isLoaded: (key: string) => boolean;\n /** Returns a callback for the given key to mark it as loaded. */\n onLoad: (key: string) => () => void;\n /** Reset a specific image's loaded state. */\n reset: (key: string) => void;\n /** Reset all images' loaded states. */\n resetAll: () => void;\n}\n\n/**\n * Tracks load state for multiple images by key.\n */\nexport function useMultiImageLoader(): UseMultiImageLoaderReturn {\n const [loadedMap, setLoadedMap] = useState<Set<string>>(new Set());\n\n const isLoaded = useCallback(\n (key: string) => loadedMap.has(key),\n [loadedMap]\n );\n\n const onLoad = useCallback(\n (key: string) => () => {\n setLoadedMap((prev) => new Set(prev).add(key));\n },\n []\n );\n\n const reset = useCallback((key: string) => {\n setLoadedMap((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setLoadedMap(new Set());\n }, []);\n\n return { isLoaded, onLoad, reset, resetAll };\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\ninterface UsePaginationOptions<T> {\n /** The full list of items to paginate. */\n items: T[];\n /** Number of items per page. */\n itemsPerPage: number;\n /** Optional callback when the page changes. */\n onPageChange?: (\n direction: \"next\" | \"prev\",\n newPage: number,\n totalPages: number\n ) => void;\n}\n\ninterface UsePaginationReturn<T> {\n /** Current page index (0-based). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Items for the current page. */\n currentItems: T[];\n /** Go to the next page. */\n goNext: () => void;\n /** Go to the previous page. */\n goPrev: () => void;\n /** Go to a specific page (0-based). */\n goToPage: (page: number) => void;\n /** Whether the current page is the first page. */\n isFirstPage: boolean;\n /** Whether the current page is the last page. */\n isLastPage: boolean;\n}\n\n/**\n * Generic pagination hook for any list of items.\n */\nexport function usePagination<T>({\n items,\n itemsPerPage,\n onPageChange,\n}: UsePaginationOptions<T>): UsePaginationReturn<T> {\n const [page, setPage] = useState(0);\n\n const totalPages = useMemo(\n () => Math.ceil(items.length / itemsPerPage),\n [items.length, itemsPerPage]\n );\n\n const currentItems = useMemo(\n () => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),\n [items, page, itemsPerPage]\n );\n\n const goNext = useCallback(() => {\n if (page < totalPages - 1) {\n const newPage = page + 1;\n setPage(newPage);\n onPageChange?.(\"next\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goPrev = useCallback(() => {\n if (page > 0) {\n const newPage = page - 1;\n setPage(newPage);\n onPageChange?.(\"prev\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goToPage = useCallback(\n (newPage: number) => {\n if (newPage >= 0 && newPage < totalPages) {\n const direction = newPage > page ? \"next\" : \"prev\";\n setPage(newPage);\n onPageChange?.(direction, newPage, totalPages);\n }\n },\n [page, totalPages, onPageChange]\n );\n\n const isFirstPage = page === 0;\n const isLastPage = page >= totalPages - 1;\n\n return {\n page,\n totalPages,\n currentItems,\n goNext,\n goPrev,\n goToPage,\n isFirstPage,\n isLastPage,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\ninterface UseSliderDragOptions {\n /** Ref to the container element. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Initial slider position as a percentage (0-100). Defaults to 50. */\n initialPosition?: number;\n /** Minimum allowed position. Defaults to 0. */\n minPosition?: number;\n /** Maximum allowed position. Defaults to 100. */\n maxPosition?: number;\n}\n\ninterface UseSliderDragReturn {\n /** Current slider position as a percentage (0-100). */\n sliderPosition: number;\n /** Whether the user is currently dragging. */\n isDragging: boolean;\n /** Call this on mousedown/touchstart to begin dragging. */\n handleMouseDown: () => void;\n /** Programmatically set the slider position. */\n setSliderPosition: (position: number) => void;\n}\n\n/**\n * Handles mouse and touch drag interactions for a horizontal slider.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useSliderDrag({\n containerRef,\n initialPosition = 50,\n minPosition = 0,\n maxPosition = 100,\n}: UseSliderDragOptions): UseSliderDragReturn {\n const [sliderPosition, setSliderPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleSliderMove = useCallback(\n (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = clientX - rect.left;\n const percentage = Math.max(\n minPosition,\n Math.min(maxPosition, (x / rect.width) * 100)\n );\n setSliderPosition(percentage);\n },\n [containerRef, minPosition, maxPosition]\n );\n\n const handleMouseDown = useCallback(() => {\n setIsDragging(true);\n }, []);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n handleSliderMove(e.clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (isDragging && e.touches[0]) {\n handleSliderMove(e.touches[0].clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);\n\n return {\n sliderPosition,\n isDragging,\n handleMouseDown,\n setSliderPosition,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\ntype OrderStatus = \"idle\" | \"pending\" | \"added\" | \"error\";\n\ninterface UseOrderTrackingOptions {\n /** Product ID to track. */\n productId?: string;\n}\n\ninterface UseOrderTrackingReturn {\n /** Current order status. */\n orderStatus: OrderStatus;\n /** Error message if status is \"error\". */\n orderError: string | null;\n /** Mark the order as pending. */\n startOrder: () => void;\n /** Reset to idle state. */\n reset: () => void;\n}\n\n/**\n * Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useOrderTracking({\n productId,\n}: UseOrderTrackingOptions): UseOrderTrackingReturn {\n const [orderStatus, setOrderStatus] = useState<OrderStatus>(\"idle\");\n const [orderError, setOrderError] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !productId) return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id === productId) {\n if (success) {\n setOrderStatus(\"added\");\n setOrderError(null);\n } else {\n setOrderStatus(\"error\");\n setOrderError(error || \"Failed to add to cart\");\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, [productId]);\n\n const startOrder = useCallback(() => {\n setOrderStatus(\"pending\");\n setOrderError(null);\n }, []);\n\n const reset = useCallback(() => {\n setOrderStatus(\"idle\");\n setOrderError(null);\n }, []);\n\n return { orderStatus, orderError, startOrder, reset };\n}\n\ninterface UseMultiOrderTrackingReturn {\n /** Get status for a specific product. */\n getStatus: (productId: string) => OrderStatus;\n /** Get error message for a specific product. */\n getError: (productId: string) => string | undefined;\n /** Mark a product order as pending. */\n startOrder: (productId: string) => void;\n /** Reset a specific product's order status. */\n reset: (productId: string) => void;\n /** Reset all tracked products. */\n resetAll: () => void;\n}\n\n/**\n * Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useMultiOrderTracking(): UseMultiOrderTrackingReturn {\n const [statusMap, setStatusMap] = useState<Map<string, OrderStatus>>(\n new Map()\n );\n const [errorMap, setErrorMap] = useState<Map<string, string>>(new Map());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id) {\n if (success) {\n setStatusMap((prev) => new Map(prev).set(product_id, \"added\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(product_id);\n return next;\n });\n } else {\n setStatusMap((prev) => new Map(prev).set(product_id, \"error\"));\n setErrorMap((prev) =>\n new Map(prev).set(product_id, error || \"Failed to add to cart\")\n );\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, []);\n\n const getStatus = useCallback(\n (productId: string) => statusMap.get(productId) || \"idle\",\n [statusMap]\n );\n\n const getError = useCallback(\n (productId: string) => errorMap.get(productId),\n [errorMap]\n );\n\n const startOrder = useCallback((productId: string) => {\n setStatusMap((prev) => new Map(prev).set(productId, \"pending\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const reset = useCallback((productId: string) => {\n setStatusMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setStatusMap(new Map());\n setErrorMap(new Map());\n }, []);\n\n return { getStatus, getError, startOrder, reset, resetAll };\n}\n"]}
package/dist/i18n.cjs CHANGED
@@ -2,25 +2,25 @@
2
2
  'use strict';
3
3
 
4
4
  require('./chunk-X7R334SB.cjs');
5
- var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
5
+ var chunk72QJ2ORD_cjs = require('./chunk-72QJ2ORD.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "I18nProvider", {
10
10
  enumerable: true,
11
- get: function () { return chunk3MP2EGEJ_cjs.I18nProvider; }
11
+ get: function () { return chunk72QJ2ORD_cjs.I18nProvider; }
12
12
  });
13
13
  Object.defineProperty(exports, "addLanguage", {
14
14
  enumerable: true,
15
- get: function () { return chunk3MP2EGEJ_cjs.addLanguage; }
15
+ get: function () { return chunk72QJ2ORD_cjs.addLanguage; }
16
16
  });
17
17
  Object.defineProperty(exports, "isRTL", {
18
18
  enumerable: true,
19
- get: function () { return chunk3MP2EGEJ_cjs.isRTL; }
19
+ get: function () { return chunk72QJ2ORD_cjs.isRTL; }
20
20
  });
21
21
  Object.defineProperty(exports, "useI18n", {
22
22
  enumerable: true,
23
- get: function () { return chunk3MP2EGEJ_cjs.useI18n; }
23
+ get: function () { return chunk72QJ2ORD_cjs.useI18n; }
24
24
  });
25
25
  //# sourceMappingURL=i18n.cjs.map
26
26
  //# sourceMappingURL=i18n.cjs.map
package/dist/i18n.d.cts CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- export { L as Language } from './types-bsR_-fq8.cjs';
3
+ export { L as Language } from './types-DRa1zFlN.cjs';
4
4
 
5
5
  /**
6
6
  * All supported translation keys.
7
7
  */
8
- type TranslationKeys = "welcomeTitle" | "welcomeSubtitle" | "searchKnowledgeBase" | "searchingFor" | "processing" | "thinking" | "newConversation" | "backToStart" | "closeChat" | "alwaysVerify" | "poweredBy" | "startNewConversation" | "somethingWentWrong" | "conversationTooLong" | "conversationTooLongDesc" | "somethingWentWrongDesc" | "typeMessage" | "send" | "aboutUs" | "aboutUsDesc" | "support" | "supportDesc" | "features" | "featuresDesc" | "search" | "searchDesc" | "greeting" | "guest" | "guestDesc" | "customer" | "customerDesc" | "partner" | "partnerDesc" | "aboutUsQuery" | "supportQuery" | "featuresQuery" | "searchQuery" | "whatWentWrong" | "wrongAnswer" | "partialAnswer" | "hallucination" | "inappropriateTone" | "addDetails" | "submitting" | "submitFeedback" | "helpful" | "notHelpful" | "copyResponse" | "searchingProducts" | "searchingProductsFor" | "sendingVerification" | "verifyingOrders" | "generatingLogin" | "noProductsFound" | "noOrdersFound" | "inStock" | "outOfStock" | "backorder" | "sale" | "addToCart" | "addedToCart" | "addToCartError" | "loginToStore" | "enterEmail" | "sendCode" | "otpSentTo" | "verifyCode" | "verifiedSuccess" | "resendCode" | "invalidCode" | "selectVariation" | "orderStatus_completed" | "orderStatus_processing" | "orderStatus_on-hold" | "orderStatus_pending" | "orderStatus_cancelled" | "orderStatus_failed" | "orderStatus_refunded" | "cart" | "yourCart" | "cartItems" | "cartEmpty" | "checkout" | "cartTotal" | "removeItem" | "liveChatConnecting" | "liveChatPosition" | "liveChatCancel" | "liveChatChattingWith" | "liveChatEndChat" | "liveChatRateTitle" | "liveChatRateThank" | "liveChatBackToAI" | "liveChatSubmit" | "liveChatSkip" | "liveChatFeedbackPlaceholder" | "liveChatTalkToHuman" | "liveChatIdentityTitle" | "liveChatIdentityName" | "liveChatIdentityEmail" | "liveChatIdentityConnect" | "liveChatIdentityContinue" | "liveChatRateExperience" | "liveChatEnded";
8
+ type TranslationKeys = "welcomeTitle" | "welcomeSubtitle" | "searchKnowledgeBase" | "searchingFor" | "processing" | "thinking" | "newConversation" | "backToStart" | "closeChat" | "alwaysVerify" | "poweredBy" | "startNewConversation" | "somethingWentWrong" | "conversationTooLong" | "conversationTooLongDesc" | "somethingWentWrongDesc" | "tryAgain" | "typeMessage" | "send" | "aboutUs" | "aboutUsDesc" | "support" | "supportDesc" | "features" | "featuresDesc" | "search" | "searchDesc" | "greeting" | "guest" | "guestDesc" | "customer" | "customerDesc" | "partner" | "partnerDesc" | "aboutUsQuery" | "supportQuery" | "featuresQuery" | "searchQuery" | "whatWentWrong" | "wrongAnswer" | "partialAnswer" | "hallucination" | "inappropriateTone" | "addDetails" | "submitting" | "submitFeedback" | "helpful" | "notHelpful" | "copyResponse" | "searchingProducts" | "searchingProductsFor" | "sendingVerification" | "verifyingOrders" | "generatingLogin" | "noProductsFound" | "noOrdersFound" | "inStock" | "outOfStock" | "backorder" | "sale" | "addToCart" | "addedToCart" | "addToCartError" | "loginToStore" | "enterEmail" | "sendCode" | "otpSentTo" | "verifyCode" | "verifiedSuccess" | "resendCode" | "invalidCode" | "selectVariation" | "orderStatus_completed" | "orderStatus_processing" | "orderStatus_on-hold" | "orderStatus_pending" | "orderStatus_cancelled" | "orderStatus_failed" | "orderStatus_refunded" | "cart" | "yourCart" | "cartItems" | "cartEmpty" | "checkout" | "cartTotal" | "removeItem" | "liveChatConnecting" | "liveChatPosition" | "liveChatCancel" | "liveChatChattingWith" | "liveChatEndChat" | "liveChatRateTitle" | "liveChatRateThank" | "liveChatBackToAI" | "liveChatSubmit" | "liveChatSkip" | "liveChatFeedbackPlaceholder" | "liveChatTalkToHuman" | "liveChatIdentityTitle" | "liveChatIdentityName" | "liveChatIdentityEmail" | "liveChatIdentityConnect" | "liveChatIdentityContinue" | "liveChatRateExperience" | "liveChatEnded";
9
9
  /** A complete set of translations for a language. */
10
10
  type TranslationMap = Record<TranslationKeys, string>;
11
11
  /**
package/dist/i18n.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- export { L as Language } from './types-bsR_-fq8.js';
3
+ export { L as Language } from './types-DRa1zFlN.js';
4
4
 
5
5
  /**
6
6
  * All supported translation keys.
7
7
  */
8
- type TranslationKeys = "welcomeTitle" | "welcomeSubtitle" | "searchKnowledgeBase" | "searchingFor" | "processing" | "thinking" | "newConversation" | "backToStart" | "closeChat" | "alwaysVerify" | "poweredBy" | "startNewConversation" | "somethingWentWrong" | "conversationTooLong" | "conversationTooLongDesc" | "somethingWentWrongDesc" | "typeMessage" | "send" | "aboutUs" | "aboutUsDesc" | "support" | "supportDesc" | "features" | "featuresDesc" | "search" | "searchDesc" | "greeting" | "guest" | "guestDesc" | "customer" | "customerDesc" | "partner" | "partnerDesc" | "aboutUsQuery" | "supportQuery" | "featuresQuery" | "searchQuery" | "whatWentWrong" | "wrongAnswer" | "partialAnswer" | "hallucination" | "inappropriateTone" | "addDetails" | "submitting" | "submitFeedback" | "helpful" | "notHelpful" | "copyResponse" | "searchingProducts" | "searchingProductsFor" | "sendingVerification" | "verifyingOrders" | "generatingLogin" | "noProductsFound" | "noOrdersFound" | "inStock" | "outOfStock" | "backorder" | "sale" | "addToCart" | "addedToCart" | "addToCartError" | "loginToStore" | "enterEmail" | "sendCode" | "otpSentTo" | "verifyCode" | "verifiedSuccess" | "resendCode" | "invalidCode" | "selectVariation" | "orderStatus_completed" | "orderStatus_processing" | "orderStatus_on-hold" | "orderStatus_pending" | "orderStatus_cancelled" | "orderStatus_failed" | "orderStatus_refunded" | "cart" | "yourCart" | "cartItems" | "cartEmpty" | "checkout" | "cartTotal" | "removeItem" | "liveChatConnecting" | "liveChatPosition" | "liveChatCancel" | "liveChatChattingWith" | "liveChatEndChat" | "liveChatRateTitle" | "liveChatRateThank" | "liveChatBackToAI" | "liveChatSubmit" | "liveChatSkip" | "liveChatFeedbackPlaceholder" | "liveChatTalkToHuman" | "liveChatIdentityTitle" | "liveChatIdentityName" | "liveChatIdentityEmail" | "liveChatIdentityConnect" | "liveChatIdentityContinue" | "liveChatRateExperience" | "liveChatEnded";
8
+ type TranslationKeys = "welcomeTitle" | "welcomeSubtitle" | "searchKnowledgeBase" | "searchingFor" | "processing" | "thinking" | "newConversation" | "backToStart" | "closeChat" | "alwaysVerify" | "poweredBy" | "startNewConversation" | "somethingWentWrong" | "conversationTooLong" | "conversationTooLongDesc" | "somethingWentWrongDesc" | "tryAgain" | "typeMessage" | "send" | "aboutUs" | "aboutUsDesc" | "support" | "supportDesc" | "features" | "featuresDesc" | "search" | "searchDesc" | "greeting" | "guest" | "guestDesc" | "customer" | "customerDesc" | "partner" | "partnerDesc" | "aboutUsQuery" | "supportQuery" | "featuresQuery" | "searchQuery" | "whatWentWrong" | "wrongAnswer" | "partialAnswer" | "hallucination" | "inappropriateTone" | "addDetails" | "submitting" | "submitFeedback" | "helpful" | "notHelpful" | "copyResponse" | "searchingProducts" | "searchingProductsFor" | "sendingVerification" | "verifyingOrders" | "generatingLogin" | "noProductsFound" | "noOrdersFound" | "inStock" | "outOfStock" | "backorder" | "sale" | "addToCart" | "addedToCart" | "addToCartError" | "loginToStore" | "enterEmail" | "sendCode" | "otpSentTo" | "verifyCode" | "verifiedSuccess" | "resendCode" | "invalidCode" | "selectVariation" | "orderStatus_completed" | "orderStatus_processing" | "orderStatus_on-hold" | "orderStatus_pending" | "orderStatus_cancelled" | "orderStatus_failed" | "orderStatus_refunded" | "cart" | "yourCart" | "cartItems" | "cartEmpty" | "checkout" | "cartTotal" | "removeItem" | "liveChatConnecting" | "liveChatPosition" | "liveChatCancel" | "liveChatChattingWith" | "liveChatEndChat" | "liveChatRateTitle" | "liveChatRateThank" | "liveChatBackToAI" | "liveChatSubmit" | "liveChatSkip" | "liveChatFeedbackPlaceholder" | "liveChatTalkToHuman" | "liveChatIdentityTitle" | "liveChatIdentityName" | "liveChatIdentityEmail" | "liveChatIdentityConnect" | "liveChatIdentityContinue" | "liveChatRateExperience" | "liveChatEnded";
9
9
  /** A complete set of translations for a language. */
10
10
  type TranslationMap = Record<TranslationKeys, string>;
11
11
  /**
package/dist/i18n.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
2
  import './chunk-MZQKGNWF.js';
3
- export { I18nProvider, addLanguage, isRTL, useI18n } from './chunk-QYCEHFAB.js';
3
+ export { I18nProvider, addLanguage, isRTL, useI18n } from './chunk-LDQVDUUJ.js';
4
4
  //# sourceMappingURL=i18n.js.map
5
5
  //# sourceMappingURL=i18n.js.map
package/dist/index.cjs CHANGED
@@ -3,16 +3,17 @@
3
3
 
4
4
  var chunkNBZDBH4M_cjs = require('./chunk-NBZDBH4M.cjs');
5
5
  require('./chunk-NG7OTWXQ.cjs');
6
- var chunk7ESWDFF5_cjs = require('./chunk-7ESWDFF5.cjs');
6
+ var chunkKHQYSEYN_cjs = require('./chunk-KHQYSEYN.cjs');
7
7
  var chunkDVWX2UGY_cjs = require('./chunk-DVWX2UGY.cjs');
8
- var chunkP3RPAI4F_cjs = require('./chunk-P3RPAI4F.cjs');
8
+ var chunkBYX6IOGX_cjs = require('./chunk-BYX6IOGX.cjs');
9
9
  var chunkDDATCJ3O_cjs = require('./chunk-DDATCJ3O.cjs');
10
- require('./chunk-KTYYLZN7.cjs');
10
+ require('./chunk-B277MAUK.cjs');
11
11
  require('./chunk-X7R334SB.cjs');
12
- var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
12
+ var chunk72QJ2ORD_cjs = require('./chunk-72QJ2ORD.cjs');
13
13
  var chunk7AZMWPKX_cjs = require('./chunk-7AZMWPKX.cjs');
14
- require('./chunk-Q3UJEIBN.cjs');
15
- var chunk52ZHMTAA_cjs = require('./chunk-52ZHMTAA.cjs');
14
+ require('./chunk-JEK2V5I3.cjs');
15
+ var chunkUXVOUC2A_cjs = require('./chunk-UXVOUC2A.cjs');
16
+ require('./chunk-VYBHYFG3.cjs');
16
17
  require('./chunk-JOO6C3XT.cjs');
17
18
  require('./chunk-EMVZ7HWM.cjs');
18
19
  require('./chunk-JI5KCSOI.cjs');
@@ -92,8 +93,8 @@ function ChatProvider(props) {
92
93
  children: /* @__PURE__ */ jsxRuntime.jsx(chunkDVWX2UGY_cjs.PreviewEmbedProvider, { children })
93
94
  }
94
95
  ) : /* @__PURE__ */ jsxRuntime.jsx(chunkDVWX2UGY_cjs.PreviewEmbedProvider, { children });
95
- return /* @__PURE__ */ jsxRuntime.jsx(chunk3MP2EGEJ_cjs.I18nProvider, { language, translations: translationOverrides, children: /* @__PURE__ */ jsxRuntime.jsx(chunkP3RPAI4F_cjs.ThemeProvider, { theme, children: /* @__PURE__ */ jsxRuntime.jsx(chunk52ZHMTAA_cjs.SlotsProvider, { slots, children: /* @__PURE__ */ jsxRuntime.jsx(
96
- chunk52ZHMTAA_cjs.ChatContextProvider,
96
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk72QJ2ORD_cjs.I18nProvider, { language, translations: translationOverrides, children: /* @__PURE__ */ jsxRuntime.jsx(chunkBYX6IOGX_cjs.ThemeProvider, { theme, children: /* @__PURE__ */ jsxRuntime.jsx(chunkUXVOUC2A_cjs.SlotsProvider, { slots, children: /* @__PURE__ */ jsxRuntime.jsx(
97
+ chunkUXVOUC2A_cjs.ChatContextProvider,
97
98
  {
98
99
  config,
99
100
  callbacks,
@@ -101,9 +102,9 @@ function ChatProvider(props) {
101
102
  }
102
103
  ) }) }) });
103
104
  }
104
- function Chat({ className, children, showSources, messagePartOrder, ...providerProps }) {
105
+ function Chat({ className, children, showSources, messagePartOrder, scrollAnchor, ...providerProps }) {
105
106
  return /* @__PURE__ */ jsxRuntime.jsx(ChatProvider, { ...providerProps, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
106
- /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.ChatInterface, { showSources, messagePartOrder }),
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.ChatInterface, { showSources, messagePartOrder, scrollAnchor }),
107
108
  children
108
109
  ] }) });
109
110
  }
@@ -223,12 +224,13 @@ function ChatWidgetInner({
223
224
  questionsLayoutMobile,
224
225
  showSources,
225
226
  messagePartOrder,
227
+ scrollAnchor,
226
228
  language
227
229
  }) {
228
230
  const [internalIsOpen, setInternalIsOpen] = react.useState(false);
229
231
  const [pendingMessage, setPendingMessage] = react.useState(initialPendingMessage ?? null);
230
232
  const isMobile = chunkDVWX2UGY_cjs.useIsMobile();
231
- const slots = chunk52ZHMTAA_cjs.useSlots();
233
+ const slots = chunkUXVOUC2A_cjs.useSlots();
232
234
  react.useEffect(() => {
233
235
  if (controlledIsOpen === true) setInternalIsOpen(true);
234
236
  }, [controlledIsOpen]);
@@ -272,13 +274,14 @@ function ChatWidgetInner({
272
274
  questionsLayoutMobile,
273
275
  showSources,
274
276
  messagePartOrder,
277
+ scrollAnchor,
275
278
  pendingMessage,
276
279
  onPendingMessageConsumed: () => setPendingMessage(null)
277
280
  }),
278
- [isOpen, handleClose, logoUrl, welcomeTitle, welcomeSubtitle, hideWelcomeHeader, footerText, hideHeader, showFirstMessage, questionsLayout, questionsLayoutMobile, showSources, messagePartOrder, pendingMessage]
281
+ [isOpen, handleClose, logoUrl, welcomeTitle, welcomeSubtitle, hideWelcomeHeader, footerText, hideHeader, showFirstMessage, questionsLayout, questionsLayoutMobile, showSources, messagePartOrder, scrollAnchor, pendingMessage]
279
282
  );
280
283
  if (mode === "inline") {
281
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full h-full", dir: dirRTL ? "rtl" : "ltr", style: { backgroundColor: "var(--ac-background)" }, children: /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.ChatInterface, { ...chatInterfaceProps }) });
284
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full h-full", dir: dirRTL ? "rtl" : "ltr", style: { backgroundColor: "var(--ac-background)" }, children: /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.ChatInterface, { ...chatInterfaceProps }) });
282
285
  }
283
286
  const panelZIndex = zIndex || 9999;
284
287
  const floatingButtonProps = {
@@ -322,8 +325,8 @@ function ChatWidgetInner({
322
325
  onClick: handleClose
323
326
  }
324
327
  ),
325
- !isMobile && /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.PreviewEmbedPanel, { isOpen, isRightSide, zIndex: panelZIndex - 1 }),
326
- !isMobile && /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.LiveChatPanel, { isWidgetOpen: isOpen, isRightSide, zIndex: panelZIndex - 1 }),
328
+ !isMobile && /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.PreviewEmbedPanel, { isOpen, isRightSide, zIndex: panelZIndex - 1 }),
329
+ !isMobile && /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.LiveChatPanel, { isWidgetOpen: isOpen, isRightSide, zIndex: panelZIndex - 1 }),
327
330
  /* @__PURE__ */ jsxRuntime.jsxs(
328
331
  "div",
329
332
  {
@@ -352,15 +355,15 @@ function ChatWidgetInner({
352
355
  },
353
356
  children: [
354
357
  isMobile && /* @__PURE__ */ jsxRuntime.jsx(MobilePreviewDrawer, {}),
355
- /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.MobileLiveChatDrawer, {}),
356
- /* @__PURE__ */ jsxRuntime.jsx(chunk7ESWDFF5_cjs.ChatInterface, { ...chatInterfaceProps })
358
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.MobileLiveChatDrawer, {}),
359
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKHQYSEYN_cjs.ChatInterface, { ...chatInterfaceProps })
357
360
  ]
358
361
  }
359
362
  ),
360
- !isOpen && chunk52ZHMTAA_cjs.renderSlot(
363
+ !isOpen && chunkUXVOUC2A_cjs.renderSlot(
361
364
  "floatingButton",
362
365
  floatingButtonProps,
363
- chunk7ESWDFF5_cjs.FloatingButton,
366
+ chunkKHQYSEYN_cjs.FloatingButton,
364
367
  slots
365
368
  )
366
369
  ] });
@@ -404,6 +407,7 @@ function ChatWidget(props) {
404
407
  showFirstMessage,
405
408
  questionsLayout,
406
409
  questionsLayoutMobile,
410
+ scrollAnchor,
407
411
  children: _children,
408
412
  ...providerProps
409
413
  } = props;
@@ -446,6 +450,7 @@ function ChatWidget(props) {
446
450
  showFirstMessage,
447
451
  questionsLayout,
448
452
  questionsLayoutMobile,
453
+ scrollAnchor,
449
454
  language: providerProps.language
450
455
  }
451
456
  ) });
@@ -455,9 +460,13 @@ Object.defineProperty(exports, "useAigentycChat", {
455
460
  enumerable: true,
456
461
  get: function () { return chunkNBZDBH4M_cjs.useAigentycChat; }
457
462
  });
463
+ Object.defineProperty(exports, "ChatError", {
464
+ enumerable: true,
465
+ get: function () { return chunkKHQYSEYN_cjs.ChatError; }
466
+ });
458
467
  Object.defineProperty(exports, "ChatErrorBoundary", {
459
468
  enumerable: true,
460
- get: function () { return chunk7ESWDFF5_cjs.ChatErrorBoundary; }
469
+ get: function () { return chunkKHQYSEYN_cjs.ChatErrorBoundary; }
461
470
  });
462
471
  Object.defineProperty(exports, "useAutoResize", {
463
472
  enumerable: true,
@@ -469,7 +478,7 @@ Object.defineProperty(exports, "useLiveChat", {
469
478
  });
470
479
  Object.defineProperty(exports, "useTheme", {
471
480
  enumerable: true,
472
- get: function () { return chunkP3RPAI4F_cjs.useTheme; }
481
+ get: function () { return chunkBYX6IOGX_cjs.useTheme; }
473
482
  });
474
483
  Object.defineProperty(exports, "LATIN", {
475
484
  enumerable: true,
@@ -489,7 +498,7 @@ Object.defineProperty(exports, "useKeyboardLanguage", {
489
498
  });
490
499
  Object.defineProperty(exports, "useI18n", {
491
500
  enumerable: true,
492
- get: function () { return chunk3MP2EGEJ_cjs.useI18n; }
501
+ get: function () { return chunk72QJ2ORD_cjs.useI18n; }
493
502
  });
494
503
  Object.defineProperty(exports, "getToolDisplayData", {
495
504
  enumerable: true,
@@ -501,19 +510,19 @@ Object.defineProperty(exports, "normalizeToolRows", {
501
510
  });
502
511
  Object.defineProperty(exports, "renderSlot", {
503
512
  enumerable: true,
504
- get: function () { return chunk52ZHMTAA_cjs.renderSlot; }
513
+ get: function () { return chunkUXVOUC2A_cjs.renderSlot; }
505
514
  });
506
515
  Object.defineProperty(exports, "useChatContext", {
507
516
  enumerable: true,
508
- get: function () { return chunk52ZHMTAA_cjs.useChatContext; }
517
+ get: function () { return chunkUXVOUC2A_cjs.useChatContext; }
509
518
  });
510
519
  Object.defineProperty(exports, "useSlot", {
511
520
  enumerable: true,
512
- get: function () { return chunk52ZHMTAA_cjs.useSlot; }
521
+ get: function () { return chunkUXVOUC2A_cjs.useSlot; }
513
522
  });
514
523
  Object.defineProperty(exports, "useSlots", {
515
524
  enumerable: true,
516
- get: function () { return chunk52ZHMTAA_cjs.useSlots; }
525
+ get: function () { return chunkUXVOUC2A_cjs.useSlots; }
517
526
  });
518
527
  exports.Chat = Chat;
519
528
  exports.ChatProvider = ChatProvider;