@nqmcreative/ui 0.2.3 → 0.4.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.
- package/README.md +209 -15
- package/cli/index.mjs +328 -112
- package/dist/core/color.d.ts +24 -0
- package/dist/core/color.js +39 -0
- package/dist/core/index.d.ts +8 -1
- package/dist/core/index.js +5 -1
- package/dist/core/locale.svelte.d.ts +8 -0
- package/dist/core/locale.svelte.js +14 -0
- package/dist/core/number.d.ts +22 -0
- package/dist/core/number.js +33 -0
- package/dist/core/pin.d.ts +23 -0
- package/dist/core/pin.js +38 -0
- package/dist/core/tags.d.ts +37 -0
- package/dist/core/tags.js +51 -0
- package/dist/core/time.d.ts +30 -0
- package/dist/core/time.js +78 -0
- package/dist/core/toast.svelte.d.ts +3 -0
- package/dist/styles/matte/AccordionItem.svelte +5 -0
- package/dist/styles/matte/AccordionItem.svelte.d.ts +2 -0
- package/dist/styles/matte/Avatar.svelte +15 -0
- package/dist/styles/matte/Avatar.svelte.d.ts +3 -0
- package/dist/styles/matte/Badge.svelte +5 -0
- package/dist/styles/matte/Badge.svelte.d.ts +2 -0
- package/dist/styles/matte/Breadcrumb.svelte +11 -4
- package/dist/styles/matte/Breadcrumb.svelte.d.ts +3 -0
- package/dist/styles/matte/Button.svelte +58 -7
- package/dist/styles/matte/Button.svelte.d.ts +14 -2
- package/dist/styles/matte/Card.svelte +6 -1
- package/dist/styles/matte/Card.svelte.d.ts +2 -0
- package/dist/styles/matte/CheckboxGroup.svelte +6 -0
- package/dist/styles/matte/CheckboxGroup.svelte.d.ts +2 -0
- package/dist/styles/matte/ColorInput.svelte +110 -0
- package/dist/styles/matte/ColorInput.svelte.d.ts +16 -0
- package/dist/styles/matte/Combobox.svelte +5 -0
- package/dist/styles/matte/Combobox.svelte.d.ts +3 -0
- package/dist/styles/matte/CommandPalette.svelte +6 -0
- package/dist/styles/matte/CommandPalette.svelte.d.ts +3 -0
- package/dist/styles/matte/CurrencyInput.svelte +108 -0
- package/dist/styles/matte/CurrencyInput.svelte.d.ts +26 -0
- package/dist/styles/matte/Drawer.svelte +5 -0
- package/dist/styles/matte/Drawer.svelte.d.ts +2 -0
- package/dist/styles/matte/FileInput.svelte +194 -0
- package/dist/styles/matte/FileInput.svelte.d.ts +32 -0
- package/dist/styles/matte/Footer.svelte +6 -2
- package/dist/styles/matte/Footer.svelte.d.ts +2 -0
- package/dist/styles/matte/InputAddon.svelte +36 -0
- package/dist/styles/matte/InputAddon.svelte.d.ts +13 -0
- package/dist/styles/matte/Link.svelte +9 -0
- package/dist/styles/matte/Link.svelte.d.ts +4 -0
- package/dist/styles/matte/MenuItem.svelte +2 -1
- package/dist/styles/matte/Modal.svelte +5 -0
- package/dist/styles/matte/Modal.svelte.d.ts +2 -0
- package/dist/styles/matte/MultiSelect.svelte +7 -1
- package/dist/styles/matte/MultiSelect.svelte.d.ts +3 -0
- package/dist/styles/matte/Navbar.svelte +18 -4
- package/dist/styles/matte/Navbar.svelte.d.ts +2 -0
- package/dist/styles/matte/PinInput.svelte +137 -0
- package/dist/styles/matte/PinInput.svelte.d.ts +25 -0
- package/dist/styles/matte/PricingCard.svelte +16 -8
- package/dist/styles/matte/PricingCard.svelte.d.ts +2 -0
- package/dist/styles/matte/RadioGroup.svelte +6 -0
- package/dist/styles/matte/RadioGroup.svelte.d.ts +2 -0
- package/dist/styles/matte/SearchInput.svelte +87 -0
- package/dist/styles/matte/SearchInput.svelte.d.ts +24 -0
- package/dist/styles/matte/SegmentedControl.svelte +16 -2
- package/dist/styles/matte/SegmentedControl.svelte.d.ts +5 -0
- package/dist/styles/matte/Sidebar.svelte +2 -1
- package/dist/styles/matte/Stat.svelte +8 -1
- package/dist/styles/matte/Stat.svelte.d.ts +3 -0
- package/dist/styles/matte/Steps.svelte +7 -0
- package/dist/styles/matte/Steps.svelte.d.ts +3 -0
- package/dist/styles/matte/Table.svelte +153 -97
- package/dist/styles/matte/Table.svelte.d.ts +12 -0
- package/dist/styles/matte/Tabs.svelte +5 -0
- package/dist/styles/matte/Tabs.svelte.d.ts +3 -0
- package/dist/styles/matte/TagsInput.svelte +173 -0
- package/dist/styles/matte/TagsInput.svelte.d.ts +29 -0
- package/dist/styles/matte/TimeInput.svelte +129 -0
- package/dist/styles/matte/TimeInput.svelte.d.ts +21 -0
- package/dist/styles/matte/Toaster.svelte +3 -0
- package/dist/styles/matte/icon.d.ts +21 -0
- package/dist/styles/matte/icon.js +21 -0
- package/dist/styles/matte/index.d.ts +8 -2
- package/dist/styles/matte/index.js +8 -2
- package/dist/styles/paper/AccordionItem.svelte +5 -0
- package/dist/styles/paper/AccordionItem.svelte.d.ts +2 -0
- package/dist/styles/paper/Avatar.svelte +15 -0
- package/dist/styles/paper/Avatar.svelte.d.ts +3 -0
- package/dist/styles/paper/Badge.svelte +5 -0
- package/dist/styles/paper/Badge.svelte.d.ts +2 -0
- package/dist/styles/paper/Breadcrumb.svelte +8 -4
- package/dist/styles/paper/Breadcrumb.svelte.d.ts +3 -0
- package/dist/styles/paper/Button.svelte +58 -7
- package/dist/styles/paper/Button.svelte.d.ts +14 -2
- package/dist/styles/paper/Card.svelte +6 -1
- package/dist/styles/paper/Card.svelte.d.ts +2 -0
- package/dist/styles/paper/CheckboxGroup.svelte +6 -0
- package/dist/styles/paper/CheckboxGroup.svelte.d.ts +2 -0
- package/dist/styles/paper/ColorInput.svelte +112 -0
- package/dist/styles/paper/ColorInput.svelte.d.ts +16 -0
- package/dist/styles/paper/Combobox.svelte +5 -0
- package/dist/styles/paper/Combobox.svelte.d.ts +3 -0
- package/dist/styles/paper/CommandPalette.svelte +6 -0
- package/dist/styles/paper/CommandPalette.svelte.d.ts +3 -0
- package/dist/styles/paper/CurrencyInput.svelte +108 -0
- package/dist/styles/paper/CurrencyInput.svelte.d.ts +26 -0
- package/dist/styles/paper/Drawer.svelte +5 -0
- package/dist/styles/paper/Drawer.svelte.d.ts +2 -0
- package/dist/styles/paper/FileInput.svelte +204 -0
- package/dist/styles/paper/FileInput.svelte.d.ts +32 -0
- package/dist/styles/paper/Footer.svelte +6 -2
- package/dist/styles/paper/Footer.svelte.d.ts +2 -0
- package/dist/styles/paper/InputAddon.svelte +36 -0
- package/dist/styles/paper/InputAddon.svelte.d.ts +13 -0
- package/dist/styles/paper/Link.svelte +9 -0
- package/dist/styles/paper/Link.svelte.d.ts +4 -0
- package/dist/styles/paper/MenuItem.svelte +2 -1
- package/dist/styles/paper/Modal.svelte +5 -0
- package/dist/styles/paper/Modal.svelte.d.ts +2 -0
- package/dist/styles/paper/MultiSelect.svelte +7 -1
- package/dist/styles/paper/MultiSelect.svelte.d.ts +3 -0
- package/dist/styles/paper/Navbar.svelte +18 -4
- package/dist/styles/paper/Navbar.svelte.d.ts +2 -0
- package/dist/styles/paper/PinInput.svelte +137 -0
- package/dist/styles/paper/PinInput.svelte.d.ts +25 -0
- package/dist/styles/paper/PricingCard.svelte +23 -15
- package/dist/styles/paper/PricingCard.svelte.d.ts +2 -0
- package/dist/styles/paper/RadioGroup.svelte +6 -0
- package/dist/styles/paper/RadioGroup.svelte.d.ts +2 -0
- package/dist/styles/paper/SearchInput.svelte +92 -0
- package/dist/styles/paper/SearchInput.svelte.d.ts +24 -0
- package/dist/styles/paper/SegmentedControl.svelte +16 -2
- package/dist/styles/paper/SegmentedControl.svelte.d.ts +5 -0
- package/dist/styles/paper/Sidebar.svelte +2 -1
- package/dist/styles/paper/Stat.svelte +8 -1
- package/dist/styles/paper/Stat.svelte.d.ts +3 -0
- package/dist/styles/paper/Steps.svelte +7 -0
- package/dist/styles/paper/Steps.svelte.d.ts +3 -0
- package/dist/styles/paper/Table.svelte +153 -97
- package/dist/styles/paper/Table.svelte.d.ts +12 -0
- package/dist/styles/paper/Tabs.svelte +5 -0
- package/dist/styles/paper/Tabs.svelte.d.ts +3 -0
- package/dist/styles/paper/TagsInput.svelte +178 -0
- package/dist/styles/paper/TagsInput.svelte.d.ts +29 -0
- package/dist/styles/paper/TimeInput.svelte +155 -0
- package/dist/styles/paper/TimeInput.svelte.d.ts +21 -0
- package/dist/styles/paper/Toaster.svelte +3 -0
- package/dist/styles/paper/icon.d.ts +21 -0
- package/dist/styles/paper/icon.js +21 -0
- package/dist/styles/paper/index.d.ts +8 -2
- package/dist/styles/paper/index.js +8 -2
- package/dist/styles/sprout/AccordionItem.svelte +5 -0
- package/dist/styles/sprout/AccordionItem.svelte.d.ts +2 -0
- package/dist/styles/sprout/Avatar.svelte +15 -0
- package/dist/styles/sprout/Avatar.svelte.d.ts +3 -0
- package/dist/styles/sprout/Badge.svelte +5 -0
- package/dist/styles/sprout/Badge.svelte.d.ts +2 -0
- package/dist/styles/sprout/Breadcrumb.svelte +8 -4
- package/dist/styles/sprout/Breadcrumb.svelte.d.ts +3 -0
- package/dist/styles/sprout/Button.svelte +58 -7
- package/dist/styles/sprout/Button.svelte.d.ts +14 -2
- package/dist/styles/sprout/Card.svelte +6 -1
- package/dist/styles/sprout/Card.svelte.d.ts +2 -0
- package/dist/styles/sprout/CheckboxGroup.svelte +6 -0
- package/dist/styles/sprout/CheckboxGroup.svelte.d.ts +2 -0
- package/dist/styles/sprout/ColorInput.svelte +112 -0
- package/dist/styles/sprout/ColorInput.svelte.d.ts +16 -0
- package/dist/styles/sprout/Combobox.svelte +5 -0
- package/dist/styles/sprout/Combobox.svelte.d.ts +3 -0
- package/dist/styles/sprout/CommandPalette.svelte +6 -0
- package/dist/styles/sprout/CommandPalette.svelte.d.ts +3 -0
- package/dist/styles/sprout/CurrencyInput.svelte +108 -0
- package/dist/styles/sprout/CurrencyInput.svelte.d.ts +26 -0
- package/dist/styles/sprout/Drawer.svelte +5 -0
- package/dist/styles/sprout/Drawer.svelte.d.ts +2 -0
- package/dist/styles/sprout/FileInput.svelte +205 -0
- package/dist/styles/sprout/FileInput.svelte.d.ts +32 -0
- package/dist/styles/sprout/Footer.svelte +6 -2
- package/dist/styles/sprout/Footer.svelte.d.ts +2 -0
- package/dist/styles/sprout/InputAddon.svelte +37 -0
- package/dist/styles/sprout/InputAddon.svelte.d.ts +13 -0
- package/dist/styles/sprout/Link.svelte +9 -0
- package/dist/styles/sprout/Link.svelte.d.ts +4 -0
- package/dist/styles/sprout/MenuItem.svelte +2 -1
- package/dist/styles/sprout/Modal.svelte +5 -0
- package/dist/styles/sprout/Modal.svelte.d.ts +2 -0
- package/dist/styles/sprout/MultiSelect.svelte +7 -1
- package/dist/styles/sprout/MultiSelect.svelte.d.ts +3 -0
- package/dist/styles/sprout/Navbar.svelte +18 -4
- package/dist/styles/sprout/Navbar.svelte.d.ts +2 -0
- package/dist/styles/sprout/PinInput.svelte +138 -0
- package/dist/styles/sprout/PinInput.svelte.d.ts +25 -0
- package/dist/styles/sprout/PricingCard.svelte +23 -15
- package/dist/styles/sprout/PricingCard.svelte.d.ts +2 -0
- package/dist/styles/sprout/RadioGroup.svelte +6 -0
- package/dist/styles/sprout/RadioGroup.svelte.d.ts +2 -0
- package/dist/styles/sprout/SearchInput.svelte +92 -0
- package/dist/styles/sprout/SearchInput.svelte.d.ts +24 -0
- package/dist/styles/sprout/SegmentedControl.svelte +16 -2
- package/dist/styles/sprout/SegmentedControl.svelte.d.ts +5 -0
- package/dist/styles/sprout/Sidebar.svelte +2 -1
- package/dist/styles/sprout/Stat.svelte +8 -1
- package/dist/styles/sprout/Stat.svelte.d.ts +3 -0
- package/dist/styles/sprout/Steps.svelte +7 -0
- package/dist/styles/sprout/Steps.svelte.d.ts +3 -0
- package/dist/styles/sprout/Table.svelte +153 -97
- package/dist/styles/sprout/Table.svelte.d.ts +12 -0
- package/dist/styles/sprout/Tabs.svelte +5 -0
- package/dist/styles/sprout/Tabs.svelte.d.ts +3 -0
- package/dist/styles/sprout/TagsInput.svelte +179 -0
- package/dist/styles/sprout/TagsInput.svelte.d.ts +29 -0
- package/dist/styles/sprout/TimeInput.svelte +155 -0
- package/dist/styles/sprout/TimeInput.svelte.d.ts +21 -0
- package/dist/styles/sprout/Toaster.svelte +3 -0
- package/dist/styles/sprout/icon.d.ts +21 -0
- package/dist/styles/sprout/icon.js +21 -0
- package/dist/styles/sprout/index.d.ts +8 -2
- package/dist/styles/sprout/index.js +8 -2
- package/package.json +98 -26
- package/registry.json +143 -35
- package/dist/styles/matte/NumberInput.svelte +0 -96
- package/dist/styles/matte/NumberInput.svelte.d.ts +0 -15
- package/dist/styles/matte/PasswordInput.svelte +0 -95
- package/dist/styles/matte/PasswordInput.svelte.d.ts +0 -12
- package/dist/styles/paper/NumberInput.svelte +0 -96
- package/dist/styles/paper/NumberInput.svelte.d.ts +0 -15
- package/dist/styles/paper/PasswordInput.svelte +0 -100
- package/dist/styles/paper/PasswordInput.svelte.d.ts +0 -12
- package/dist/styles/sprout/NumberInput.svelte +0 -97
- package/dist/styles/sprout/NumberInput.svelte.d.ts +0 -15
- package/dist/styles/sprout/PasswordInput.svelte +0 -101
- package/dist/styles/sprout/PasswordInput.svelte.d.ts +0 -12
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useLocale } from '../../core/locale.svelte.js';
|
|
3
|
+
import { addTag, splitTags, type TagRejection } from '../../core/tags.js';
|
|
4
|
+
import { toneFocusWithinBorder, toneSoft, type Tone } from '../../core/tones.js';
|
|
5
|
+
import { edge } from './lift.js';
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
/** Bindable list of tags, in the order they were added. */
|
|
9
|
+
tags?: string[];
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
/** Cap on how many may be held. `0` means no limit. */
|
|
12
|
+
max?: number;
|
|
13
|
+
/** Shortest a tag may be, after trimming. */
|
|
14
|
+
minLength?: number;
|
|
15
|
+
/** Keys that commit the tag under the caret, besides Enter. */
|
|
16
|
+
separators?: string[];
|
|
17
|
+
/** Refuse a tag that differs from an existing one only in case. */
|
|
18
|
+
caseInsensitive?: boolean;
|
|
19
|
+
/** Commit whatever is half-typed when the field loses focus. */
|
|
20
|
+
commitOnBlur?: boolean;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
invalid?: boolean;
|
|
23
|
+
tone?: Tone;
|
|
24
|
+
/** `name` for a plain form submit — one hidden field, comma-joined. */
|
|
25
|
+
name?: string;
|
|
26
|
+
onadd?: (tag: string) => void;
|
|
27
|
+
onremove?: (tag: string) => void;
|
|
28
|
+
onreject?: (reason: TagRejection, raw: string) => void;
|
|
29
|
+
class?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let {
|
|
33
|
+
tags = $bindable([]),
|
|
34
|
+
placeholder,
|
|
35
|
+
max = 0,
|
|
36
|
+
minLength = 1,
|
|
37
|
+
separators = [','],
|
|
38
|
+
caseInsensitive = true,
|
|
39
|
+
commitOnBlur = true,
|
|
40
|
+
disabled = false,
|
|
41
|
+
invalid = false,
|
|
42
|
+
tone = 'brand',
|
|
43
|
+
name,
|
|
44
|
+
onadd,
|
|
45
|
+
onremove,
|
|
46
|
+
onreject,
|
|
47
|
+
class: className = ''
|
|
48
|
+
}: Props = $props();
|
|
49
|
+
|
|
50
|
+
const t = useLocale();
|
|
51
|
+
|
|
52
|
+
let draft = $state('');
|
|
53
|
+
let field: HTMLInputElement | null = $state(null);
|
|
54
|
+
/** The last refusal, cleared as soon as the next keystroke lands. */
|
|
55
|
+
let refused = $state<TagRejection | null>(null);
|
|
56
|
+
|
|
57
|
+
const full = $derived(max > 0 && tags.length >= max);
|
|
58
|
+
const rules = $derived({ max, minLength, caseInsensitive });
|
|
59
|
+
|
|
60
|
+
function commit(raw: string) {
|
|
61
|
+
const { tags: next, rejected } = addTag(tags, raw, rules);
|
|
62
|
+
if (rejected) {
|
|
63
|
+
// An empty commit is the Enter key on an empty field, not a mistake.
|
|
64
|
+
if (rejected !== 'empty') {
|
|
65
|
+
refused = rejected;
|
|
66
|
+
onreject?.(rejected, raw);
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
tags = next;
|
|
71
|
+
onadd?.(next[next.length - 1]);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function remove(index: number) {
|
|
76
|
+
const [gone] = tags.slice(index, index + 1);
|
|
77
|
+
tags = tags.filter((_, at) => at !== index);
|
|
78
|
+
if (gone !== undefined) onremove?.(gone);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function onKeydown(event: KeyboardEvent) {
|
|
82
|
+
refused = null;
|
|
83
|
+
|
|
84
|
+
if (event.key === 'Enter' || separators.includes(event.key)) {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
if (commit(draft)) draft = '';
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Empty field: Backspace peels the last chip off, the way chips behave
|
|
91
|
+
// everywhere else in this library.
|
|
92
|
+
if (event.key === 'Backspace' && draft === '' && tags.length) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
remove(tags.length - 1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function onPaste(event: ClipboardEvent) {
|
|
99
|
+
const text = event.clipboardData?.getData('text') ?? '';
|
|
100
|
+
const parts = splitTags(text, separators);
|
|
101
|
+
if (parts.length <= 1) return;
|
|
102
|
+
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
for (const part of parts) commit(part);
|
|
105
|
+
draft = '';
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function onBlur() {
|
|
109
|
+
if (commitOnBlur && draft.trim() && commit(draft)) draft = '';
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const messages: Record<TagRejection, string> = $derived({
|
|
113
|
+
empty: '',
|
|
114
|
+
short: `${minLength}+`,
|
|
115
|
+
duplicate: t.current.duplicateTag,
|
|
116
|
+
full: `${t.current.selected} ${tags.length}/${max}`
|
|
117
|
+
});
|
|
118
|
+
</script>
|
|
119
|
+
|
|
120
|
+
<div class="flex w-full flex-col gap-1.5 {className}">
|
|
121
|
+
<!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_static_element_interactions -->
|
|
122
|
+
<div
|
|
123
|
+
onclick={() => field?.focus()}
|
|
124
|
+
class="flex w-full flex-wrap items-center gap-1.5 rounded-xl border bg-bg py-1.5 pr-1.5 pl-2 {edge} transition-colors duration-150 ease-brand-out
|
|
125
|
+
{invalid
|
|
126
|
+
? 'border-danger focus-within:border-danger'
|
|
127
|
+
: `border-hairline-strong ${toneFocusWithinBorder[tone]}`}
|
|
128
|
+
{disabled ? 'pointer-events-none opacity-50' : ''}"
|
|
129
|
+
>
|
|
130
|
+
{#each tags as tag, index (tag)}
|
|
131
|
+
<span
|
|
132
|
+
class="inline-flex items-center gap-1 rounded-xl py-0.5 pr-0.5 pl-2 text-xs font-medium {toneSoft[
|
|
133
|
+
tone
|
|
134
|
+
]}"
|
|
135
|
+
>
|
|
136
|
+
{tag}
|
|
137
|
+
<button
|
|
138
|
+
type="button"
|
|
139
|
+
onclick={() => remove(index)}
|
|
140
|
+
aria-label="{t.current.removeItem} {tag}"
|
|
141
|
+
class="inline-flex size-4 items-center justify-center rounded transition-colors duration-150 hover:bg-bg/70 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-current"
|
|
142
|
+
>
|
|
143
|
+
<svg class="size-2.5" viewBox="0 0 10 10" fill="none" aria-hidden="true">
|
|
144
|
+
<path
|
|
145
|
+
d="m1.5 1.5 7 7M8.5 1.5l-7 7"
|
|
146
|
+
stroke="currentColor"
|
|
147
|
+
stroke-width="1.6"
|
|
148
|
+
stroke-linecap="round"
|
|
149
|
+
/>
|
|
150
|
+
</svg>
|
|
151
|
+
</button>
|
|
152
|
+
</span>
|
|
153
|
+
{/each}
|
|
154
|
+
|
|
155
|
+
<input
|
|
156
|
+
bind:this={field}
|
|
157
|
+
bind:value={draft}
|
|
158
|
+
{disabled}
|
|
159
|
+
readonly={full}
|
|
160
|
+
placeholder={tags.length === 0 ? (placeholder ?? t.current.addTag) : ''}
|
|
161
|
+
aria-label={placeholder ?? t.current.addTag}
|
|
162
|
+
aria-invalid={invalid ? 'true' : undefined}
|
|
163
|
+
onkeydown={onKeydown}
|
|
164
|
+
onpaste={onPaste}
|
|
165
|
+
onblur={onBlur}
|
|
166
|
+
class="h-7 min-w-24 flex-1 bg-transparent font-sans text-sm text-text placeholder:text-text-muted focus:outline-none"
|
|
167
|
+
/>
|
|
168
|
+
|
|
169
|
+
{#if name}
|
|
170
|
+
<input type="hidden" {name} value={tags.join(',')} />
|
|
171
|
+
{/if}
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
{#if refused && messages[refused]}
|
|
175
|
+
<span class="text-xs font-medium text-danger">{messages[refused]}</span>
|
|
176
|
+
{:else if max}
|
|
177
|
+
<span class="text-xs text-text-muted tabular-nums">{tags.length}/{max}</span>
|
|
178
|
+
{/if}
|
|
179
|
+
</div>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type TagRejection } from '../../core/tags.js';
|
|
2
|
+
import { type Tone } from '../../core/tones.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
/** Bindable list of tags, in the order they were added. */
|
|
5
|
+
tags?: string[];
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
/** Cap on how many may be held. `0` means no limit. */
|
|
8
|
+
max?: number;
|
|
9
|
+
/** Shortest a tag may be, after trimming. */
|
|
10
|
+
minLength?: number;
|
|
11
|
+
/** Keys that commit the tag under the caret, besides Enter. */
|
|
12
|
+
separators?: string[];
|
|
13
|
+
/** Refuse a tag that differs from an existing one only in case. */
|
|
14
|
+
caseInsensitive?: boolean;
|
|
15
|
+
/** Commit whatever is half-typed when the field loses focus. */
|
|
16
|
+
commitOnBlur?: boolean;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
invalid?: boolean;
|
|
19
|
+
tone?: Tone;
|
|
20
|
+
/** `name` for a plain form submit — one hidden field, comma-joined. */
|
|
21
|
+
name?: string;
|
|
22
|
+
onadd?: (tag: string) => void;
|
|
23
|
+
onremove?: (tag: string) => void;
|
|
24
|
+
onreject?: (reason: TagRejection, raw: string) => void;
|
|
25
|
+
class?: string;
|
|
26
|
+
}
|
|
27
|
+
declare const TagsInput: import("svelte").Component<Props, {}, "tags">;
|
|
28
|
+
type TagsInput = ReturnType<typeof TagsInput>;
|
|
29
|
+
export default TagsInput;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
3
|
+
import { useLocale } from '../../core/locale.svelte.js';
|
|
4
|
+
import { clampTime, formatTime, parseTime, stepTime } from '../../core/time.js';
|
|
5
|
+
import type { Tone } from '../../core/tones.js';
|
|
6
|
+
import Input, { type InputSize } from './Input.svelte';
|
|
7
|
+
|
|
8
|
+
interface Props extends Omit<
|
|
9
|
+
HTMLInputAttributes,
|
|
10
|
+
'size' | 'prefix' | 'suffix' | 'min' | 'max' | 'step'
|
|
11
|
+
> {
|
|
12
|
+
/** Bindable `HH:MM`, or `''` for empty. */
|
|
13
|
+
value?: string;
|
|
14
|
+
/** Inclusive bounds, `HH:MM`. */
|
|
15
|
+
min?: string;
|
|
16
|
+
max?: string;
|
|
17
|
+
/** Minutes one press of a stepper moves, and what typing snaps to. */
|
|
18
|
+
step?: number;
|
|
19
|
+
size?: InputSize;
|
|
20
|
+
tone?: Tone;
|
|
21
|
+
invalid?: boolean;
|
|
22
|
+
/** Hide the steppers and let the field be typed into only. */
|
|
23
|
+
steppers?: boolean;
|
|
24
|
+
class?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let {
|
|
28
|
+
value = $bindable(''),
|
|
29
|
+
min,
|
|
30
|
+
max,
|
|
31
|
+
step = 15,
|
|
32
|
+
size = 'md',
|
|
33
|
+
tone = 'brand',
|
|
34
|
+
invalid = false,
|
|
35
|
+
disabled = false,
|
|
36
|
+
steppers = true,
|
|
37
|
+
class: className = '',
|
|
38
|
+
...rest
|
|
39
|
+
}: Props = $props();
|
|
40
|
+
|
|
41
|
+
const t = useLocale();
|
|
42
|
+
|
|
43
|
+
// Typed text and the bound value are separate until the field settles:
|
|
44
|
+
// `9` is a valid thing to be halfway through typing and an invalid time.
|
|
45
|
+
let text = $state('');
|
|
46
|
+
let editing = $state(false);
|
|
47
|
+
|
|
48
|
+
$effect(() => {
|
|
49
|
+
if (!editing) text = value;
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
function settle() {
|
|
53
|
+
editing = false;
|
|
54
|
+
const minutes = parseTime(text);
|
|
55
|
+
value = minutes === null ? '' : formatTime(clampTime(minutes, min, max, step));
|
|
56
|
+
text = value;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function nudge(direction: 1 | -1) {
|
|
60
|
+
value = stepTime(value, direction, step, min, max);
|
|
61
|
+
text = value;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function onKeydown(event: KeyboardEvent) {
|
|
65
|
+
if (event.key === 'ArrowUp') {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
nudge(1);
|
|
68
|
+
} else if (event.key === 'ArrowDown') {
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
nudge(-1);
|
|
71
|
+
} else if (event.key === 'Enter') {
|
|
72
|
+
settle();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const stepper =
|
|
77
|
+
'grid size-6 place-items-center rounded text-text-secondary transition-colors duration-150 hover:bg-bg-inset hover:text-text focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-current';
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<Input
|
|
81
|
+
bind:value={text}
|
|
82
|
+
{size}
|
|
83
|
+
{tone}
|
|
84
|
+
{invalid}
|
|
85
|
+
{disabled}
|
|
86
|
+
inputmode="numeric"
|
|
87
|
+
placeholder="--:--"
|
|
88
|
+
onfocus={() => (editing = true)}
|
|
89
|
+
onblur={settle}
|
|
90
|
+
onkeydown={onKeydown}
|
|
91
|
+
class="[&_input]:tabular-nums {className}"
|
|
92
|
+
{...rest}
|
|
93
|
+
>
|
|
94
|
+
{#snippet prefix()}
|
|
95
|
+
<svg class="size-4" viewBox="0 0 20 20" fill="none" aria-hidden="true">
|
|
96
|
+
<circle
|
|
97
|
+
cx="10"
|
|
98
|
+
cy="10"
|
|
99
|
+
r="6.5"
|
|
100
|
+
stroke="currentColor"
|
|
101
|
+
stroke-width="1.6"
|
|
102
|
+
stroke-linecap="round"
|
|
103
|
+
stroke-linejoin="round"
|
|
104
|
+
/>
|
|
105
|
+
<path
|
|
106
|
+
d="M10 6.5V10l2.5 1.5"
|
|
107
|
+
stroke="currentColor"
|
|
108
|
+
stroke-width="1.6"
|
|
109
|
+
stroke-linecap="round"
|
|
110
|
+
stroke-linejoin="round"
|
|
111
|
+
/>
|
|
112
|
+
</svg>
|
|
113
|
+
{/snippet}
|
|
114
|
+
|
|
115
|
+
{#snippet suffix()}
|
|
116
|
+
{#if steppers}
|
|
117
|
+
<span class="-mr-2 flex flex-col">
|
|
118
|
+
<button
|
|
119
|
+
type="button"
|
|
120
|
+
class={stepper}
|
|
121
|
+
{disabled}
|
|
122
|
+
onclick={() => nudge(1)}
|
|
123
|
+
aria-label={t.current.increase}
|
|
124
|
+
>
|
|
125
|
+
<svg class="size-3" viewBox="0 0 12 12" fill="none" aria-hidden="true">
|
|
126
|
+
<path
|
|
127
|
+
d="m3 7.5 3-3 3 3"
|
|
128
|
+
stroke="currentColor"
|
|
129
|
+
stroke-width="1.6"
|
|
130
|
+
stroke-linecap="round"
|
|
131
|
+
stroke-linejoin="round"
|
|
132
|
+
/>
|
|
133
|
+
</svg>
|
|
134
|
+
</button>
|
|
135
|
+
<button
|
|
136
|
+
type="button"
|
|
137
|
+
class={stepper}
|
|
138
|
+
{disabled}
|
|
139
|
+
onclick={() => nudge(-1)}
|
|
140
|
+
aria-label={t.current.decrease}
|
|
141
|
+
>
|
|
142
|
+
<svg class="size-3" viewBox="0 0 12 12" fill="none" aria-hidden="true">
|
|
143
|
+
<path
|
|
144
|
+
d="m3 4.5 3 3 3-3"
|
|
145
|
+
stroke="currentColor"
|
|
146
|
+
stroke-width="1.6"
|
|
147
|
+
stroke-linecap="round"
|
|
148
|
+
stroke-linejoin="round"
|
|
149
|
+
/>
|
|
150
|
+
</svg>
|
|
151
|
+
</button>
|
|
152
|
+
</span>
|
|
153
|
+
{/if}
|
|
154
|
+
{/snippet}
|
|
155
|
+
</Input>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
2
|
+
import type { Tone } from '../../core/tones.js';
|
|
3
|
+
import { type InputSize } from './Input.svelte';
|
|
4
|
+
interface Props extends Omit<HTMLInputAttributes, 'size' | 'prefix' | 'suffix' | 'min' | 'max' | 'step'> {
|
|
5
|
+
/** Bindable `HH:MM`, or `''` for empty. */
|
|
6
|
+
value?: string;
|
|
7
|
+
/** Inclusive bounds, `HH:MM`. */
|
|
8
|
+
min?: string;
|
|
9
|
+
max?: string;
|
|
10
|
+
/** Minutes one press of a stepper moves, and what typing snaps to. */
|
|
11
|
+
step?: number;
|
|
12
|
+
size?: InputSize;
|
|
13
|
+
tone?: Tone;
|
|
14
|
+
invalid?: boolean;
|
|
15
|
+
/** Hide the steppers and let the field be typed into only. */
|
|
16
|
+
steppers?: boolean;
|
|
17
|
+
class?: string;
|
|
18
|
+
}
|
|
19
|
+
declare const TimeInput: import("svelte").Component<Props, {}, "value">;
|
|
20
|
+
type TimeInput = ReturnType<typeof TimeInput>;
|
|
21
|
+
export default TimeInput;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { portal } from '../../core/actions/dismissable.js';
|
|
5
5
|
import { toast } from '../../core/toast.svelte.js';
|
|
6
6
|
import { toneText } from '../../core/tones.js';
|
|
7
|
+
import { iconMd } from './icon.js';
|
|
7
8
|
import Spinner from './Spinner.svelte';
|
|
8
9
|
import { useLocale } from '../../core/locale.svelte.js';
|
|
9
10
|
import { soft } from './lift.js';
|
|
@@ -62,6 +63,8 @@
|
|
|
62
63
|
<span class="mt-0.5 shrink-0 {toneText[item.tone]}">
|
|
63
64
|
{#if item.loading}
|
|
64
65
|
<Spinner size="sm" label="" />
|
|
66
|
+
{:else if item.icon}
|
|
67
|
+
<span class={iconMd}>{@render item.icon()}</span>
|
|
65
68
|
{:else if item.tone === 'success'}
|
|
66
69
|
<svg class="size-4" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
|
67
70
|
<circle cx="8" cy="8" r="6.5" stroke="currentColor" stroke-width="1.5" />
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The box a consumer-supplied icon renders into.
|
|
3
|
+
*
|
|
4
|
+
* Every icon in the library is a `Snippet` the app writes — the package ships
|
|
5
|
+
* no icon set and no runtime dependency — so the component has to size the
|
|
6
|
+
* glyph rather than trust it. The `*:` variant hits the snippet's own element,
|
|
7
|
+
* which is what keeps a bare `<svg viewBox="0 0 16 16">` from laying out at its
|
|
8
|
+
* intrinsic 300×150.
|
|
9
|
+
*
|
|
10
|
+
* Kept per style rather than in `core/`: an app only `@source`s the style
|
|
11
|
+
* folder it installed, so a class string living outside it would never be
|
|
12
|
+
* generated by Tailwind.
|
|
13
|
+
*/
|
|
14
|
+
/** 14px — menu rows, chips, anything sitting on one line of small text. */
|
|
15
|
+
export declare const iconSm = "grid size-3.5 shrink-0 place-items-center *:size-3.5";
|
|
16
|
+
/** 16px — the default: nav items, tabs, buttons, list rows. */
|
|
17
|
+
export declare const iconMd = "grid size-4 shrink-0 place-items-center *:size-4";
|
|
18
|
+
/** 20px — headers, stats, anything sitting beside a heading. */
|
|
19
|
+
export declare const iconLg = "grid size-5 shrink-0 place-items-center *:size-5";
|
|
20
|
+
/** 24px — dialog and empty-state marks. */
|
|
21
|
+
export declare const iconXl = "grid size-6 shrink-0 place-items-center *:size-6";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The box a consumer-supplied icon renders into.
|
|
3
|
+
*
|
|
4
|
+
* Every icon in the library is a `Snippet` the app writes — the package ships
|
|
5
|
+
* no icon set and no runtime dependency — so the component has to size the
|
|
6
|
+
* glyph rather than trust it. The `*:` variant hits the snippet's own element,
|
|
7
|
+
* which is what keeps a bare `<svg viewBox="0 0 16 16">` from laying out at its
|
|
8
|
+
* intrinsic 300×150.
|
|
9
|
+
*
|
|
10
|
+
* Kept per style rather than in `core/`: an app only `@source`s the style
|
|
11
|
+
* folder it installed, so a class string living outside it would never be
|
|
12
|
+
* generated by Tailwind.
|
|
13
|
+
*/
|
|
14
|
+
/** 14px — menu rows, chips, anything sitting on one line of small text. */
|
|
15
|
+
export const iconSm = 'grid size-3.5 shrink-0 place-items-center *:size-3.5';
|
|
16
|
+
/** 16px — the default: nav items, tabs, buttons, list rows. */
|
|
17
|
+
export const iconMd = 'grid size-4 shrink-0 place-items-center *:size-4';
|
|
18
|
+
/** 20px — headers, stats, anything sitting beside a heading. */
|
|
19
|
+
export const iconLg = 'grid size-5 shrink-0 place-items-center *:size-5';
|
|
20
|
+
/** 24px — dialog and empty-state marks. */
|
|
21
|
+
export const iconXl = 'grid size-6 shrink-0 place-items-center *:size-6';
|
|
@@ -22,8 +22,6 @@ export { default as Switch } from './Switch.svelte';
|
|
|
22
22
|
export type { SwitchSize } from './Switch.svelte';
|
|
23
23
|
export { default as Field } from './Field.svelte';
|
|
24
24
|
export { default as Label } from './Label.svelte';
|
|
25
|
-
export { default as PasswordInput } from './PasswordInput.svelte';
|
|
26
|
-
export { default as NumberInput } from './NumberInput.svelte';
|
|
27
25
|
export { default as Slider } from './Slider.svelte';
|
|
28
26
|
export { default as RadioGroup } from './RadioGroup.svelte';
|
|
29
27
|
export type { RadioOption } from './RadioGroup.svelte';
|
|
@@ -32,6 +30,14 @@ export type { CheckboxOption } from './CheckboxGroup.svelte';
|
|
|
32
30
|
export { default as SegmentedControl } from './SegmentedControl.svelte';
|
|
33
31
|
export type { SegmentOption, SegmentedSize } from './SegmentedControl.svelte';
|
|
34
32
|
export { default as InputGroup } from './InputGroup.svelte';
|
|
33
|
+
export { default as InputAddon } from './InputAddon.svelte';
|
|
34
|
+
export { default as SearchInput } from './SearchInput.svelte';
|
|
35
|
+
export { default as PinInput } from './PinInput.svelte';
|
|
36
|
+
export { default as TagsInput } from './TagsInput.svelte';
|
|
37
|
+
export { default as CurrencyInput } from './CurrencyInput.svelte';
|
|
38
|
+
export { default as TimeInput } from './TimeInput.svelte';
|
|
39
|
+
export { default as ColorInput } from './ColorInput.svelte';
|
|
40
|
+
export { default as FileInput } from './FileInput.svelte';
|
|
35
41
|
export { default as Combobox } from './Combobox.svelte';
|
|
36
42
|
export type { ComboboxOption } from './Combobox.svelte';
|
|
37
43
|
export { default as MultiSelect } from './MultiSelect.svelte';
|
|
@@ -21,13 +21,19 @@ export { default as Radio } from './Radio.svelte';
|
|
|
21
21
|
export { default as Switch } from './Switch.svelte';
|
|
22
22
|
export { default as Field } from './Field.svelte';
|
|
23
23
|
export { default as Label } from './Label.svelte';
|
|
24
|
-
export { default as PasswordInput } from './PasswordInput.svelte';
|
|
25
|
-
export { default as NumberInput } from './NumberInput.svelte';
|
|
26
24
|
export { default as Slider } from './Slider.svelte';
|
|
27
25
|
export { default as RadioGroup } from './RadioGroup.svelte';
|
|
28
26
|
export { default as CheckboxGroup } from './CheckboxGroup.svelte';
|
|
29
27
|
export { default as SegmentedControl } from './SegmentedControl.svelte';
|
|
30
28
|
export { default as InputGroup } from './InputGroup.svelte';
|
|
29
|
+
export { default as InputAddon } from './InputAddon.svelte';
|
|
30
|
+
export { default as SearchInput } from './SearchInput.svelte';
|
|
31
|
+
export { default as PinInput } from './PinInput.svelte';
|
|
32
|
+
export { default as TagsInput } from './TagsInput.svelte';
|
|
33
|
+
export { default as CurrencyInput } from './CurrencyInput.svelte';
|
|
34
|
+
export { default as TimeInput } from './TimeInput.svelte';
|
|
35
|
+
export { default as ColorInput } from './ColorInput.svelte';
|
|
36
|
+
export { default as FileInput } from './FileInput.svelte';
|
|
31
37
|
export { default as Combobox } from './Combobox.svelte';
|
|
32
38
|
export { default as MultiSelect } from './MultiSelect.svelte';
|
|
33
39
|
export { default as DatePicker } from './DatePicker.svelte';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nqmcreative/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Svelte 5 + Tailwind CSS v4 component library — three styles (matte, paper, sprout),
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Svelte 5 + Tailwind CSS v4 component library — three styles (matte, paper, sprout), 71 components each, one shared behaviour core. No runtime dependencies.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "vite dev",
|
|
7
7
|
"build": "vite build && svelte-kit sync && svelte-package && node scripts/strip-dist-tests.mjs && node scripts/generate-index.mjs && node scripts/generate-exports.mjs && node scripts/generate-registry.mjs && node scripts/generate-scoped-css.mjs && node scripts/generate-demos.mjs && publint",
|
|
@@ -135,14 +135,6 @@
|
|
|
135
135
|
"types": "./dist/styles/matte/Label.svelte.d.ts",
|
|
136
136
|
"svelte": "./dist/styles/matte/Label.svelte"
|
|
137
137
|
},
|
|
138
|
-
"./matte/password-input": {
|
|
139
|
-
"types": "./dist/styles/matte/PasswordInput.svelte.d.ts",
|
|
140
|
-
"svelte": "./dist/styles/matte/PasswordInput.svelte"
|
|
141
|
-
},
|
|
142
|
-
"./matte/number-input": {
|
|
143
|
-
"types": "./dist/styles/matte/NumberInput.svelte.d.ts",
|
|
144
|
-
"svelte": "./dist/styles/matte/NumberInput.svelte"
|
|
145
|
-
},
|
|
146
138
|
"./matte/slider": {
|
|
147
139
|
"types": "./dist/styles/matte/Slider.svelte.d.ts",
|
|
148
140
|
"svelte": "./dist/styles/matte/Slider.svelte"
|
|
@@ -163,6 +155,38 @@
|
|
|
163
155
|
"types": "./dist/styles/matte/InputGroup.svelte.d.ts",
|
|
164
156
|
"svelte": "./dist/styles/matte/InputGroup.svelte"
|
|
165
157
|
},
|
|
158
|
+
"./matte/input-addon": {
|
|
159
|
+
"types": "./dist/styles/matte/InputAddon.svelte.d.ts",
|
|
160
|
+
"svelte": "./dist/styles/matte/InputAddon.svelte"
|
|
161
|
+
},
|
|
162
|
+
"./matte/search-input": {
|
|
163
|
+
"types": "./dist/styles/matte/SearchInput.svelte.d.ts",
|
|
164
|
+
"svelte": "./dist/styles/matte/SearchInput.svelte"
|
|
165
|
+
},
|
|
166
|
+
"./matte/pin-input": {
|
|
167
|
+
"types": "./dist/styles/matte/PinInput.svelte.d.ts",
|
|
168
|
+
"svelte": "./dist/styles/matte/PinInput.svelte"
|
|
169
|
+
},
|
|
170
|
+
"./matte/tags-input": {
|
|
171
|
+
"types": "./dist/styles/matte/TagsInput.svelte.d.ts",
|
|
172
|
+
"svelte": "./dist/styles/matte/TagsInput.svelte"
|
|
173
|
+
},
|
|
174
|
+
"./matte/currency-input": {
|
|
175
|
+
"types": "./dist/styles/matte/CurrencyInput.svelte.d.ts",
|
|
176
|
+
"svelte": "./dist/styles/matte/CurrencyInput.svelte"
|
|
177
|
+
},
|
|
178
|
+
"./matte/time-input": {
|
|
179
|
+
"types": "./dist/styles/matte/TimeInput.svelte.d.ts",
|
|
180
|
+
"svelte": "./dist/styles/matte/TimeInput.svelte"
|
|
181
|
+
},
|
|
182
|
+
"./matte/color-input": {
|
|
183
|
+
"types": "./dist/styles/matte/ColorInput.svelte.d.ts",
|
|
184
|
+
"svelte": "./dist/styles/matte/ColorInput.svelte"
|
|
185
|
+
},
|
|
186
|
+
"./matte/file-input": {
|
|
187
|
+
"types": "./dist/styles/matte/FileInput.svelte.d.ts",
|
|
188
|
+
"svelte": "./dist/styles/matte/FileInput.svelte"
|
|
189
|
+
},
|
|
166
190
|
"./matte/combobox": {
|
|
167
191
|
"types": "./dist/styles/matte/Combobox.svelte.d.ts",
|
|
168
192
|
"svelte": "./dist/styles/matte/Combobox.svelte"
|
|
@@ -401,14 +425,6 @@
|
|
|
401
425
|
"types": "./dist/styles/paper/Label.svelte.d.ts",
|
|
402
426
|
"svelte": "./dist/styles/paper/Label.svelte"
|
|
403
427
|
},
|
|
404
|
-
"./paper/password-input": {
|
|
405
|
-
"types": "./dist/styles/paper/PasswordInput.svelte.d.ts",
|
|
406
|
-
"svelte": "./dist/styles/paper/PasswordInput.svelte"
|
|
407
|
-
},
|
|
408
|
-
"./paper/number-input": {
|
|
409
|
-
"types": "./dist/styles/paper/NumberInput.svelte.d.ts",
|
|
410
|
-
"svelte": "./dist/styles/paper/NumberInput.svelte"
|
|
411
|
-
},
|
|
412
428
|
"./paper/slider": {
|
|
413
429
|
"types": "./dist/styles/paper/Slider.svelte.d.ts",
|
|
414
430
|
"svelte": "./dist/styles/paper/Slider.svelte"
|
|
@@ -429,6 +445,38 @@
|
|
|
429
445
|
"types": "./dist/styles/paper/InputGroup.svelte.d.ts",
|
|
430
446
|
"svelte": "./dist/styles/paper/InputGroup.svelte"
|
|
431
447
|
},
|
|
448
|
+
"./paper/input-addon": {
|
|
449
|
+
"types": "./dist/styles/paper/InputAddon.svelte.d.ts",
|
|
450
|
+
"svelte": "./dist/styles/paper/InputAddon.svelte"
|
|
451
|
+
},
|
|
452
|
+
"./paper/search-input": {
|
|
453
|
+
"types": "./dist/styles/paper/SearchInput.svelte.d.ts",
|
|
454
|
+
"svelte": "./dist/styles/paper/SearchInput.svelte"
|
|
455
|
+
},
|
|
456
|
+
"./paper/pin-input": {
|
|
457
|
+
"types": "./dist/styles/paper/PinInput.svelte.d.ts",
|
|
458
|
+
"svelte": "./dist/styles/paper/PinInput.svelte"
|
|
459
|
+
},
|
|
460
|
+
"./paper/tags-input": {
|
|
461
|
+
"types": "./dist/styles/paper/TagsInput.svelte.d.ts",
|
|
462
|
+
"svelte": "./dist/styles/paper/TagsInput.svelte"
|
|
463
|
+
},
|
|
464
|
+
"./paper/currency-input": {
|
|
465
|
+
"types": "./dist/styles/paper/CurrencyInput.svelte.d.ts",
|
|
466
|
+
"svelte": "./dist/styles/paper/CurrencyInput.svelte"
|
|
467
|
+
},
|
|
468
|
+
"./paper/time-input": {
|
|
469
|
+
"types": "./dist/styles/paper/TimeInput.svelte.d.ts",
|
|
470
|
+
"svelte": "./dist/styles/paper/TimeInput.svelte"
|
|
471
|
+
},
|
|
472
|
+
"./paper/color-input": {
|
|
473
|
+
"types": "./dist/styles/paper/ColorInput.svelte.d.ts",
|
|
474
|
+
"svelte": "./dist/styles/paper/ColorInput.svelte"
|
|
475
|
+
},
|
|
476
|
+
"./paper/file-input": {
|
|
477
|
+
"types": "./dist/styles/paper/FileInput.svelte.d.ts",
|
|
478
|
+
"svelte": "./dist/styles/paper/FileInput.svelte"
|
|
479
|
+
},
|
|
432
480
|
"./paper/combobox": {
|
|
433
481
|
"types": "./dist/styles/paper/Combobox.svelte.d.ts",
|
|
434
482
|
"svelte": "./dist/styles/paper/Combobox.svelte"
|
|
@@ -667,14 +715,6 @@
|
|
|
667
715
|
"types": "./dist/styles/sprout/Label.svelte.d.ts",
|
|
668
716
|
"svelte": "./dist/styles/sprout/Label.svelte"
|
|
669
717
|
},
|
|
670
|
-
"./sprout/password-input": {
|
|
671
|
-
"types": "./dist/styles/sprout/PasswordInput.svelte.d.ts",
|
|
672
|
-
"svelte": "./dist/styles/sprout/PasswordInput.svelte"
|
|
673
|
-
},
|
|
674
|
-
"./sprout/number-input": {
|
|
675
|
-
"types": "./dist/styles/sprout/NumberInput.svelte.d.ts",
|
|
676
|
-
"svelte": "./dist/styles/sprout/NumberInput.svelte"
|
|
677
|
-
},
|
|
678
718
|
"./sprout/slider": {
|
|
679
719
|
"types": "./dist/styles/sprout/Slider.svelte.d.ts",
|
|
680
720
|
"svelte": "./dist/styles/sprout/Slider.svelte"
|
|
@@ -695,6 +735,38 @@
|
|
|
695
735
|
"types": "./dist/styles/sprout/InputGroup.svelte.d.ts",
|
|
696
736
|
"svelte": "./dist/styles/sprout/InputGroup.svelte"
|
|
697
737
|
},
|
|
738
|
+
"./sprout/input-addon": {
|
|
739
|
+
"types": "./dist/styles/sprout/InputAddon.svelte.d.ts",
|
|
740
|
+
"svelte": "./dist/styles/sprout/InputAddon.svelte"
|
|
741
|
+
},
|
|
742
|
+
"./sprout/search-input": {
|
|
743
|
+
"types": "./dist/styles/sprout/SearchInput.svelte.d.ts",
|
|
744
|
+
"svelte": "./dist/styles/sprout/SearchInput.svelte"
|
|
745
|
+
},
|
|
746
|
+
"./sprout/pin-input": {
|
|
747
|
+
"types": "./dist/styles/sprout/PinInput.svelte.d.ts",
|
|
748
|
+
"svelte": "./dist/styles/sprout/PinInput.svelte"
|
|
749
|
+
},
|
|
750
|
+
"./sprout/tags-input": {
|
|
751
|
+
"types": "./dist/styles/sprout/TagsInput.svelte.d.ts",
|
|
752
|
+
"svelte": "./dist/styles/sprout/TagsInput.svelte"
|
|
753
|
+
},
|
|
754
|
+
"./sprout/currency-input": {
|
|
755
|
+
"types": "./dist/styles/sprout/CurrencyInput.svelte.d.ts",
|
|
756
|
+
"svelte": "./dist/styles/sprout/CurrencyInput.svelte"
|
|
757
|
+
},
|
|
758
|
+
"./sprout/time-input": {
|
|
759
|
+
"types": "./dist/styles/sprout/TimeInput.svelte.d.ts",
|
|
760
|
+
"svelte": "./dist/styles/sprout/TimeInput.svelte"
|
|
761
|
+
},
|
|
762
|
+
"./sprout/color-input": {
|
|
763
|
+
"types": "./dist/styles/sprout/ColorInput.svelte.d.ts",
|
|
764
|
+
"svelte": "./dist/styles/sprout/ColorInput.svelte"
|
|
765
|
+
},
|
|
766
|
+
"./sprout/file-input": {
|
|
767
|
+
"types": "./dist/styles/sprout/FileInput.svelte.d.ts",
|
|
768
|
+
"svelte": "./dist/styles/sprout/FileInput.svelte"
|
|
769
|
+
},
|
|
698
770
|
"./sprout/combobox": {
|
|
699
771
|
"types": "./dist/styles/sprout/Combobox.svelte.d.ts",
|
|
700
772
|
"svelte": "./dist/styles/sprout/Combobox.svelte"
|