@ctonti/ask-golf-veneto 1.0.0 → 1.0.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 (39) hide show
  1. package/dist/{app-0PjpnX92.d.mts → app-DRsYYNT9.d.mts} +1 -1
  2. package/dist/{app-DzCpb5z9.d.cts.map → app-DRsYYNT9.d.mts.map} +1 -1
  3. package/dist/browser.d.ts +5599 -0
  4. package/dist/browser.d.ts.map +1 -0
  5. package/dist/browser.js +70787 -0
  6. package/dist/browser.js.map +1 -0
  7. package/dist/exports/client.d.mts +1 -1
  8. package/dist/index.d.mts +8 -3
  9. package/dist/index.d.mts.map +1 -0
  10. package/dist/index.mjs +9 -1
  11. package/dist/index.mjs.map +1 -0
  12. package/package.json +13 -30
  13. package/dist/app-0PjpnX92.d.mts.map +0 -1
  14. package/dist/app-Daoze0po.cjs +0 -189
  15. package/dist/app-DzCpb5z9.d.cts +0 -16
  16. package/dist/catalog-englM86y.cjs +0 -362
  17. package/dist/exports/browser.cjs +0 -3
  18. package/dist/exports/browser.d.cts +0 -2
  19. package/dist/exports/browser.d.mts +0 -2
  20. package/dist/exports/browser.mjs +0 -2
  21. package/dist/exports/catalog.cjs +0 -5
  22. package/dist/exports/catalog.d.cts +0 -676
  23. package/dist/exports/catalog.d.cts.map +0 -1
  24. package/dist/exports/client.cjs +0 -10
  25. package/dist/exports/client.d.cts +0 -48
  26. package/dist/exports/client.d.cts.map +0 -1
  27. package/dist/exports/registry.cjs +0 -6
  28. package/dist/exports/registry.d.cts +0 -12
  29. package/dist/exports/registry.d.cts.map +0 -1
  30. package/dist/index.cjs +0 -6
  31. package/dist/index.d.cts +0 -3
  32. package/dist/plugin-B0vGrWcM.d.cts +0 -7
  33. package/dist/plugin-B0vGrWcM.d.cts.map +0 -1
  34. package/dist/plugin-BdhObzU8.cjs +0 -14
  35. package/dist/plugin-DYfnXStA.mjs +0 -11
  36. package/dist/plugin-DYfnXStA.mjs.map +0 -1
  37. package/dist/plugin-X9b5Ujac.d.mts +0 -7
  38. package/dist/plugin-X9b5Ujac.d.mts.map +0 -1
  39. package/dist/registry-E8Of7gsT.cjs +0 -1261
@@ -1,4 +1,4 @@
1
- import { n as AppProps, r as Chat, t as App } from "../app-0PjpnX92.mjs";
1
+ import { n as AppProps, r as Chat, t as App } from "../app-DRsYYNT9.mjs";
2
2
  import * as _$react from "react";
3
3
  import { Spec } from "@json-render/core";
4
4
 
package/dist/index.d.mts CHANGED
@@ -1,3 +1,8 @@
1
- import { t as askGolfVeneto } from "./plugin-X9b5Ujac.mjs";
2
- import { n as AppProps, r as Chat, t as App } from "./app-0PjpnX92.mjs";
3
- export { App, AppProps, Chat, askGolfVeneto };
1
+ import { n as AppProps, r as Chat, t as App } from "./app-DRsYYNT9.mjs";
2
+ import * as _$_websolutespa_ask_plugin0 from "@websolutespa/ask-plugin";
3
+
4
+ //#region src/plugin.d.ts
5
+ declare const askGolfVeneto: (props: _$_websolutespa_ask_plugin0.PluginOptions) => _$_websolutespa_ask_plugin0.PluginInstance | undefined;
6
+ //#endregion
7
+ export { App, AppProps, Chat, askGolfVeneto };
8
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/plugin.tsx"],"mappings":";;;;cAOa,aAAA,GAAa,KAAA,EAGxB,2BAAA,CAHwB,aAAA,KAAA,2BAAA,CAAA,cAAA"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,11 @@
1
1
  import { n as Chat, t as App } from "./app-DWg095Qd.mjs";
2
- import { t as askGolfVeneto } from "./plugin-DYfnXStA.mjs";
2
+ import { initializeAskPlugin } from "@websolutespa/ask-plugin";
3
+ //#region src/plugin.tsx
4
+ const askGolfVeneto = initializeAskPlugin({
5
+ globalName: "askGolfVeneto",
6
+ App
7
+ });
8
+ //#endregion
3
9
  export { App, Chat, askGolfVeneto };
10
+
11
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/plugin.tsx"],"sourcesContent":["'use client';\n\nimport { initializeAskPlugin } from '@websolutespa/ask-plugin';\nimport { App } from './components/app';\n\n// The globalName MUST equal the unscoped package name in camelCase.\n// Package \"@ctonti/ask-golf-veneto\" -> globalName \"askGolfVeneto\", tag \"<ask-golf-veneto>\".\nexport const askGolfVeneto = initializeAskPlugin({\n globalName: 'askGolfVeneto',\n App,\n});\n"],"mappings":";;;AAOA,MAAa,gBAAgB,oBAAoB;CAC/C,YAAY;CACZ;CACD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ctonti/ask-golf-veneto",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Ask Golf in Veneto - Consulente di viaggio golf custom plugin",
5
5
  "type": "module",
6
6
  "files": [
@@ -65,38 +65,21 @@
65
65
  "tsdown": "^0.21.7",
66
66
  "typescript": "^5.9.3"
67
67
  },
68
- "prepack": {
69
- "exports": {
70
- ".": {
71
- "import": "./dist/index.mjs",
72
- "types": "./dist/index.d.mts",
73
- "default": "./dist/index.mjs"
74
- },
75
- "./browser": "./dist/browser.js",
76
- "./catalog": "./dist/exports/catalog.mjs",
77
- "./client": "./dist/exports/client.mjs",
78
- "./registry": "./dist/exports/registry.mjs",
79
- "./postcss.config": "./dist/postcss.config.mjs",
80
- "./globals.css": "./dist/globals.css",
81
- "./styles.css": "./dist/styles.css"
82
- },
83
- "main": "./dist/index.mjs",
84
- "types": "./dist/index.d.mts"
85
- },
86
68
  "exports": {
87
69
  ".": {
88
- "import": "./src/index.ts",
89
- "types": "./src/index.ts",
90
- "default": "./src/index.ts"
70
+ "import": "./dist/index.mjs",
71
+ "types": "./dist/index.d.mts",
72
+ "default": "./dist/index.mjs"
91
73
  },
92
- "./browser": "./src/exports/browser.ts",
93
- "./catalog": "./src/exports/catalog.ts",
94
- "./client": "./src/exports/client.ts",
95
- "./registry": "./src/exports/registry.ts",
96
- "./postcss.config": "./postcss.config.mjs",
97
- "./globals.css": "./src/globals.css"
74
+ "./browser": "./dist/exports/browser.mjs",
75
+ "./catalog": "./dist/exports/catalog.mjs",
76
+ "./client": "./dist/exports/client.mjs",
77
+ "./registry": "./dist/exports/registry.mjs",
78
+ "./postcss.config": "./dist/postcss.config.mjs",
79
+ "./globals.css": "./dist/globals.css",
80
+ "./styles.css": "./dist/styles.css"
98
81
  },
99
- "main": "./src/index.ts",
100
- "types": "./src/index.ts",
82
+ "main": "./dist/index.mjs",
83
+ "types": "./dist/index.d.mts",
101
84
  "registry": "https://registry.npmjs.org/"
102
85
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-0PjpnX92.d.mts","names":[],"sources":["../src/components/chat.tsx","../src/components/app.tsx"],"mappings":";;;;iBAYgB,IAAA,CAAA;EAAO,MAAA;EAAQ,MAAA;EAAA,GAAW;AAAA,GAAS,OAAA,CAAQ,iBAAA,IAAkB,OAAA,CAAA,GAAA,CAAA,OAAA;;;KCJjE,QAAA,GAAW,aAAA;AAAA,cAEV,GAAA,GAAO,KAAA,EAAO,QAAA,KAAQ,OAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,189 +0,0 @@
1
- const require_registry = require("./registry-E8Of7gsT.cjs");
2
- let _websolutespa_ask_ui_components_tooltip = require("@websolutespa/ask-ui/components/tooltip");
3
- let react = require("react");
4
- let _websolutespa_ask_plugin = require("@websolutespa/ask-plugin");
5
- let _websolutespa_ask_ui_components_sonner = require("@websolutespa/ask-ui/components/sonner");
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
- let _websolutespa_ask_ui = require("@websolutespa/ask-ui");
8
- let _json_render_react = require("@json-render/react");
9
- let sonner = require("sonner");
10
- //#region src/components/intro.tsx
11
- function Intro() {
12
- const { PromptIntro } = (0, react.useContext)(_websolutespa_ask_plugin.ComponentsContext);
13
- const { contents } = (0, react.useContext)(_websolutespa_ask_plugin.ChatContext);
14
- const title = contents.intro?.title || "Progetta la tua <em>vacanza golf</em> in Veneto";
15
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", {
16
- className: "relative flex min-h-[calc(100vh-115px)] flex-col items-center justify-center gap-8 bg-background text-foreground",
17
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
18
- className: "relative w-full max-w-215 p-2",
19
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
20
- className: "flex flex-col gap-20",
21
- children: [title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
22
- className: "text-center text-[40px] font-thin leading-[1.45] tracking-[-0.02em] font-heading italic text-primary",
23
- dangerouslySetInnerHTML: { __html: title }
24
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PromptIntro, {})]
25
- })
26
- })
27
- });
28
- }
29
- //#endregion
30
- //#region src/components/main.tsx
31
- function Main() {
32
- const { Intro, Thread } = (0, react.useContext)(_websolutespa_ask_plugin.ComponentsContext);
33
- const { shouldShowIntro } = (0, react.useContext)(_websolutespa_ask_plugin.ChatContext);
34
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
35
- className: "w-full min-h-svh flex flex-col gap-8 bg-background text-foreground",
36
- children: shouldShowIntro ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Intro, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Thread, {})
37
- });
38
- }
39
- //#endregion
40
- //#region src/components/preview.tsx
41
- function Preview({ spec }) {
42
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_websolutespa_ask_plugin.ComponentsProvider, {
43
- components: COMPONENTS,
44
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PreviewRenderer, { spec }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_sonner.Toaster, {})]
45
- });
46
- }
47
- function PreviewRenderer({ spec, className }) {
48
- const { Renderer } = (0, react.useContext)(_websolutespa_ask_plugin.ComponentsContext);
49
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50
- className: (0, _websolutespa_ask_ui.cn)("w-full flex flex-col gap-10 py-5 @md:gap-20 @md:py-10", className),
51
- children: spec ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Renderer, { spec }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: "Spec not provided" })
52
- });
53
- }
54
- //#endregion
55
- //#region src/components/renderer.tsx
56
- function Renderer({ spec, isStreaming = false, mounted = false }) {
57
- const { Fallback } = (0, react.useContext)(_websolutespa_ask_plugin.ComponentsContext);
58
- if (!spec) return;
59
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_json_render_react.StateProvider, {
60
- initialState: spec.state ?? {},
61
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_json_render_react.VisibilityProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_json_render_react.ActionProvider, {
62
- handlers: { linkClick: async (params) => {
63
- const href = params?.href || "#";
64
- if (mounted) {
65
- const { url } = params;
66
- if (url) window.open(url, "_blank", "noopener,noreferrer");
67
- } else sonner.toast.info(`Navigating to: ${href}`);
68
- } },
69
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_json_render_react.Renderer, {
70
- spec,
71
- registry: require_registry.registry,
72
- fallback: Fallback,
73
- loading: isStreaming
74
- })
75
- }) })
76
- });
77
- }
78
- //#endregion
79
- //#region src/components.ts
80
- const COMPONENTS = {
81
- App,
82
- Chat,
83
- Intro,
84
- Main,
85
- Preview,
86
- Renderer
87
- };
88
- //#endregion
89
- //#region src/components/chat.tsx
90
- function Chat({ appKey, apiKey, ...props }) {
91
- if (!appKey) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: "appKey not defined" });
92
- if (!apiKey) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: "apiKey not defined" });
93
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_plugin.ComponentsProvider, {
94
- components: COMPONENTS,
95
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_plugin.ChatProvider, {
96
- appKey,
97
- apiKey,
98
- ...props,
99
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_websolutespa_ask_plugin.ViewProvider, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Main, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_sonner.Toaster, {})] })
100
- })
101
- });
102
- }
103
- //#endregion
104
- //#region src/components/app.tsx
105
- const App = (props) => {
106
- (0, react.useMemo)(() => {
107
- if (typeof window !== "undefined") {
108
- const htmlLang = getHtmlLang();
109
- const title = document.querySelector("title");
110
- const description = document.querySelector("meta[name=\"description\"]");
111
- const canonical = document.querySelector("link[rel=\"canonical\"]");
112
- return {
113
- locale: htmlLang?.locale || "it",
114
- market: htmlLang?.market || "ww",
115
- origin: window.origin,
116
- canonical: canonical?.getAttribute("href") || window.location.href,
117
- title: title ? title.innerText : "Untitled",
118
- description: description?.getAttribute("content") || "",
119
- slug: window.location.pathname
120
- };
121
- }
122
- return {
123
- locale: "it",
124
- market: "ww",
125
- origin: "",
126
- canonical: "",
127
- title: "Untitled",
128
- description: "",
129
- slug: ""
130
- };
131
- }, []);
132
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
133
- className: "@container w-full",
134
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_websolutespa_ask_ui_components_tooltip.TooltipProvider, { children: props.preview ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Preview, { spec: props.initialSpec }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Chat, { ...props }) })
135
- });
136
- };
137
- function getHtmlLang() {
138
- const htmlLang = document.querySelector("html")?.getAttribute("lang");
139
- if (htmlLang) {
140
- const segments = htmlLang.toLowerCase().split("-");
141
- return {
142
- locale: segments[0],
143
- market: segments[1] || "ww"
144
- };
145
- }
146
- }
147
- //#endregion
148
- Object.defineProperty(exports, "App", {
149
- enumerable: true,
150
- get: function() {
151
- return App;
152
- }
153
- });
154
- Object.defineProperty(exports, "COMPONENTS", {
155
- enumerable: true,
156
- get: function() {
157
- return COMPONENTS;
158
- }
159
- });
160
- Object.defineProperty(exports, "Chat", {
161
- enumerable: true,
162
- get: function() {
163
- return Chat;
164
- }
165
- });
166
- Object.defineProperty(exports, "Main", {
167
- enumerable: true,
168
- get: function() {
169
- return Main;
170
- }
171
- });
172
- Object.defineProperty(exports, "Preview", {
173
- enumerable: true,
174
- get: function() {
175
- return Preview;
176
- }
177
- });
178
- Object.defineProperty(exports, "PreviewRenderer", {
179
- enumerable: true,
180
- get: function() {
181
- return PreviewRenderer;
182
- }
183
- });
184
- Object.defineProperty(exports, "Renderer", {
185
- enumerable: true,
186
- get: function() {
187
- return Renderer;
188
- }
189
- });
@@ -1,16 +0,0 @@
1
- import { ChatProviderProps, PluginOptions } from "@websolutespa/ask-plugin";
2
- import * as _$react from "react";
3
-
4
- //#region src/components/chat.d.ts
5
- declare function Chat({
6
- appKey,
7
- apiKey,
8
- ...props
9
- }: Partial<ChatProviderProps>): _$react.JSX.Element;
10
- //#endregion
11
- //#region src/components/app.d.ts
12
- type AppProps = PluginOptions;
13
- declare const App: (props: AppProps) => _$react.JSX.Element;
14
- //#endregion
15
- export { AppProps as n, Chat as r, App as t };
16
- //# sourceMappingURL=app-DzCpb5z9.d.cts.map
@@ -1,362 +0,0 @@
1
- require("./registry-E8Of7gsT.cjs");
2
- let _json_render_core = require("@json-render/core");
3
- let _json_render_react_schema = require("@json-render/react/schema");
4
- let zod = require("zod");
5
- //#region src/catalog.ts
6
- const pluginSchema = {
7
- components: {
8
- Root: {
9
- props: zod.z.object({}),
10
- slots: ["default"],
11
- description: "Root container for the page, provides vertical spacing between sections. Initially populate it with one dedicated skeleton component per planned section, then replace each with the real content when ready."
12
- },
13
- HeroViaggioSkeleton: {
14
- props: zod.z.object({}),
15
- description: "Skeleton loading state for HeroViaggio."
16
- },
17
- HeroViaggio: {
18
- props: zod.z.object({
19
- title: zod.z.string(),
20
- tagline: zod.z.string().nullable(),
21
- stats: zod.z.array(zod.z.object({
22
- label: zod.z.string(),
23
- value: zod.z.string()
24
- })).nullable(),
25
- imageSrc: zod.z.string().nullable(),
26
- imageGenerateQuery: zod.z.string().nullable()
27
- }),
28
- composable: true,
29
- description: "Full-width immersive hero for travel proposals. Large serif italic title, inspirational tagline, trip stats badges. ALWAYS use as the FIRST section.",
30
- example: {
31
- title: "Golf, Arte e Prosecco",
32
- tagline: "Sette giorni tra i fairway e i borghi più belli del Veneto",
33
- stats: [
34
- {
35
- label: "Giorni",
36
- value: "7"
37
- },
38
- {
39
- label: "Golf Club",
40
- value: "4"
41
- },
42
- {
43
- label: "Regioni",
44
- value: "Veneto"
45
- }
46
- ]
47
- }
48
- },
49
- ConceptCardSkeleton: {
50
- props: zod.z.object({}),
51
- description: "Skeleton loading state for ConceptCard."
52
- },
53
- ConceptCard: {
54
- props: zod.z.object({
55
- debrief: zod.z.string(),
56
- concept: zod.z.string(),
57
- themes: zod.z.array(zod.z.object({
58
- icon: zod.z.string(),
59
- label: zod.z.string()
60
- }))
61
- }),
62
- description: "Trip debrief and creative concept card. Shows the understood request on the left, the trip philosophy on the right, and theme tags at the bottom. Use after HeroViaggio to set the narrative.",
63
- example: {
64
- debrief: "Hai chiesto 7 giorni in Veneto per due, con golf e vino.",
65
- concept: "Un viaggio che intreccia swing al tramonto e calici di Amarone.",
66
- themes: [{
67
- icon: "golf",
68
- label: "Golf"
69
- }, {
70
- icon: "wine",
71
- label: "Vino"
72
- }]
73
- }
74
- },
75
- DayPlanSkeleton: {
76
- props: zod.z.object({}),
77
- description: "Skeleton loading state for DayPlan."
78
- },
79
- DayPlan: {
80
- props: zod.z.object({
81
- dayNumber: zod.z.number(),
82
- title: zod.z.string(),
83
- location: zod.z.string(),
84
- golf: zod.z.object({
85
- clubName: zod.z.string(),
86
- holes: zod.z.string(),
87
- par: zod.z.string(),
88
- description: zod.z.string(),
89
- highlight: zod.z.string().nullable()
90
- }).nullable(),
91
- explore: zod.z.array(zod.z.object({
92
- name: zod.z.string(),
93
- description: zod.z.string(),
94
- type: zod.z.string()
95
- })).nullable(),
96
- dine: zod.z.object({
97
- name: zod.z.string(),
98
- cuisine: zod.z.string(),
99
- dish: zod.z.string(),
100
- description: zod.z.string()
101
- }).nullable(),
102
- wine: zod.z.object({
103
- name: zod.z.string(),
104
- description: zod.z.string(),
105
- wines: zod.z.array(zod.z.string())
106
- }).nullable(),
107
- stay: zod.z.object({
108
- name: zod.z.string(),
109
- type: zod.z.string(),
110
- description: zod.z.string()
111
- }).nullable(),
112
- logistics: zod.z.object({
113
- from: zod.z.string(),
114
- to: zod.z.string(),
115
- time: zod.z.string(),
116
- transport: zod.z.string(),
117
- note: zod.z.string().nullable()
118
- }).nullable(),
119
- curiosity: zod.z.string().nullable()
120
- }),
121
- description: "Day-by-day itinerary card. THE CORE COMPONENT. Shows a complete day with golf, exploration, dining, wine, accommodation, logistics, and curiosities. Use ONE DayPlan per day. Each day is a chapter.",
122
- example: {
123
- dayNumber: 1,
124
- title: "Venezia e il Golf al Lido",
125
- location: "Venezia",
126
- golf: {
127
- clubName: "Circolo Golf Venezia",
128
- holes: "18",
129
- par: "72",
130
- description: "Fondato da Henry Ford nel 1929, uno dei circoli più prestigiosi d'Italia.",
131
- highlight: "Links affacciato sulla laguna"
132
- },
133
- explore: [{
134
- name: "Piazza San Marco",
135
- description: "Il cuore di Venezia.",
136
- type: "arte"
137
- }],
138
- dine: {
139
- name: "Osteria alle Testiere",
140
- cuisine: "Veneziana di pesce",
141
- dish: "Sarde in saór",
142
- description: "Intima osteria con 10 tavoli."
143
- },
144
- wine: null,
145
- stay: {
146
- name: "Hotel Danieli",
147
- type: "hotel",
148
- description: "Lusso affacciato sul Bacino."
149
- },
150
- logistics: {
151
- from: "Aeroporto Marco Polo",
152
- to: "Venezia Lido",
153
- time: "50 min",
154
- transport: "boat",
155
- note: "Vaporetto linea 1"
156
- },
157
- curiosity: "Il campo è uno dei pochi links italiani."
158
- }
159
- },
160
- GolfClubSpotlightSkeleton: {
161
- props: zod.z.object({}),
162
- description: "Skeleton loading state for GolfClubSpotlight."
163
- },
164
- GolfClubSpotlight: {
165
- props: zod.z.object({
166
- name: zod.z.string(),
167
- tagline: zod.z.string().nullable(),
168
- holes: zod.z.number(),
169
- par: zod.z.number(),
170
- courses: zod.z.number(),
171
- distance: zod.z.string(),
172
- difficulty: zod.z.string(),
173
- terrain: zod.z.string(),
174
- description: zod.z.string(),
175
- address: zod.z.string(),
176
- phone: zod.z.string().nullable(),
177
- email: zod.z.string().nullable(),
178
- imageSrc: zod.z.string().nullable(),
179
- imageGenerateQuery: zod.z.string().nullable(),
180
- nearbyAttractions: zod.z.array(zod.z.object({
181
- name: zod.z.string(),
182
- distance: zod.z.string()
183
- })).nullable()
184
- }),
185
- description: "Detailed golf club spotlight card with stats grid, atmospheric description, and nearby attractions. Use when the user asks about a specific golf club."
186
- },
187
- ExperienceGridSkeleton: {
188
- props: zod.z.object({}),
189
- description: "Skeleton loading state for ExperienceGrid."
190
- },
191
- ExperienceGrid: {
192
- props: zod.z.object({
193
- title: zod.z.string().nullable(),
194
- subtitle: zod.z.string().nullable(),
195
- experiences: zod.z.array(zod.z.object({
196
- category: zod.z.string(),
197
- name: zod.z.string(),
198
- location: zod.z.string(),
199
- description: zod.z.string(),
200
- highlight: zod.z.string().nullable()
201
- }))
202
- }),
203
- composable: true,
204
- description: "Grid of experience cards categorized by type (wine, food, art, nature, family, outdoor, wellness). Responsive 1→2→3 column grid with colored category badges."
205
- },
206
- RouteStripSkeleton: {
207
- props: zod.z.object({}),
208
- description: "Skeleton loading state for RouteStrip."
209
- },
210
- RouteStrip: {
211
- props: zod.z.object({
212
- title: zod.z.string().nullable(),
213
- legs: zod.z.array(zod.z.object({
214
- from: zod.z.string(),
215
- to: zod.z.string(),
216
- distance: zod.z.string(),
217
- time: zod.z.string(),
218
- transport: zod.z.string(),
219
- note: zod.z.string().nullable()
220
- }))
221
- }),
222
- description: "Visual logistics strip showing journey legs with transport icons, distances and times. Horizontal on desktop, vertical timeline on mobile."
223
- },
224
- TasteCardSkeleton: {
225
- props: zod.z.object({}),
226
- description: "Skeleton loading state for TasteCard."
227
- },
228
- TasteCard: {
229
- props: zod.z.object({
230
- type: zod.z.string(),
231
- name: zod.z.string(),
232
- location: zod.z.string(),
233
- description: zod.z.string(),
234
- highlights: zod.z.array(zod.z.string()),
235
- recommendation: zod.z.string(),
236
- imageSrc: zod.z.string().nullable(),
237
- imageGenerateQuery: zod.z.string().nullable()
238
- }),
239
- description: "Wine & food experience card with image, highlights chips, and recommendation box. Use for featured culinary or wine experiences."
240
- },
241
- StayCardSkeleton: {
242
- props: zod.z.object({}),
243
- description: "Skeleton loading state for StayCard."
244
- },
245
- StayCard: {
246
- props: zod.z.object({
247
- name: zod.z.string(),
248
- type: zod.z.string(),
249
- stars: zod.z.number().nullable(),
250
- location: zod.z.string(),
251
- features: zod.z.array(zod.z.string()),
252
- whyPerfect: zod.z.string(),
253
- priceRange: zod.z.string().nullable(),
254
- imageSrc: zod.z.string().nullable(),
255
- imageGenerateQuery: zod.z.string().nullable()
256
- }),
257
- description: "Accommodation recommendation card with type badge, star rating, features, and reasoning. Premium styling with gold borders."
258
- },
259
- TripSummarySkeleton: {
260
- props: zod.z.object({}),
261
- description: "Skeleton loading state for TripSummary."
262
- },
263
- TripSummary: {
264
- props: zod.z.object({
265
- title: zod.z.string().nullable(),
266
- stats: zod.z.array(zod.z.object({
267
- label: zod.z.string(),
268
- value: zod.z.string()
269
- })),
270
- highlights: zod.z.array(zod.z.string()),
271
- closingMessage: zod.z.string(),
272
- ctaText: zod.z.string().nullable()
273
- }),
274
- description: "Trip summary section with dark green background. Stats grid, highlights checklist, closing message, and CTA. ALWAYS use as the LAST section."
275
- },
276
- InsiderTipSkeleton: {
277
- props: zod.z.object({}),
278
- description: "Skeleton loading state for InsiderTip."
279
- },
280
- InsiderTip: {
281
- props: zod.z.object({
282
- title: zod.z.string(),
283
- text: zod.z.string(),
284
- source: zod.z.string().nullable()
285
- }),
286
- description: "Local curiosity/insider tip callout box. Light green background with left accent border. Use to add character and local knowledge."
287
- },
288
- Link: {
289
- props: zod.z.object({
290
- label: zod.z.string(),
291
- href: zod.z.string(),
292
- variant: zod.z.enum([
293
- "primary",
294
- "secondary",
295
- "outline",
296
- "danger"
297
- ]).nullable()
298
- }),
299
- events: ["press"],
300
- description: "Anchor link. primary = solid fill, outline = bordered, secondary = muted fill. Bind on.press for handler.",
301
- example: {
302
- label: "Scopri il club",
303
- href: "https://golfinveneto.it",
304
- variant: "primary"
305
- }
306
- }
307
- },
308
- actions: {
309
- setState: {
310
- params: zod.z.object({
311
- statePath: zod.z.string(),
312
- value: zod.z.unknown()
313
- }),
314
- description: "Update a value in the state model at the given statePath."
315
- },
316
- pushState: {
317
- params: zod.z.object({
318
- statePath: zod.z.string(),
319
- value: zod.z.unknown(),
320
- clearStatePath: zod.z.string().optional()
321
- }),
322
- description: "Append an item to an array in state."
323
- },
324
- removeState: {
325
- params: zod.z.object({
326
- statePath: zod.z.string(),
327
- index: zod.z.number()
328
- }),
329
- description: "Remove an item from an array in state at the given index."
330
- },
331
- linkClick: {
332
- params: zod.z.object({ href: zod.z.string() }),
333
- description: "Navigate to the link destination."
334
- }
335
- }
336
- };
337
- const catalog = (0, _json_render_core.defineCatalog)(_json_render_react_schema.schema, pluginSchema);
338
- function getSystemPrompt(options) {
339
- return catalog.prompt(options);
340
- }
341
- function getSystemPromptInline(options = { mode: "inline" }) {
342
- return catalog.prompt(options);
343
- }
344
- //#endregion
345
- Object.defineProperty(exports, "catalog", {
346
- enumerable: true,
347
- get: function() {
348
- return catalog;
349
- }
350
- });
351
- Object.defineProperty(exports, "getSystemPrompt", {
352
- enumerable: true,
353
- get: function() {
354
- return getSystemPrompt;
355
- }
356
- });
357
- Object.defineProperty(exports, "getSystemPromptInline", {
358
- enumerable: true,
359
- get: function() {
360
- return getSystemPromptInline;
361
- }
362
- });
@@ -1,3 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_plugin = require("../plugin-BdhObzU8.cjs");
3
- exports.askGolfVeneto = require_plugin.askGolfVeneto;
@@ -1,2 +0,0 @@
1
- import { t as askGolfVeneto } from "../plugin-B0vGrWcM.cjs";
2
- export { askGolfVeneto };
@@ -1,2 +0,0 @@
1
- import { t as askGolfVeneto } from "../plugin-X9b5Ujac.mjs";
2
- export { askGolfVeneto };