@kya-os/consent 0.1.0

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 (161) hide show
  1. package/dist/constants/auth-modes.d.ts +54 -0
  2. package/dist/constants/auth-modes.d.ts.map +1 -0
  3. package/dist/constants/auth-modes.js +128 -0
  4. package/dist/constants/auth-modes.js.map +1 -0
  5. package/dist/constants/colors.d.ts +38 -0
  6. package/dist/constants/colors.d.ts.map +1 -0
  7. package/dist/constants/colors.js +40 -0
  8. package/dist/constants/colors.js.map +1 -0
  9. package/dist/constants/defaults.d.ts +112 -0
  10. package/dist/constants/defaults.d.ts.map +1 -0
  11. package/dist/constants/defaults.js +146 -0
  12. package/dist/constants/defaults.js.map +1 -0
  13. package/dist/constants/index.d.ts +11 -0
  14. package/dist/constants/index.d.ts.map +1 -0
  15. package/dist/constants/index.js +37 -0
  16. package/dist/constants/index.js.map +1 -0
  17. package/dist/index.d.ts +16 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +39 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/resolution/index.d.ts +12 -0
  22. package/dist/resolution/index.d.ts.map +1 -0
  23. package/dist/resolution/index.js +28 -0
  24. package/dist/resolution/index.js.map +1 -0
  25. package/dist/resolution/resolve-branding.d.ts +70 -0
  26. package/dist/resolution/resolve-branding.d.ts.map +1 -0
  27. package/dist/resolution/resolve-branding.js +159 -0
  28. package/dist/resolution/resolve-branding.js.map +1 -0
  29. package/dist/resolution/resolve-config.d.ts +81 -0
  30. package/dist/resolution/resolve-config.d.ts.map +1 -0
  31. package/dist/resolution/resolve-config.js +254 -0
  32. package/dist/resolution/resolve-config.js.map +1 -0
  33. package/dist/resolution/resolve-copy.d.ts +53 -0
  34. package/dist/resolution/resolve-copy.d.ts.map +1 -0
  35. package/dist/resolution/resolve-copy.js +136 -0
  36. package/dist/resolution/resolve-copy.js.map +1 -0
  37. package/dist/schemas/api.schemas.d.ts +984 -0
  38. package/dist/schemas/api.schemas.d.ts.map +1 -0
  39. package/dist/schemas/api.schemas.js +153 -0
  40. package/dist/schemas/api.schemas.js.map +1 -0
  41. package/dist/schemas/branding.schemas.d.ts +100 -0
  42. package/dist/schemas/branding.schemas.d.ts.map +1 -0
  43. package/dist/schemas/branding.schemas.js +57 -0
  44. package/dist/schemas/branding.schemas.js.map +1 -0
  45. package/dist/schemas/config.schemas.d.ts +1182 -0
  46. package/dist/schemas/config.schemas.d.ts.map +1 -0
  47. package/dist/schemas/config.schemas.js +147 -0
  48. package/dist/schemas/config.schemas.js.map +1 -0
  49. package/dist/schemas/index.d.ts +13 -0
  50. package/dist/schemas/index.d.ts.map +1 -0
  51. package/dist/schemas/index.js +29 -0
  52. package/dist/schemas/index.js.map +1 -0
  53. package/dist/schemas/modes.schemas.d.ts +406 -0
  54. package/dist/schemas/modes.schemas.d.ts.map +1 -0
  55. package/dist/schemas/modes.schemas.js +107 -0
  56. package/dist/schemas/modes.schemas.js.map +1 -0
  57. package/dist/security/escape.d.ts +114 -0
  58. package/dist/security/escape.d.ts.map +1 -0
  59. package/dist/security/escape.js +202 -0
  60. package/dist/security/escape.js.map +1 -0
  61. package/dist/security/index.d.ts +10 -0
  62. package/dist/security/index.d.ts.map +1 -0
  63. package/dist/security/index.js +26 -0
  64. package/dist/security/index.js.map +1 -0
  65. package/dist/security/validators.d.ts +98 -0
  66. package/dist/security/validators.d.ts.map +1 -0
  67. package/dist/security/validators.js +210 -0
  68. package/dist/security/validators.js.map +1 -0
  69. package/dist/styles/css-variables.d.ts +78 -0
  70. package/dist/styles/css-variables.d.ts.map +1 -0
  71. package/dist/styles/css-variables.js +129 -0
  72. package/dist/styles/css-variables.js.map +1 -0
  73. package/dist/styles/index.d.ts +12 -0
  74. package/dist/styles/index.d.ts.map +1 -0
  75. package/dist/styles/index.js +28 -0
  76. package/dist/styles/index.js.map +1 -0
  77. package/dist/styles/stylesheet.d.ts +57 -0
  78. package/dist/styles/stylesheet.d.ts.map +1 -0
  79. package/dist/styles/stylesheet.js +204 -0
  80. package/dist/styles/stylesheet.js.map +1 -0
  81. package/dist/styles/tokens.d.ts +141 -0
  82. package/dist/styles/tokens.d.ts.map +1 -0
  83. package/dist/styles/tokens.js +183 -0
  84. package/dist/styles/tokens.js.map +1 -0
  85. package/dist/templates/base/base-template.d.ts +81 -0
  86. package/dist/templates/base/base-template.d.ts.map +1 -0
  87. package/dist/templates/base/base-template.js +282 -0
  88. package/dist/templates/base/base-template.js.map +1 -0
  89. package/dist/templates/base/components.d.ts +120 -0
  90. package/dist/templates/base/components.d.ts.map +1 -0
  91. package/dist/templates/base/components.js +295 -0
  92. package/dist/templates/base/components.js.map +1 -0
  93. package/dist/templates/base/index.d.ts +8 -0
  94. package/dist/templates/base/index.d.ts.map +1 -0
  95. package/dist/templates/base/index.js +26 -0
  96. package/dist/templates/base/index.js.map +1 -0
  97. package/dist/templates/index.d.ts +18 -0
  98. package/dist/templates/index.d.ts.map +1 -0
  99. package/dist/templates/index.js +34 -0
  100. package/dist/templates/index.js.map +1 -0
  101. package/dist/templates/modes/consent-only.template.d.ts +36 -0
  102. package/dist/templates/modes/consent-only.template.d.ts.map +1 -0
  103. package/dist/templates/modes/consent-only.template.js +74 -0
  104. package/dist/templates/modes/consent-only.template.js.map +1 -0
  105. package/dist/templates/modes/credentials.template.d.ts +65 -0
  106. package/dist/templates/modes/credentials.template.d.ts.map +1 -0
  107. package/dist/templates/modes/credentials.template.js +414 -0
  108. package/dist/templates/modes/credentials.template.js.map +1 -0
  109. package/dist/templates/modes/index.d.ts +14 -0
  110. package/dist/templates/modes/index.d.ts.map +1 -0
  111. package/dist/templates/modes/index.js +24 -0
  112. package/dist/templates/modes/index.js.map +1 -0
  113. package/dist/templates/modes/magic-link.template.d.ts +33 -0
  114. package/dist/templates/modes/magic-link.template.d.ts.map +1 -0
  115. package/dist/templates/modes/magic-link.template.js +196 -0
  116. package/dist/templates/modes/magic-link.template.js.map +1 -0
  117. package/dist/templates/modes/oauth.template.d.ts +40 -0
  118. package/dist/templates/modes/oauth.template.d.ts.map +1 -0
  119. package/dist/templates/modes/oauth.template.js +153 -0
  120. package/dist/templates/modes/oauth.template.js.map +1 -0
  121. package/dist/templates/modes/otp.template.d.ts +35 -0
  122. package/dist/templates/modes/otp.template.d.ts.map +1 -0
  123. package/dist/templates/modes/otp.template.js +316 -0
  124. package/dist/templates/modes/otp.template.js.map +1 -0
  125. package/dist/templates/modes/success.template.d.ts +41 -0
  126. package/dist/templates/modes/success.template.d.ts.map +1 -0
  127. package/dist/templates/modes/success.template.js +140 -0
  128. package/dist/templates/modes/success.template.js.map +1 -0
  129. package/dist/templates/registry.d.ts +62 -0
  130. package/dist/templates/registry.d.ts.map +1 -0
  131. package/dist/templates/registry.js +135 -0
  132. package/dist/templates/registry.js.map +1 -0
  133. package/dist/types/api.types.d.ts +134 -0
  134. package/dist/types/api.types.d.ts.map +1 -0
  135. package/dist/types/api.types.js +10 -0
  136. package/dist/types/api.types.js.map +1 -0
  137. package/dist/types/branding.types.d.ts +53 -0
  138. package/dist/types/branding.types.d.ts.map +1 -0
  139. package/dist/types/branding.types.js +10 -0
  140. package/dist/types/branding.types.js.map +1 -0
  141. package/dist/types/config.types.d.ts +201 -0
  142. package/dist/types/config.types.d.ts.map +1 -0
  143. package/dist/types/config.types.js +10 -0
  144. package/dist/types/config.types.js.map +1 -0
  145. package/dist/types/copy.types.d.ts +109 -0
  146. package/dist/types/copy.types.d.ts.map +1 -0
  147. package/dist/types/copy.types.js +10 -0
  148. package/dist/types/copy.types.js.map +1 -0
  149. package/dist/types/index.d.ts +15 -0
  150. package/dist/types/index.d.ts.map +1 -0
  151. package/dist/types/index.js +31 -0
  152. package/dist/types/index.js.map +1 -0
  153. package/dist/types/modes.types.d.ts +197 -0
  154. package/dist/types/modes.types.d.ts.map +1 -0
  155. package/dist/types/modes.types.js +35 -0
  156. package/dist/types/modes.types.js.map +1 -0
  157. package/dist/types/page.types.d.ts +120 -0
  158. package/dist/types/page.types.d.ts.map +1 -0
  159. package/dist/types/page.types.js +10 -0
  160. package/dist/types/page.types.js.map +1 -0
  161. package/package.json +83 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ /**
3
+ * Reusable HTML Components
4
+ *
5
+ * Each function corresponds to an AgentShield preview component:
6
+ * - renderLogo() -> PreviewAgentInfo logo
7
+ * - renderHeader() -> PreviewHeader
8
+ * - renderButton() -> PreviewButton
9
+ * - renderCheckbox() -> PreviewCheckbox
10
+ * - renderExpirationNotice() -> ExpirationNotice
11
+ *
12
+ * @module @kya-os/consent/templates/base/components
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.renderDefaultAgentIcon = renderDefaultAgentIcon;
16
+ exports.renderLogo = renderLogo;
17
+ exports.renderAgentInfo = renderAgentInfo;
18
+ exports.renderHeader = renderHeader;
19
+ exports.renderButton = renderButton;
20
+ exports.renderButtonGroup = renderButtonGroup;
21
+ exports.renderFullWidthButton = renderFullWidthButton;
22
+ exports.renderCheckbox = renderCheckbox;
23
+ exports.renderInput = renderInput;
24
+ exports.renderExpirationNotice = renderExpirationNotice;
25
+ exports.renderErrorContainer = renderErrorContainer;
26
+ exports.renderCheckIcon = renderCheckIcon;
27
+ exports.renderClockIcon = renderClockIcon;
28
+ exports.renderSuccessIcon = renderSuccessIcon;
29
+ const tokens_1 = require("../../styles/tokens");
30
+ const escape_1 = require("../../security/escape");
31
+ const validators_1 = require("../../security/validators");
32
+ // ============================================================================
33
+ // Logo & Agent Info
34
+ // ============================================================================
35
+ /**
36
+ * Render a default agent icon SVG.
37
+ * Used when no logo is provided.
38
+ */
39
+ function renderDefaultAgentIcon() {
40
+ return `
41
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="text-gray-400">
42
+ <rect x="3" y="3" width="18" height="18" rx="2" stroke="currentColor" stroke-width="2" />
43
+ <circle cx="8" cy="8" r="1.5" fill="currentColor" />
44
+ <circle cx="16" cy="8" r="1.5" fill="currentColor" />
45
+ <path d="M8 14s1.5 2 4 2 4-2 4-2" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
46
+ </svg>
47
+ `;
48
+ }
49
+ /**
50
+ * Render a logo image or default icon.
51
+ *
52
+ * @param logoUrl - URL to logo image
53
+ * @param alt - Alt text for accessibility
54
+ * @returns HTML string
55
+ */
56
+ function renderLogo(logoUrl, alt) {
57
+ if (!logoUrl) {
58
+ return renderDefaultAgentIcon();
59
+ }
60
+ const validUrl = (0, validators_1.validateUrl)(logoUrl);
61
+ if (!validUrl) {
62
+ return renderDefaultAgentIcon();
63
+ }
64
+ return `<img src="${(0, escape_1.escapeAttr)(validUrl)}" alt="${(0, escape_1.escapeAttr)(alt || "Agent")}" class="w-full h-full object-contain" />`;
65
+ }
66
+ /**
67
+ * Render agent info section with logo and description.
68
+ *
69
+ * @param description - Agent description text
70
+ * @param logoUrl - Optional logo URL
71
+ * @returns HTML string
72
+ */
73
+ function renderAgentInfo(description, logoUrl) {
74
+ return `
75
+ <div class="${tokens_1.CONSENT_CLASSES.agentWrapper}">
76
+ <div class="${tokens_1.CONSENT_CLASSES.agentIcon}">
77
+ ${renderLogo(logoUrl)}
78
+ </div>
79
+ <p class="${tokens_1.CONSENT_CLASSES.agentDescription}">${(0, escape_1.escapeHtml)(description)}</p>
80
+ </div>
81
+ `;
82
+ }
83
+ // ============================================================================
84
+ // Header
85
+ // ============================================================================
86
+ /**
87
+ * Render page header with optional logo and company name.
88
+ *
89
+ * @param title - Page title
90
+ * @param subtitle - Optional subtitle
91
+ * @param logoUrl - Optional logo URL for header
92
+ * @param companyName - Optional company name
93
+ * @returns HTML string
94
+ */
95
+ function renderHeader(title, subtitle, logoUrl, companyName) {
96
+ let logoHtml = "";
97
+ if (logoUrl) {
98
+ const validUrl = (0, validators_1.validateUrl)(logoUrl);
99
+ if (validUrl) {
100
+ logoHtml = `<img src="${(0, escape_1.escapeAttr)(validUrl)}" alt="${(0, escape_1.escapeAttr)(companyName || "Logo")}" class="h-12 w-auto mb-4 mx-auto" />`;
101
+ }
102
+ }
103
+ const companyHtml = companyName
104
+ ? `<p class="text-sm text-gray-600 mb-2">${(0, escape_1.escapeHtml)(companyName)}</p>`
105
+ : "";
106
+ const subtitleHtml = subtitle
107
+ ? `<p class="${tokens_1.CONSENT_CLASSES.subtitle}">${(0, escape_1.escapeHtml)(subtitle)}</p>`
108
+ : "";
109
+ return `
110
+ <div class="${tokens_1.CONSENT_CLASSES.headerCenter}">
111
+ ${logoHtml}
112
+ ${companyHtml}
113
+ <h1 class="${tokens_1.CONSENT_CLASSES.title}">${(0, escape_1.escapeHtml)(title)}</h1>
114
+ ${subtitleHtml}
115
+ </div>
116
+ `;
117
+ }
118
+ // ============================================================================
119
+ // Buttons
120
+ // ============================================================================
121
+ /**
122
+ * Render a button element.
123
+ *
124
+ * @param text - Button text
125
+ * @param variant - 'primary' | 'secondary'
126
+ * @param type - 'submit' | 'button'
127
+ * @param attributes - Additional HTML attributes
128
+ * @returns HTML string
129
+ */
130
+ function renderButton(text, variant, type = "button", attributes = {}) {
131
+ const baseClass = variant === "primary"
132
+ ? `${tokens_1.CONSENT_CLASSES.buttonPrimary} btn-primary`
133
+ : tokens_1.CONSENT_CLASSES.buttonSecondary;
134
+ const attrs = Object.entries(attributes)
135
+ .map(([k, v]) => `${k}="${(0, escape_1.escapeAttr)(v)}"`)
136
+ .join(" ");
137
+ return `<button type="${type}" class="${baseClass}" ${attrs}>${(0, escape_1.escapeHtml)(text)}</button>`;
138
+ }
139
+ /**
140
+ * Render button group with cancel and submit buttons.
141
+ *
142
+ * @param cancelText - Cancel button text
143
+ * @param submitText - Submit button text
144
+ * @returns HTML string
145
+ */
146
+ function renderButtonGroup(cancelText, submitText) {
147
+ return `
148
+ <div class="${tokens_1.CONSENT_CLASSES.buttonGroup}">
149
+ ${renderButton(cancelText, "secondary", "button", { onclick: "window.close()" })}
150
+ ${renderButton(submitText, "primary", "submit")}
151
+ </div>
152
+ `;
153
+ }
154
+ /**
155
+ * Render a full-width primary button.
156
+ *
157
+ * @param text - Button text
158
+ * @param type - 'submit' | 'button'
159
+ * @returns HTML string
160
+ */
161
+ function renderFullWidthButton(text, type = "submit") {
162
+ return `<button type="${type}" class="${tokens_1.CONSENT_CLASSES.buttonFull} btn-primary">${(0, escape_1.escapeHtml)(text)}</button>`;
163
+ }
164
+ // ============================================================================
165
+ // Form Elements
166
+ // ============================================================================
167
+ /**
168
+ * Render a checkbox input.
169
+ *
170
+ * @param name - Input name
171
+ * @param label - Label text (can include HTML like links)
172
+ * @param required - Whether field is required
173
+ * @param checked - Whether initially checked
174
+ * @param disabled - Whether disabled
175
+ * @returns HTML string
176
+ */
177
+ function renderCheckbox(name, label, required = false, checked = false, disabled = false) {
178
+ const requiredAttr = required ? "required" : "";
179
+ const checkedAttr = checked ? "checked" : "";
180
+ const disabledAttr = disabled ? "disabled" : "";
181
+ return `
182
+ <label class="${tokens_1.CONSENT_CLASSES.checkboxLabel}">
183
+ <input type="checkbox" name="${(0, escape_1.escapeAttr)(name)}"
184
+ class="${tokens_1.CONSENT_CLASSES.checkbox}"
185
+ ${requiredAttr} ${checkedAttr} ${disabledAttr} />
186
+ <span class="${tokens_1.CONSENT_CLASSES.checkboxText}">${label}</span>
187
+ </label>
188
+ `;
189
+ }
190
+ /**
191
+ * Render an input field with label.
192
+ *
193
+ * @param type - Input type
194
+ * @param name - Input name
195
+ * @param label - Label text
196
+ * @param placeholder - Placeholder text
197
+ * @param required - Whether required
198
+ * @param autocomplete - Autocomplete value
199
+ * @returns HTML string
200
+ */
201
+ function renderInput(type, name, label, placeholder, required = false, autocomplete) {
202
+ const placeholderAttr = placeholder
203
+ ? `placeholder="${(0, escape_1.escapeAttr)(placeholder)}"`
204
+ : "";
205
+ const requiredAttr = required ? "required" : "";
206
+ const autocompleteAttr = autocomplete
207
+ ? `autocomplete="${(0, escape_1.escapeAttr)(autocomplete)}"`
208
+ : "";
209
+ return `
210
+ <div class="space-y-2">
211
+ <label for="${(0, escape_1.escapeAttr)(name)}" class="block text-sm font-medium text-gray-700">
212
+ ${(0, escape_1.escapeHtml)(label)}
213
+ </label>
214
+ <input
215
+ type="${type}"
216
+ id="${(0, escape_1.escapeAttr)(name)}"
217
+ name="${(0, escape_1.escapeAttr)(name)}"
218
+ ${placeholderAttr}
219
+ ${requiredAttr}
220
+ ${autocompleteAttr}
221
+ class="${tokens_1.CONSENT_CLASSES.input} ${tokens_1.CONSENT_CLASSES.inputFocus}"
222
+ />
223
+ </div>
224
+ `;
225
+ }
226
+ // ============================================================================
227
+ // Notices
228
+ // ============================================================================
229
+ /**
230
+ * Render expiration notice.
231
+ *
232
+ * @param text - Notice text
233
+ * @param days - Number of days (optional)
234
+ * @returns HTML string
235
+ */
236
+ function renderExpirationNotice(text, days) {
237
+ const fullText = days ? `${text} ${days} days` : text;
238
+ return `
239
+ <div class="${tokens_1.CONSENT_CLASSES.expirationWrapper} bg-secondary-50">
240
+ <svg class="w-4 h-4 text-primary flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
241
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
242
+ d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
243
+ </svg>
244
+ <span class="text-sm text-gray-600">${(0, escape_1.escapeHtml)(fullText)}</span>
245
+ </div>
246
+ `;
247
+ }
248
+ /**
249
+ * Render an error container (initially hidden).
250
+ *
251
+ * @param id - Container ID for JavaScript access
252
+ * @returns HTML string
253
+ */
254
+ function renderErrorContainer(id = "error-container") {
255
+ return `
256
+ <div id="${(0, escape_1.escapeAttr)(id)}" class="hidden">
257
+ <div class="${tokens_1.CONSENT_CLASSES.errorContainer}"></div>
258
+ </div>
259
+ `;
260
+ }
261
+ // ============================================================================
262
+ // Icons
263
+ // ============================================================================
264
+ /**
265
+ * Render a checkmark icon.
266
+ */
267
+ function renderCheckIcon() {
268
+ return `
269
+ <svg class="w-5 h-5 text-green-500 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
270
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
271
+ </svg>
272
+ `;
273
+ }
274
+ /**
275
+ * Render a clock icon.
276
+ */
277
+ function renderClockIcon() {
278
+ return `
279
+ <svg class="w-4 h-4 text-primary flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
280
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
281
+ d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
282
+ </svg>
283
+ `;
284
+ }
285
+ /**
286
+ * Render a success checkmark icon (large, green).
287
+ */
288
+ function renderSuccessIcon() {
289
+ return `
290
+ <svg class="mx-auto h-12 w-12 text-green-500 mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
291
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
292
+ </svg>
293
+ `;
294
+ }
295
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/templates/base/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Base Template Exports
3
+ *
4
+ * @module @kya-os/consent/templates/base
5
+ */
6
+ export { BaseConsentTemplate } from "./base-template";
7
+ export { renderDefaultAgentIcon, renderLogo, renderAgentInfo, renderHeader, renderButton, renderButtonGroup, renderFullWidthButton, renderCheckbox, renderInput, renderExpirationNotice, renderErrorContainer, renderCheckIcon, renderClockIcon, renderSuccessIcon, } from "./components";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/base/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Base Template Exports
4
+ *
5
+ * @module @kya-os/consent/templates/base
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.renderSuccessIcon = exports.renderClockIcon = exports.renderCheckIcon = exports.renderErrorContainer = exports.renderExpirationNotice = exports.renderInput = exports.renderCheckbox = exports.renderFullWidthButton = exports.renderButtonGroup = exports.renderButton = exports.renderHeader = exports.renderAgentInfo = exports.renderLogo = exports.renderDefaultAgentIcon = exports.BaseConsentTemplate = void 0;
9
+ var base_template_1 = require("./base-template");
10
+ Object.defineProperty(exports, "BaseConsentTemplate", { enumerable: true, get: function () { return base_template_1.BaseConsentTemplate; } });
11
+ var components_1 = require("./components");
12
+ Object.defineProperty(exports, "renderDefaultAgentIcon", { enumerable: true, get: function () { return components_1.renderDefaultAgentIcon; } });
13
+ Object.defineProperty(exports, "renderLogo", { enumerable: true, get: function () { return components_1.renderLogo; } });
14
+ Object.defineProperty(exports, "renderAgentInfo", { enumerable: true, get: function () { return components_1.renderAgentInfo; } });
15
+ Object.defineProperty(exports, "renderHeader", { enumerable: true, get: function () { return components_1.renderHeader; } });
16
+ Object.defineProperty(exports, "renderButton", { enumerable: true, get: function () { return components_1.renderButton; } });
17
+ Object.defineProperty(exports, "renderButtonGroup", { enumerable: true, get: function () { return components_1.renderButtonGroup; } });
18
+ Object.defineProperty(exports, "renderFullWidthButton", { enumerable: true, get: function () { return components_1.renderFullWidthButton; } });
19
+ Object.defineProperty(exports, "renderCheckbox", { enumerable: true, get: function () { return components_1.renderCheckbox; } });
20
+ Object.defineProperty(exports, "renderInput", { enumerable: true, get: function () { return components_1.renderInput; } });
21
+ Object.defineProperty(exports, "renderExpirationNotice", { enumerable: true, get: function () { return components_1.renderExpirationNotice; } });
22
+ Object.defineProperty(exports, "renderErrorContainer", { enumerable: true, get: function () { return components_1.renderErrorContainer; } });
23
+ Object.defineProperty(exports, "renderCheckIcon", { enumerable: true, get: function () { return components_1.renderCheckIcon; } });
24
+ Object.defineProperty(exports, "renderClockIcon", { enumerable: true, get: function () { return components_1.renderClockIcon; } });
25
+ Object.defineProperty(exports, "renderSuccessIcon", { enumerable: true, get: function () { return components_1.renderSuccessIcon; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/base/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA;AAC5B,2CAesB;AAdpB,oHAAA,sBAAsB,OAAA;AACtB,wGAAA,UAAU,OAAA;AACV,6GAAA,eAAe,OAAA;AACf,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,+GAAA,iBAAiB,OAAA;AACjB,mHAAA,qBAAqB,OAAA;AACrB,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AACX,oHAAA,sBAAsB,OAAA;AACtB,kHAAA,oBAAoB,OAAA;AACpB,6GAAA,eAAe,OAAA;AACf,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Consent Templates
3
+ *
4
+ * Template Method pattern implementation for consent page rendering.
5
+ * Used by MCP-I Cloudflare runtime to generate consent pages.
6
+ *
7
+ * @module @kya-os/consent/templates
8
+ */
9
+ export * from "./base/base-template";
10
+ export * from "./base/components";
11
+ export * from "./modes/consent-only.template";
12
+ export * from "./modes/credentials.template";
13
+ export * from "./modes/oauth.template";
14
+ export * from "./modes/magic-link.template";
15
+ export * from "./modes/otp.template";
16
+ export * from "./modes/success.template";
17
+ export * from "./registry";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Templates
4
+ *
5
+ * Template Method pattern implementation for consent page rendering.
6
+ * Used by MCP-I Cloudflare runtime to generate consent pages.
7
+ *
8
+ * @module @kya-os/consent/templates
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ __exportStar(require("./base/base-template"), exports);
26
+ __exportStar(require("./base/components"), exports);
27
+ __exportStar(require("./modes/consent-only.template"), exports);
28
+ __exportStar(require("./modes/credentials.template"), exports);
29
+ __exportStar(require("./modes/oauth.template"), exports);
30
+ __exportStar(require("./modes/magic-link.template"), exports);
31
+ __exportStar(require("./modes/otp.template"), exports);
32
+ __exportStar(require("./modes/success.template"), exports);
33
+ __exportStar(require("./registry"), exports);
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,uDAAqC;AACrC,oDAAkC;AAClC,gEAA8C;AAC9C,+DAA6C;AAC7C,yDAAuC;AACvC,8DAA4C;AAC5C,uDAAqC;AACrC,2DAAyC;AACzC,6CAA2B"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Consent-Only Template
3
+ *
4
+ * Default clickwrap consent without authentication.
5
+ * User simply agrees to permissions and terms.
6
+ *
7
+ * @module @kya-os/consent/templates/modes/consent-only
8
+ */
9
+ import { BaseConsentTemplate } from "../base/base-template";
10
+ import type { AuthMode } from "../../types/modes.types";
11
+ /**
12
+ * Consent-Only Template
13
+ *
14
+ * Renders a simple clickwrap consent page:
15
+ * - Shows requested permissions as checkboxes (pre-checked, disabled)
16
+ * - Shows expiration notice
17
+ * - Terms acceptance checkbox
18
+ * - Cancel/Allow buttons
19
+ */
20
+ export declare class ConsentOnlyTemplate extends BaseConsentTemplate {
21
+ get authMode(): AuthMode;
22
+ renderAuthContent(): string;
23
+ /**
24
+ * Render the list of requested permissions.
25
+ */
26
+ private renderPermissionsList;
27
+ /**
28
+ * Render a single scope item with info tooltip.
29
+ */
30
+ private renderScopeItem;
31
+ /**
32
+ * Render the expiration notice.
33
+ */
34
+ private renderExpirationNotice;
35
+ }
36
+ //# sourceMappingURL=consent-only.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-only.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/consent-only.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAEQ,iBAAiB,IAAI,MAAM;IAOpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAK/B"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Consent-Only Template
4
+ *
5
+ * Default clickwrap consent without authentication.
6
+ * User simply agrees to permissions and terms.
7
+ *
8
+ * @module @kya-os/consent/templates/modes/consent-only
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ConsentOnlyTemplate = void 0;
12
+ const base_template_1 = require("../base/base-template");
13
+ const components_1 = require("../base/components");
14
+ const tokens_1 = require("../../styles/tokens");
15
+ const escape_1 = require("../../security/escape");
16
+ const modes_types_1 = require("../../types/modes.types");
17
+ /**
18
+ * Consent-Only Template
19
+ *
20
+ * Renders a simple clickwrap consent page:
21
+ * - Shows requested permissions as checkboxes (pre-checked, disabled)
22
+ * - Shows expiration notice
23
+ * - Terms acceptance checkbox
24
+ * - Cancel/Allow buttons
25
+ */
26
+ class ConsentOnlyTemplate extends base_template_1.BaseConsentTemplate {
27
+ get authMode() {
28
+ return modes_types_1.AUTH_MODES.CONSENT_ONLY;
29
+ }
30
+ renderAuthContent() {
31
+ return `
32
+ ${this.renderPermissionsList()}
33
+ ${this.renderExpirationNotice()}
34
+ `;
35
+ }
36
+ /**
37
+ * Render the list of requested permissions.
38
+ */
39
+ renderPermissionsList() {
40
+ const { copy } = this.resolved;
41
+ const { scopes } = this.config;
42
+ if (scopes.length === 0) {
43
+ return `<p class="text-sm text-gray-600">No specific permissions required.</p>`;
44
+ }
45
+ const scopeItems = scopes
46
+ .map((scope) => this.renderScopeItem(scope))
47
+ .join("");
48
+ return `
49
+ <div class="space-y-5">
50
+ <p class="${tokens_1.CONSENT_CLASSES.permissionsHeader}">${(0, escape_1.escapeHtml)(copy.permissionsHeader)}</p>
51
+ <div class="${tokens_1.CONSENT_CLASSES.permissionsList}">
52
+ ${scopeItems}
53
+ </div>
54
+ </div>
55
+ `;
56
+ }
57
+ /**
58
+ * Render a single scope item with info tooltip.
59
+ */
60
+ renderScopeItem(scope) {
61
+ // Scopes are pre-checked and disabled (informational only)
62
+ return (0, components_1.renderCheckbox)(`scope_${scope}`, (0, escape_1.escapeHtml)(scope), false, true, true);
63
+ }
64
+ /**
65
+ * Render the expiration notice.
66
+ */
67
+ renderExpirationNotice() {
68
+ const { copy } = this.resolved;
69
+ const expirationDays = this.resolved.expirationDays || 30;
70
+ return (0, components_1.renderExpirationNotice)(copy.expirationText, expirationDays);
71
+ }
72
+ }
73
+ exports.ConsentOnlyTemplate = ConsentOnlyTemplate;
74
+ //# sourceMappingURL=consent-only.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-only.template.js","sourceRoot":"","sources":["../../../src/templates/modes/consent-only.template.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,yDAA4D;AAC5D,mDAA4E;AAC5E,gDAAsD;AACtD,kDAAmD;AAEnD,yDAAqD;AAErD;;;;;;;;GAQG;AACH,MAAa,mBAAoB,SAAQ,mCAAmB;IAC1D,IAAI,QAAQ;QACV,OAAO,wBAAU,CAAC,YAAY,CAAC;IACjC,CAAC;IAEQ,iBAAiB;QACxB,OAAO;QACH,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,sBAAsB,EAAE;KAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,wEAAwE,CAAC;QAClF,CAAC;QAED,MAAM,UAAU,GAAG,MAAM;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;;oBAES,wBAAe,CAAC,iBAAiB,KAAK,IAAA,mBAAU,EAAC,IAAI,CAAC,iBAAiB,CAAC;sBACtE,wBAAe,CAAC,eAAe;YACzC,UAAU;;;KAGjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa;QACnC,2DAA2D;QAC3D,OAAO,IAAA,2BAAc,EACnB,SAAS,KAAK,EAAE,EAChB,IAAA,mBAAU,EAAC,KAAK,CAAC,EACjB,KAAK,EACL,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QAC1D,OAAO,IAAA,mCAAsB,EAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;CACF;AA3DD,kDA2DC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Credentials Template
3
+ *
4
+ * Username/password authentication flow.
5
+ * HTML structure matches AgentShield's CredentialsPreview.tsx EXACTLY.
6
+ *
7
+ * This is a pixel-perfect port of the React component to static HTML.
8
+ * Any changes here MUST be synchronized with AgentShield.
9
+ *
10
+ * @module @kya-os/consent/templates/modes/credentials
11
+ */
12
+ import { BaseConsentTemplate } from "../base/base-template";
13
+ import type { AuthMode, CredentialsConfig } from "../../types/modes.types";
14
+ import type { ResolvedConsentConfig } from "../../types/config.types";
15
+ import type { ExtendedConsentPageConfig } from "../../types/page.types";
16
+ /**
17
+ * Credentials Template
18
+ *
19
+ * Renders a login form matching AgentShield's CredentialsPreview exactly:
20
+ * - PreviewShell wrapper with branding
21
+ * - PreviewHeader with title
22
+ * - PreviewContent with spacing
23
+ * - PreviewAgentInfo with icon + description
24
+ * - Username/email field (shadcn Input style)
25
+ * - Password field with show/hide toggle
26
+ * - Remember me checkbox (label toggles checkbox)
27
+ * - Forgot password link
28
+ * - Cancel + Sign in buttons (PreviewButtonGroup)
29
+ */
30
+ export declare class CredentialsTemplate extends BaseConsentTemplate {
31
+ private remoteCredentialsConfig?;
32
+ constructor(config: ExtendedConsentPageConfig, resolved: ResolvedConsentConfig, remoteCredentials?: CredentialsConfig);
33
+ get authMode(): AuthMode;
34
+ private get credentialsConfig();
35
+ /**
36
+ * Override the main render method to match AgentShield's exact structure.
37
+ * This bypasses the base template's structure to ensure pixel-perfect match.
38
+ */
39
+ render(): string;
40
+ /**
41
+ * Render the <head> section with meta tags, styles, and scripts.
42
+ */
43
+ protected renderHead(): string;
44
+ /**
45
+ * Render agent icon SVG (matches AgentIconPlaceholder in AgentShield)
46
+ */
47
+ private renderAgentIcon;
48
+ /**
49
+ * Render remember me checkbox and forgot password link.
50
+ * The checkbox uses a <label> that wraps everything so clicking toggles.
51
+ */
52
+ private renderRememberAndForgot;
53
+ /**
54
+ * These methods are overridden to prevent base template rendering
55
+ * since we completely override render()
56
+ */
57
+ renderAuthContent(): string;
58
+ protected renderActionButtons(): string;
59
+ protected renderTermsSection(): string;
60
+ /**
61
+ * Render mode-specific scripts for password toggle and checkbox
62
+ */
63
+ protected renderModeScript(): string;
64
+ }
65
+ //# sourceMappingURL=credentials.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.template.d.ts","sourceRoot":"","sources":["../../../src/templates/modes/credentials.template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGxE;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,OAAO,CAAC,uBAAuB,CAAC,CAAoB;gBAGlD,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,qBAAqB,EAC/B,iBAAiB,CAAC,EAAE,iBAAiB;IAMvC,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,OAAO,KAAK,iBAAiB,GAoB5B;IAED;;;OAGG;IACM,MAAM,IAAI,MAAM;IAyHzB;;OAEG;cACgB,UAAU,IAAI,MAAM;IAcvC;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAiD/B;;;OAGG;IACM,iBAAiB,IAAI,MAAM;cAIjB,mBAAmB,IAAI,MAAM;cAI7B,kBAAkB,IAAI,MAAM;IAI/C;;OAEG;cACgB,gBAAgB,IAAI,MAAM;CA2I9C"}