@aigentyc/chat-sdk 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context7.json +1 -1
- package/dist/{ChatInterface-0rq8D5-8.d.cts → ChatInterface-DrzYAWnG.d.cts} +1 -1
- package/dist/{ChatInterface--yaDB5yp.d.ts → ChatInterface-qiVhkmx3.d.ts} +1 -1
- package/dist/{SlotsContext-CWTjP0mA.d.ts → SlotsContext-B_087V7B.d.ts} +99 -5
- package/dist/{SlotsContext-u5CFB7MS.d.cts → SlotsContext-DAQiASVu.d.cts} +99 -5
- package/dist/ai-elements.cjs +164 -567
- package/dist/ai-elements.cjs.map +1 -1
- package/dist/ai-elements.d.cts +10 -2
- package/dist/ai-elements.d.ts +10 -2
- package/dist/ai-elements.js +17 -462
- package/dist/ai-elements.js.map +1 -1
- package/dist/{chunk-LSKOJ7SH.js → chunk-3H4CX3MS.js} +8 -5
- package/dist/chunk-3H4CX3MS.js.map +1 -0
- package/dist/{chunk-4WOBNRRB.cjs → chunk-6CVBJ4EI.cjs} +594 -10
- package/dist/chunk-6CVBJ4EI.cjs.map +1 -0
- package/dist/{chunk-3MP2EGEJ.cjs → chunk-72QJ2ORD.cjs} +4 -2
- package/dist/chunk-72QJ2ORD.cjs.map +1 -0
- package/dist/chunk-BYTPAQ7F.js +70 -0
- package/dist/chunk-BYTPAQ7F.js.map +1 -0
- package/dist/{chunk-P3RPAI4F.cjs → chunk-BYX6IOGX.cjs} +4 -4
- package/dist/{chunk-P3RPAI4F.cjs.map → chunk-BYX6IOGX.cjs.map} +1 -1
- package/dist/{chunk-B27JIQ4Z.js → chunk-CNGIOCLR.js} +577 -7
- package/dist/chunk-CNGIOCLR.js.map +1 -0
- package/dist/chunk-CNPYBLLT.js +81 -0
- package/dist/chunk-CNPYBLLT.js.map +1 -0
- package/dist/{chunk-6ZZTTD5E.js → chunk-CW6LCVNC.js} +3 -3
- package/dist/{chunk-6ZZTTD5E.js.map → chunk-CW6LCVNC.js.map} +1 -1
- package/dist/chunk-DDATCJ3O.cjs +75 -0
- package/dist/chunk-DDATCJ3O.cjs.map +1 -0
- package/dist/{chunk-LVWSWTI3.cjs → chunk-DTOOWY2S.cjs} +184 -74
- package/dist/chunk-DTOOWY2S.cjs.map +1 -0
- package/dist/{chunk-NYQSM3EB.cjs → chunk-DVWX2UGY.cjs} +16 -2
- package/dist/chunk-DVWX2UGY.cjs.map +1 -0
- package/dist/{chunk-TZ7EM3EG.cjs → chunk-EMVZ7HWM.cjs} +44 -2
- package/dist/chunk-EMVZ7HWM.cjs.map +1 -0
- package/dist/{chunk-3EN3DMUL.js → chunk-JAEXKKSE.js} +47 -38
- package/dist/chunk-JAEXKKSE.js.map +1 -0
- package/dist/{chunk-JHWSG5IB.js → chunk-JAOD6CNW.js} +38 -3
- package/dist/chunk-JAOD6CNW.js.map +1 -0
- package/dist/{chunk-OEEDYJTV.cjs → chunk-JEK2V5I3.cjs} +6 -6
- package/dist/{chunk-OEEDYJTV.cjs.map → chunk-JEK2V5I3.cjs.map} +1 -1
- package/dist/{chunk-QYCEHFAB.js → chunk-LDQVDUUJ.js} +4 -2
- package/dist/chunk-LDQVDUUJ.js.map +1 -0
- package/dist/{chunk-AWRQSM42.cjs → chunk-NBZDBH4M.cjs} +8 -5
- package/dist/chunk-NBZDBH4M.cjs.map +1 -0
- package/dist/{chunk-5F3O3ZJH.js → chunk-P7UR37HP.js} +17 -4
- package/dist/chunk-P7UR37HP.js.map +1 -0
- package/dist/{chunk-3KSMOHNY.js → chunk-R3TYC66R.js} +46 -81
- package/dist/chunk-R3TYC66R.js.map +1 -0
- package/dist/{chunk-RAQVW2D7.js → chunk-UTEGHMBN.js} +142 -33
- package/dist/chunk-UTEGHMBN.js.map +1 -0
- package/dist/{chunk-46MUOYPR.cjs → chunk-UXVOUC2A.cjs} +47 -38
- package/dist/chunk-UXVOUC2A.cjs.map +1 -0
- package/dist/{chunk-IU7Q7O5G.js → chunk-VQPOUMBC.js} +3 -3
- package/dist/{chunk-IU7Q7O5G.js.map → chunk-VQPOUMBC.js.map} +1 -1
- package/dist/chunk-VYBHYFG3.cjs +87 -0
- package/dist/chunk-VYBHYFG3.cjs.map +1 -0
- package/dist/{chunk-OU5OZKYH.cjs → chunk-Y4B45DW4.cjs} +48 -90
- package/dist/chunk-Y4B45DW4.cjs.map +1 -0
- package/dist/components.cjs +22 -21
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +3 -3
- package/dist/components.d.ts +3 -3
- package/dist/components.js +10 -9
- package/dist/components.js.map +1 -1
- package/dist/core.cjs +21 -82
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +2 -78
- package/dist/core.js.map +1 -1
- package/dist/hooks.cjs +36 -14
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +7 -5
- package/dist/hooks.js.map +1 -1
- package/dist/i18n.cjs +5 -5
- package/dist/i18n.d.cts +2 -2
- package/dist/i18n.d.ts +2 -2
- package/dist/i18n.js +1 -1
- package/dist/index.cjs +61 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -5
- package/dist/index.d.ts +15 -5
- package/dist/index.js +16 -14
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +10 -10
- package/dist/styles.css +1 -1
- package/dist/theme.cjs +4 -4
- package/dist/theme.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.js +2 -2
- package/dist/tools.cjs +6 -5
- package/dist/tools.d.cts +2 -2
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +3 -2
- package/dist/{types-DQCjs81O.d.cts → types-DRa1zFlN.d.cts} +33 -1
- package/dist/{types-DQCjs81O.d.ts → types-DRa1zFlN.d.ts} +33 -1
- package/dist/ui.cjs +52 -52
- package/dist/ui.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-3EN3DMUL.js.map +0 -1
- package/dist/chunk-3KSMOHNY.js.map +0 -1
- package/dist/chunk-3MP2EGEJ.cjs.map +0 -1
- package/dist/chunk-46MUOYPR.cjs.map +0 -1
- package/dist/chunk-4WOBNRRB.cjs.map +0 -1
- package/dist/chunk-5F3O3ZJH.js.map +0 -1
- package/dist/chunk-AWRQSM42.cjs.map +0 -1
- package/dist/chunk-B27JIQ4Z.js.map +0 -1
- package/dist/chunk-JHWSG5IB.js.map +0 -1
- package/dist/chunk-LSKOJ7SH.js.map +0 -1
- package/dist/chunk-LVWSWTI3.cjs.map +0 -1
- package/dist/chunk-NYQSM3EB.cjs.map +0 -1
- package/dist/chunk-OU5OZKYH.cjs.map +0 -1
- package/dist/chunk-QYCEHFAB.js.map +0 -1
- package/dist/chunk-RAQVW2D7.js.map +0 -1
- package/dist/chunk-TZ7EM3EG.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/SlotsContext.tsx","../src/providers/ChatContext.tsx"],"names":["createContext","useContext","jsx","saveMessages","loadMessages","clearMessages","useState","useRef","useMemo","useEffect","DefaultChatTransport","useChat","useCallback"],"mappings":"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","file":"chunk-UXVOUC2A.cjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n createContext,\n useContext,\n type ReactNode,\n type ComponentType,\n} from \"react\";\n\n/**\n * All available slot names that can be overridden.\n */\nexport type SlotName =\n | \"header\"\n | \"footer\"\n | \"input\"\n | \"welcomePage\"\n | \"userMessage\"\n | \"assistantMessage\"\n | \"systemMessage\"\n | \"loader\"\n | \"feedback\"\n | \"tools\"\n | \"toolRenderers\"\n | \"liveChatPanel\"\n | \"satisfactionRating\"\n | \"visitorIdentityForm\"\n | \"floatingButton\"\n | \"emptyState\"\n | \"error\";\n\n/**\n * A slot component receives the default component as a prop alongside its own props.\n */\nexport type SlotComponent<P = Record<string, unknown>> = ComponentType<\n P & { DefaultComponent: ComponentType<P> }\n>;\n\n/**\n * Map of slot name to override component.\n */\nexport type SlotMap = Partial<Record<SlotName, SlotComponent<any>>>;\n\nconst SlotsContext = createContext<SlotMap>({});\n\n/** Props for the SlotsProvider component. */\nexport interface SlotsProviderProps {\n /** Slot overrides map */\n slots?: SlotMap;\n children: ReactNode;\n}\n\n/**\n * Provides slot overrides to descendant components.\n * Wrap your chat tree with this provider and pass a `slots` map\n * to replace built-in UI sections.\n */\nexport function SlotsProvider({ slots = {}, children }: SlotsProviderProps) {\n return (\n <SlotsContext.Provider value={slots}>{children}</SlotsContext.Provider>\n );\n}\n\n/**\n * Returns the full SlotMap from context.\n */\nexport function useSlots(): SlotMap {\n return useContext(SlotsContext);\n}\n\n/**\n * Returns the override component for the given slot name, or undefined if none is set.\n */\nexport function useSlot<P = Record<string, unknown>>(\n name: SlotName\n): SlotComponent<P> | undefined {\n const slots = useContext(SlotsContext);\n return slots[name] as SlotComponent<P> | undefined;\n}\n\n/**\n * Renders a slot: if an override exists, renders it with `{...props, DefaultComponent}`.\n * Otherwise renders the DefaultComponent with the given props.\n *\n * The generic `P` is NOT constrained to `Record<string, unknown>` so concrete\n * component prop types (e.g. `ChatHeaderProps`) flow through at call sites\n * without `as never` casts. Internal spreads are cast through\n * `Record<string, unknown>` — safe because JSX spread accepts any record.\n *\n * @param name - The slot name\n * @param props - Props to pass to the component\n * @param DefaultComponent - The built-in fallback component\n */\nexport function renderSlot<P>(\n name: SlotName,\n props: P,\n DefaultComponent: ComponentType<P>,\n slots: SlotMap\n): React.ReactElement {\n const spreadProps = props as unknown as Record<string, unknown>;\n const Override = slots[name] as\n | ComponentType<Record<string, unknown> & { DefaultComponent: ComponentType<P> }>\n | undefined;\n if (Override) {\n return <Override {...spreadProps} DefaultComponent={DefaultComponent} />;\n }\n const Default = DefaultComponent as ComponentType<Record<string, unknown>>;\n return <Default {...spreadProps} />;\n}\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useCallback,\n useRef,\n useEffect,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport type {\n ChatConfig,\n ChatMessage,\n ChatEventCallbacks,\n ChatAttachmentInput,\n} from \"../core/types\";\nimport { useChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport } from \"ai\";\nimport {\n clearMessages as clearStoredMessages,\n loadMessages as loadStoredMessages,\n saveMessages as saveStoredMessages,\n type StoredMessage,\n} from \"../core/message-store\";\n\ntype ChatStatus = \"idle\" | \"streaming\" | \"error\";\n\ninterface ActiveTool {\n toolName: string;\n state: \"partial-call\" | \"call\" | \"output-available\";\n args: Record<string, unknown>;\n result?: unknown;\n renderMode: string;\n}\n\nconst SESSION_KEY_PREFIX = \"aigentyc-session-\";\n\n/**\n * Where this provider used to keep history, before it moved to\n * `core/message-store`.\n *\n * Worth deleting rather than leaving behind. The old writer had no size cap and\n * no expiry, so an established visitor can be carrying a large dead blob under\n * this key — and `localStorage` is a ~5 MB budget shared by the whole origin.\n * Nothing reads the key any more, but the space it holds is space the new\n * store's writes need, and those writes fail SILENTLY when the quota is gone.\n * An orphan left in place would mean persistence quietly stopping for exactly\n * the visitors who had used the chat the most.\n */\nconst LEGACY_MESSAGE_KEY_PREFIX = \"aigentyc-messages-\";\n\nfunction dropLegacyMessageStore(projectId: string): void {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.removeItem(LEGACY_MESSAGE_KEY_PREFIX + projectId);\n } catch {\n // Unavailable or blocked — the old key is harmless, just wasteful.\n }\n}\n\nfunction getOrCreateSessionId(projectId: string): string {\n if (typeof window === \"undefined\") return crypto.randomUUID();\n const key = SESSION_KEY_PREFIX + projectId;\n try {\n const stored = sessionStorage.getItem(key);\n if (stored) return stored;\n const id = crypto.randomUUID();\n sessionStorage.setItem(key, id);\n return id;\n } catch {\n return crypto.randomUUID();\n }\n}\n\n/**\n * History is stored per project AND per session, by `core/message-store`.\n *\n * This used to be three local helpers keyed on `projectId` alone, with no\n * expiry and no size bound, while `message-store` — written for exactly this\n * job, and exported from the package — went unused. The difference is not\n * cosmetic:\n *\n * - **A session could not escape a poisoned history.** The server refuses a\n * turn whose replayed history is too long or too large. Because every\n * session in the project read the same key, that history came back on the\n * next page load, in the next tab and in a new session — so a conversation\n * that broke once answered nothing ever again, which is exactly how this was\n * reported from the field.\n * - **Sessions leaked into each other.** A second tab adopted the first tab's\n * conversation while reporting a different `sessionId` upstream, so the\n * transcript the server logged did not match the one on screen.\n * - **Nothing ever expired.** `message-store` drops history after 24 hours and\n * trims it when it outgrows 200 KB.\n *\n * Persistence across navigation is unchanged: the session id lives in\n * `sessionStorage`, which survives a full page load in the same tab.\n */\nfunction persistMessages(\n projectId: string,\n sessionId: string,\n messages: unknown[]\n): void {\n saveStoredMessages(projectId, sessionId, messages as StoredMessage[]);\n}\n\nfunction loadPersistedMessages(\n projectId: string,\n sessionId: string\n): ChatMessage[] {\n return loadStoredMessages(projectId, sessionId) as unknown as ChatMessage[];\n}\n\nfunction clearPersistedMessages(projectId: string, sessionId: string): void {\n clearStoredMessages(projectId, sessionId);\n}\n\nexport interface ChatContextValue {\n messages: ChatMessage[];\n status: ChatStatus;\n error: Error | undefined;\n sessionId: string;\n config: ChatConfig;\n activeTools: ActiveTool[];\n /**\n * Sends a user turn. `files` travel with it as message parts; a turn carrying\n * files may have empty text — an image on its own is a question.\n */\n sendMessage: (content: string, files?: ChatAttachmentInput[]) => void;\n stopGeneration: () => void;\n /**\n * Re-run the last turn after a failure. No-op while a turn is in flight.\n *\n * Worth offering for a transient refusal — a rate limit, a dropped stream, a\n * momentary 503. It cannot clear a refusal caused by the history itself,\n * because the same history is what gets re-sent; that needs\n * {@link ChatContextValue.newConversation}.\n */\n retryLastTurn: () => void;\n newConversation: () => void;\n clearMessages: () => void;\n callbacks?: ChatEventCallbacks;\n}\n\nexport const ChatContext = createContext<ChatContextValue | null>(null);\n\nexport interface ChatContextProviderProps {\n config: ChatConfig;\n callbacks?: ChatEventCallbacks;\n children: ReactNode;\n}\n\n/**\n * Internal provider that manages chat state via @ai-sdk/react `useChat`.\n * Handles message persistence and session management.\n */\nexport function ChatContextProvider({\n config,\n callbacks,\n children,\n}: ChatContextProviderProps) {\n const projectId = config.projectId || \"default\";\n const [sessionId, setSessionId] = useState(() => getOrCreateSessionId(projectId));\n const callbacksRef = useRef(callbacks);\n callbacksRef.current = callbacks;\n\n // Re-load persisted messages whenever the session changes (incl. after\n // newConversation()). Keying only on mount cached the original array, so\n // useChat would re-inject the OLD messages into the new sessionId — a real\n // \"new chat\" effectively kept the old conversation alive.\n const initialMessages = useMemo(\n () => loadPersistedMessages(projectId, sessionId),\n [projectId, sessionId]\n );\n\n useEffect(() => {\n dropLegacyMessageStore(projectId);\n }, [projectId]);\n\n // Page context is whatever the host page looks like *right now*, so it is read\n // through a ref at send time rather than captured when the transport is built.\n // Rebuilding the transport on every navigation would remount `useChat` and\n // drop an in-flight stream — in a single-page host that is one route change.\n const pageRef = useRef({\n pageUrl: config.pageUrl,\n pageTitle: config.pageTitle,\n pageContext: config.pageContext,\n });\n pageRef.current = {\n pageUrl: config.pageUrl,\n pageTitle: config.pageTitle,\n pageContext: config.pageContext,\n };\n\n const transport = useMemo(\n () =>\n new DefaultChatTransport({\n api: `${config.apiEndpoint || \"\"}/api/kb/chat`,\n headers: config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : undefined,\n // A function body is resolved per request by the AI SDK transport.\n body: () => {\n const { pageUrl, pageTitle, pageContext } = pageRef.current;\n return {\n projectId: config.projectId,\n sessionId,\n ...(pageUrl ? { pageUrl } : {}),\n ...(pageTitle ? { pageTitle } : {}),\n ...(pageContext !== undefined ? { pageContext } : {}),\n };\n },\n }),\n [config.apiEndpoint, config.apiKey, config.projectId, sessionId]\n );\n\n const {\n messages,\n sendMessage: sdkSendMessage,\n status: sdkStatus,\n error,\n stop,\n setMessages,\n regenerate,\n clearError,\n } = useChat({\n id: sessionId,\n messages: initialMessages as never,\n transport,\n onFinish: (message) => {\n callbacksRef.current?.onMessageReceived?.(message as unknown as ChatMessage);\n },\n onError: (err) => {\n callbacksRef.current?.onError?.(err);\n },\n });\n\n const status: ChatStatus = error\n ? \"error\"\n : sdkStatus === \"streaming\" || sdkStatus === \"submitted\"\n ? \"streaming\"\n : \"idle\";\n\n useEffect(() => {\n persistMessages(projectId, sessionId, messages);\n }, [messages, projectId, sessionId]);\n\n const activeTools = useMemo<ActiveTool[]>(() => {\n if (messages.length === 0) return [];\n const last = messages[messages.length - 1] as { role: string; parts?: unknown[] };\n if (last.role !== \"assistant\" || !Array.isArray(last.parts)) return [];\n return (last.parts as Array<Record<string, unknown>>)\n .filter((p) => typeof p.type === \"string\" && (p.type as string).startsWith(\"tool-\"))\n .map((p) => ({\n toolName: (p.toolName as string) || (p.type as string).replace(\"tool-\", \"\"),\n state: (p.state as ActiveTool[\"state\"]) || \"output-available\",\n args: (p.args as Record<string, unknown>) || {},\n result: p.result,\n renderMode: (p.renderMode as string) || \"inline\",\n }));\n }, [messages]);\n\n const sendMessage = useCallback(\n (content: string, files?: ChatAttachmentInput[]) => {\n // An attachment is a message on its own, so an empty string only blocks\n // the send when nothing else is going with it.\n if (!content.trim() && (!files || files.length === 0)) return;\n callbacksRef.current?.onMessageSent?.({\n id: crypto.randomUUID(),\n role: \"user\",\n content,\n } as ChatMessage);\n sdkSendMessage({\n text: content,\n ...(files && files.length > 0\n ? { files: files.map((f) => ({ ...f, type: \"file\" as const })) }\n : {}),\n });\n },\n [sdkSendMessage]\n );\n\n const stopGeneration = useCallback(() => stop(), [stop]);\n\n // `clearError` first: the error is what the UI is rendering, and leaving it\n // set would keep the failure card on screen next to the turn now streaming.\n //\n // The empty check is not defensive padding. `regenerate()` THROWS when there\n // is no message to re-run, and a host that calls `clearMessages()` while a\n // failure is on screen leaves exactly that state — no messages, error still\n // set, so the card is still rendered and still offering its button. Left\n // alone it would also be an unhandled rejection, since nothing awaits this.\n const retryLastTurn = useCallback(() => {\n clearError();\n if (messages.length === 0) return;\n regenerate().catch(() => {\n // Request failures already land in `error` via useChat's own handling;\n // this only stops a rejected promise escaping the click handler.\n });\n }, [clearError, regenerate, messages]);\n\n const newConversation = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(projectId, sessionId);\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(SESSION_KEY_PREFIX + projectId);\n } catch {\n // ignore\n }\n }\n setSessionId(getOrCreateSessionId(projectId));\n }, [projectId, sessionId, setMessages]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(projectId, sessionId);\n }, [projectId, sessionId, setMessages]);\n\n const value = useMemo<ChatContextValue>(\n () => ({\n messages: messages as unknown as ChatMessage[],\n status,\n error: error as Error | undefined,\n sessionId,\n config,\n activeTools,\n sendMessage,\n stopGeneration,\n retryLastTurn,\n newConversation,\n clearMessages,\n callbacks: callbacksRef.current,\n }),\n [\n messages,\n status,\n error,\n sessionId,\n config,\n activeTools,\n sendMessage,\n stopGeneration,\n retryLastTurn,\n newConversation,\n clearMessages,\n ]\n );\n\n return <ChatContext.Provider value={value}>{children}</ChatContext.Provider>;\n}\n\n/**\n * Returns the chat context. Must be used within a `ChatContextProvider`.\n */\nexport function useChatContext(): ChatContextValue {\n const ctx = useContext(ChatContext);\n if (!ctx) {\n throw new Error(\n \"useChatContext must be used within a ChatProvider or ChatContextProvider\"\n );\n }\n return ctx;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useI18n } from './chunk-
|
|
2
|
+
import { useI18n } from './chunk-LDQVDUUJ.js';
|
|
3
3
|
import { createContext, useState, useMemo, useContext } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -61,5 +61,5 @@ function useTheme() {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export { ThemeProvider, useTheme };
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-VQPOUMBC.js.map
|
|
65
|
+
//# sourceMappingURL=chunk-VQPOUMBC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/providers/ThemeProvider.tsx"],"names":[],"mappings":";;;;AA8CA,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAUjE,SAAS,eAAe,KAAA,EAAmC;AACzD,EAAA,MAAM,IAAA,GAA2C;AAAA,IAC/C,gBAAgB,KAAA,CAAM,YAAA;AAAA,IACtB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,mBAAmB,KAAA,CAAM,eAAA;AAAA,IACzB,aAAa,KAAA,CAAM,SAAA;AAAA,IACnB,aAAa,KAAA,CAAM,SAAA;AAAA,IACnB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,oBAAoB,KAAA,CAAM,eAAA;AAAA,IAC1B,yBAAyB,KAAA,CAAM,oBAAA;AAAA,IAC/B,8BAA8B,KAAA,CAAM,wBAAA;AAAA,IACpC,kBAAkB,KAAA,CAAM,cAAA;AAAA,IACxB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,oBAAoB,KAAA,CAAM,gBAAA;AAAA,IAC1B,oBAAoB,KAAA,CAAM,UAAA;AAAA,IAC1B,kBAAkB,KAAA,CAAM,UAAA;AAAA,IACxB,4BAA4B,KAAA,CAAM,iBAAA;AAAA,IAClC,sBAAsB,KAAA,CAAM,YAAA;AAAA,IAC5B,iCAAiC,KAAA,CAAM,sBAAA;AAAA,IACvC,4BAA4B,KAAA,CAAM;AAAA,GACpC;AAGA,EAAA,MAAM,QAAgC,EAAC;AACvC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC/C,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,IACf;AAAA,EACF;AAGA,EAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,IAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,gBAAgB,CAAA,EAAG;AACjE,MAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAOO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA,EAAO,eAAe,EAAC;AAAA,EACvB;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAsB,YAAY,CAAA;AAC5D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AAEvB,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACpC,CAAC,OAAO,SAAS;AAAA,GACnB;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OACrB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,oBAAA,EAAmB,EAAA,EAAG,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,OAAA,EAC/C,UACH,CAAA,EACF,CAAA;AAEJ;AAMO,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAA;AACT","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/providers/ThemeProvider.tsx"],"names":[],"mappings":";;;;AA8CA,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAUjE,SAAS,eAAe,KAAA,EAAmC;AACzD,EAAA,MAAM,IAAA,GAA2C;AAAA,IAC/C,gBAAgB,KAAA,CAAM,YAAA;AAAA,IACtB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,mBAAmB,KAAA,CAAM,eAAA;AAAA,IACzB,aAAa,KAAA,CAAM,SAAA;AAAA,IACnB,aAAa,KAAA,CAAM,SAAA;AAAA,IACnB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,oBAAoB,KAAA,CAAM,eAAA;AAAA,IAC1B,yBAAyB,KAAA,CAAM,oBAAA;AAAA,IAC/B,8BAA8B,KAAA,CAAM,wBAAA;AAAA,IACpC,kBAAkB,KAAA,CAAM,cAAA;AAAA,IACxB,eAAe,KAAA,CAAM,WAAA;AAAA,IACrB,oBAAoB,KAAA,CAAM,gBAAA;AAAA,IAC1B,oBAAoB,KAAA,CAAM,UAAA;AAAA,IAC1B,kBAAkB,KAAA,CAAM,UAAA;AAAA,IACxB,4BAA4B,KAAA,CAAM,iBAAA;AAAA,IAClC,sBAAsB,KAAA,CAAM,YAAA;AAAA,IAC5B,iCAAiC,KAAA,CAAM,sBAAA;AAAA,IACvC,4BAA4B,KAAA,CAAM;AAAA,GACpC;AAGA,EAAA,MAAM,QAAgC,EAAC;AACvC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC/C,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,IACf;AAAA,EACF;AAGA,EAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,IAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,gBAAgB,CAAA,EAAG;AACjE,MAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAOO,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA,EAAO,eAAe,EAAC;AAAA,EACvB;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAsB,YAAY,CAAA;AAC5D,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AAEvB,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAE5D,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACpC,CAAC,OAAO,SAAS;AAAA,GACnB;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OACrB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,oBAAA,EAAmB,EAAA,EAAG,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,OAAA,EAC/C,UACH,CAAA,EACF,CAAA;AAEJ;AAMO,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAA;AACT","file":"chunk-VQPOUMBC.js","sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useMemo,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { useI18n } from \"./I18nProvider\";\n\n/**\n * Theme configuration for the chat widget.\n */\nexport interface ThemeConfig {\n primaryColor?: string;\n accentColor?: string;\n backgroundColor?: string;\n textColor?: string;\n linkColor?: string;\n loaderColor?: string;\n userBubbleColor?: string;\n assistantBubbleColor?: string;\n assistantBubbleTextColor?: string;\n secondaryColor?: string;\n borderColor?: string;\n placeholderColor?: string;\n fontFamily?: string;\n headingFontFamily?: string;\n borderRadius?: string;\n assistantBubblePadding?: string;\n assistantMaxWidth?: string;\n /** Arbitrary CSS custom properties (key must start with `--`). */\n customProperties?: Record<string, string>;\n}\n\ninterface ThemeContextValue {\n /** Current theme configuration. */\n theme: ThemeConfig;\n /** Update the theme at runtime. */\n setTheme: (theme: ThemeConfig) => void;\n /** Current text direction derived from language. */\n direction: \"ltr\" | \"rtl\";\n}\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\n/** Props for the ThemeProvider component. */\nexport interface ThemeProviderProps {\n /** Theme configuration. */\n theme?: ThemeConfig;\n children: ReactNode;\n}\n\n/** Map a ThemeConfig to CSS custom properties. */\nfunction themeToCSSVars(theme: ThemeConfig): CSSProperties {\n const vars: Record<string, string | undefined> = {\n \"--ac-primary\": theme.primaryColor,\n \"--ac-accent\": theme.accentColor,\n \"--ac-background\": theme.backgroundColor,\n \"--ac-text\": theme.textColor,\n \"--ac-link\": theme.linkColor,\n \"--ac-loader\": theme.loaderColor,\n \"--ac-user-bubble\": theme.userBubbleColor,\n \"--ac-assistant-bubble\": theme.assistantBubbleColor,\n \"--ac-assistant-bubble-text\": theme.assistantBubbleTextColor,\n \"--ac-secondary\": theme.secondaryColor,\n \"--ac-border\": theme.borderColor,\n \"--ac-placeholder\": theme.placeholderColor,\n \"--ac-font-family\": theme.fontFamily,\n \"--ac-font-sans\": theme.fontFamily,\n \"--ac-heading-font-family\": theme.headingFontFamily,\n \"--ac-border-radius\": theme.borderRadius,\n \"--ac-assistant-bubble-padding\": theme.assistantBubblePadding,\n \"--ac-assistant-max-width\": theme.assistantMaxWidth,\n };\n\n // Strip undefined values\n const style: Record<string, string> = {};\n for (const [key, value] of Object.entries(vars)) {\n if (value !== undefined) {\n style[key] = value;\n }\n }\n\n // Merge arbitrary custom properties\n if (theme.customProperties) {\n for (const [key, value] of Object.entries(theme.customProperties)) {\n style[key] = value;\n }\n }\n\n return style as CSSProperties;\n}\n\n/**\n * Provides theme context and renders a wrapper `<div data-aigentyc-chat>`\n * that sets CSS custom properties for styling.\n * Reads direction from I18nProvider.\n */\nexport function ThemeProvider({\n theme: initialTheme = {},\n children,\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<ThemeConfig>(initialTheme);\n const i18n = useI18n();\n const direction = i18n.direction;\n\n const cssVars = useMemo(() => themeToCSSVars(theme), [theme]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, setTheme, direction }),\n [theme, direction]\n );\n\n return (\n <ThemeContext.Provider value={value}>\n <div data-aigentyc-chat=\"\" dir={direction} style={cssVars}>\n {children}\n </div>\n </ThemeContext.Provider>\n );\n}\n\n/**\n * Returns the current theme configuration and `setTheme` updater.\n * Must be used within a `ThemeProvider`.\n */\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return ctx;\n}\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// src/core/message-store.ts
|
|
5
|
+
var STORAGE_PREFIX = "chat-messages-";
|
|
6
|
+
var MAX_SIZE_BYTES = 200 * 1024;
|
|
7
|
+
var MAX_AGE_MS = 24 * 60 * 60 * 1e3;
|
|
8
|
+
function getKey(projectId, sessionId) {
|
|
9
|
+
return `${STORAGE_PREFIX}${projectId}-${sessionId}`;
|
|
10
|
+
}
|
|
11
|
+
function loadMessages(projectId, sessionId) {
|
|
12
|
+
if (typeof window === "undefined") return [];
|
|
13
|
+
try {
|
|
14
|
+
const raw = localStorage.getItem(getKey(projectId, sessionId));
|
|
15
|
+
if (!raw) return [];
|
|
16
|
+
const data = JSON.parse(raw);
|
|
17
|
+
if (Date.now() - data.timestamp > MAX_AGE_MS) {
|
|
18
|
+
localStorage.removeItem(getKey(projectId, sessionId));
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
return data.messages || [];
|
|
22
|
+
} catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function saveMessages(projectId, sessionId, messages) {
|
|
27
|
+
if (typeof window === "undefined") return;
|
|
28
|
+
try {
|
|
29
|
+
let toStore = messages;
|
|
30
|
+
const data = { messages: toStore, timestamp: Date.now() };
|
|
31
|
+
let serialized = JSON.stringify(data);
|
|
32
|
+
if (serialized.length > MAX_SIZE_BYTES && toStore.length > 20) {
|
|
33
|
+
toStore = toStore.slice(-20);
|
|
34
|
+
data.messages = toStore;
|
|
35
|
+
serialized = JSON.stringify(data);
|
|
36
|
+
}
|
|
37
|
+
localStorage.setItem(getKey(projectId, sessionId), serialized);
|
|
38
|
+
} catch {
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function clearMessages(projectId, sessionId) {
|
|
42
|
+
if (typeof window === "undefined") return;
|
|
43
|
+
try {
|
|
44
|
+
localStorage.removeItem(getKey(projectId, sessionId));
|
|
45
|
+
} catch {
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function pruneExpiredMessages() {
|
|
49
|
+
if (typeof window === "undefined") return;
|
|
50
|
+
try {
|
|
51
|
+
const keysToRemove = [];
|
|
52
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
53
|
+
const key = localStorage.key(i);
|
|
54
|
+
if (!key?.startsWith(STORAGE_PREFIX)) continue;
|
|
55
|
+
try {
|
|
56
|
+
const raw = localStorage.getItem(key);
|
|
57
|
+
if (!raw) continue;
|
|
58
|
+
const data = JSON.parse(raw);
|
|
59
|
+
if (Date.now() - data.timestamp > MAX_AGE_MS) {
|
|
60
|
+
keysToRemove.push(key);
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
keysToRemove.push(key);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const key of keysToRemove) {
|
|
67
|
+
localStorage.removeItem(key);
|
|
68
|
+
}
|
|
69
|
+
} catch {
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
var saveTimeout = null;
|
|
73
|
+
function debouncedSaveMessages(projectId, sessionId, messages, delay = 500) {
|
|
74
|
+
if (typeof window === "undefined") return;
|
|
75
|
+
if (saveTimeout) clearTimeout(saveTimeout);
|
|
76
|
+
saveTimeout = setTimeout(() => {
|
|
77
|
+
saveMessages(projectId, sessionId, messages);
|
|
78
|
+
}, delay);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.clearMessages = clearMessages;
|
|
82
|
+
exports.debouncedSaveMessages = debouncedSaveMessages;
|
|
83
|
+
exports.loadMessages = loadMessages;
|
|
84
|
+
exports.pruneExpiredMessages = pruneExpiredMessages;
|
|
85
|
+
exports.saveMessages = saveMessages;
|
|
86
|
+
//# sourceMappingURL=chunk-VYBHYFG3.cjs.map
|
|
87
|
+
//# sourceMappingURL=chunk-VYBHYFG3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/message-store.ts"],"names":[],"mappings":"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","file":"chunk-VYBHYFG3.cjs","sourcesContent":["\"use client\";\n\n/**\n * Cross-page message persistence via `localStorage`.\n *\n * Preserves conversation UI across full page navigations without\n * re-POSTing to the backend.\n *\n * All storage access is guarded against SSR — every function is a safe\n * no-op when `window` / `localStorage` is unavailable.\n */\n\nconst STORAGE_PREFIX = \"chat-messages-\";\n\n/** Maximum payload size per session (200 KB). */\nconst MAX_SIZE_BYTES = 200 * 1024;\n\n/** Messages expire after 24 hours of inactivity. */\nconst MAX_AGE_MS = 24 * 60 * 60 * 1000;\n\n/** Shape of a single persisted message. */\nexport interface StoredMessage {\n /** Message identifier */\n id: string;\n /** Role: user / assistant / system */\n role: string;\n /** Structured parts array (text, tool calls, etc.) */\n parts: unknown[];\n /** ISO-8601 creation timestamp */\n createdAt?: string;\n}\n\n/** Internal wrapper stored in localStorage. */\ninterface StoredData {\n messages: StoredMessage[];\n timestamp: number;\n}\n\n/**\n * Build the localStorage key for a given project + session pair.\n *\n * @internal\n */\nfunction getKey(projectId: string, sessionId: string): string {\n return `${STORAGE_PREFIX}${projectId}-${sessionId}`;\n}\n\n/**\n * Load persisted messages for a session.\n *\n * Returns an empty array when nothing is stored, the data is expired\n * or corrupted, or when running on the server.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n */\nexport function loadMessages(projectId: string, sessionId: string): StoredMessage[] {\n if (typeof window === \"undefined\") return [];\n\n try {\n const raw = localStorage.getItem(getKey(projectId, sessionId));\n if (!raw) return [];\n\n const data: StoredData = JSON.parse(raw);\n\n // Check expiry\n if (Date.now() - data.timestamp > MAX_AGE_MS) {\n localStorage.removeItem(getKey(projectId, sessionId));\n return [];\n }\n\n return data.messages || [];\n } catch {\n return [];\n }\n}\n\n/**\n * Save messages to localStorage.\n *\n * Trims to the last 20 messages if the serialized payload exceeds\n * `MAX_SIZE_BYTES`.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n * @param messages - Messages to persist\n */\nexport function saveMessages(\n projectId: string,\n sessionId: string,\n messages: StoredMessage[],\n): void {\n if (typeof window === \"undefined\") return;\n\n try {\n let toStore = messages;\n const data: StoredData = { messages: toStore, timestamp: Date.now() };\n let serialized = JSON.stringify(data);\n\n if (serialized.length > MAX_SIZE_BYTES && toStore.length > 20) {\n toStore = toStore.slice(-20);\n data.messages = toStore;\n serialized = JSON.stringify(data);\n }\n\n localStorage.setItem(getKey(projectId, sessionId), serialized);\n } catch {\n // localStorage full or unavailable — silently ignore\n }\n}\n\n/**\n * Clear stored messages for a session.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n */\nexport function clearMessages(projectId: string, sessionId: string): void {\n if (typeof window === \"undefined\") return;\n\n try {\n localStorage.removeItem(getKey(projectId, sessionId));\n } catch {\n // ignore\n }\n}\n\n/**\n * Prune all expired message entries from localStorage.\n *\n * Call once on widget / provider initialisation to prevent stale data\n * from accumulating.\n */\nexport function pruneExpiredMessages(): void {\n if (typeof window === \"undefined\") return;\n\n try {\n const keysToRemove: string[] = [];\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (!key?.startsWith(STORAGE_PREFIX)) continue;\n\n try {\n const raw = localStorage.getItem(key);\n if (!raw) continue;\n const data: StoredData = JSON.parse(raw);\n if (Date.now() - data.timestamp > MAX_AGE_MS) {\n keysToRemove.push(key);\n }\n } catch {\n keysToRemove.push(key!);\n }\n }\n\n for (const key of keysToRemove) {\n localStorage.removeItem(key);\n }\n } catch {\n // ignore\n }\n}\n\n/** Handle for the debounce timer. */\nlet saveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n/**\n * Debounced save — call on every `messages` change.\n *\n * Coalesces rapid updates (e.g. during streaming) into a single write.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n * @param messages - Current messages array\n * @param delay - Debounce delay in ms (default `500`)\n */\nexport function debouncedSaveMessages(\n projectId: string,\n sessionId: string,\n messages: StoredMessage[],\n delay = 500,\n): void {\n if (typeof window === \"undefined\") return;\n\n if (saveTimeout) clearTimeout(saveTimeout);\n saveTimeout = setTimeout(() => {\n saveMessages(projectId, sessionId, messages);\n }, delay);\n}\n"]}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkEMVZ7HWM_cjs = require('./chunk-EMVZ7HWM.cjs');
|
|
5
5
|
var chunk525KS5HM_cjs = require('./chunk-525KS5HM.cjs');
|
|
6
|
-
var
|
|
7
|
-
var SeparatorPrimitive = require('@radix-ui/react-separator');
|
|
6
|
+
var React2 = require('react');
|
|
8
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
10
8
|
var classVarianceAuthority = require('class-variance-authority');
|
|
11
9
|
var useEmblaCarousel = require('embla-carousel-react');
|
|
12
10
|
var lucideReact = require('lucide-react');
|
|
@@ -36,9 +34,7 @@ function _interopNamespace(e) {
|
|
|
36
34
|
return Object.freeze(n);
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
var
|
|
40
|
-
var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
|
|
41
|
-
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
|
|
37
|
+
var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
|
|
42
38
|
var useEmblaCarousel__default = /*#__PURE__*/_interopDefault(useEmblaCarousel);
|
|
43
39
|
var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
|
|
44
40
|
var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
|
|
@@ -46,40 +42,7 @@ var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive)
|
|
|
46
42
|
var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
|
|
47
43
|
var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
|
|
48
44
|
|
|
49
|
-
var
|
|
50
|
-
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
-
SeparatorPrimitive__namespace.Root,
|
|
52
|
-
{
|
|
53
|
-
ref,
|
|
54
|
-
decorative,
|
|
55
|
-
orientation,
|
|
56
|
-
className: chunk525KS5HM_cjs.cn(
|
|
57
|
-
"shrink-0 bg-border",
|
|
58
|
-
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
59
|
-
className
|
|
60
|
-
),
|
|
61
|
-
...props
|
|
62
|
-
}
|
|
63
|
-
)
|
|
64
|
-
);
|
|
65
|
-
Separator.displayName = SeparatorPrimitive__namespace.Root.displayName;
|
|
66
|
-
var TooltipProvider = TooltipPrimitive__namespace.Provider;
|
|
67
|
-
var Tooltip = TooltipPrimitive__namespace.Root;
|
|
68
|
-
var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
|
|
69
|
-
var TooltipContent = React4__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
-
TooltipPrimitive__namespace.Content,
|
|
71
|
-
{
|
|
72
|
-
ref,
|
|
73
|
-
sideOffset,
|
|
74
|
-
className: chunk525KS5HM_cjs.cn(
|
|
75
|
-
"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
|
|
76
|
-
className
|
|
77
|
-
),
|
|
78
|
-
...props
|
|
79
|
-
}
|
|
80
|
-
) }));
|
|
81
|
-
TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
|
|
82
|
-
var Input = React4__namespace.forwardRef(
|
|
45
|
+
var Input = React2__namespace.forwardRef(
|
|
83
46
|
({ className, type, ...props }, ref) => {
|
|
84
47
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
85
48
|
"input",
|
|
@@ -115,15 +78,15 @@ var badgeVariants = classVarianceAuthority.cva(
|
|
|
115
78
|
function Badge({ className, variant, ...props }) {
|
|
116
79
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk525KS5HM_cjs.cn(badgeVariants({ variant }), className), ...props });
|
|
117
80
|
}
|
|
118
|
-
var CarouselContext =
|
|
81
|
+
var CarouselContext = React2__namespace.createContext(null);
|
|
119
82
|
function useCarousel() {
|
|
120
|
-
const context =
|
|
83
|
+
const context = React2__namespace.useContext(CarouselContext);
|
|
121
84
|
if (!context) {
|
|
122
85
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
123
86
|
}
|
|
124
87
|
return context;
|
|
125
88
|
}
|
|
126
|
-
var Carousel =
|
|
89
|
+
var Carousel = React2__namespace.forwardRef(
|
|
127
90
|
({
|
|
128
91
|
orientation = "horizontal",
|
|
129
92
|
opts,
|
|
@@ -140,22 +103,22 @@ var Carousel = React4__namespace.forwardRef(
|
|
|
140
103
|
},
|
|
141
104
|
plugins
|
|
142
105
|
);
|
|
143
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
144
|
-
const [canScrollNext, setCanScrollNext] =
|
|
145
|
-
const onSelect =
|
|
106
|
+
const [canScrollPrev, setCanScrollPrev] = React2__namespace.useState(false);
|
|
107
|
+
const [canScrollNext, setCanScrollNext] = React2__namespace.useState(false);
|
|
108
|
+
const onSelect = React2__namespace.useCallback((api2) => {
|
|
146
109
|
if (!api2) {
|
|
147
110
|
return;
|
|
148
111
|
}
|
|
149
112
|
setCanScrollPrev(api2.canScrollPrev());
|
|
150
113
|
setCanScrollNext(api2.canScrollNext());
|
|
151
114
|
}, []);
|
|
152
|
-
const scrollPrev =
|
|
115
|
+
const scrollPrev = React2__namespace.useCallback(() => {
|
|
153
116
|
api?.scrollPrev();
|
|
154
117
|
}, [api]);
|
|
155
|
-
const scrollNext =
|
|
118
|
+
const scrollNext = React2__namespace.useCallback(() => {
|
|
156
119
|
api?.scrollNext();
|
|
157
120
|
}, [api]);
|
|
158
|
-
const handleKeyDown =
|
|
121
|
+
const handleKeyDown = React2__namespace.useCallback(
|
|
159
122
|
(event) => {
|
|
160
123
|
if (event.key === "ArrowLeft") {
|
|
161
124
|
event.preventDefault();
|
|
@@ -167,13 +130,13 @@ var Carousel = React4__namespace.forwardRef(
|
|
|
167
130
|
},
|
|
168
131
|
[scrollPrev, scrollNext]
|
|
169
132
|
);
|
|
170
|
-
|
|
133
|
+
React2__namespace.useEffect(() => {
|
|
171
134
|
if (!api || !setApi) {
|
|
172
135
|
return;
|
|
173
136
|
}
|
|
174
137
|
setApi(api);
|
|
175
138
|
}, [api, setApi]);
|
|
176
|
-
|
|
139
|
+
React2__namespace.useEffect(() => {
|
|
177
140
|
if (!api) {
|
|
178
141
|
return;
|
|
179
142
|
}
|
|
@@ -214,7 +177,7 @@ var Carousel = React4__namespace.forwardRef(
|
|
|
214
177
|
}
|
|
215
178
|
);
|
|
216
179
|
Carousel.displayName = "Carousel";
|
|
217
|
-
var CarouselContent =
|
|
180
|
+
var CarouselContent = React2__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
218
181
|
const { carouselRef, orientation } = useCarousel();
|
|
219
182
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
220
183
|
"div",
|
|
@@ -230,7 +193,7 @@ var CarouselContent = React4__namespace.forwardRef(({ className, ...props }, ref
|
|
|
230
193
|
) });
|
|
231
194
|
});
|
|
232
195
|
CarouselContent.displayName = "CarouselContent";
|
|
233
|
-
var CarouselItem =
|
|
196
|
+
var CarouselItem = React2__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
234
197
|
const { orientation } = useCarousel();
|
|
235
198
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
236
199
|
"div",
|
|
@@ -248,10 +211,10 @@ var CarouselItem = React4__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
248
211
|
);
|
|
249
212
|
});
|
|
250
213
|
CarouselItem.displayName = "CarouselItem";
|
|
251
|
-
var CarouselPrevious =
|
|
214
|
+
var CarouselPrevious = React2__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
252
215
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
253
216
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
254
|
-
|
|
217
|
+
chunkEMVZ7HWM_cjs.Button,
|
|
255
218
|
{
|
|
256
219
|
ref,
|
|
257
220
|
variant,
|
|
@@ -272,10 +235,10 @@ var CarouselPrevious = React4__namespace.forwardRef(({ className, variant = "out
|
|
|
272
235
|
);
|
|
273
236
|
});
|
|
274
237
|
CarouselPrevious.displayName = "CarouselPrevious";
|
|
275
|
-
var CarouselNext =
|
|
238
|
+
var CarouselNext = React2__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
276
239
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
277
240
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
278
|
-
|
|
241
|
+
chunkEMVZ7HWM_cjs.Button,
|
|
279
242
|
{
|
|
280
243
|
ref,
|
|
281
244
|
variant,
|
|
@@ -296,7 +259,7 @@ var CarouselNext = React4__namespace.forwardRef(({ className, variant = "outline
|
|
|
296
259
|
);
|
|
297
260
|
});
|
|
298
261
|
CarouselNext.displayName = "CarouselNext";
|
|
299
|
-
var ScrollArea =
|
|
262
|
+
var ScrollArea = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
300
263
|
ScrollAreaPrimitive__namespace.Root,
|
|
301
264
|
{
|
|
302
265
|
ref,
|
|
@@ -310,7 +273,7 @@ var ScrollArea = React4__namespace.forwardRef(({ className, children, ...props }
|
|
|
310
273
|
}
|
|
311
274
|
));
|
|
312
275
|
ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
|
|
313
|
-
var ScrollBar =
|
|
276
|
+
var ScrollBar = React2__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
314
277
|
ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
|
|
315
278
|
{
|
|
316
279
|
ref,
|
|
@@ -326,7 +289,7 @@ var ScrollBar = React4__namespace.forwardRef(({ className, orientation = "vertic
|
|
|
326
289
|
}
|
|
327
290
|
));
|
|
328
291
|
ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
|
|
329
|
-
var Progress =
|
|
292
|
+
var Progress = React2__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
330
293
|
ProgressPrimitive__namespace.Root,
|
|
331
294
|
{
|
|
332
295
|
ref,
|
|
@@ -359,7 +322,7 @@ var alertVariants = classVarianceAuthority.cva(
|
|
|
359
322
|
}
|
|
360
323
|
}
|
|
361
324
|
);
|
|
362
|
-
var Alert =
|
|
325
|
+
var Alert = React2__namespace.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
363
326
|
"div",
|
|
364
327
|
{
|
|
365
328
|
ref,
|
|
@@ -369,7 +332,7 @@ var Alert = React4__namespace.forwardRef(({ className, variant, ...props }, ref)
|
|
|
369
332
|
}
|
|
370
333
|
));
|
|
371
334
|
Alert.displayName = "Alert";
|
|
372
|
-
var AlertTitle =
|
|
335
|
+
var AlertTitle = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
373
336
|
"h5",
|
|
374
337
|
{
|
|
375
338
|
ref,
|
|
@@ -378,7 +341,7 @@ var AlertTitle = React4__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
|
378
341
|
}
|
|
379
342
|
));
|
|
380
343
|
AlertTitle.displayName = "AlertTitle";
|
|
381
|
-
var AlertDescription =
|
|
344
|
+
var AlertDescription = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
382
345
|
"div",
|
|
383
346
|
{
|
|
384
347
|
ref,
|
|
@@ -391,7 +354,7 @@ var Dialog = DialogPrimitive__namespace.Root;
|
|
|
391
354
|
var DialogTrigger = DialogPrimitive__namespace.Trigger;
|
|
392
355
|
var DialogPortal = DialogPrimitive__namespace.Portal;
|
|
393
356
|
var DialogClose = DialogPrimitive__namespace.Close;
|
|
394
|
-
var DialogOverlay =
|
|
357
|
+
var DialogOverlay = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
395
358
|
DialogPrimitive__namespace.Overlay,
|
|
396
359
|
{
|
|
397
360
|
ref,
|
|
@@ -403,7 +366,7 @@ var DialogOverlay = React4__namespace.forwardRef(({ className, ...props }, ref)
|
|
|
403
366
|
}
|
|
404
367
|
));
|
|
405
368
|
DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
|
|
406
|
-
var DialogContent =
|
|
369
|
+
var DialogContent = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
|
|
407
370
|
/* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
|
|
408
371
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
409
372
|
DialogPrimitive__namespace.Content,
|
|
@@ -453,7 +416,7 @@ var DialogFooter = ({
|
|
|
453
416
|
}
|
|
454
417
|
);
|
|
455
418
|
DialogFooter.displayName = "DialogFooter";
|
|
456
|
-
var DialogTitle =
|
|
419
|
+
var DialogTitle = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
457
420
|
DialogPrimitive__namespace.Title,
|
|
458
421
|
{
|
|
459
422
|
ref,
|
|
@@ -465,7 +428,7 @@ var DialogTitle = React4__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
|
465
428
|
}
|
|
466
429
|
));
|
|
467
430
|
DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
|
|
468
|
-
var DialogDescription =
|
|
431
|
+
var DialogDescription = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
469
432
|
DialogPrimitive__namespace.Description,
|
|
470
433
|
{
|
|
471
434
|
ref,
|
|
@@ -476,7 +439,7 @@ var DialogDescription = React4__namespace.forwardRef(({ className, ...props }, r
|
|
|
476
439
|
DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
|
|
477
440
|
var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
|
|
478
441
|
var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
|
|
479
|
-
var DropdownMenuSubTrigger =
|
|
442
|
+
var DropdownMenuSubTrigger = React2__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
480
443
|
DropdownMenuPrimitive__namespace.SubTrigger,
|
|
481
444
|
{
|
|
482
445
|
ref,
|
|
@@ -493,7 +456,7 @@ var DropdownMenuSubTrigger = React4__namespace.forwardRef(({ className, inset, c
|
|
|
493
456
|
}
|
|
494
457
|
));
|
|
495
458
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
|
|
496
|
-
var DropdownMenuSubContent =
|
|
459
|
+
var DropdownMenuSubContent = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
497
460
|
DropdownMenuPrimitive__namespace.SubContent,
|
|
498
461
|
{
|
|
499
462
|
ref,
|
|
@@ -505,7 +468,7 @@ var DropdownMenuSubContent = React4__namespace.forwardRef(({ className, ...props
|
|
|
505
468
|
}
|
|
506
469
|
));
|
|
507
470
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
|
|
508
|
-
var DropdownMenuContent =
|
|
471
|
+
var DropdownMenuContent = React2__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
509
472
|
DropdownMenuPrimitive__namespace.Content,
|
|
510
473
|
{
|
|
511
474
|
ref,
|
|
@@ -519,7 +482,7 @@ var DropdownMenuContent = React4__namespace.forwardRef(({ className, sideOffset
|
|
|
519
482
|
}
|
|
520
483
|
) }));
|
|
521
484
|
DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
|
|
522
|
-
var DropdownMenuItem =
|
|
485
|
+
var DropdownMenuItem = React2__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
523
486
|
DropdownMenuPrimitive__namespace.Item,
|
|
524
487
|
{
|
|
525
488
|
ref,
|
|
@@ -532,7 +495,7 @@ var DropdownMenuItem = React4__namespace.forwardRef(({ className, inset, ...prop
|
|
|
532
495
|
}
|
|
533
496
|
));
|
|
534
497
|
DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
|
|
535
|
-
var DropdownMenuCheckboxItem =
|
|
498
|
+
var DropdownMenuCheckboxItem = React2__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
536
499
|
DropdownMenuPrimitive__namespace.CheckboxItem,
|
|
537
500
|
{
|
|
538
501
|
ref,
|
|
@@ -549,7 +512,7 @@ var DropdownMenuCheckboxItem = React4__namespace.forwardRef(({ className, childr
|
|
|
549
512
|
}
|
|
550
513
|
));
|
|
551
514
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
|
|
552
|
-
var DropdownMenuRadioItem =
|
|
515
|
+
var DropdownMenuRadioItem = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
553
516
|
DropdownMenuPrimitive__namespace.RadioItem,
|
|
554
517
|
{
|
|
555
518
|
ref,
|
|
@@ -565,7 +528,7 @@ var DropdownMenuRadioItem = React4__namespace.forwardRef(({ className, children,
|
|
|
565
528
|
}
|
|
566
529
|
));
|
|
567
530
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
|
|
568
|
-
var DropdownMenuLabel =
|
|
531
|
+
var DropdownMenuLabel = React2__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
569
532
|
DropdownMenuPrimitive__namespace.Label,
|
|
570
533
|
{
|
|
571
534
|
ref,
|
|
@@ -578,7 +541,7 @@ var DropdownMenuLabel = React4__namespace.forwardRef(({ className, inset, ...pro
|
|
|
578
541
|
}
|
|
579
542
|
));
|
|
580
543
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
|
|
581
|
-
var DropdownMenuSeparator =
|
|
544
|
+
var DropdownMenuSeparator = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
582
545
|
DropdownMenuPrimitive__namespace.Separator,
|
|
583
546
|
{
|
|
584
547
|
ref,
|
|
@@ -589,7 +552,7 @@ var DropdownMenuSeparator = React4__namespace.forwardRef(({ className, ...props
|
|
|
589
552
|
DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
|
|
590
553
|
var Select = SelectPrimitive__namespace.Root;
|
|
591
554
|
var SelectValue = SelectPrimitive__namespace.Value;
|
|
592
|
-
var SelectTrigger =
|
|
555
|
+
var SelectTrigger = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
593
556
|
SelectPrimitive__namespace.Trigger,
|
|
594
557
|
{
|
|
595
558
|
ref,
|
|
@@ -605,7 +568,7 @@ var SelectTrigger = React4__namespace.forwardRef(({ className, children, ...prop
|
|
|
605
568
|
}
|
|
606
569
|
));
|
|
607
570
|
SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
|
|
608
|
-
var SelectScrollUpButton =
|
|
571
|
+
var SelectScrollUpButton = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
609
572
|
SelectPrimitive__namespace.ScrollUpButton,
|
|
610
573
|
{
|
|
611
574
|
ref,
|
|
@@ -618,7 +581,7 @@ var SelectScrollUpButton = React4__namespace.forwardRef(({ className, ...props }
|
|
|
618
581
|
}
|
|
619
582
|
));
|
|
620
583
|
SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
|
|
621
|
-
var SelectScrollDownButton =
|
|
584
|
+
var SelectScrollDownButton = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
622
585
|
SelectPrimitive__namespace.ScrollDownButton,
|
|
623
586
|
{
|
|
624
587
|
ref,
|
|
@@ -631,7 +594,7 @@ var SelectScrollDownButton = React4__namespace.forwardRef(({ className, ...props
|
|
|
631
594
|
}
|
|
632
595
|
));
|
|
633
596
|
SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
|
|
634
|
-
var SelectContent =
|
|
597
|
+
var SelectContent = React2__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
635
598
|
SelectPrimitive__namespace.Content,
|
|
636
599
|
{
|
|
637
600
|
ref,
|
|
@@ -659,7 +622,7 @@ var SelectContent = React4__namespace.forwardRef(({ className, children, positio
|
|
|
659
622
|
}
|
|
660
623
|
) }));
|
|
661
624
|
SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
|
|
662
|
-
var SelectLabel =
|
|
625
|
+
var SelectLabel = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
663
626
|
SelectPrimitive__namespace.Label,
|
|
664
627
|
{
|
|
665
628
|
ref,
|
|
@@ -668,7 +631,7 @@ var SelectLabel = React4__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
|
668
631
|
}
|
|
669
632
|
));
|
|
670
633
|
SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
|
|
671
|
-
var SelectItem =
|
|
634
|
+
var SelectItem = React2__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
672
635
|
SelectPrimitive__namespace.Item,
|
|
673
636
|
{
|
|
674
637
|
ref,
|
|
@@ -684,7 +647,7 @@ var SelectItem = React4__namespace.forwardRef(({ className, children, ...props }
|
|
|
684
647
|
}
|
|
685
648
|
));
|
|
686
649
|
SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
|
|
687
|
-
var SelectSeparator =
|
|
650
|
+
var SelectSeparator = React2__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
688
651
|
SelectPrimitive__namespace.Separator,
|
|
689
652
|
{
|
|
690
653
|
ref,
|
|
@@ -726,10 +689,5 @@ exports.SelectContent = SelectContent;
|
|
|
726
689
|
exports.SelectItem = SelectItem;
|
|
727
690
|
exports.SelectTrigger = SelectTrigger;
|
|
728
691
|
exports.SelectValue = SelectValue;
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
exports.TooltipContent = TooltipContent;
|
|
732
|
-
exports.TooltipProvider = TooltipProvider;
|
|
733
|
-
exports.TooltipTrigger = TooltipTrigger;
|
|
734
|
-
//# sourceMappingURL=chunk-OU5OZKYH.cjs.map
|
|
735
|
-
//# sourceMappingURL=chunk-OU5OZKYH.cjs.map
|
|
692
|
+
//# sourceMappingURL=chunk-Y4B45DW4.cjs.map
|
|
693
|
+
//# sourceMappingURL=chunk-Y4B45DW4.cjs.map
|