@contractspec/lib.example-shared-ui 6.0.17 → 6.0.18

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 (84) hide show
  1. package/.turbo/turbo-build.log +81 -81
  2. package/CHANGELOG.md +17 -0
  3. package/dist/EvolutionDashboard.js +1 -803
  4. package/dist/EvolutionSidebar.js +1 -531
  5. package/dist/LocalDataIndicator.js +1 -68
  6. package/dist/MarkdownView.js +1 -213
  7. package/dist/OverlayContextProvider.js +1 -202
  8. package/dist/PersonalizationInsights.js +1 -455
  9. package/dist/SaveToStudioButton.js +1 -79
  10. package/dist/SpecDrivenTemplateShell.js +1 -203
  11. package/dist/SpecEditorPanel.js +17 -364
  12. package/dist/TemplateShell.js +1 -195
  13. package/dist/browser/EvolutionDashboard.js +1 -803
  14. package/dist/browser/EvolutionSidebar.js +1 -531
  15. package/dist/browser/LocalDataIndicator.js +1 -68
  16. package/dist/browser/MarkdownView.js +1 -213
  17. package/dist/browser/OverlayContextProvider.js +1 -202
  18. package/dist/browser/PersonalizationInsights.js +1 -455
  19. package/dist/browser/SaveToStudioButton.js +1 -79
  20. package/dist/browser/SpecDrivenTemplateShell.js +1 -203
  21. package/dist/browser/SpecEditorPanel.js +17 -364
  22. package/dist/browser/TemplateShell.js +1 -195
  23. package/dist/browser/bundles/ExampleTemplateBundle.js +1 -85
  24. package/dist/browser/bundles/index.js +1 -85
  25. package/dist/browser/hooks/index.js +40 -1151
  26. package/dist/browser/hooks/useBehaviorTracking.js +1 -157
  27. package/dist/browser/hooks/useEvolution.js +1 -260
  28. package/dist/browser/hooks/useRegistryTemplates.js +1 -31
  29. package/dist/browser/hooks/useSpecContent.js +17 -224
  30. package/dist/browser/hooks/useWorkflowComposer.js +24 -483
  31. package/dist/browser/index.js +40 -3122
  32. package/dist/browser/lib/component-registry.js +1 -48
  33. package/dist/browser/lib/runtime-context.js +1 -21
  34. package/dist/browser/markdown/formatPresentationName.js +1 -9
  35. package/dist/browser/markdown/useMarkdownPresentation.js +1 -65
  36. package/dist/browser/utils/fetchPresentationData.js +1 -15
  37. package/dist/browser/utils/generateSpecFromTemplate.js +16 -62
  38. package/dist/browser/utils/index.js +16 -76
  39. package/dist/bundles/ExampleTemplateBundle.js +1 -85
  40. package/dist/bundles/index.js +1 -85
  41. package/dist/hooks/index.js +40 -1151
  42. package/dist/hooks/useBehaviorTracking.js +1 -157
  43. package/dist/hooks/useEvolution.js +1 -260
  44. package/dist/hooks/useRegistryTemplates.js +1 -31
  45. package/dist/hooks/useSpecContent.js +17 -224
  46. package/dist/hooks/useWorkflowComposer.js +24 -483
  47. package/dist/index.js +40 -3122
  48. package/dist/lib/component-registry.js +1 -48
  49. package/dist/lib/runtime-context.js +1 -21
  50. package/dist/markdown/formatPresentationName.js +1 -9
  51. package/dist/markdown/useMarkdownPresentation.js +1 -65
  52. package/dist/node/EvolutionDashboard.js +1 -803
  53. package/dist/node/EvolutionSidebar.js +1 -531
  54. package/dist/node/LocalDataIndicator.js +1 -68
  55. package/dist/node/MarkdownView.js +1 -213
  56. package/dist/node/OverlayContextProvider.js +1 -202
  57. package/dist/node/PersonalizationInsights.js +1 -455
  58. package/dist/node/SaveToStudioButton.js +1 -79
  59. package/dist/node/SpecDrivenTemplateShell.js +1 -203
  60. package/dist/node/SpecEditorPanel.js +17 -364
  61. package/dist/node/TemplateShell.js +1 -195
  62. package/dist/node/bundles/ExampleTemplateBundle.js +1 -85
  63. package/dist/node/bundles/index.js +1 -85
  64. package/dist/node/hooks/index.js +40 -1151
  65. package/dist/node/hooks/useBehaviorTracking.js +1 -157
  66. package/dist/node/hooks/useEvolution.js +1 -260
  67. package/dist/node/hooks/useRegistryTemplates.js +1 -31
  68. package/dist/node/hooks/useSpecContent.js +17 -224
  69. package/dist/node/hooks/useWorkflowComposer.js +24 -483
  70. package/dist/node/index.js +40 -3122
  71. package/dist/node/lib/component-registry.js +1 -48
  72. package/dist/node/lib/runtime-context.js +1 -21
  73. package/dist/node/markdown/formatPresentationName.js +1 -9
  74. package/dist/node/markdown/useMarkdownPresentation.js +1 -65
  75. package/dist/node/utils/fetchPresentationData.js +1 -15
  76. package/dist/node/utils/generateSpecFromTemplate.js +16 -62
  77. package/dist/node/utils/index.js +16 -76
  78. package/dist/utils/fetchPresentationData.js +1 -15
  79. package/dist/utils/generateSpecFromTemplate.js +16 -62
  80. package/dist/utils/index.js +16 -76
  81. package/package.json +13 -13
  82. package/src/lib/component-registry.tsx +2 -1
  83. package/src/lib/runtime-context.tsx +1 -1
  84. package/src/lib/singletons.test.ts +19 -22
@@ -1,196 +1,2 @@
1
1
  // @bun
2
- // src/lib/runtime-context.tsx
3
- import { createContext, useContext } from "react";
4
- "use client";
5
- var TEMPLATE_RUNTIME_CONTEXT_KEY = Symbol.for("@contractspec/lib.example-shared-ui/template-runtime-context");
6
- function getTemplateRuntimeContextSingleton() {
7
- const store = globalThis;
8
- store[TEMPLATE_RUNTIME_CONTEXT_KEY] ??= createContext(null);
9
- return store[TEMPLATE_RUNTIME_CONTEXT_KEY];
10
- }
11
- var TemplateRuntimeContext = getTemplateRuntimeContextSingleton();
12
- function useTemplateRuntime() {
13
- const context = useContext(TemplateRuntimeContext);
14
- if (!context) {
15
- throw new Error("useTemplateRuntime must be used within a TemplateRuntimeProvider");
16
- }
17
- return context;
18
- }
19
-
20
- // src/LocalDataIndicator.tsx
21
- import { RefreshCw, Shield } from "lucide-react";
22
- import { useState } from "react";
23
- import { jsxDEV } from "react/jsx-dev-runtime";
24
- "use client";
25
- function LocalDataIndicator() {
26
- const { projectId, templateId, template, installer } = useTemplateRuntime();
27
- const [isResetting, setIsResetting] = useState(false);
28
- const handleReset = async () => {
29
- setIsResetting(true);
30
- try {
31
- await installer.install(templateId, { projectId });
32
- } finally {
33
- setIsResetting(false);
34
- }
35
- };
36
- return /* @__PURE__ */ jsxDEV("div", {
37
- className: "inline-flex items-center gap-2 rounded-full border border-border bg-muted/40 px-3 py-1 text-muted-foreground text-xs",
38
- children: [
39
- /* @__PURE__ */ jsxDEV(Shield, {
40
- className: "h-3.5 w-3.5 text-violet-400"
41
- }, undefined, false, undefined, this),
42
- /* @__PURE__ */ jsxDEV("span", {
43
- children: [
44
- "Local runtime \xB7",
45
- " ",
46
- /* @__PURE__ */ jsxDEV("span", {
47
- className: "font-semibold text-foreground",
48
- children: template.name
49
- }, undefined, false, undefined, this)
50
- ]
51
- }, undefined, true, undefined, this),
52
- /* @__PURE__ */ jsxDEV("button", {
53
- type: "button",
54
- className: "inline-flex items-center gap-1 rounded-full border border-border px-2 py-0.5 font-semibold text-[11px] text-muted-foreground hover:text-foreground",
55
- onClick: handleReset,
56
- disabled: isResetting,
57
- children: [
58
- /* @__PURE__ */ jsxDEV(RefreshCw, {
59
- className: "h-3 w-3"
60
- }, undefined, false, undefined, this),
61
- isResetting ? "Resetting\u2026" : "Reset data"
62
- ]
63
- }, undefined, true, undefined, this)
64
- ]
65
- }, undefined, true, undefined, this);
66
- }
67
-
68
- // src/SaveToStudioButton.tsx
69
- import { Sparkles } from "lucide-react";
70
- import { useState as useState2 } from "react";
71
- import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
72
- "use client";
73
- function SaveToStudioButton({
74
- organizationId = "demo-org",
75
- projectName,
76
- endpoint,
77
- token
78
- }) {
79
- const { installer, templateId, template } = useTemplateRuntime();
80
- const [status, setStatus] = useState2("idle");
81
- const [error, setError] = useState2(null);
82
- const handleSave = async () => {
83
- setStatus("saving");
84
- setError(null);
85
- try {
86
- await installer.saveToStudio({
87
- templateId,
88
- projectName: projectName ?? `${template.name} demo`,
89
- organizationId,
90
- endpoint,
91
- token
92
- });
93
- setStatus("saved");
94
- setTimeout(() => setStatus("idle"), 3000);
95
- } catch (err) {
96
- setStatus("error");
97
- setError(err instanceof Error ? err.message : "Unknown error");
98
- }
99
- };
100
- return /* @__PURE__ */ jsxDEV2("div", {
101
- className: "flex flex-col items-end gap-1",
102
- children: [
103
- /* @__PURE__ */ jsxDEV2("button", {
104
- type: "button",
105
- className: "btn-primary inline-flex items-center gap-2 text-sm",
106
- onClick: handleSave,
107
- disabled: status === "saving",
108
- children: [
109
- /* @__PURE__ */ jsxDEV2(Sparkles, {
110
- className: "h-4 w-4"
111
- }, undefined, false, undefined, this),
112
- status === "saving" ? "Publishing\u2026" : "Save to Studio"
113
- ]
114
- }, undefined, true, undefined, this),
115
- status === "error" && error ? /* @__PURE__ */ jsxDEV2("p", {
116
- className: "text-destructive text-xs",
117
- children: error
118
- }, undefined, false, undefined, this) : null,
119
- status === "saved" ? /* @__PURE__ */ jsxDEV2("p", {
120
- className: "text-emerald-400 text-xs",
121
- children: "Template sent to Studio."
122
- }, undefined, false, undefined, this) : null
123
- ]
124
- }, undefined, true, undefined, this);
125
- }
126
-
127
- // src/TemplateShell.tsx
128
- import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
129
- var TemplateShell = ({
130
- title,
131
- description,
132
- sidebar,
133
- actions,
134
- showSaveAction = true,
135
- saveProps,
136
- children
137
- }) => /* @__PURE__ */ jsxDEV3("div", {
138
- className: "space-y-6",
139
- children: [
140
- /* @__PURE__ */ jsxDEV3("header", {
141
- className: "rounded-2xl border border-border bg-card p-6 shadow-sm",
142
- children: [
143
- /* @__PURE__ */ jsxDEV3("div", {
144
- className: "flex flex-wrap items-center justify-between gap-4",
145
- children: [
146
- /* @__PURE__ */ jsxDEV3("div", {
147
- children: [
148
- /* @__PURE__ */ jsxDEV3("p", {
149
- className: "font-semibold text-muted-foreground text-sm uppercase tracking-wide",
150
- children: "ContractSpec Templates"
151
- }, undefined, false, undefined, this),
152
- /* @__PURE__ */ jsxDEV3("h1", {
153
- className: "font-bold text-3xl",
154
- children: title
155
- }, undefined, false, undefined, this),
156
- description ? /* @__PURE__ */ jsxDEV3("p", {
157
- className: "mt-2 max-w-2xl text-muted-foreground text-sm",
158
- children: description
159
- }, undefined, false, undefined, this) : null
160
- ]
161
- }, undefined, true, undefined, this),
162
- /* @__PURE__ */ jsxDEV3("div", {
163
- className: "flex flex-col items-end gap-2",
164
- children: [
165
- /* @__PURE__ */ jsxDEV3(LocalDataIndicator, {}, undefined, false, undefined, this),
166
- showSaveAction ? /* @__PURE__ */ jsxDEV3(SaveToStudioButton, {
167
- ...saveProps
168
- }, undefined, false, undefined, this) : null
169
- ]
170
- }, undefined, true, undefined, this)
171
- ]
172
- }, undefined, true, undefined, this),
173
- actions ? /* @__PURE__ */ jsxDEV3("div", {
174
- className: "mt-4",
175
- children: actions
176
- }, undefined, false, undefined, this) : null
177
- ]
178
- }, undefined, true, undefined, this),
179
- /* @__PURE__ */ jsxDEV3("div", {
180
- className: sidebar ? "grid gap-6 lg:grid-cols-[minmax(0,1fr)_320px]" : "w-full",
181
- children: [
182
- /* @__PURE__ */ jsxDEV3("main", {
183
- className: "space-y-4 p-2",
184
- children
185
- }, undefined, false, undefined, this),
186
- sidebar ? /* @__PURE__ */ jsxDEV3("aside", {
187
- className: "rounded-2xl border border-border bg-card p-4",
188
- children: sidebar
189
- }, undefined, false, undefined, this) : null
190
- ]
191
- }, undefined, true, undefined, this)
192
- ]
193
- }, undefined, true, undefined, this);
194
- export {
195
- TemplateShell
196
- };
2
+ import{createContext as x,useContext as R}from"react";var S=Symbol.for("@contractspec/lib.example-shared-ui/template-runtime-context");function k(){let e=globalThis;return e[S]??=x(null),e[S]}var B=k();function p(){let e=R(B);if(!e)throw Error("useTemplateRuntime must be used within a TemplateRuntimeProvider");return e}import{RefreshCw as P,Shield as I}from"lucide-react";import{useState as T}from"react";import{jsx as c,jsxs as u}from"react/jsx-runtime";function N(){let{projectId:e,templateId:o,template:a,installer:r}=p(),[l,n]=T(!1),d=async()=>{n(!0);try{await r.install(o,{projectId:e})}finally{n(!1)}};return u("div",{className:"inline-flex items-center gap-2 rounded-full border border-border bg-muted/40 px-3 py-1 text-muted-foreground text-xs",children:[c(I,{className:"h-3.5 w-3.5 text-violet-400"}),u("span",{children:["Local runtime \xB7"," ",c("span",{className:"font-semibold text-foreground",children:a.name})]}),u("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-border px-2 py-0.5 font-semibold text-[11px] text-muted-foreground hover:text-foreground",onClick:d,disabled:l,children:[c(P,{className:"h-3 w-3"}),l?"Resetting\u2026":"Reset data"]})]})}import{Sparkles as D}from"lucide-react";import{useState as h}from"react";import{jsx as f,jsxs as y}from"react/jsx-runtime";function w({organizationId:e="demo-org",projectName:o,endpoint:a,token:r}){let{installer:l,templateId:n,template:d}=p(),[s,m]=h("idle"),[v,g]=h(null);return y("div",{className:"flex flex-col items-end gap-1",children:[y("button",{type:"button",className:"btn-primary inline-flex items-center gap-2 text-sm",onClick:async()=>{m("saving"),g(null);try{await l.saveToStudio({templateId:n,projectName:o??`${d.name} demo`,organizationId:e,endpoint:a,token:r}),m("saved"),setTimeout(()=>m("idle"),3000)}catch(b){m("error"),g(b instanceof Error?b.message:"Unknown error")}},disabled:s==="saving",children:[f(D,{className:"h-4 w-4"}),s==="saving"?"Publishing\u2026":"Save to Studio"]}),s==="error"&&v?f("p",{className:"text-destructive text-xs",children:v}):null,s==="saved"?f("p",{className:"text-emerald-400 text-xs",children:"Template sent to Studio."}):null]})}import{jsx as t,jsxs as i}from"react/jsx-runtime";var K=({title:e,description:o,sidebar:a,actions:r,showSaveAction:l=!0,saveProps:n,children:d})=>i("div",{className:"space-y-6",children:[i("header",{className:"rounded-2xl border border-border bg-card p-6 shadow-sm",children:[i("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[i("div",{children:[t("p",{className:"font-semibold text-muted-foreground text-sm uppercase tracking-wide",children:"ContractSpec Templates"}),t("h1",{className:"font-bold text-3xl",children:e}),o?t("p",{className:"mt-2 max-w-2xl text-muted-foreground text-sm",children:o}):null]}),i("div",{className:"flex flex-col items-end gap-2",children:[t(N,{}),l?t(w,{...n}):null]})]}),r?t("div",{className:"mt-4",children:r}):null]}),i("div",{className:a?"grid gap-6 lg:grid-cols-[minmax(0,1fr)_320px]":"w-full",children:[t("main",{className:"space-y-4 p-2",children:d}),a?t("aside",{className:"rounded-2xl border border-border bg-card p-4",children:a}):null]})]});export{K as TemplateShell};