@kya-os/consent 0.1.0 → 0.1.1

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 (200) hide show
  1. package/dist/bundle/index.d.ts +44 -0
  2. package/dist/bundle/index.d.ts.map +1 -0
  3. package/dist/bundle/index.js +45 -0
  4. package/dist/bundle/index.js.map +1 -0
  5. package/dist/bundle/inline.d.ts +18 -0
  6. package/dist/bundle/inline.d.ts.map +1 -0
  7. package/dist/bundle/inline.js +18 -0
  8. package/dist/bundle/inline.js.map +1 -0
  9. package/dist/bundle/shell.d.ts +91 -0
  10. package/dist/bundle/shell.d.ts.map +1 -0
  11. package/dist/bundle/shell.js +282 -0
  12. package/dist/bundle/shell.js.map +1 -0
  13. package/dist/components/consent-button.d.ts +61 -0
  14. package/dist/components/consent-button.d.ts.map +1 -0
  15. package/dist/components/consent-button.js +177 -0
  16. package/dist/components/consent-button.js.map +1 -0
  17. package/dist/components/consent-checkbox.d.ts +61 -0
  18. package/dist/components/consent-checkbox.d.ts.map +1 -0
  19. package/dist/components/consent-checkbox.js +220 -0
  20. package/dist/components/consent-checkbox.js.map +1 -0
  21. package/dist/components/consent-input.d.ts +91 -0
  22. package/dist/components/consent-input.d.ts.map +1 -0
  23. package/dist/components/consent-input.js +332 -0
  24. package/dist/components/consent-input.js.map +1 -0
  25. package/dist/components/consent-oauth-button.d.ts +87 -0
  26. package/dist/components/consent-oauth-button.d.ts.map +1 -0
  27. package/dist/components/consent-oauth-button.js +389 -0
  28. package/dist/components/consent-oauth-button.js.map +1 -0
  29. package/dist/components/consent-otp-input.d.ts +92 -0
  30. package/dist/components/consent-otp-input.d.ts.map +1 -0
  31. package/dist/components/consent-otp-input.js +378 -0
  32. package/dist/components/consent-otp-input.js.map +1 -0
  33. package/dist/components/consent-permissions.d.ts +104 -0
  34. package/dist/components/consent-permissions.d.ts.map +1 -0
  35. package/dist/components/consent-permissions.js +430 -0
  36. package/dist/components/consent-permissions.js.map +1 -0
  37. package/dist/components/consent-shell.d.ts +72 -0
  38. package/dist/components/consent-shell.d.ts.map +1 -0
  39. package/dist/components/consent-shell.js +231 -0
  40. package/dist/components/consent-shell.js.map +1 -0
  41. package/dist/components/consent-terms.d.ts +89 -0
  42. package/dist/components/consent-terms.d.ts.map +1 -0
  43. package/dist/components/consent-terms.js +284 -0
  44. package/dist/components/consent-terms.js.map +1 -0
  45. package/dist/components/index.d.ts +19 -0
  46. package/dist/components/index.d.ts.map +1 -0
  47. package/dist/components/index.js +23 -0
  48. package/dist/components/index.js.map +1 -0
  49. package/dist/components/mcp-consent.d.ts +152 -0
  50. package/dist/components/mcp-consent.d.ts.map +1 -0
  51. package/dist/components/mcp-consent.js +874 -0
  52. package/dist/components/mcp-consent.js.map +1 -0
  53. package/dist/consent.js +3737 -0
  54. package/dist/consent.min.js +1564 -0
  55. package/dist/constants/auth-modes.d.ts +7 -2
  56. package/dist/constants/auth-modes.d.ts.map +1 -1
  57. package/dist/constants/auth-modes.js +28 -36
  58. package/dist/constants/auth-modes.js.map +1 -1
  59. package/dist/constants/colors.js +1 -4
  60. package/dist/constants/colors.js.map +1 -1
  61. package/dist/constants/defaults.d.ts +1 -1
  62. package/dist/constants/defaults.d.ts.map +1 -1
  63. package/dist/constants/defaults.js +16 -19
  64. package/dist/constants/defaults.js.map +1 -1
  65. package/dist/constants/index.d.ts +3 -3
  66. package/dist/constants/index.d.ts.map +1 -1
  67. package/dist/constants/index.js +3 -26
  68. package/dist/constants/index.js.map +1 -1
  69. package/dist/index.d.ts +10 -7
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +12 -23
  72. package/dist/index.js.map +1 -1
  73. package/dist/react/index.d.ts +123 -0
  74. package/dist/react/index.d.ts.map +1 -0
  75. package/dist/react/index.js +154 -0
  76. package/dist/react/index.js.map +1 -0
  77. package/dist/resolution/index.d.ts +3 -3
  78. package/dist/resolution/index.d.ts.map +1 -1
  79. package/dist/resolution/index.js +3 -19
  80. package/dist/resolution/index.js.map +1 -1
  81. package/dist/resolution/resolve-branding.d.ts +1 -1
  82. package/dist/resolution/resolve-branding.d.ts.map +1 -1
  83. package/dist/resolution/resolve-branding.js +14 -24
  84. package/dist/resolution/resolve-branding.js.map +1 -1
  85. package/dist/resolution/resolve-config.d.ts +2 -2
  86. package/dist/resolution/resolve-config.d.ts.map +1 -1
  87. package/dist/resolution/resolve-config.js +57 -53
  88. package/dist/resolution/resolve-config.js.map +1 -1
  89. package/dist/resolution/resolve-copy.d.ts +2 -2
  90. package/dist/resolution/resolve-copy.d.ts.map +1 -1
  91. package/dist/resolution/resolve-copy.js +35 -43
  92. package/dist/resolution/resolve-copy.js.map +1 -1
  93. package/dist/schemas/api.schemas.d.ts +7 -4
  94. package/dist/schemas/api.schemas.d.ts.map +1 -1
  95. package/dist/schemas/api.schemas.js +70 -74
  96. package/dist/schemas/api.schemas.js.map +1 -1
  97. package/dist/schemas/branding.schemas.js +17 -20
  98. package/dist/schemas/branding.schemas.js.map +1 -1
  99. package/dist/schemas/config.schemas.d.ts +1 -1
  100. package/dist/schemas/config.schemas.d.ts.map +1 -1
  101. package/dist/schemas/config.schemas.js +64 -70
  102. package/dist/schemas/config.schemas.js.map +1 -1
  103. package/dist/schemas/index.d.ts +4 -4
  104. package/dist/schemas/index.d.ts.map +1 -1
  105. package/dist/schemas/index.js +4 -20
  106. package/dist/schemas/index.js.map +1 -1
  107. package/dist/schemas/modes.schemas.js +60 -63
  108. package/dist/schemas/modes.schemas.js.map +1 -1
  109. package/dist/security/escape.d.ts.map +1 -1
  110. package/dist/security/escape.js +12 -17
  111. package/dist/security/escape.js.map +1 -1
  112. package/dist/security/index.d.ts +2 -2
  113. package/dist/security/index.d.ts.map +1 -1
  114. package/dist/security/index.js +2 -18
  115. package/dist/security/index.js.map +1 -1
  116. package/dist/security/validators.js +9 -20
  117. package/dist/security/validators.js.map +1 -1
  118. package/dist/styles/css-variables.d.ts +1 -1
  119. package/dist/styles/css-variables.d.ts.map +1 -1
  120. package/dist/styles/css-variables.js +18 -27
  121. package/dist/styles/css-variables.js.map +1 -1
  122. package/dist/styles/index.d.ts +3 -3
  123. package/dist/styles/index.d.ts.map +1 -1
  124. package/dist/styles/index.js +3 -19
  125. package/dist/styles/index.js.map +1 -1
  126. package/dist/styles/stylesheet.d.ts +1 -1
  127. package/dist/styles/stylesheet.d.ts.map +1 -1
  128. package/dist/styles/stylesheet.js +20 -27
  129. package/dist/styles/stylesheet.js.map +1 -1
  130. package/dist/styles/tokens.js +1 -4
  131. package/dist/styles/tokens.js.map +1 -1
  132. package/dist/templates/base/base-template.d.ts +3 -3
  133. package/dist/templates/base/base-template.d.ts.map +1 -1
  134. package/dist/templates/base/base-template.js +31 -35
  135. package/dist/templates/base/base-template.js.map +1 -1
  136. package/dist/templates/base/components.js +49 -65
  137. package/dist/templates/base/components.js.map +1 -1
  138. package/dist/templates/base/index.d.ts +2 -2
  139. package/dist/templates/base/index.d.ts.map +1 -1
  140. package/dist/templates/base/index.js +2 -20
  141. package/dist/templates/base/index.js.map +1 -1
  142. package/dist/templates/index.d.ts +9 -9
  143. package/dist/templates/index.d.ts.map +1 -1
  144. package/dist/templates/index.js +9 -25
  145. package/dist/templates/index.js.map +1 -1
  146. package/dist/templates/modes/consent-only.template.d.ts +2 -2
  147. package/dist/templates/modes/consent-only.template.d.ts.map +1 -1
  148. package/dist/templates/modes/consent-only.template.js +11 -15
  149. package/dist/templates/modes/consent-only.template.js.map +1 -1
  150. package/dist/templates/modes/credentials.template.d.ts +4 -4
  151. package/dist/templates/modes/credentials.template.d.ts.map +1 -1
  152. package/dist/templates/modes/credentials.template.js +20 -24
  153. package/dist/templates/modes/credentials.template.js.map +1 -1
  154. package/dist/templates/modes/index.d.ts +6 -6
  155. package/dist/templates/modes/index.d.ts.map +1 -1
  156. package/dist/templates/modes/index.js +6 -16
  157. package/dist/templates/modes/index.js.map +1 -1
  158. package/dist/templates/modes/magic-link.template.d.ts +2 -2
  159. package/dist/templates/modes/magic-link.template.d.ts.map +1 -1
  160. package/dist/templates/modes/magic-link.template.js +14 -18
  161. package/dist/templates/modes/magic-link.template.js.map +1 -1
  162. package/dist/templates/modes/oauth.template.d.ts +2 -2
  163. package/dist/templates/modes/oauth.template.d.ts.map +1 -1
  164. package/dist/templates/modes/oauth.template.js +21 -25
  165. package/dist/templates/modes/oauth.template.js.map +1 -1
  166. package/dist/templates/modes/otp.template.d.ts +2 -2
  167. package/dist/templates/modes/otp.template.d.ts.map +1 -1
  168. package/dist/templates/modes/otp.template.js +17 -21
  169. package/dist/templates/modes/otp.template.js.map +1 -1
  170. package/dist/templates/modes/success.template.d.ts +2 -2
  171. package/dist/templates/modes/success.template.d.ts.map +1 -1
  172. package/dist/templates/modes/success.template.js +24 -29
  173. package/dist/templates/modes/success.template.js.map +1 -1
  174. package/dist/templates/registry.d.ts +4 -4
  175. package/dist/templates/registry.d.ts.map +1 -1
  176. package/dist/templates/registry.js +30 -38
  177. package/dist/templates/registry.js.map +1 -1
  178. package/dist/types/api.types.d.ts +6 -5
  179. package/dist/types/api.types.d.ts.map +1 -1
  180. package/dist/types/api.types.js +1 -2
  181. package/dist/types/api.types.js.map +1 -1
  182. package/dist/types/branding.types.js +1 -2
  183. package/dist/types/branding.types.js.map +1 -1
  184. package/dist/types/config.types.d.ts +5 -5
  185. package/dist/types/config.types.d.ts.map +1 -1
  186. package/dist/types/config.types.js +1 -2
  187. package/dist/types/config.types.js.map +1 -1
  188. package/dist/types/copy.types.js +1 -2
  189. package/dist/types/copy.types.js.map +1 -1
  190. package/dist/types/index.d.ts +6 -6
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/index.js +6 -22
  193. package/dist/types/index.js.map +1 -1
  194. package/dist/types/modes.types.js +1 -4
  195. package/dist/types/modes.types.js.map +1 -1
  196. package/dist/types/page.types.d.ts +6 -6
  197. package/dist/types/page.types.d.ts.map +1 -1
  198. package/dist/types/page.types.js +1 -2
  199. package/dist/types/page.types.js.map +1 -1
  200. package/package.json +41 -4
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Consent OTP Input Web Component
3
+ *
4
+ * Individual digit input boxes for one-time password entry.
5
+ * Supports auto-focus, paste handling, and keyboard navigation.
6
+ * Implements Form Associated Custom Elements for proper form participation.
7
+ *
8
+ * @module components/consent-otp-input
9
+ */
10
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
11
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13
+ 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;
14
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
15
+ };
16
+ import { LitElement, html, css } from 'lit';
17
+ import { customElement, property, state, queryAll } from 'lit/decorators.js';
18
+ /**
19
+ * ConsentOTPInput - OTP digit input boxes
20
+ *
21
+ * @example
22
+ * ```html
23
+ * <consent-otp-input
24
+ * length="6"
25
+ * name="otp"
26
+ * ></consent-otp-input>
27
+ * ```
28
+ *
29
+ * @fires input - Fired on each digit entry
30
+ * @fires complete - Fired when all digits are entered
31
+ * @fires change - Fired when value changes
32
+ * @csspart container - The container for all digit boxes
33
+ * @csspart input - Individual digit input
34
+ * @cssprop --consent-primary - Primary brand color for focus state
35
+ */
36
+ let ConsentOTPInput = class ConsentOTPInput extends LitElement {
37
+ constructor() {
38
+ super();
39
+ /**
40
+ * Number of OTP digits
41
+ */
42
+ this.length = 6;
43
+ /**
44
+ * Form field name
45
+ */
46
+ this.name = 'otp';
47
+ /**
48
+ * Current OTP value
49
+ */
50
+ this.value = '';
51
+ /**
52
+ * Disabled state
53
+ */
54
+ this.disabled = false;
55
+ /**
56
+ * Error state
57
+ */
58
+ this.error = false;
59
+ /**
60
+ * Auto-focus first input on mount
61
+ */
62
+ this.autoFocus = false;
63
+ /**
64
+ * Input type (text or number)
65
+ */
66
+ this.inputType = 'text';
67
+ /**
68
+ * Internal digit values
69
+ */
70
+ this.digits = [];
71
+ this.internals = this.attachInternals();
72
+ }
73
+ connectedCallback() {
74
+ super.connectedCallback();
75
+ this.initializeDigits();
76
+ }
77
+ initializeDigits() {
78
+ this.digits = Array.from({ length: this.length }, () => '');
79
+ if (this.value) {
80
+ // Filter non-digits (consistent with handleInput and handlePaste)
81
+ const digitsOnly = this.value.replace(/\D/g, '').slice(0, this.length);
82
+ const chars = digitsOnly.split('');
83
+ chars.forEach((char, i) => {
84
+ this.digits[i] = char;
85
+ });
86
+ }
87
+ }
88
+ firstUpdated() {
89
+ if (this.autoFocus && this.inputs.length > 0) {
90
+ this.inputs[0]?.focus();
91
+ }
92
+ }
93
+ updated(changedProperties) {
94
+ if (changedProperties.has('value') && !changedProperties.has('digits')) {
95
+ this.initializeDigits();
96
+ }
97
+ if (changedProperties.has('length')) {
98
+ this.initializeDigits();
99
+ }
100
+ // Update form value
101
+ const fullValue = this.digits.join('');
102
+ this.internals.setFormValue(fullValue || null);
103
+ }
104
+ getFullValue() {
105
+ return this.digits.join('');
106
+ }
107
+ handleInput(index, e) {
108
+ const input = e.target;
109
+ let newValue = input.value;
110
+ // Only keep last character if multiple entered
111
+ if (newValue.length > 1) {
112
+ newValue = newValue.slice(-1);
113
+ }
114
+ // Validate input (only digits for OTP)
115
+ if (newValue && !/^\d$/.test(newValue)) {
116
+ input.value = this.digits[index] ?? '';
117
+ return;
118
+ }
119
+ this.digits[index] = newValue;
120
+ this.digits = [...this.digits]; // Trigger update
121
+ input.value = newValue;
122
+ const fullValue = this.getFullValue();
123
+ this.value = fullValue;
124
+ // Dispatch input event
125
+ this.dispatchEvent(new CustomEvent('input', {
126
+ detail: { value: fullValue, index, digit: newValue },
127
+ bubbles: true,
128
+ composed: true,
129
+ }));
130
+ // Move to next input if digit entered
131
+ if (newValue && index < this.length - 1) {
132
+ this.inputs[index + 1]?.focus();
133
+ }
134
+ // Check if complete
135
+ if (fullValue.length === this.length) {
136
+ this.dispatchEvent(new CustomEvent('complete', {
137
+ detail: { value: fullValue },
138
+ bubbles: true,
139
+ composed: true,
140
+ }));
141
+ }
142
+ // Dispatch change event
143
+ this.dispatchEvent(new CustomEvent('change', {
144
+ detail: { value: fullValue },
145
+ bubbles: true,
146
+ composed: true,
147
+ }));
148
+ }
149
+ handleKeyDown(index, e) {
150
+ switch (e.key) {
151
+ case 'Backspace':
152
+ if (!this.digits[index] && index > 0) {
153
+ // Move to previous input if current is empty
154
+ e.preventDefault();
155
+ this.inputs[index - 1]?.focus();
156
+ this.digits[index - 1] = '';
157
+ this.digits = [...this.digits];
158
+ }
159
+ else {
160
+ // Clear current
161
+ this.digits[index] = '';
162
+ this.digits = [...this.digits];
163
+ }
164
+ this.value = this.getFullValue();
165
+ break;
166
+ case 'ArrowLeft':
167
+ e.preventDefault();
168
+ if (index > 0) {
169
+ this.inputs[index - 1]?.focus();
170
+ }
171
+ break;
172
+ case 'ArrowRight':
173
+ e.preventDefault();
174
+ if (index < this.length - 1) {
175
+ this.inputs[index + 1]?.focus();
176
+ }
177
+ break;
178
+ case 'Delete':
179
+ this.digits[index] = '';
180
+ this.digits = [...this.digits];
181
+ this.value = this.getFullValue();
182
+ break;
183
+ }
184
+ }
185
+ handlePaste(e) {
186
+ e.preventDefault();
187
+ const pastedData = e.clipboardData?.getData('text') || '';
188
+ const digits = pastedData.replace(/\D/g, '').slice(0, this.length);
189
+ if (digits) {
190
+ this.digits = Array.from({ length: this.length }, (_, i) => digits[i] || '');
191
+ this.value = this.getFullValue();
192
+ // Update inputs
193
+ this.requestUpdate();
194
+ // Focus appropriate input
195
+ const focusIndex = Math.min(digits.length, this.length - 1);
196
+ setTimeout(() => {
197
+ this.inputs[focusIndex]?.focus();
198
+ }, 0);
199
+ // Always dispatch change event so parent components can track the value
200
+ this.dispatchEvent(new CustomEvent('change', {
201
+ detail: { value: this.value },
202
+ bubbles: true,
203
+ composed: true,
204
+ }));
205
+ // Check if complete
206
+ if (digits.length === this.length) {
207
+ this.dispatchEvent(new CustomEvent('complete', {
208
+ detail: { value: this.value },
209
+ bubbles: true,
210
+ composed: true,
211
+ }));
212
+ }
213
+ }
214
+ }
215
+ handleFocus(e) {
216
+ const input = e.target;
217
+ input.select();
218
+ }
219
+ /**
220
+ * Focus the first empty input or the last input
221
+ */
222
+ focus() {
223
+ const emptyIndex = this.digits.findIndex((d) => !d);
224
+ const focusIndex = emptyIndex >= 0 ? emptyIndex : this.length - 1;
225
+ this.inputs[focusIndex]?.focus();
226
+ }
227
+ /**
228
+ * Clear all digits
229
+ */
230
+ clear() {
231
+ this.digits = Array.from({ length: this.length }, () => '');
232
+ this.value = '';
233
+ this.inputs[0]?.focus();
234
+ }
235
+ renderDigitInput(index) {
236
+ const digit = this.digits[index] || '';
237
+ const isFilled = digit !== '';
238
+ return html `
239
+ <input
240
+ part="input"
241
+ type=${this.inputType}
242
+ inputmode="numeric"
243
+ pattern="[0-9]*"
244
+ maxlength="1"
245
+ .value=${digit}
246
+ ?disabled=${this.disabled}
247
+ placeholder="○"
248
+ class=${isFilled ? 'filled' : ''}
249
+ @input=${(e) => this.handleInput(index, e)}
250
+ @keydown=${(e) => this.handleKeyDown(index, e)}
251
+ @paste=${this.handlePaste}
252
+ @focus=${this.handleFocus}
253
+ aria-label=${`Digit ${index + 1} of ${this.length}`}
254
+ />
255
+ `;
256
+ }
257
+ render() {
258
+ return html `
259
+ <div class="container" part="container" role="group" aria-label="One-time password input">
260
+ ${Array.from({ length: this.length }, (_, i) => this.renderDigitInput(i))}
261
+ </div>
262
+ `;
263
+ }
264
+ };
265
+ // Enable form association
266
+ ConsentOTPInput.formAssociated = true;
267
+ ConsentOTPInput.styles = css `
268
+ :host {
269
+ display: block;
270
+ --_primary: var(--consent-primary, #2563eb);
271
+ }
272
+
273
+ .container {
274
+ display: flex;
275
+ gap: 0.5rem;
276
+ justify-content: center;
277
+ }
278
+
279
+ input {
280
+ width: 2.75rem;
281
+ height: 3.5rem;
282
+ text-align: center;
283
+ font-size: 1.5rem;
284
+ font-weight: 600;
285
+ font-family: inherit;
286
+ color: #111827;
287
+ background: white;
288
+ border: 1px solid #d1d5db;
289
+ border-radius: 0.5rem;
290
+ outline: none;
291
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
292
+
293
+ /* Hide spinner for number inputs */
294
+ -moz-appearance: textfield;
295
+ }
296
+
297
+ input::-webkit-outer-spin-button,
298
+ input::-webkit-inner-spin-button {
299
+ -webkit-appearance: none;
300
+ margin: 0;
301
+ }
302
+
303
+ input:focus {
304
+ border-color: var(--_primary);
305
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
306
+ }
307
+
308
+ input:disabled {
309
+ background: #f9fafb;
310
+ cursor: not-allowed;
311
+ opacity: 0.6;
312
+ }
313
+
314
+ input::placeholder {
315
+ color: #d1d5db;
316
+ }
317
+
318
+ /* Error state */
319
+ :host([error]) input {
320
+ border-color: #ef4444;
321
+ }
322
+
323
+ :host([error]) input:focus {
324
+ border-color: #ef4444;
325
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
326
+ }
327
+
328
+ /* Filled state */
329
+ input.filled {
330
+ border-color: var(--_primary);
331
+ background: #f0f9ff;
332
+ }
333
+
334
+ /* Responsive: smaller on mobile */
335
+ @media (max-width: 400px) {
336
+ input {
337
+ width: 2.25rem;
338
+ height: 3rem;
339
+ font-size: 1.25rem;
340
+ }
341
+
342
+ .container {
343
+ gap: 0.375rem;
344
+ }
345
+ }
346
+ `;
347
+ __decorate([
348
+ property({ type: Number })
349
+ ], ConsentOTPInput.prototype, "length", void 0);
350
+ __decorate([
351
+ property({ type: String })
352
+ ], ConsentOTPInput.prototype, "name", void 0);
353
+ __decorate([
354
+ property({ type: String })
355
+ ], ConsentOTPInput.prototype, "value", void 0);
356
+ __decorate([
357
+ property({ type: Boolean, reflect: true })
358
+ ], ConsentOTPInput.prototype, "disabled", void 0);
359
+ __decorate([
360
+ property({ type: Boolean, reflect: true })
361
+ ], ConsentOTPInput.prototype, "error", void 0);
362
+ __decorate([
363
+ property({ type: Boolean, attribute: 'auto-focus' })
364
+ ], ConsentOTPInput.prototype, "autoFocus", void 0);
365
+ __decorate([
366
+ property({ type: String, attribute: 'input-type' })
367
+ ], ConsentOTPInput.prototype, "inputType", void 0);
368
+ __decorate([
369
+ state()
370
+ ], ConsentOTPInput.prototype, "digits", void 0);
371
+ __decorate([
372
+ queryAll('input')
373
+ ], ConsentOTPInput.prototype, "inputs", void 0);
374
+ ConsentOTPInput = __decorate([
375
+ customElement('consent-otp-input')
376
+ ], ConsentOTPInput);
377
+ export { ConsentOTPInput };
378
+ //# 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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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Consent Permissions Web Component
3
+ *
4
+ * Renders a list of permission scopes that the agent is requesting.
5
+ * Can be interactive (with checkboxes) or display-only.
6
+ *
7
+ * @module components/consent-permissions
8
+ */
9
+ import { LitElement, TemplateResult } from 'lit';
10
+ /**
11
+ * Permission item structure
12
+ */
13
+ export interface PermissionItem {
14
+ /** Unique scope identifier */
15
+ id: string;
16
+ /** Human-readable label */
17
+ label: string;
18
+ /** Optional description */
19
+ description?: string;
20
+ /** Whether this permission is required (non-optional) */
21
+ required?: boolean;
22
+ }
23
+ /**
24
+ * ConsentPermissions - Permission list component
25
+ *
26
+ * @example
27
+ * ```html
28
+ * <!-- Display-only mode -->
29
+ * <consent-permissions
30
+ * scopes='["read:profile", "write:data"]'
31
+ * ></consent-permissions>
32
+ *
33
+ * <!-- Interactive mode -->
34
+ * <consent-permissions
35
+ * scopes='[{"id": "read:profile", "label": "Read profile", "required": true}]'
36
+ * interactive
37
+ * ></consent-permissions>
38
+ * ```
39
+ *
40
+ * @fires change - Fired when permissions selection changes (interactive mode)
41
+ * @csspart list - The permissions list container
42
+ * @csspart item - Individual permission item
43
+ * @cssprop --consent-primary - Primary brand color for icons/checkboxes
44
+ */
45
+ export declare class ConsentPermissions extends LitElement {
46
+ /**
47
+ * Permission scopes - can be string array or PermissionItem array
48
+ * Accepts JSON string for attribute binding
49
+ */
50
+ scopes: (string | PermissionItem)[];
51
+ /**
52
+ * Enable interactive mode with checkboxes
53
+ */
54
+ interactive: boolean;
55
+ /**
56
+ * Pre-select all scopes in interactive mode (default: only required scopes are pre-selected)
57
+ */
58
+ selectAll: boolean;
59
+ /**
60
+ * Icon to show next to each permission
61
+ * Options: 'check', 'bullet', 'shield'
62
+ */
63
+ iconStyle: 'check' | 'bullet' | 'shield';
64
+ /**
65
+ * Internal state for selected permissions in interactive mode
66
+ */
67
+ private selectedScopes;
68
+ /**
69
+ * Track previous scope IDs to detect newly added scopes
70
+ * (used to distinguish new scopes from user-deselected scopes)
71
+ */
72
+ private previousScopeIds;
73
+ static styles: import("lit").CSSResult;
74
+ connectedCallback(): void;
75
+ protected updated(changedProperties: Map<string, unknown>): void;
76
+ /**
77
+ * Re-initialize selected scopes when scopes change dynamically.
78
+ * Preserves existing valid selections while adding new scopes based on selectAll/required settings.
79
+ */
80
+ private reinitializeSelectedScopes;
81
+ private initializeSelectedScopes;
82
+ /**
83
+ * Normalize scopes to PermissionItem format
84
+ */
85
+ private get normalizedScopes();
86
+ /**
87
+ * Convert scope ID to human-readable label
88
+ */
89
+ private formatScopeLabel;
90
+ /**
91
+ * Get currently selected scopes
92
+ */
93
+ getSelectedScopes(): string[];
94
+ private handleCheckboxChange;
95
+ private renderIcon;
96
+ private renderPermissionItem;
97
+ render(): TemplateResult<1>;
98
+ }
99
+ declare global {
100
+ interface HTMLElementTagNameMap {
101
+ 'consent-permissions': ConsentPermissions;
102
+ }
103
+ }
104
+ //# sourceMappingURL=consent-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-permissions.d.ts","sourceRoot":"","sources":["../../src/components/consent-permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD;;;OAGG;IAuBH,MAAM,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,CAAM;IAEzC;;OAEG;IAEH,WAAW,UAAS;IAEpB;;OAEG;IAEH,SAAS,UAAS;IAElB;;;OAGG;IAEH,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAW;IAEnD;;OAEG;IAEH,OAAO,CAAC,cAAc,CAA0B;IAEhD;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAgB,MAAM,0BA6IpB;IAEO,iBAAiB;cAQP,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAOlE;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAsClC,OAAO,CAAC,wBAAwB;IAqBhC;;OAEG;IACH,OAAO,KAAK,gBAAgB,GAU3B;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACI,iBAAiB,IAAI,MAAM,EAAE;IAIpC,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,oBAAoB;IAoCnB,MAAM;CAahB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,kBAAkB,CAAC;KAC3C;CACF"}