@melodicdev/components 1.1.0 → 1.2.0

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.
@@ -0,0 +1,354 @@
1
+ import { css } from '@melodicdev/core';
2
+ export const autocompleteStyles = () => css `
3
+ :host {
4
+ display: block;
5
+ width: 100%;
6
+ min-width: 0;
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ *,
11
+ *::before,
12
+ *::after {
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .ml-autocomplete {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--ml-space-1-5);
20
+ max-width: 100%;
21
+ }
22
+
23
+ .ml-autocomplete__control {
24
+ position: relative;
25
+ max-width: 100%;
26
+ }
27
+
28
+ .ml-autocomplete__label {
29
+ font-size: var(--ml-text-sm);
30
+ font-weight: var(--ml-font-medium);
31
+ color: var(--ml-color-text-secondary);
32
+ line-height: var(--ml-leading-tight);
33
+ }
34
+
35
+ .ml-autocomplete__required {
36
+ color: var(--ml-color-danger);
37
+ margin-left: var(--ml-space-0-5);
38
+ }
39
+
40
+ .ml-autocomplete__trigger {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: var(--ml-space-2);
44
+ width: 100%;
45
+ max-width: 100%;
46
+ overflow: hidden;
47
+ background-color: var(--ml-color-surface);
48
+ border: var(--ml-border) solid var(--ml-color-border);
49
+ border-radius: var(--ml-radius);
50
+ box-shadow: none;
51
+ color: var(--ml-color-text);
52
+ font-family: var(--ml-font-sans);
53
+ cursor: text;
54
+ text-align: left;
55
+ transition:
56
+ border-color var(--ml-duration-150) var(--ml-ease-in-out),
57
+ box-shadow var(--ml-duration-150) var(--ml-ease-in-out);
58
+ }
59
+
60
+ .ml-autocomplete:not(.ml-autocomplete--disabled) .ml-autocomplete__trigger:hover {
61
+ border-color: var(--ml-color-border-strong);
62
+ }
63
+
64
+ .ml-autocomplete__trigger:focus-within {
65
+ outline: none;
66
+ border-color: var(--ml-color-primary);
67
+ box-shadow: var(--ml-shadow-focus-ring);
68
+ }
69
+
70
+ .ml-autocomplete--disabled .ml-autocomplete__trigger {
71
+ background-color: var(--ml-color-input-disabled-bg);
72
+ cursor: not-allowed;
73
+ color: var(--ml-color-text-muted);
74
+ }
75
+
76
+ .ml-autocomplete__search-icon {
77
+ color: var(--ml-color-text-muted);
78
+ flex-shrink: 0;
79
+ height: 20px;
80
+ display: flex;
81
+ align-items: center;
82
+ }
83
+
84
+ .ml-autocomplete__input {
85
+ flex: 1 1 20px;
86
+ min-width: 20px;
87
+ height: 20px;
88
+ border: none;
89
+ outline: none;
90
+ background: transparent;
91
+ font: inherit;
92
+ color: var(--ml-color-text);
93
+ padding: 0;
94
+ line-height: 20px;
95
+ }
96
+
97
+ .ml-autocomplete__input::placeholder {
98
+ color: var(--ml-color-text-muted);
99
+ }
100
+
101
+ .ml-autocomplete__input:disabled {
102
+ color: var(--ml-color-text-muted);
103
+ cursor: not-allowed;
104
+ }
105
+
106
+ .ml-autocomplete__clear {
107
+ border: none;
108
+ background: transparent;
109
+ padding: 2px;
110
+ color: var(--ml-color-text-muted);
111
+ cursor: pointer;
112
+ display: inline-flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ flex-shrink: 0;
116
+ border-radius: var(--ml-radius-full);
117
+ transition: color var(--ml-duration-100) var(--ml-ease-in-out),
118
+ background-color var(--ml-duration-100) var(--ml-ease-in-out);
119
+ }
120
+
121
+ .ml-autocomplete__clear:hover {
122
+ color: var(--ml-color-text);
123
+ background-color: var(--ml-color-surface-raised);
124
+ }
125
+
126
+ /* Multi-mode styles */
127
+ .ml-autocomplete--multiple .ml-autocomplete__trigger {
128
+ flex-wrap: wrap;
129
+ padding-top: var(--ml-space-2);
130
+ padding-bottom: var(--ml-space-2);
131
+ }
132
+
133
+ .ml-autocomplete__tags {
134
+ display: contents;
135
+ }
136
+
137
+ .ml-autocomplete__tag {
138
+ display: inline-flex;
139
+ align-items: center;
140
+ gap: var(--ml-space-1);
141
+ padding: 0 var(--ml-space-1-5);
142
+ height: 20px;
143
+ border-radius: var(--ml-radius-full);
144
+ border: var(--ml-border) solid var(--ml-color-border);
145
+ background-color: var(--ml-color-surface);
146
+ font-size: var(--ml-text-xs);
147
+ font-weight: var(--ml-font-medium);
148
+ color: var(--ml-color-text);
149
+ line-height: 1;
150
+ white-space: nowrap;
151
+ max-width: 100%;
152
+ overflow: hidden;
153
+ box-sizing: border-box;
154
+ }
155
+
156
+ .ml-autocomplete__tag-label {
157
+ overflow: hidden;
158
+ text-overflow: ellipsis;
159
+ line-height: inherit;
160
+ }
161
+
162
+ .ml-autocomplete__tag-avatar {
163
+ width: 14px;
164
+ height: 14px;
165
+ border-radius: var(--ml-radius-full);
166
+ object-fit: cover;
167
+ margin-left: -2px;
168
+ }
169
+
170
+ .ml-autocomplete__tag-remove {
171
+ border: none;
172
+ background: transparent;
173
+ padding: 2px;
174
+ margin-left: var(--ml-space-0-5);
175
+ margin-right: -4px;
176
+ color: var(--ml-color-text-secondary);
177
+ cursor: pointer;
178
+ display: inline-flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ flex-shrink: 0;
182
+ border-radius: var(--ml-radius-full);
183
+ transition: color var(--ml-duration-100) var(--ml-ease-in-out),
184
+ background-color var(--ml-duration-100) var(--ml-ease-in-out);
185
+ }
186
+
187
+ .ml-autocomplete__tag-remove:hover {
188
+ color: var(--ml-color-text);
189
+ background-color: var(--ml-color-surface-raised);
190
+ }
191
+
192
+ /* Dropdown */
193
+ .ml-autocomplete__dropdown {
194
+ position: fixed;
195
+ inset: unset;
196
+ margin: 0;
197
+ z-index: 50;
198
+ background-color: var(--ml-color-surface);
199
+ border: var(--ml-border) solid var(--ml-color-border);
200
+ border-radius: var(--ml-radius);
201
+ box-shadow: var(--ml-shadow-lg);
202
+ max-height: 280px;
203
+ overflow-y: auto;
204
+ padding: var(--ml-space-1-5);
205
+ display: flex;
206
+ flex-direction: column;
207
+ gap: var(--ml-space-1);
208
+ }
209
+
210
+ .ml-autocomplete__dropdown:not(:popover-open) {
211
+ display: none;
212
+ }
213
+
214
+ .ml-autocomplete__empty {
215
+ padding: var(--ml-space-2) var(--ml-space-3);
216
+ font-size: var(--ml-text-sm);
217
+ color: var(--ml-color-text-muted);
218
+ }
219
+
220
+ .ml-autocomplete__loading {
221
+ padding: var(--ml-space-3) var(--ml-space-3);
222
+ font-size: var(--ml-text-sm);
223
+ color: var(--ml-color-text-muted);
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--ml-space-2);
227
+ justify-content: center;
228
+ }
229
+
230
+ /* Options */
231
+ .ml-autocomplete__option {
232
+ display: flex;
233
+ align-items: center;
234
+ gap: var(--ml-space-2);
235
+ padding: var(--ml-space-2) var(--ml-space-3);
236
+ border-radius: var(--ml-radius-sm);
237
+ cursor: pointer;
238
+ font-size: var(--ml-text-sm);
239
+ font-weight: var(--ml-font-medium);
240
+ color: var(--ml-color-text);
241
+ transition: background-color var(--ml-duration-100) var(--ml-ease-in-out);
242
+ }
243
+
244
+ .ml-autocomplete__option:hover:not(.ml-autocomplete__option--disabled) {
245
+ background-color: var(--ml-color-surface-raised);
246
+ }
247
+
248
+ .ml-autocomplete__option--focused {
249
+ background-color: var(--ml-color-surface-raised);
250
+ }
251
+
252
+ .ml-autocomplete__option--selected {
253
+ background-color: var(--ml-color-primary-subtle);
254
+ }
255
+
256
+ .ml-autocomplete__option--selected:hover:not(.ml-autocomplete__option--disabled) {
257
+ background-color: var(--ml-color-primary-subtle);
258
+ }
259
+
260
+ .ml-autocomplete__option--disabled {
261
+ color: var(--ml-color-text-muted);
262
+ cursor: not-allowed;
263
+ }
264
+
265
+ .ml-autocomplete__option-icon {
266
+ flex-shrink: 0;
267
+ color: var(--ml-color-text-muted);
268
+ }
269
+
270
+ .ml-autocomplete__option-avatar {
271
+ width: 24px;
272
+ height: 24px;
273
+ border-radius: var(--ml-radius-full);
274
+ object-fit: cover;
275
+ flex-shrink: 0;
276
+ }
277
+
278
+ .ml-autocomplete__option--selected .ml-autocomplete__option-icon {
279
+ color: var(--ml-color-primary);
280
+ }
281
+
282
+ .ml-autocomplete__option-content {
283
+ flex: 1;
284
+ min-width: 0;
285
+ display: flex;
286
+ flex-direction: column;
287
+ gap: 1px;
288
+ }
289
+
290
+ .ml-autocomplete__option-label {
291
+ overflow: hidden;
292
+ text-overflow: ellipsis;
293
+ white-space: nowrap;
294
+ }
295
+
296
+ .ml-autocomplete__option-subtitle {
297
+ font-size: var(--ml-text-xs);
298
+ font-weight: var(--ml-font-normal);
299
+ color: var(--ml-color-text-muted);
300
+ overflow: hidden;
301
+ text-overflow: ellipsis;
302
+ white-space: nowrap;
303
+ }
304
+
305
+ .ml-autocomplete__option-check {
306
+ flex-shrink: 0;
307
+ color: var(--ml-color-primary);
308
+ margin-left: auto;
309
+ }
310
+
311
+ /* Hint / Error */
312
+ .ml-autocomplete__hint,
313
+ .ml-autocomplete__error {
314
+ font-size: var(--ml-text-sm);
315
+ line-height: var(--ml-leading-tight);
316
+ }
317
+
318
+ .ml-autocomplete__hint {
319
+ color: var(--ml-color-text-muted);
320
+ }
321
+
322
+ .ml-autocomplete__error {
323
+ color: var(--ml-color-danger);
324
+ }
325
+
326
+ .ml-autocomplete--error .ml-autocomplete__trigger {
327
+ border-color: var(--ml-color-danger);
328
+ }
329
+
330
+ .ml-autocomplete--error .ml-autocomplete__trigger:focus-within {
331
+ box-shadow: var(--ml-shadow-ring-error);
332
+ }
333
+
334
+ /* Size variants */
335
+ .ml-autocomplete--sm .ml-autocomplete__trigger {
336
+ padding: var(--ml-space-2) var(--ml-space-3);
337
+ font-size: var(--ml-text-sm);
338
+ }
339
+
340
+ .ml-autocomplete--md .ml-autocomplete__trigger {
341
+ padding: var(--ml-space-2-5) var(--ml-space-3-5);
342
+ font-size: var(--ml-text-sm);
343
+ }
344
+
345
+ .ml-autocomplete--lg .ml-autocomplete__trigger {
346
+ padding: var(--ml-space-3) var(--ml-space-3-5);
347
+ font-size: var(--ml-text-base);
348
+ }
349
+
350
+ /* Disabled state */
351
+ .ml-autocomplete--disabled {
352
+ pointer-events: none;
353
+ }
354
+ `;
@@ -0,0 +1,3 @@
1
+ import type { AutocompleteComponent } from './autocomplete.component.js';
2
+ export declare function autocompleteTemplate(c: AutocompleteComponent): import("@melodicdev/core").TemplateResult;
3
+ //# sourceMappingURL=autocomplete.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.template.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/autocomplete/autocomplete.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGzE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,qBAAqB,6CA8D5D"}
@@ -0,0 +1,128 @@
1
+ import { html, classMap, when, repeat } from '@melodicdev/core';
2
+ export function autocompleteTemplate(c) {
3
+ return html `
4
+ <div
5
+ class=${classMap({
6
+ 'ml-autocomplete': true,
7
+ [`ml-autocomplete--${c.size}`]: true,
8
+ 'ml-autocomplete--open': c.isOpen,
9
+ 'ml-autocomplete--disabled': c.disabled,
10
+ 'ml-autocomplete--error': !!c.error,
11
+ 'ml-autocomplete--has-value': c.hasValue,
12
+ 'ml-autocomplete--multiple': c.multiple
13
+ })}
14
+ >
15
+ ${when(!!c.label, () => html `
16
+ <label class="ml-autocomplete__label">
17
+ ${c.label}
18
+ ${when(c.required, () => html `<span class="ml-autocomplete__required">*</span>`)}
19
+ </label>
20
+ `)}
21
+
22
+ <div class="ml-autocomplete__control">
23
+ <div
24
+ class="ml-autocomplete__trigger"
25
+ @click=${c.handleInputClick}
26
+ >
27
+ ${when(c.multiple, () => renderMultiValue(c), () => renderSingleValue(c))}
28
+ </div>
29
+
30
+ <div
31
+ class="ml-autocomplete__dropdown"
32
+ role="listbox"
33
+ popover="manual"
34
+ >
35
+ ${c._loading
36
+ ? html `<div class="ml-autocomplete__loading">
37
+ <ml-spinner size="sm"></ml-spinner>
38
+ <span>Searching...</span>
39
+ </div>`
40
+ : c.filteredOptions.length
41
+ ? repeat(c.filteredOptions, (option) => `${option.value}-${c.multiple ? c.values.includes(option.value) : c.value === option.value}`, (option, index) => renderOption(c, option, index))
42
+ : html `<div class="ml-autocomplete__empty">No results found</div>`}
43
+ </div>
44
+ </div>
45
+
46
+ ${when(!!c.error, () => html `<span class="ml-autocomplete__error">${c.error}</span>`, () => html `${when(!!c.hint, () => html `<span class="ml-autocomplete__hint">${c.hint}</span>`)}`)}
47
+ </div>
48
+ `;
49
+ }
50
+ function renderSingleValue(c) {
51
+ const showClear = !c.multiple && c.hasValue && !c.disabled;
52
+ return html `
53
+ ${when(c.showIcon, () => html `<ml-icon icon="magnifying-glass" size="sm" format="regular" class="ml-autocomplete__search-icon"></ml-icon>`)}
54
+ <input
55
+ class="ml-autocomplete__input"
56
+ type="text"
57
+ placeholder=${c.hasValue ? c.displayText : c.placeholder}
58
+ aria-label=${c.label || c.placeholder || 'Search'}
59
+ .value=${c.hasValue && !c.search ? c.displayText : c.search}
60
+ @input=${c.handleInput}
61
+ @focus=${c.handleFocus}
62
+ @click=${c.handleInputClick}
63
+ ?disabled=${c.disabled}
64
+ autocomplete="off"
65
+ />
66
+ ${when(showClear, () => html `
67
+ <button type="button" class="ml-autocomplete__clear" aria-label="Clear selection" @click=${c.handleClear}>
68
+ <ml-icon icon="x" size="sm" format="bold"></ml-icon>
69
+ </button>
70
+ `)}
71
+ `;
72
+ }
73
+ function renderMultiValue(c) {
74
+ return html `
75
+ ${when(c.showIcon, () => html `<ml-icon icon="magnifying-glass" size="sm" format="regular" class="ml-autocomplete__search-icon"></ml-icon>`)}
76
+ <span class="ml-autocomplete__tags">
77
+ ${repeat(c.selectedOptions, (option) => option.value, (option) => html `
78
+ <span class="ml-autocomplete__tag">
79
+ ${option.avatarUrl
80
+ ? html `<img class="ml-autocomplete__tag-avatar" src="${option.avatarUrl}" alt="${option.avatarAlt || option.label}" />`
81
+ : html ``}
82
+ <span class="ml-autocomplete__tag-label">${option.label}</span>
83
+ <button type="button" class="ml-autocomplete__tag-remove" aria-label="Remove ${option.label}" @click=${(event) => c.handleTagRemove(event, option.value)}>
84
+ <ml-icon icon="x" size="sm" format="bold"></ml-icon>
85
+ </button>
86
+ </span>
87
+ `)}
88
+ </span>
89
+ <input
90
+ class="ml-autocomplete__input"
91
+ type="text"
92
+ placeholder=${c.values.length ? '' : c.placeholder}
93
+ aria-label=${c.label || c.placeholder || 'Search'}
94
+ .value=${c.search}
95
+ @input=${c.handleInput}
96
+ @focus=${c.handleFocus}
97
+ @click=${c.handleInputClick}
98
+ ?disabled=${c.disabled}
99
+ autocomplete="off"
100
+ />
101
+ `;
102
+ }
103
+ function renderOption(c, option, index) {
104
+ const isSelected = c.multiple ? c.values.includes(option.value) : c.value === option.value;
105
+ const isFocused = c.focusedIndex === index;
106
+ return html `
107
+ <div
108
+ class=${classMap({
109
+ 'ml-autocomplete__option': true,
110
+ 'ml-autocomplete__option--selected': isSelected,
111
+ 'ml-autocomplete__option--focused': isFocused,
112
+ 'ml-autocomplete__option--disabled': !!option.disabled
113
+ })}
114
+ role="option"
115
+ aria-selected=${isSelected}
116
+ aria-disabled=${option.disabled || false}
117
+ @click=${(e) => c.handleOptionClick(e, option)}
118
+ >
119
+ ${when(!!option.avatarUrl, () => html `<img class="ml-autocomplete__option-avatar" src="${option.avatarUrl}" alt="${option.avatarAlt || option.label}" />`)}
120
+ ${when(!option.avatarUrl && !!option.icon, () => html `<ml-icon icon="${option.icon}" size="sm" class="ml-autocomplete__option-icon"></ml-icon>`)}
121
+ <span class="ml-autocomplete__option-content">
122
+ <span class="ml-autocomplete__option-label">${option.label}</span>
123
+ ${when(!!option.subtitle, () => html `<span class="ml-autocomplete__option-subtitle">${option.subtitle}</span>`)}
124
+ </span>
125
+ ${when(isSelected, () => html `<ml-icon icon="check" size="sm" format="regular" class="ml-autocomplete__option-check"></ml-icon>`)}
126
+ </div>
127
+ `;
128
+ }
@@ -0,0 +1,18 @@
1
+ export interface AutocompleteOption {
2
+ /** Unique value for the option */
3
+ value: string;
4
+ /** Display label */
5
+ label: string;
6
+ /** Optional secondary text */
7
+ subtitle?: string;
8
+ /** Optional avatar image */
9
+ avatarUrl?: string;
10
+ /** Optional avatar alt text */
11
+ avatarAlt?: string;
12
+ /** Optional icon name (Phosphor icon) */
13
+ icon?: string;
14
+ /** Whether the option is disabled */
15
+ disabled?: boolean;
16
+ }
17
+ export type AutocompleteSearchFn = (query: string) => Promise<AutocompleteOption[]>;
18
+ //# sourceMappingURL=autocomplete.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.types.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/autocomplete/autocomplete.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAClC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { AutocompleteComponent } from './autocomplete.component.js';
2
+ export { autocompleteTemplate } from './autocomplete.template.js';
3
+ export { autocompleteStyles } from './autocomplete.styles.js';
4
+ export type { AutocompleteOption, AutocompleteSearchFn } from './autocomplete.types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/autocomplete/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AutocompleteComponent } from './autocomplete.component.js';
2
+ export { autocompleteTemplate } from './autocomplete.template.js';
3
+ export { autocompleteStyles } from './autocomplete.styles.js';
@@ -16,7 +16,7 @@ export function dateTimePickerTemplate(c) {
16
16
 
17
17
  <div class="ml-date-time-picker__row">
18
18
  <ml-date-picker
19
- value=${c.dateValue}
19
+ .value=${c.dateValue}
20
20
  size=${c.size}
21
21
  ?disabled=${c.disabled}
22
22
  ?required=${c.required}
@@ -28,7 +28,7 @@ export function dateTimePickerTemplate(c) {
28
28
  <span class="ml-date-time-picker__divider"></span>
29
29
 
30
30
  <ml-time-picker
31
- value=${c.timeValue}
31
+ .value=${c.timeValue}
32
32
  size=${c.size}
33
33
  ?disabled=${c.disabled}
34
34
  min=${c.minTime}
package/lib/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export * from './components/forms/checkbox/index.js';
8
8
  export * from './components/forms/radio/index.js';
9
9
  export * from './components/forms/toggle/index.js';
10
10
  export * from './components/forms/select/index.js';
11
+ export * from './components/forms/autocomplete/index.js';
11
12
  export * from './components/forms/slider/index.js';
12
13
  export * from './components/forms/form-field/index.js';
13
14
  export * from './components/feedback/spinner/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AAGvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AAGxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAG3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AAGzD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AAGvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AAGxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAG3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AAGzD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC"}
package/lib/index.js CHANGED
@@ -11,6 +11,7 @@ export * from './components/forms/checkbox/index.js';
11
11
  export * from './components/forms/radio/index.js';
12
12
  export * from './components/forms/toggle/index.js';
13
13
  export * from './components/forms/select/index.js';
14
+ export * from './components/forms/autocomplete/index.js';
14
15
  export * from './components/forms/slider/index.js';
15
16
  export * from './components/forms/form-field/index.js';
16
17
  // Components - Feedback
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melodicdev/components",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Themeable UI component library built on the Melodic Framework",
5
5
  "license": "MIT",
6
6
  "author": "Melodic Development",
@@ -193,6 +193,10 @@
193
193
  "types": "./lib/components/forms/select/index.d.ts",
194
194
  "default": "./lib/components/forms/select/index.js"
195
195
  },
196
+ "./autocomplete": {
197
+ "types": "./lib/components/forms/autocomplete/index.d.ts",
198
+ "default": "./lib/components/forms/autocomplete/index.js"
199
+ },
196
200
  "./sidebar": {
197
201
  "types": "./lib/components/navigation/sidebar/index.d.ts",
198
202
  "default": "./lib/components/navigation/sidebar/index.js"