@kya-os/consent 0.1.13 → 0.1.15

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 (131) 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 +162 -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 +177 -169
  124. package/dist/schemas/api.schemas.d.ts.map +1 -1
  125. package/dist/schemas/api.schemas.js +6 -0
  126. package/dist/schemas/api.schemas.js.map +1 -1
  127. package/dist/schemas/config.schemas.d.ts +116 -116
  128. package/dist/schemas/modes.schemas.d.ts +28 -28
  129. package/dist/types/api.types.d.ts +6 -0
  130. package/dist/types/api.types.d.ts.map +1 -1
  131. package/package.json +29 -15
@@ -0,0 +1,388 @@
1
+ "use strict";
2
+ /**
3
+ * Consent OTP Input Web Component
4
+ *
5
+ * Individual digit input boxes for one-time password entry.
6
+ * Supports auto-focus, paste handling, and keyboard navigation.
7
+ * Implements Form Associated Custom Elements for proper form participation.
8
+ *
9
+ * @module components/consent-otp-input
10
+ */
11
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
12
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ConsentOTPInput = void 0;
19
+ const lit_1 = require("lit");
20
+ const decorators_js_1 = require("lit/decorators.js");
21
+ /**
22
+ * ConsentOTPInput - OTP digit input boxes
23
+ *
24
+ * @example
25
+ * ```html
26
+ * <consent-otp-input
27
+ * length="6"
28
+ * name="otp"
29
+ * ></consent-otp-input>
30
+ * ```
31
+ *
32
+ * @fires input - Fired on each digit entry
33
+ * @fires complete - Fired when all digits are entered
34
+ * @fires change - Fired when value changes
35
+ * @csspart container - The container for all digit boxes
36
+ * @csspart input - Individual digit input
37
+ * @cssprop --consent-primary - Primary brand color for focus state
38
+ */
39
+ let ConsentOTPInput = class ConsentOTPInput extends lit_1.LitElement {
40
+ constructor() {
41
+ super();
42
+ /**
43
+ * Number of OTP digits
44
+ */
45
+ this.length = 6;
46
+ /**
47
+ * Form field name
48
+ */
49
+ this.name = 'otp';
50
+ /**
51
+ * Current OTP value
52
+ */
53
+ this.value = '';
54
+ /**
55
+ * Disabled state
56
+ */
57
+ this.disabled = false;
58
+ /**
59
+ * Error state
60
+ */
61
+ this.error = false;
62
+ /**
63
+ * Auto-focus first input on mount
64
+ */
65
+ this.autoFocus = false;
66
+ /**
67
+ * Input type (text or number)
68
+ */
69
+ this.inputType = 'text';
70
+ /**
71
+ * Internal digit values
72
+ */
73
+ this.digits = [];
74
+ this.internals = this.attachInternals();
75
+ }
76
+ connectedCallback() {
77
+ super.connectedCallback();
78
+ this.initializeDigits();
79
+ }
80
+ initializeDigits() {
81
+ this.digits = Array.from({ length: this.length }, () => '');
82
+ if (this.value) {
83
+ // Filter non-digits (consistent with handleInput and handlePaste)
84
+ const digitsOnly = this.value.replace(/\D/g, '').slice(0, this.length);
85
+ const chars = digitsOnly.split('');
86
+ chars.forEach((char, i) => {
87
+ this.digits[i] = char;
88
+ });
89
+ }
90
+ }
91
+ firstUpdated() {
92
+ if (this.autoFocus && this.inputs.length > 0) {
93
+ this.inputs[0]?.focus();
94
+ }
95
+ }
96
+ updated(changedProperties) {
97
+ if (changedProperties.has('value') && !changedProperties.has('digits')) {
98
+ this.initializeDigits();
99
+ }
100
+ if (changedProperties.has('length')) {
101
+ this.initializeDigits();
102
+ }
103
+ // Update form value
104
+ const fullValue = this.digits.join('');
105
+ this.internals.setFormValue(fullValue || null);
106
+ }
107
+ getFullValue() {
108
+ return this.digits.join('');
109
+ }
110
+ handleInput(index, e) {
111
+ const input = e.target;
112
+ let newValue = input.value;
113
+ // Only keep last character if multiple entered
114
+ if (newValue.length > 1) {
115
+ newValue = newValue.slice(-1);
116
+ }
117
+ // Validate input (only digits for OTP)
118
+ if (newValue && !/^\d$/.test(newValue)) {
119
+ input.value = this.digits[index] ?? '';
120
+ return;
121
+ }
122
+ this.digits[index] = newValue;
123
+ this.digits = [...this.digits]; // Trigger update
124
+ input.value = newValue;
125
+ const fullValue = this.getFullValue();
126
+ this.value = fullValue;
127
+ // Dispatch input event
128
+ this.dispatchEvent(new CustomEvent('input', {
129
+ detail: { value: fullValue, index, digit: newValue },
130
+ bubbles: true,
131
+ composed: true,
132
+ }));
133
+ // Move to next input if digit entered
134
+ if (newValue && index < this.length - 1) {
135
+ this.inputs[index + 1]?.focus();
136
+ }
137
+ // Check if complete
138
+ if (fullValue.length === this.length) {
139
+ this.dispatchEvent(new CustomEvent('complete', {
140
+ detail: { value: fullValue },
141
+ bubbles: true,
142
+ composed: true,
143
+ }));
144
+ }
145
+ // Dispatch change event
146
+ this.dispatchEvent(new CustomEvent('change', {
147
+ detail: { value: fullValue },
148
+ bubbles: true,
149
+ composed: true,
150
+ }));
151
+ }
152
+ handleKeyDown(index, e) {
153
+ switch (e.key) {
154
+ case 'Backspace':
155
+ if (!this.digits[index] && index > 0) {
156
+ // Move to previous input if current is empty
157
+ e.preventDefault();
158
+ this.inputs[index - 1]?.focus();
159
+ this.digits[index - 1] = '';
160
+ this.digits = [...this.digits];
161
+ }
162
+ else {
163
+ // Clear current
164
+ this.digits[index] = '';
165
+ this.digits = [...this.digits];
166
+ }
167
+ this.value = this.getFullValue();
168
+ break;
169
+ case 'ArrowLeft':
170
+ e.preventDefault();
171
+ if (index > 0) {
172
+ this.inputs[index - 1]?.focus();
173
+ }
174
+ break;
175
+ case 'ArrowRight':
176
+ e.preventDefault();
177
+ if (index < this.length - 1) {
178
+ this.inputs[index + 1]?.focus();
179
+ }
180
+ break;
181
+ case 'Delete':
182
+ this.digits[index] = '';
183
+ this.digits = [...this.digits];
184
+ this.value = this.getFullValue();
185
+ break;
186
+ }
187
+ }
188
+ handlePaste(e) {
189
+ e.preventDefault();
190
+ const pastedData = e.clipboardData?.getData('text') || '';
191
+ const digits = pastedData.replace(/\D/g, '').slice(0, this.length);
192
+ if (digits) {
193
+ this.digits = Array.from({ length: this.length }, (_, i) => digits[i] || '');
194
+ this.value = this.getFullValue();
195
+ // Update inputs
196
+ this.requestUpdate();
197
+ // Focus appropriate input
198
+ const focusIndex = Math.min(digits.length, this.length - 1);
199
+ setTimeout(() => {
200
+ this.inputs[focusIndex]?.focus();
201
+ }, 0);
202
+ // Dispatch input event (consistent with handleInput behavior)
203
+ // This ensures parent components can track partial pastes
204
+ this.dispatchEvent(new CustomEvent('input', {
205
+ detail: { value: this.value, index: 0, digit: digits[0] || '' },
206
+ bubbles: true,
207
+ composed: true,
208
+ }));
209
+ // Always dispatch change event so parent components can track the value
210
+ this.dispatchEvent(new CustomEvent('change', {
211
+ detail: { value: this.value },
212
+ bubbles: true,
213
+ composed: true,
214
+ }));
215
+ // Check if complete
216
+ if (digits.length === this.length) {
217
+ this.dispatchEvent(new CustomEvent('complete', {
218
+ detail: { value: this.value },
219
+ bubbles: true,
220
+ composed: true,
221
+ }));
222
+ }
223
+ }
224
+ }
225
+ handleFocus(e) {
226
+ const input = e.target;
227
+ input.select();
228
+ }
229
+ /**
230
+ * Focus the first empty input or the last input
231
+ */
232
+ focus() {
233
+ const emptyIndex = this.digits.findIndex((d) => !d);
234
+ const focusIndex = emptyIndex >= 0 ? emptyIndex : this.length - 1;
235
+ this.inputs[focusIndex]?.focus();
236
+ }
237
+ /**
238
+ * Clear all digits
239
+ */
240
+ clear() {
241
+ this.digits = Array.from({ length: this.length }, () => '');
242
+ this.value = '';
243
+ this.inputs[0]?.focus();
244
+ }
245
+ renderDigitInput(index) {
246
+ const digit = this.digits[index] || '';
247
+ const isFilled = digit !== '';
248
+ return (0, lit_1.html) `
249
+ <input
250
+ part="input"
251
+ type=${this.inputType}
252
+ inputmode="numeric"
253
+ pattern="[0-9]*"
254
+ maxlength="1"
255
+ .value=${digit}
256
+ ?disabled=${this.disabled}
257
+ placeholder="○"
258
+ class=${isFilled ? 'filled' : ''}
259
+ @input=${(e) => this.handleInput(index, e)}
260
+ @keydown=${(e) => this.handleKeyDown(index, e)}
261
+ @paste=${this.handlePaste}
262
+ @focus=${this.handleFocus}
263
+ aria-label=${`Digit ${index + 1} of ${this.length}`}
264
+ />
265
+ `;
266
+ }
267
+ render() {
268
+ return (0, lit_1.html) `
269
+ <div class="container" part="container" role="group" aria-label="One-time password input">
270
+ ${Array.from({ length: this.length }, (_, i) => this.renderDigitInput(i))}
271
+ </div>
272
+ `;
273
+ }
274
+ };
275
+ exports.ConsentOTPInput = ConsentOTPInput;
276
+ // Enable form association
277
+ ConsentOTPInput.formAssociated = true;
278
+ ConsentOTPInput.styles = (0, lit_1.css) `
279
+ :host {
280
+ display: block;
281
+ --_primary: var(--consent-primary, #2563eb);
282
+ }
283
+
284
+ .container {
285
+ display: flex;
286
+ gap: 0.5rem;
287
+ justify-content: center;
288
+ }
289
+
290
+ input {
291
+ width: 2.75rem;
292
+ height: 3.5rem;
293
+ text-align: center;
294
+ font-size: 1.5rem;
295
+ font-weight: 600;
296
+ font-family: inherit;
297
+ color: #111827;
298
+ background: white;
299
+ border: 1px solid #d1d5db;
300
+ border-radius: 0.5rem;
301
+ outline: none;
302
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
303
+
304
+ /* Hide spinner for number inputs */
305
+ -moz-appearance: textfield;
306
+ }
307
+
308
+ input::-webkit-outer-spin-button,
309
+ input::-webkit-inner-spin-button {
310
+ -webkit-appearance: none;
311
+ margin: 0;
312
+ }
313
+
314
+ input:focus {
315
+ border-color: var(--_primary);
316
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
317
+ }
318
+
319
+ input:disabled {
320
+ background: #f9fafb;
321
+ cursor: not-allowed;
322
+ opacity: 0.6;
323
+ }
324
+
325
+ input::placeholder {
326
+ color: #d1d5db;
327
+ }
328
+
329
+ /* Error state */
330
+ :host([error]) input {
331
+ border-color: #ef4444;
332
+ }
333
+
334
+ :host([error]) input:focus {
335
+ border-color: #ef4444;
336
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
337
+ }
338
+
339
+ /* Filled state */
340
+ input.filled {
341
+ border-color: var(--_primary);
342
+ background: #f0f9ff;
343
+ }
344
+
345
+ /* Responsive: smaller on mobile */
346
+ @media (max-width: 400px) {
347
+ input {
348
+ width: 2.25rem;
349
+ height: 3rem;
350
+ font-size: 1.25rem;
351
+ }
352
+
353
+ .container {
354
+ gap: 0.375rem;
355
+ }
356
+ }
357
+ `;
358
+ __decorate([
359
+ (0, decorators_js_1.property)({ type: Number })
360
+ ], ConsentOTPInput.prototype, "length", void 0);
361
+ __decorate([
362
+ (0, decorators_js_1.property)({ type: String })
363
+ ], ConsentOTPInput.prototype, "name", void 0);
364
+ __decorate([
365
+ (0, decorators_js_1.property)({ type: String })
366
+ ], ConsentOTPInput.prototype, "value", void 0);
367
+ __decorate([
368
+ (0, decorators_js_1.property)({ type: Boolean, reflect: true })
369
+ ], ConsentOTPInput.prototype, "disabled", void 0);
370
+ __decorate([
371
+ (0, decorators_js_1.property)({ type: Boolean, reflect: true })
372
+ ], ConsentOTPInput.prototype, "error", void 0);
373
+ __decorate([
374
+ (0, decorators_js_1.property)({ type: Boolean, attribute: 'auto-focus' })
375
+ ], ConsentOTPInput.prototype, "autoFocus", void 0);
376
+ __decorate([
377
+ (0, decorators_js_1.property)({ type: String, attribute: 'input-type' })
378
+ ], ConsentOTPInput.prototype, "inputType", void 0);
379
+ __decorate([
380
+ (0, decorators_js_1.state)()
381
+ ], ConsentOTPInput.prototype, "digits", void 0);
382
+ __decorate([
383
+ (0, decorators_js_1.queryAll)('input')
384
+ ], ConsentOTPInput.prototype, "inputs", void 0);
385
+ exports.ConsentOTPInput = ConsentOTPInput = __decorate([
386
+ (0, decorators_js_1.customElement)('consent-otp-input')
387
+ ], ConsentOTPInput);
388
+ //# sourceMappingURL=consent-otp-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-otp-input.js","sourceRoot":"","sources":["../../../src/components/consent-otp-input.ts"],"names":[],"mappings":"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"}