@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,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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"}