@ctonti/ask-golf-veneto 1.0.5 → 1.0.6
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/dist/{app-a0BueseU.mjs → app-Bc1Wuyn1.mjs} +25 -19
- package/dist/app-Bc1Wuyn1.mjs.map +1 -0
- package/dist/browser.js +24 -18
- package/dist/browser.js.map +1 -1
- package/dist/exports/client.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/styles.css +77 -91
- package/package.json +1 -1
- package/dist/app-a0BueseU.mjs.map +0 -1
|
@@ -13,40 +13,46 @@ function Intro() {
|
|
|
13
13
|
const { contents, append } = useContext(ChatContext);
|
|
14
14
|
const title = contents.intro?.title || "Progetta la tua <em>vacanza golf</em> in Veneto";
|
|
15
15
|
return /* @__PURE__ */ jsxs("section", {
|
|
16
|
-
className: "relative flex min-h-[calc(100vh-
|
|
16
|
+
className: "relative flex min-h-[calc(100vh-80px)] w-full flex-col items-center justify-center py-12 px-6 bg-[#faf8f3] text-[#213f31] overflow-hidden",
|
|
17
17
|
children: [
|
|
18
|
-
/* @__PURE__ */ jsx("div", { className: "absolute
|
|
19
|
-
/* @__PURE__ */ jsx("div", { className: "absolute
|
|
18
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-24 -right-24 w-96 h-96 rounded-full bg-[#213f31]/5 pointer-events-none" }),
|
|
19
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-24 -left-24 w-96 h-96 rounded-full bg-[#478264]/5 pointer-events-none" }),
|
|
20
20
|
/* @__PURE__ */ jsxs("div", {
|
|
21
|
-
className: "relative z-10 w-full max-w-
|
|
21
|
+
className: "relative z-10 w-full max-w-4xl mx-auto flex flex-col items-center gap-8 text-center",
|
|
22
22
|
children: [
|
|
23
23
|
/* @__PURE__ */ jsxs("div", {
|
|
24
|
-
className: "
|
|
25
|
-
children: [
|
|
26
|
-
className: "text-
|
|
27
|
-
|
|
28
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
29
|
-
className: "text-[#e8d9c0] font-sans text-lg md:text-xl font-light uppercase tracking-widest mt-4",
|
|
30
|
-
children: "Il tuo concierge di viaggio personalizzato"
|
|
24
|
+
className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-[#213f31]/10 border border-[#213f31]/20",
|
|
25
|
+
children: [/* @__PURE__ */ jsx("span", { className: "w-2 h-2 rounded-full bg-[#34674e]" }), /* @__PURE__ */ jsx("span", {
|
|
26
|
+
className: "text-[#213f31] font-sans text-xs font-semibold uppercase tracking-[0.25em]",
|
|
27
|
+
children: "Concierge Ufficiale Golf in Veneto"
|
|
31
28
|
})]
|
|
32
29
|
}),
|
|
30
|
+
title && /* @__PURE__ */ jsx("h1", {
|
|
31
|
+
className: "text-4xl @md:text-6xl @lg:text-7xl font-normal leading-[1.15] font-heading italic text-[#213f31] drop-shadow-sm max-w-3xl",
|
|
32
|
+
dangerouslySetInnerHTML: { __html: title }
|
|
33
|
+
}),
|
|
34
|
+
/* @__PURE__ */ jsx("p", {
|
|
35
|
+
className: "font-sans text-[#213f31]/80 text-base @md:text-lg max-w-2xl font-light leading-relaxed",
|
|
36
|
+
children: "Un consulente dedicato per disegnare il tuo itinerario su misura: campi da golf affiliati, eccellenze enogastronomiche, arte e relax."
|
|
37
|
+
}),
|
|
33
38
|
/* @__PURE__ */ jsx("div", {
|
|
34
|
-
className: "w-full
|
|
39
|
+
className: "w-full max-w-2xl mt-2 bg-white rounded-2xl p-4 shadow-xl border border-[#e8d9c0]",
|
|
35
40
|
children: /* @__PURE__ */ jsx(PromptIntro, {})
|
|
36
41
|
}),
|
|
37
42
|
/* @__PURE__ */ jsx("div", {
|
|
38
|
-
className: "flex flex-wrap items-center justify-center gap-
|
|
43
|
+
className: "flex flex-wrap items-center justify-center gap-2.5 mt-2 max-w-3xl",
|
|
39
44
|
children: [
|
|
40
|
-
"5 giorni golf e
|
|
41
|
-
"Weekend romantico
|
|
42
|
-
"
|
|
43
|
-
"Tour dei migliori
|
|
45
|
+
"5 giorni tra golf d'eccellenza e Prosecco",
|
|
46
|
+
"Weekend romantico: Golf al Lido & Venezia",
|
|
47
|
+
"Golf, Terme ed Enogastronomia nei Colli Euganei",
|
|
48
|
+
"Tour dei migliori 15 Golf Club del Veneto"
|
|
44
49
|
].map((prompt, i) => /* @__PURE__ */ jsx("button", {
|
|
50
|
+
type: "button",
|
|
45
51
|
onClick: () => append?.({
|
|
46
52
|
role: "user",
|
|
47
53
|
content: prompt
|
|
48
54
|
}),
|
|
49
|
-
className: "px-
|
|
55
|
+
className: "px-4 py-2 rounded-full bg-[#213f31]/5 hover:bg-[#213f31] text-[#213f31] hover:text-[#faf8f3] text-xs font-medium border border-[#213f31]/15 transition-all duration-200 cursor-pointer shadow-sm",
|
|
50
56
|
children: prompt
|
|
51
57
|
}, i))
|
|
52
58
|
})
|
|
@@ -176,4 +182,4 @@ function getHtmlLang() {
|
|
|
176
182
|
//#endregion
|
|
177
183
|
export { Preview as a, Renderer$1 as i, Chat as n, PreviewRenderer as o, COMPONENTS as r, Main as s, App as t };
|
|
178
184
|
|
|
179
|
-
//# sourceMappingURL=app-
|
|
185
|
+
//# sourceMappingURL=app-Bc1Wuyn1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-Bc1Wuyn1.mjs","names":["Renderer","JsonRenderer"],"sources":["../src/components/intro.tsx","../src/components/main.tsx","../src/components/preview.tsx","../src/components/renderer.tsx","../src/components.ts","../src/components/chat.tsx","../src/components/app.tsx"],"sourcesContent":["'use client';\n\nimport { ChatContext, ComponentsContext } from '@websolutespa/ask-plugin';\nimport { useContext } from 'react';\n\nexport function Intro() {\n const { PromptIntro } = useContext(ComponentsContext);\n const { contents, append } = useContext(ChatContext);\n const title =\n contents.intro?.title || 'Progetta la tua <em>vacanza golf</em> in Veneto';\n\n const prompts = [\n \"5 giorni tra golf d'eccellenza e Prosecco\",\n \"Weekend romantico: Golf al Lido & Venezia\",\n \"Golf, Terme ed Enogastronomia nei Colli Euganei\",\n \"Tour dei migliori 15 Golf Club del Veneto\"\n ];\n\n return (\n <section className=\"relative flex min-h-[calc(100vh-80px)] w-full flex-col items-center justify-center py-12 px-6 bg-[#faf8f3] text-[#213f31] overflow-hidden\">\n {/* Decorative Brand Circles */}\n <div className=\"absolute -top-24 -right-24 w-96 h-96 rounded-full bg-[#213f31]/5 pointer-events-none\" />\n <div className=\"absolute -bottom-24 -left-24 w-96 h-96 rounded-full bg-[#478264]/5 pointer-events-none\" />\n\n <div className=\"relative z-10 w-full max-w-4xl mx-auto flex flex-col items-center gap-8 text-center\">\n {/* Subtitle Badge */}\n <div className=\"inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-[#213f31]/10 border border-[#213f31]/20\">\n <span className=\"w-2 h-2 rounded-full bg-[#34674e]\" />\n <span className=\"text-[#213f31] font-sans text-xs font-semibold uppercase tracking-[0.25em]\">\n Concierge Ufficiale Golf in Veneto\n </span>\n </div>\n\n {/* Main Title */}\n {title && (\n <h1\n className=\"text-4xl @md:text-6xl @lg:text-7xl font-normal leading-[1.15] font-heading italic text-[#213f31] drop-shadow-sm max-w-3xl\"\n dangerouslySetInnerHTML={{ __html: title }}\n />\n )}\n\n <p className=\"font-sans text-[#213f31]/80 text-base @md:text-lg max-w-2xl font-light leading-relaxed\">\n Un consulente dedicato per disegnare il tuo itinerario su misura: campi da golf affiliati, eccellenze enogastronomiche, arte e relax.\n </p>\n\n {/* Prompt Input Container */}\n <div className=\"w-full max-w-2xl mt-2 bg-white rounded-2xl p-4 shadow-xl border border-[#e8d9c0]\">\n <PromptIntro />\n </div>\n\n {/* Suggested Prompt Chips */}\n <div className=\"flex flex-wrap items-center justify-center gap-2.5 mt-2 max-w-3xl\">\n {prompts.map((prompt, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => append?.({ role: 'user', content: prompt })}\n className=\"px-4 py-2 rounded-full bg-[#213f31]/5 hover:bg-[#213f31] text-[#213f31] hover:text-[#faf8f3] text-xs font-medium border border-[#213f31]/15 transition-all duration-200 cursor-pointer shadow-sm\"\n >\n {prompt}\n </button>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { ChatContext, ComponentsContext } from '@websolutespa/ask-plugin';\nimport { useContext } from 'react';\n\nexport function Main() {\n const { Intro, Thread } = useContext(ComponentsContext);\n const { shouldShowIntro } = useContext(ChatContext);\n return (\n <div className=\"w-full min-h-svh flex flex-col gap-8 bg-background text-foreground\">\n {shouldShowIntro ? <Intro /> : <Thread />}\n </div>\n );\n}\n","'use client';\n\nimport { Spec } from '@json-render/core';\nimport { ComponentsContext, ComponentsProvider } from '@websolutespa/ask-plugin';\nimport { cn } from '@websolutespa/ask-ui';\nimport { Toaster } from '@websolutespa/ask-ui/components/sonner';\nimport { useContext } from 'react';\nimport { COMPONENTS } from '../components';\n\nexport function Preview({ spec }: { spec?: Spec | null }) {\n return (\n <ComponentsProvider components={COMPONENTS}>\n <PreviewRenderer spec={spec} />\n <Toaster />\n </ComponentsProvider>\n );\n}\n\nexport function PreviewRenderer({\n spec,\n className,\n}: {\n spec?: Spec | null;\n className?: string;\n}) {\n const { Renderer } = useContext(ComponentsContext);\n return (\n <div className={cn('w-full flex flex-col gap-10 py-5 @md:gap-20 @md:py-10', className)}>\n {spec ? <Renderer spec={spec} /> : <div>Spec not provided</div>}\n </div>\n );\n}\n","'use client';\n\nimport { Spec } from '@json-render/core';\nimport {\n ActionProvider,\n Renderer as JsonRenderer,\n StateProvider,\n VisibilityProvider,\n} from '@json-render/react';\nimport { ComponentsContext } from '@websolutespa/ask-plugin';\nimport { useContext } from 'react';\nimport { toast } from 'sonner';\n// IMPORTANT: import YOUR OWN registry so your custom blocks are rendered.\nimport { registry } from '../registry';\n\nexport function Renderer({\n spec,\n isStreaming = false,\n mounted = false,\n}: {\n spec?: Spec | null;\n isStreaming?: boolean;\n mounted?: boolean;\n}) {\n const { Fallback } = useContext(ComponentsContext);\n if (!spec) {\n return;\n }\n return (\n <StateProvider initialState={spec.state ?? {}}>\n <VisibilityProvider>\n <ActionProvider\n handlers={{\n linkClick: async (params) => {\n const href = (params?.href as string) || '#';\n if (mounted) {\n const { url } = params as { url?: string };\n if (url) window.open(url, '_blank', 'noopener,noreferrer');\n } else {\n toast.info(`Navigating to: ${href}`);\n }\n },\n }}\n >\n <JsonRenderer\n spec={spec}\n registry={registry}\n fallback={Fallback}\n loading={isStreaming}\n />\n </ActionProvider>\n </VisibilityProvider>\n </StateProvider>\n );\n}\n","import { App } from './components/app';\nimport { Chat } from './components/chat';\nimport { Intro } from './components/intro';\nimport { Main } from './components/main';\nimport { Preview } from './components/preview';\nimport { Renderer } from './components/renderer';\n\n// Components injected into the shared chat engine via ComponentsProvider.\n// Only list what you override; everything else falls back to @websolutespa/ask-plugin.\nexport const COMPONENTS = {\n App,\n Chat,\n Intro,\n Main,\n Preview,\n Renderer,\n};\n\nexport type Components = typeof COMPONENTS;\n\nexport * from './components/app';\nexport * from './components/chat';\nexport * from './components/main';\nexport * from './components/preview';\nexport * from './components/renderer';\n","'use client';\n\nimport {\n ChatProvider,\n ChatProviderProps,\n ComponentsProvider,\n ViewProvider,\n} from '@websolutespa/ask-plugin';\nimport { Toaster } from '@websolutespa/ask-ui/components/sonner';\nimport { COMPONENTS } from '../components';\nimport { Main } from './main';\n\nexport function Chat({ appKey, apiKey, ...props }: Partial<ChatProviderProps>) {\n if (!appKey) {\n return <div>appKey not defined</div>;\n }\n if (!apiKey) {\n return <div>apiKey not defined</div>;\n }\n return (\n <ComponentsProvider components={COMPONENTS}>\n <ChatProvider appKey={appKey} apiKey={apiKey} {...props}>\n <ViewProvider>\n <Main />\n <Toaster />\n </ViewProvider>\n </ChatProvider>\n </ComponentsProvider>\n );\n}\n","'use client';\n\nimport type { PageData, PluginOptions } from '@websolutespa/ask-plugin';\nimport { TooltipProvider } from '@websolutespa/ask-ui/components/tooltip';\nimport { useMemo } from 'react';\nimport { Chat } from './chat';\nimport { Preview } from './preview';\n\nexport type AppProps = PluginOptions;\n\nexport const App = (props: AppProps) => {\n const _data = useMemo<PageData>(() => {\n if (typeof window !== 'undefined') {\n const htmlLang = getHtmlLang();\n const title = document.querySelector('title');\n const description = document.querySelector('meta[name=\"description\"]');\n const canonical = document.querySelector('link[rel=\"canonical\"]');\n return {\n locale: htmlLang?.locale || 'it',\n market: htmlLang?.market || 'ww',\n origin: window.origin,\n canonical: canonical?.getAttribute('href') || window.location.href,\n title: title ? title.innerText : 'Untitled',\n description: description?.getAttribute('content') || '',\n slug: window.location.pathname,\n };\n }\n return {\n locale: 'it',\n market: 'ww',\n origin: '',\n canonical: '',\n title: 'Untitled',\n description: '',\n slug: '',\n };\n }, []);\n\n return (\n <div className=\"@container w-full\">\n <TooltipProvider>\n {props.preview ? (\n <Preview spec={props.initialSpec} />\n ) : (\n <Chat {...props} />\n )}\n </TooltipProvider>\n </div>\n );\n};\n\nfunction getHtmlLang(): { locale: string; market: string } | undefined {\n const html = document.querySelector('html');\n const htmlLang = html?.getAttribute('lang');\n if (htmlLang) {\n const segments = htmlLang.toLowerCase().split('-');\n return { locale: segments[0], market: segments[1] || 'ww' };\n }\n return undefined;\n}\n"],"mappings":"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"}
|
package/dist/browser.js
CHANGED
|
@@ -69139,40 +69139,46 @@ function Intro() {
|
|
|
69139
69139
|
const { contents, append } = (0, import_react.useContext)(ChatContext);
|
|
69140
69140
|
const title = contents.intro?.title || "Progetta la tua <em>vacanza golf</em> in Veneto";
|
|
69141
69141
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
|
|
69142
|
-
className: "relative flex min-h-[calc(100vh-
|
|
69142
|
+
className: "relative flex min-h-[calc(100vh-80px)] w-full flex-col items-center justify-center py-12 px-6 bg-[#faf8f3] text-[#213f31] overflow-hidden",
|
|
69143
69143
|
children: [
|
|
69144
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute
|
|
69145
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute
|
|
69144
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute -top-24 -right-24 w-96 h-96 rounded-full bg-[#213f31]/5 pointer-events-none" }),
|
|
69145
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute -bottom-24 -left-24 w-96 h-96 rounded-full bg-[#478264]/5 pointer-events-none" }),
|
|
69146
69146
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
69147
|
-
className: "relative z-10 w-full max-w-
|
|
69147
|
+
className: "relative z-10 w-full max-w-4xl mx-auto flex flex-col items-center gap-8 text-center",
|
|
69148
69148
|
children: [
|
|
69149
69149
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
69150
|
-
className: "
|
|
69151
|
-
children: [
|
|
69152
|
-
className: "text-
|
|
69153
|
-
|
|
69154
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
69155
|
-
className: "text-[#e8d9c0] font-sans text-lg md:text-xl font-light uppercase tracking-widest mt-4",
|
|
69156
|
-
children: "Il tuo concierge di viaggio personalizzato"
|
|
69150
|
+
className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-[#213f31]/10 border border-[#213f31]/20",
|
|
69151
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "w-2 h-2 rounded-full bg-[#34674e]" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
69152
|
+
className: "text-[#213f31] font-sans text-xs font-semibold uppercase tracking-[0.25em]",
|
|
69153
|
+
children: "Concierge Ufficiale Golf in Veneto"
|
|
69157
69154
|
})]
|
|
69158
69155
|
}),
|
|
69156
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
69157
|
+
className: "text-4xl @md:text-6xl @lg:text-7xl font-normal leading-[1.15] font-heading italic text-[#213f31] drop-shadow-sm max-w-3xl",
|
|
69158
|
+
dangerouslySetInnerHTML: { __html: title }
|
|
69159
|
+
}),
|
|
69160
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
69161
|
+
className: "font-sans text-[#213f31]/80 text-base @md:text-lg max-w-2xl font-light leading-relaxed",
|
|
69162
|
+
children: "Un consulente dedicato per disegnare il tuo itinerario su misura: campi da golf affiliati, eccellenze enogastronomiche, arte e relax."
|
|
69163
|
+
}),
|
|
69159
69164
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
69160
|
-
className: "w-full
|
|
69165
|
+
className: "w-full max-w-2xl mt-2 bg-white rounded-2xl p-4 shadow-xl border border-[#e8d9c0]",
|
|
69161
69166
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PromptIntro, {})
|
|
69162
69167
|
}),
|
|
69163
69168
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
69164
|
-
className: "flex flex-wrap items-center justify-center gap-
|
|
69169
|
+
className: "flex flex-wrap items-center justify-center gap-2.5 mt-2 max-w-3xl",
|
|
69165
69170
|
children: [
|
|
69166
|
-
"5 giorni golf e
|
|
69167
|
-
"Weekend romantico
|
|
69168
|
-
"
|
|
69169
|
-
"Tour dei migliori
|
|
69171
|
+
"5 giorni tra golf d'eccellenza e Prosecco",
|
|
69172
|
+
"Weekend romantico: Golf al Lido & Venezia",
|
|
69173
|
+
"Golf, Terme ed Enogastronomia nei Colli Euganei",
|
|
69174
|
+
"Tour dei migliori 15 Golf Club del Veneto"
|
|
69170
69175
|
].map((prompt, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
69176
|
+
type: "button",
|
|
69171
69177
|
onClick: () => append?.({
|
|
69172
69178
|
role: "user",
|
|
69173
69179
|
content: prompt
|
|
69174
69180
|
}),
|
|
69175
|
-
className: "px-
|
|
69181
|
+
className: "px-4 py-2 rounded-full bg-[#213f31]/5 hover:bg-[#213f31] text-[#213f31] hover:text-[#faf8f3] text-xs font-medium border border-[#213f31]/15 transition-all duration-200 cursor-pointer shadow-sm",
|
|
69176
69182
|
children: prompt
|
|
69177
69183
|
}, i))
|
|
69178
69184
|
})
|