@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,335 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Input Web Component
4
+ *
5
+ * A styled text input for consent pages with label and error support.
6
+ * Implements Form Associated Custom Elements for proper form participation.
7
+ *
8
+ * @module components/consent-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
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ConsentInput = void 0;
18
+ const lit_1 = require("lit");
19
+ const decorators_js_1 = require("lit/decorators.js");
20
+ /**
21
+ * ConsentInput - A themed input component with label
22
+ *
23
+ * @example
24
+ * ```html
25
+ * <consent-input
26
+ * type="email"
27
+ * name="email"
28
+ * label="Email Address"
29
+ * placeholder="you@example.com"
30
+ * required
31
+ * ></consent-input>
32
+ * ```
33
+ *
34
+ * @fires input - Fired when input value changes
35
+ * @fires change - Fired when input loses focus after change
36
+ * @csspart input - The input element
37
+ * @csspart label - The label element
38
+ * @cssprop --consent-primary - Primary brand color for focus state
39
+ */
40
+ let ConsentInput = class ConsentInput extends lit_1.LitElement {
41
+ constructor() {
42
+ super();
43
+ /**
44
+ * Input type
45
+ */
46
+ this.type = 'text';
47
+ /**
48
+ * Form field name
49
+ */
50
+ this.name = '';
51
+ /**
52
+ * Input value
53
+ */
54
+ this.value = '';
55
+ /**
56
+ * Label text
57
+ */
58
+ this.label = '';
59
+ /**
60
+ * Placeholder text
61
+ */
62
+ this.placeholder = '';
63
+ /**
64
+ * Required for form validation
65
+ */
66
+ this.required = false;
67
+ /**
68
+ * Disabled state
69
+ */
70
+ this.disabled = false;
71
+ /**
72
+ * Autocomplete attribute
73
+ */
74
+ this.autocomplete = '';
75
+ /**
76
+ * Show password toggle for password inputs
77
+ */
78
+ this.showPassword = false;
79
+ this.internals = this.attachInternals();
80
+ }
81
+ // Update form value when properties change
82
+ updated(changedProperties) {
83
+ if (changedProperties.has('value')) {
84
+ this.internals.setFormValue(this.value || null);
85
+ }
86
+ }
87
+ handleInput(e) {
88
+ const input = e.target;
89
+ this.value = input.value;
90
+ this.internals.setFormValue(this.value || null);
91
+ this.dispatchEvent(new CustomEvent('input', {
92
+ detail: { value: this.value },
93
+ bubbles: true,
94
+ composed: true,
95
+ }));
96
+ }
97
+ handleChange(e) {
98
+ const input = e.target;
99
+ this.value = input.value;
100
+ this.dispatchEvent(new CustomEvent('change', {
101
+ detail: { value: this.value },
102
+ bubbles: true,
103
+ composed: true,
104
+ }));
105
+ }
106
+ togglePasswordVisibility() {
107
+ this.showPassword = !this.showPassword;
108
+ }
109
+ renderPasswordToggle() {
110
+ if (this.type !== 'password')
111
+ return null;
112
+ const icon = this.showPassword
113
+ ? (0, lit_1.html) `
114
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
115
+ <path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/>
116
+ <line x1="1" y1="1" x2="23" y2="23"/>
117
+ </svg>
118
+ `
119
+ : (0, lit_1.html) `
120
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
121
+ <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/>
122
+ <circle cx="12" cy="12" r="3"/>
123
+ </svg>
124
+ `;
125
+ return (0, lit_1.html) `
126
+ <button
127
+ type="button"
128
+ class="password-toggle"
129
+ @click=${this.togglePasswordVisibility}
130
+ tabindex="-1"
131
+ aria-label=${this.showPassword ? 'Hide password' : 'Show password'}
132
+ >
133
+ ${icon}
134
+ </button>
135
+ `;
136
+ }
137
+ render() {
138
+ const inputType = this.type === 'password' && this.showPassword ? 'text' : this.type;
139
+ return (0, lit_1.html) `
140
+ <div class="field">
141
+ ${this.label
142
+ ? (0, lit_1.html) `
143
+ <label part="label" for="input">
144
+ ${this.label}${this.required ? (0, lit_1.html) `<span class="required">*</span>` : null}
145
+ </label>
146
+ `
147
+ : null}
148
+ <div class="input-wrapper${this.error ? ' has-error' : ''}">
149
+ <input
150
+ part="input"
151
+ id="input"
152
+ type=${inputType}
153
+ name=${this.name}
154
+ .value=${this.value}
155
+ placeholder=${this.placeholder}
156
+ ?required=${this.required}
157
+ ?disabled=${this.disabled}
158
+ autocomplete=${this.autocomplete || 'off'}
159
+ @input=${this.handleInput}
160
+ @change=${this.handleChange}
161
+ />
162
+ ${this.renderPasswordToggle()}
163
+ </div>
164
+ ${this.error ? (0, lit_1.html) `<div class="error-message">${this.error}</div>` : null}
165
+ </div>
166
+ `;
167
+ }
168
+ };
169
+ exports.ConsentInput = ConsentInput;
170
+ // Enable form association
171
+ ConsentInput.formAssociated = true;
172
+ ConsentInput.styles = (0, lit_1.css) `
173
+ :host {
174
+ display: block;
175
+ }
176
+
177
+ .field {
178
+ display: flex;
179
+ flex-direction: column;
180
+ gap: 0.375rem;
181
+ }
182
+
183
+ label {
184
+ font-size: 0.875rem;
185
+ font-weight: 500;
186
+ color: #374151;
187
+ }
188
+
189
+ .input-wrapper {
190
+ position: relative;
191
+ display: flex;
192
+ align-items: center;
193
+ }
194
+
195
+ /* Base input styles - use .input-wrapper for higher specificity */
196
+ .input-wrapper input {
197
+ width: 100%;
198
+ padding: 0.625rem 0.75rem;
199
+ font-size: 0.875rem;
200
+ font-family: inherit;
201
+ color: #111827;
202
+ background-color: white;
203
+ border: 1px solid #d1d5db;
204
+ border-radius: 0.5rem;
205
+ outline: none;
206
+ box-shadow: none;
207
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
208
+ }
209
+
210
+ .input-wrapper input:focus {
211
+ border-color: var(--consent-primary, #2563eb);
212
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
213
+ }
214
+
215
+ .input-wrapper input:disabled {
216
+ background-color: #f9fafb;
217
+ cursor: not-allowed;
218
+ opacity: 0.6;
219
+ }
220
+
221
+ .input-wrapper input::placeholder {
222
+ color: #9ca3af;
223
+ }
224
+
225
+ /* Prevent browser validation styling before user interaction */
226
+ .input-wrapper input:invalid {
227
+ border-color: #d1d5db;
228
+ box-shadow: none;
229
+ outline: none;
230
+ background-color: white;
231
+ }
232
+
233
+ /* Override browser autofill styling */
234
+ .input-wrapper input:-webkit-autofill,
235
+ .input-wrapper input:-webkit-autofill:hover,
236
+ .input-wrapper input:-webkit-autofill:focus {
237
+ -webkit-box-shadow: 0 0 0 1000px white inset;
238
+ -webkit-text-fill-color: #111827;
239
+ border-color: #d1d5db;
240
+ transition: background-color 5000s ease-in-out 0s;
241
+ }
242
+
243
+ /* Only show validation styling after user interaction */
244
+ .input-wrapper input:user-invalid {
245
+ border-color: #ef4444;
246
+ }
247
+
248
+ .input-wrapper input:user-invalid:focus {
249
+ border-color: #ef4444;
250
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
251
+ }
252
+
253
+ /* Password toggle */
254
+ .input-wrapper input[type='password'] {
255
+ padding-right: 2.5rem;
256
+ }
257
+
258
+ .password-toggle {
259
+ position: absolute;
260
+ right: 0.5rem;
261
+ padding: 0.375rem;
262
+ background: none;
263
+ border: none;
264
+ cursor: pointer;
265
+ color: #6b7280;
266
+ display: flex;
267
+ align-items: center;
268
+ justify-content: center;
269
+ }
270
+
271
+ .password-toggle:hover {
272
+ color: #374151;
273
+ }
274
+
275
+ .password-toggle svg {
276
+ width: 1.25rem;
277
+ height: 1.25rem;
278
+ }
279
+
280
+ /* Error state - use class instead of attribute for proper specificity */
281
+ .input-wrapper.has-error input {
282
+ border-color: #ef4444;
283
+ }
284
+
285
+ .input-wrapper.has-error input:focus {
286
+ border-color: #ef4444;
287
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
288
+ }
289
+
290
+ .error-message {
291
+ font-size: 0.75rem;
292
+ color: #ef4444;
293
+ margin-top: 0.25rem;
294
+ }
295
+
296
+ /* Required indicator */
297
+ .required {
298
+ color: #ef4444;
299
+ margin-left: 0.125rem;
300
+ }
301
+ `;
302
+ __decorate([
303
+ (0, decorators_js_1.property)({ type: String })
304
+ ], ConsentInput.prototype, "type", void 0);
305
+ __decorate([
306
+ (0, decorators_js_1.property)({ type: String })
307
+ ], ConsentInput.prototype, "name", void 0);
308
+ __decorate([
309
+ (0, decorators_js_1.property)({ type: String })
310
+ ], ConsentInput.prototype, "value", void 0);
311
+ __decorate([
312
+ (0, decorators_js_1.property)({ type: String })
313
+ ], ConsentInput.prototype, "label", void 0);
314
+ __decorate([
315
+ (0, decorators_js_1.property)({ type: String })
316
+ ], ConsentInput.prototype, "placeholder", void 0);
317
+ __decorate([
318
+ (0, decorators_js_1.property)({ type: Boolean })
319
+ ], ConsentInput.prototype, "required", void 0);
320
+ __decorate([
321
+ (0, decorators_js_1.property)({ type: Boolean, reflect: true })
322
+ ], ConsentInput.prototype, "disabled", void 0);
323
+ __decorate([
324
+ (0, decorators_js_1.property)({ type: String })
325
+ ], ConsentInput.prototype, "autocomplete", void 0);
326
+ __decorate([
327
+ (0, decorators_js_1.property)({ type: String })
328
+ ], ConsentInput.prototype, "error", void 0);
329
+ __decorate([
330
+ (0, decorators_js_1.state)()
331
+ ], ConsentInput.prototype, "showPassword", void 0);
332
+ exports.ConsentInput = ConsentInput = __decorate([
333
+ (0, decorators_js_1.customElement)('consent-input')
334
+ ], ConsentInput);
335
+ //# sourceMappingURL=consent-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-input.js","sourceRoot":"","sources":["../../../src/components/consent-input.ts"],"names":[],"mappings":"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"}