@kya-os/consent 0.1.13 → 0.1.14

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 (126) hide show
  1. package/dist/bundle/inline.d.ts.map +1 -1
  2. package/dist/bundle/inline.js +2 -2
  3. package/dist/bundle/inline.js.map +1 -1
  4. package/dist/bundle/shell.d.ts +5 -0
  5. package/dist/bundle/shell.d.ts.map +1 -1
  6. package/dist/bundle/shell.js +3 -1
  7. package/dist/bundle/shell.js.map +1 -1
  8. package/dist/cjs/bundle/index.js +57 -0
  9. package/dist/cjs/bundle/index.js.map +1 -0
  10. package/dist/cjs/bundle/inline.js +22 -0
  11. package/dist/cjs/bundle/inline.js.map +1 -0
  12. package/dist/cjs/bundle/shell.js +291 -0
  13. package/dist/cjs/bundle/shell.js.map +1 -0
  14. package/dist/cjs/components/consent-button.js +180 -0
  15. package/dist/cjs/components/consent-button.js.map +1 -0
  16. package/dist/cjs/components/consent-checkbox.js +223 -0
  17. package/dist/cjs/components/consent-checkbox.js.map +1 -0
  18. package/dist/cjs/components/consent-input.js +335 -0
  19. package/dist/cjs/components/consent-input.js.map +1 -0
  20. package/dist/cjs/components/consent-oauth-button.js +392 -0
  21. package/dist/cjs/components/consent-oauth-button.js.map +1 -0
  22. package/dist/cjs/components/consent-otp-input.js +388 -0
  23. package/dist/cjs/components/consent-otp-input.js.map +1 -0
  24. package/dist/cjs/components/consent-permissions.js +433 -0
  25. package/dist/cjs/components/consent-permissions.js.map +1 -0
  26. package/dist/cjs/components/consent-shell.js +234 -0
  27. package/dist/cjs/components/consent-shell.js.map +1 -0
  28. package/dist/cjs/components/consent-terms.js +287 -0
  29. package/dist/cjs/components/consent-terms.js.map +1 -0
  30. package/dist/cjs/components/index.js +37 -0
  31. package/dist/cjs/components/index.js.map +1 -0
  32. package/dist/cjs/components/mcp-consent.js +1034 -0
  33. package/dist/cjs/components/mcp-consent.js.map +1 -0
  34. package/dist/cjs/constants/auth-modes.js +128 -0
  35. package/dist/cjs/constants/auth-modes.js.map +1 -0
  36. package/dist/cjs/constants/colors.js +40 -0
  37. package/dist/cjs/constants/colors.js.map +1 -0
  38. package/dist/cjs/constants/defaults.js +146 -0
  39. package/dist/cjs/constants/defaults.js.map +1 -0
  40. package/dist/cjs/constants/index.js +40 -0
  41. package/dist/cjs/constants/index.js.map +1 -0
  42. package/dist/cjs/index.js +49 -0
  43. package/dist/cjs/index.js.map +1 -0
  44. package/dist/cjs/package.json +1 -0
  45. package/dist/cjs/react/index.js +190 -0
  46. package/dist/cjs/react/index.js.map +1 -0
  47. package/dist/cjs/resolution/index.js +28 -0
  48. package/dist/cjs/resolution/index.js.map +1 -0
  49. package/dist/cjs/resolution/resolve-branding.js +159 -0
  50. package/dist/cjs/resolution/resolve-branding.js.map +1 -0
  51. package/dist/cjs/resolution/resolve-config.js +270 -0
  52. package/dist/cjs/resolution/resolve-config.js.map +1 -0
  53. package/dist/cjs/resolution/resolve-copy.js +136 -0
  54. package/dist/cjs/resolution/resolve-copy.js.map +1 -0
  55. package/dist/cjs/schemas/api.schemas.js +156 -0
  56. package/dist/cjs/schemas/api.schemas.js.map +1 -0
  57. package/dist/cjs/schemas/branding.schemas.js +57 -0
  58. package/dist/cjs/schemas/branding.schemas.js.map +1 -0
  59. package/dist/cjs/schemas/config.schemas.js +147 -0
  60. package/dist/cjs/schemas/config.schemas.js.map +1 -0
  61. package/dist/cjs/schemas/index.js +29 -0
  62. package/dist/cjs/schemas/index.js.map +1 -0
  63. package/dist/cjs/schemas/modes.schemas.js +107 -0
  64. package/dist/cjs/schemas/modes.schemas.js.map +1 -0
  65. package/dist/cjs/security/escape.js +206 -0
  66. package/dist/cjs/security/escape.js.map +1 -0
  67. package/dist/cjs/security/index.js +26 -0
  68. package/dist/cjs/security/index.js.map +1 -0
  69. package/dist/cjs/security/validators.js +210 -0
  70. package/dist/cjs/security/validators.js.map +1 -0
  71. package/dist/cjs/styles/css-variables.js +129 -0
  72. package/dist/cjs/styles/css-variables.js.map +1 -0
  73. package/dist/cjs/styles/index.js +28 -0
  74. package/dist/cjs/styles/index.js.map +1 -0
  75. package/dist/cjs/styles/stylesheet.js +204 -0
  76. package/dist/cjs/styles/stylesheet.js.map +1 -0
  77. package/dist/cjs/styles/tokens.js +183 -0
  78. package/dist/cjs/styles/tokens.js.map +1 -0
  79. package/dist/cjs/templates/base/base-template.js +282 -0
  80. package/dist/cjs/templates/base/base-template.js.map +1 -0
  81. package/dist/cjs/templates/base/components.js +295 -0
  82. package/dist/cjs/templates/base/components.js.map +1 -0
  83. package/dist/cjs/templates/base/index.js +26 -0
  84. package/dist/cjs/templates/base/index.js.map +1 -0
  85. package/dist/cjs/templates/index.js +34 -0
  86. package/dist/cjs/templates/index.js.map +1 -0
  87. package/dist/cjs/templates/modes/consent-only.template.js +74 -0
  88. package/dist/cjs/templates/modes/consent-only.template.js.map +1 -0
  89. package/dist/cjs/templates/modes/credentials.template.js +414 -0
  90. package/dist/cjs/templates/modes/credentials.template.js.map +1 -0
  91. package/dist/cjs/templates/modes/index.js +24 -0
  92. package/dist/cjs/templates/modes/index.js.map +1 -0
  93. package/dist/cjs/templates/modes/magic-link.template.js +196 -0
  94. package/dist/cjs/templates/modes/magic-link.template.js.map +1 -0
  95. package/dist/cjs/templates/modes/oauth.template.js +153 -0
  96. package/dist/cjs/templates/modes/oauth.template.js.map +1 -0
  97. package/dist/cjs/templates/modes/otp.template.js +316 -0
  98. package/dist/cjs/templates/modes/otp.template.js.map +1 -0
  99. package/dist/cjs/templates/modes/success.template.js +140 -0
  100. package/dist/cjs/templates/modes/success.template.js.map +1 -0
  101. package/dist/cjs/templates/registry.js +133 -0
  102. package/dist/cjs/templates/registry.js.map +1 -0
  103. package/dist/cjs/types/api.types.js +10 -0
  104. package/dist/cjs/types/api.types.js.map +1 -0
  105. package/dist/cjs/types/branding.types.js +10 -0
  106. package/dist/cjs/types/branding.types.js.map +1 -0
  107. package/dist/cjs/types/config.types.js +10 -0
  108. package/dist/cjs/types/config.types.js.map +1 -0
  109. package/dist/cjs/types/copy.types.js +10 -0
  110. package/dist/cjs/types/copy.types.js.map +1 -0
  111. package/dist/cjs/types/index.js +31 -0
  112. package/dist/cjs/types/index.js.map +1 -0
  113. package/dist/cjs/types/modes.types.js +140 -0
  114. package/dist/cjs/types/modes.types.js.map +1 -0
  115. package/dist/cjs/types/page.types.js +10 -0
  116. package/dist/cjs/types/page.types.js.map +1 -0
  117. package/dist/components/mcp-consent.d.ts +6 -0
  118. package/dist/components/mcp-consent.d.ts.map +1 -1
  119. package/dist/components/mcp-consent.js +14 -0
  120. package/dist/components/mcp-consent.js.map +1 -1
  121. package/dist/consent.js +7 -0
  122. package/dist/consent.min.js +2 -2
  123. package/dist/schemas/api.schemas.d.ts +116 -116
  124. package/dist/schemas/config.schemas.d.ts +116 -116
  125. package/dist/schemas/modes.schemas.d.ts +28 -28
  126. package/package.json +29 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-template.js","sourceRoot":"","sources":["../../../../src/templates/base/base-template.ts"],"names":[],"mappings":"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"}
@@ -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_js_1 = require("../../styles/tokens.js");
30
+ const escape_js_1 = require("../../security/escape.js");
31
+ const validators_js_1 = require("../../security/validators.js");
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_js_1.validateUrl)(logoUrl);
61
+ if (!validUrl) {
62
+ return renderDefaultAgentIcon();
63
+ }
64
+ return `<img src="${(0, escape_js_1.escapeAttr)(validUrl)}" alt="${(0, escape_js_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_js_1.CONSENT_CLASSES.agentWrapper}">
76
+ <div class="${tokens_js_1.CONSENT_CLASSES.agentIcon}">
77
+ ${renderLogo(logoUrl)}
78
+ </div>
79
+ <p class="${tokens_js_1.CONSENT_CLASSES.agentDescription}">${(0, escape_js_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_js_1.validateUrl)(logoUrl);
99
+ if (validUrl) {
100
+ logoHtml = `<img src="${(0, escape_js_1.escapeAttr)(validUrl)}" alt="${(0, escape_js_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_js_1.escapeHtml)(companyName)}</p>`
105
+ : "";
106
+ const subtitleHtml = subtitle
107
+ ? `<p class="${tokens_js_1.CONSENT_CLASSES.subtitle}">${(0, escape_js_1.escapeHtml)(subtitle)}</p>`
108
+ : "";
109
+ return `
110
+ <div class="${tokens_js_1.CONSENT_CLASSES.headerCenter}">
111
+ ${logoHtml}
112
+ ${companyHtml}
113
+ <h1 class="${tokens_js_1.CONSENT_CLASSES.title}">${(0, escape_js_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_js_1.CONSENT_CLASSES.buttonPrimary} btn-primary`
133
+ : tokens_js_1.CONSENT_CLASSES.buttonSecondary;
134
+ const attrs = Object.entries(attributes)
135
+ .map(([k, v]) => `${k}="${(0, escape_js_1.escapeAttr)(v)}"`)
136
+ .join(" ");
137
+ return `<button type="${type}" class="${baseClass}" ${attrs}>${(0, escape_js_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_js_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_js_1.CONSENT_CLASSES.buttonFull} btn-primary">${(0, escape_js_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_js_1.CONSENT_CLASSES.checkboxLabel}">
183
+ <input type="checkbox" name="${(0, escape_js_1.escapeAttr)(name)}"
184
+ class="${tokens_js_1.CONSENT_CLASSES.checkbox}"
185
+ ${requiredAttr} ${checkedAttr} ${disabledAttr} />
186
+ <span class="${tokens_js_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_js_1.escapeAttr)(placeholder)}"`
204
+ : "";
205
+ const requiredAttr = required ? "required" : "";
206
+ const autocompleteAttr = autocomplete
207
+ ? `autocomplete="${(0, escape_js_1.escapeAttr)(autocomplete)}"`
208
+ : "";
209
+ return `
210
+ <div class="space-y-2">
211
+ <label for="${(0, escape_js_1.escapeAttr)(name)}" class="block text-sm font-medium text-gray-700">
212
+ ${(0, escape_js_1.escapeHtml)(label)}
213
+ </label>
214
+ <input
215
+ type="${type}"
216
+ id="${(0, escape_js_1.escapeAttr)(name)}"
217
+ name="${(0, escape_js_1.escapeAttr)(name)}"
218
+ ${placeholderAttr}
219
+ ${requiredAttr}
220
+ ${autocompleteAttr}
221
+ class="${tokens_js_1.CONSENT_CLASSES.input} ${tokens_js_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_js_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_js_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_js_1.escapeAttr)(id)}" class="hidden">
257
+ <div class="${tokens_js_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,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_js_1 = require("./base-template.js");
10
+ Object.defineProperty(exports, "BaseConsentTemplate", { enumerable: true, get: function () { return base_template_js_1.BaseConsentTemplate; } });
11
+ var components_js_1 = require("./components.js");
12
+ Object.defineProperty(exports, "renderDefaultAgentIcon", { enumerable: true, get: function () { return components_js_1.renderDefaultAgentIcon; } });
13
+ Object.defineProperty(exports, "renderLogo", { enumerable: true, get: function () { return components_js_1.renderLogo; } });
14
+ Object.defineProperty(exports, "renderAgentInfo", { enumerable: true, get: function () { return components_js_1.renderAgentInfo; } });
15
+ Object.defineProperty(exports, "renderHeader", { enumerable: true, get: function () { return components_js_1.renderHeader; } });
16
+ Object.defineProperty(exports, "renderButton", { enumerable: true, get: function () { return components_js_1.renderButton; } });
17
+ Object.defineProperty(exports, "renderButtonGroup", { enumerable: true, get: function () { return components_js_1.renderButtonGroup; } });
18
+ Object.defineProperty(exports, "renderFullWidthButton", { enumerable: true, get: function () { return components_js_1.renderFullWidthButton; } });
19
+ Object.defineProperty(exports, "renderCheckbox", { enumerable: true, get: function () { return components_js_1.renderCheckbox; } });
20
+ Object.defineProperty(exports, "renderInput", { enumerable: true, get: function () { return components_js_1.renderInput; } });
21
+ Object.defineProperty(exports, "renderExpirationNotice", { enumerable: true, get: function () { return components_js_1.renderExpirationNotice; } });
22
+ Object.defineProperty(exports, "renderErrorContainer", { enumerable: true, get: function () { return components_js_1.renderErrorContainer; } });
23
+ Object.defineProperty(exports, "renderCheckIcon", { enumerable: true, get: function () { return components_js_1.renderCheckIcon; } });
24
+ Object.defineProperty(exports, "renderClockIcon", { enumerable: true, get: function () { return components_js_1.renderClockIcon; } });
25
+ Object.defineProperty(exports, "renderSuccessIcon", { enumerable: true, get: function () { return components_js_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,uDAAyD;AAAhD,uHAAA,mBAAmB,OAAA;AAC5B,iDAeyB;AAdvB,uHAAA,sBAAsB,OAAA;AACtB,2GAAA,UAAU,OAAA;AACV,gHAAA,eAAe,OAAA;AACf,6GAAA,YAAY,OAAA;AACZ,6GAAA,YAAY,OAAA;AACZ,kHAAA,iBAAiB,OAAA;AACjB,sHAAA,qBAAqB,OAAA;AACrB,+GAAA,cAAc,OAAA;AACd,4GAAA,WAAW,OAAA;AACX,uHAAA,sBAAsB,OAAA;AACtB,qHAAA,oBAAoB,OAAA;AACpB,gHAAA,eAAe,OAAA;AACf,gHAAA,eAAe,OAAA;AACf,kHAAA,iBAAiB,OAAA"}
@@ -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.js"), exports);
26
+ __exportStar(require("./base/components.js"), exports);
27
+ __exportStar(require("./modes/consent-only.template.js"), exports);
28
+ __exportStar(require("./modes/credentials.template.js"), exports);
29
+ __exportStar(require("./modes/oauth.template.js"), exports);
30
+ __exportStar(require("./modes/magic-link.template.js"), exports);
31
+ __exportStar(require("./modes/otp.template.js"), exports);
32
+ __exportStar(require("./modes/success.template.js"), exports);
33
+ __exportStar(require("./registry.js"), 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,0DAAwC;AACxC,uDAAqC;AACrC,mEAAiD;AACjD,kEAAgD;AAChD,4DAA0C;AAC1C,iEAA+C;AAC/C,0DAAwC;AACxC,8DAA4C;AAC5C,gDAA8B"}
@@ -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_js_1 = require("../base/base-template.js");
13
+ const components_js_1 = require("../base/components.js");
14
+ const tokens_js_1 = require("../../styles/tokens.js");
15
+ const escape_js_1 = require("../../security/escape.js");
16
+ const modes_types_js_1 = require("../../types/modes.types.js");
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_js_1.BaseConsentTemplate {
27
+ get authMode() {
28
+ return modes_types_js_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_js_1.CONSENT_CLASSES.permissionsHeader}">${(0, escape_js_1.escapeHtml)(copy.permissionsHeader)}</p>
51
+ <div class="${tokens_js_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_js_1.renderCheckbox)(`scope_${scope}`, (0, escape_js_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_js_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,+DAA+D;AAC/D,yDAA+E;AAC/E,sDAAyD;AACzD,wDAAsD;AAEtD,+DAAwD;AAExD;;;;;;;;GAQG;AACH,MAAa,mBAAoB,SAAQ,sCAAmB;IAC1D,IAAI,QAAQ;QACV,OAAO,2BAAU,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,2BAAe,CAAC,iBAAiB,KAAK,IAAA,sBAAU,EAAC,IAAI,CAAC,iBAAiB,CAAC;sBACtE,2BAAe,CAAC,eAAe;YACzC,UAAU;;;KAGjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa;QACnC,2DAA2D;QAC3D,OAAO,IAAA,8BAAc,EACnB,SAAS,KAAK,EAAE,EAChB,IAAA,sBAAU,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,sCAAsB,EAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;CACF;AA3DD,kDA2DC"}