@dvcol/neo-svelte 0.1.2 → 0.1.4
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/CHANGELOG.md +83 -0
- package/README.md +25 -26
- package/dist/buttons/NeoButton.svelte +140 -128
- package/dist/buttons/NeoButtonGroup.svelte +99 -108
- package/dist/buttons/neo-button-group.model.d.ts +18 -19
- package/dist/buttons/neo-button.model.d.ts +6 -10
- package/dist/cards/NeoCard.svelte +176 -73
- package/dist/cards/NeoCard.svelte.d.ts +1 -1
- package/dist/cards/neo-card.model.d.ts +29 -1
- package/dist/containers/NeoTransitionContainer.svelte +13 -2
- package/dist/containers/neo-transition-container.model.d.ts +9 -1
- package/dist/divider/NeoDivider.svelte +11 -11
- package/dist/icons/IconAccount.svelte +10 -2
- package/dist/icons/IconAdd.svelte +10 -2
- package/dist/icons/IconAlert.svelte +2 -2
- package/dist/icons/IconCalendar.svelte +23 -0
- package/dist/icons/IconCalendar.svelte.d.ts +26 -0
- package/dist/icons/IconCheckbox.svelte +87 -0
- package/dist/icons/IconCheckbox.svelte.d.ts +55 -0
- package/dist/icons/IconCircleLoading.svelte +2 -2
- package/dist/icons/IconClear.svelte +10 -2
- package/dist/icons/IconClose.svelte +2 -2
- package/dist/icons/IconConfirm.svelte +2 -2
- package/dist/icons/IconDownload.svelte +17 -0
- package/dist/icons/IconDownload.svelte.d.ts +26 -0
- package/dist/icons/IconEmpty.svelte +2 -2
- package/dist/icons/IconFileUpload.svelte +2 -2
- package/dist/icons/IconGithub.svelte +2 -2
- package/dist/icons/IconImage.svelte +2 -2
- package/dist/icons/IconMinus.svelte +2 -2
- package/dist/icons/IconMoon.svelte +2 -2
- package/dist/icons/IconPaint.svelte +19 -0
- package/dist/icons/{IconSunrise.svelte.d.ts → IconPaint.svelte.d.ts} +3 -3
- package/dist/icons/IconPencil.svelte +13 -0
- package/dist/icons/IconPencil.svelte.d.ts +26 -0
- package/dist/icons/IconRadio.svelte +14 -0
- package/dist/icons/IconRadio.svelte.d.ts +22 -0
- package/dist/icons/IconSave.svelte +1 -1
- package/dist/icons/IconSave.svelte.d.ts +3 -3
- package/dist/icons/IconSaveOff.svelte +1 -1
- package/dist/icons/IconSaveOff.svelte.d.ts +3 -3
- package/dist/icons/IconSearch.svelte +2 -2
- package/dist/icons/IconSun.svelte +3 -3
- package/dist/icons/{IconSunrise.svelte → IconSunFull.svelte} +5 -4
- package/dist/icons/IconSunFull.svelte.d.ts +26 -0
- package/dist/icons/IconVideo.svelte +2 -2
- package/dist/icons/IconWatch.svelte +2 -2
- package/dist/icons/IconWatchOff.svelte +2 -2
- package/dist/inputs/NeoCheckbox.svelte +316 -0
- package/dist/inputs/NeoCheckbox.svelte.d.ts +19 -0
- package/dist/inputs/NeoColorPicker.svelte +140 -0
- package/dist/inputs/NeoColorPicker.svelte.d.ts +19 -0
- package/dist/inputs/NeoDateTime.svelte +96 -0
- package/dist/inputs/NeoDateTime.svelte.d.ts +19 -0
- package/dist/inputs/NeoFilePicker.svelte +528 -0
- package/dist/inputs/NeoFilePicker.svelte.d.ts +19 -0
- package/dist/inputs/NeoFilePickerCard.svelte +314 -0
- package/dist/inputs/NeoFilePickerCard.svelte.d.ts +19 -0
- package/dist/inputs/NeoNumberStep.svelte +174 -0
- package/dist/inputs/NeoNumberStep.svelte.d.ts +19 -0
- package/dist/inputs/NeoPassword.svelte +86 -17
- package/dist/inputs/NeoPassword.svelte.d.ts +19 -16
- package/dist/inputs/NeoPin.svelte +589 -0
- package/dist/inputs/NeoPin.svelte.d.ts +19 -0
- package/dist/inputs/NeoRadio.svelte +254 -0
- package/dist/inputs/NeoRadio.svelte.d.ts +19 -0
- package/dist/inputs/NeoRange.svelte +518 -0
- package/dist/inputs/NeoRange.svelte.d.ts +18 -0
- package/dist/inputs/NeoSwitch.svelte +373 -0
- package/dist/inputs/NeoSwitch.svelte.d.ts +19 -0
- package/dist/inputs/NeoTextarea.svelte +335 -301
- package/dist/inputs/NeoTextarea.svelte.d.ts +5 -2
- package/dist/inputs/common/NeoAffix.svelte +166 -0
- package/dist/inputs/common/NeoAffix.svelte.d.ts +19 -0
- package/dist/inputs/common/NeoBaseInput.svelte +338 -0
- package/dist/inputs/common/NeoBaseInput.svelte.d.ts +30 -0
- package/dist/inputs/common/NeoInput.svelte +684 -0
- package/dist/inputs/{NeoInput.svelte.d.ts → common/NeoInput.svelte.d.ts} +2 -10
- package/dist/inputs/common/NeoInputValidation.svelte +45 -0
- package/dist/inputs/common/NeoInputValidation.svelte.d.ts +22 -0
- package/dist/inputs/common/NeoLabel.svelte +93 -0
- package/dist/inputs/common/NeoLabel.svelte.d.ts +19 -0
- package/dist/inputs/{NeoValidation.svelte → common/NeoValidation.svelte} +9 -16
- package/dist/inputs/common/NeoValidation.svelte.d.ts +22 -0
- package/dist/inputs/common/neo-affix.model.d.ts +32 -0
- package/dist/inputs/common/neo-input-validation.model.d.ts +20 -0
- package/dist/inputs/common/neo-input-validation.model.js +1 -0
- package/dist/inputs/{neo-input.model.d.ts → common/neo-input.model.d.ts} +148 -68
- package/dist/inputs/common/neo-label.model.d.ts +36 -0
- package/dist/inputs/common/neo-label.model.js +1 -0
- package/dist/inputs/common/neo-validation.model.d.ts +70 -0
- package/dist/inputs/common/neo-validation.model.js +1 -0
- package/dist/inputs/index.d.ts +2 -2
- package/dist/inputs/index.js +1 -1
- package/dist/inputs/neo-checkbox.model.d.ts +9 -0
- package/dist/inputs/neo-checkbox.model.js +1 -0
- package/dist/inputs/neo-color-picker.model.d.ts +17 -0
- package/dist/inputs/neo-color-picker.model.js +1 -0
- package/dist/inputs/neo-date-time.model.d.ts +8 -0
- package/dist/inputs/neo-date-time.model.js +1 -0
- package/dist/inputs/neo-file-picker.model.d.ts +138 -0
- package/dist/inputs/neo-file-picker.model.js +1 -0
- package/dist/inputs/neo-number-step.model.d.ts +24 -0
- package/dist/inputs/neo-number-step.model.js +1 -0
- package/dist/inputs/neo-password.model.d.ts +13 -0
- package/dist/inputs/neo-password.model.js +1 -0
- package/dist/inputs/neo-pin.model.d.ts +47 -0
- package/dist/inputs/neo-pin.model.js +1 -0
- package/dist/inputs/neo-radio.model.d.ts +3 -0
- package/dist/inputs/neo-radio.model.js +1 -0
- package/dist/inputs/neo-switch.model.d.ts +9 -0
- package/dist/inputs/neo-switch.model.js +1 -0
- package/dist/nav/NeoTab.svelte +29 -25
- package/dist/nav/NeoTabPanel.svelte +1 -1
- package/dist/nav/NeoTabs.svelte +51 -44
- package/dist/nav/NeoTabsCard.svelte +8 -10
- package/dist/nav/neo-tabs-context.svelte.d.ts +2 -11
- package/dist/nav/neo-tabs-context.svelte.js +1 -41
- package/dist/nav/neo-tabs.model.d.ts +6 -0
- package/dist/providers/NeoThemeProvider.svelte +417 -305
- package/dist/providers/NeoThemeSelector.svelte +10 -10
- package/dist/providers/neo-theme-provider-context.svelte.js +16 -15
- package/dist/providers/neo-theme-provider.model.d.ts +6 -6
- package/dist/providers/neo-theme-provider.model.js +17 -12
- package/dist/providers/neo-theme-selector.model.d.ts +2 -2
- package/dist/skeletons/NeoSkeletonMedia.svelte +4 -4
- package/dist/skeletons/NeoSkeletonText.svelte +12 -12
- package/dist/styles/common/colors.scss +85 -97
- package/dist/styles/common/filters.scss +17 -0
- package/dist/styles/common/shadows.scss +531 -293
- package/dist/styles/common/spacing.scss +7 -3
- package/dist/styles/common/typography.scss +1 -1
- package/dist/styles/common/utils.scss +1 -1
- package/dist/styles/common/z-index.scss +1 -1
- package/dist/styles/mixin.scss +80 -27
- package/dist/styles/reset.scss +8 -1
- package/dist/styles/theme.scss +39 -16
- package/dist/utils/html-element.utils.d.ts +3 -0
- package/dist/utils/regex.utils.d.ts +3 -0
- package/dist/utils/regex.utils.js +3 -0
- package/dist/utils/shadow.utils.d.ts +30 -3
- package/dist/utils/shadow.utils.js +41 -14
- package/dist/utils/transition.utils.d.ts +4 -0
- package/dist/utils/transition.utils.js +10 -1
- package/dist/utils/utils.svelte.d.ts +6 -0
- package/dist/utils/utils.svelte.js +13 -0
- package/package.json +13 -12
- package/dist/inputs/NeoInput.svelte +0 -750
- package/dist/inputs/NeoValidation.svelte.d.ts +0 -22
- package/dist/inputs/neo-validation.model.d.ts +0 -40
- /package/dist/inputs/{neo-validation.model.js → common/neo-affix.model.js} +0 -0
- /package/dist/inputs/{neo-input.model.js → common/neo-input.model.js} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script lang="ts" generics="T extends HTMLElement, V extends any">
|
|
2
|
+
import type { NeoInputValidationProps } from './neo-input-validation.model.js';
|
|
3
|
+
|
|
4
|
+
import NeoValidation from './NeoValidation.svelte';
|
|
5
|
+
|
|
6
|
+
/* eslint-disable prefer-const -- necessary for binding checked */
|
|
7
|
+
let {
|
|
8
|
+
// Snippets
|
|
9
|
+
children,
|
|
10
|
+
error,
|
|
11
|
+
|
|
12
|
+
// States
|
|
13
|
+
visible = $bindable(false),
|
|
14
|
+
validation,
|
|
15
|
+
validationMessage,
|
|
16
|
+
|
|
17
|
+
message,
|
|
18
|
+
valid,
|
|
19
|
+
|
|
20
|
+
// Other props
|
|
21
|
+
messageProps,
|
|
22
|
+
messageId = $bindable(messageProps?.id ?? `neo-validation-message-${crypto.randomUUID()}`),
|
|
23
|
+
...rest
|
|
24
|
+
}: NeoInputValidationProps<T, V> = $props();
|
|
25
|
+
/* eslint-enable prefer-const */
|
|
26
|
+
|
|
27
|
+
const errorMessage = $derived.by(() => {
|
|
28
|
+
if (valid !== false) return;
|
|
29
|
+
if (error) return error;
|
|
30
|
+
if (!validation) return;
|
|
31
|
+
return validationMessage;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const showMessage = $derived(message || errorMessage || error || validation);
|
|
35
|
+
|
|
36
|
+
$effect(() => {
|
|
37
|
+
visible = !!showMessage;
|
|
38
|
+
});
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
{#if showMessage}
|
|
42
|
+
<NeoValidation bind:messageId error={errorMessage} {message} {messageProps} {children} {...rest} />
|
|
43
|
+
{:else}
|
|
44
|
+
{@render children?.({ messageId, message, error })}
|
|
45
|
+
{/if}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NeoInputValidationProps } from './neo-input-validation.model.js';
|
|
2
|
+
declare class __sveltets_Render<T extends HTMLElement, V extends any> {
|
|
3
|
+
props(): NeoInputValidationProps<T, V>;
|
|
4
|
+
events(): {} & {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots(): {};
|
|
8
|
+
bindings(): "messageId" | "visible";
|
|
9
|
+
exports(): {};
|
|
10
|
+
}
|
|
11
|
+
interface $$IsomorphicComponent {
|
|
12
|
+
new <T extends HTMLElement, V extends any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, V>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, V>['props']>, ReturnType<__sveltets_Render<T, V>['events']>, ReturnType<__sveltets_Render<T, V>['slots']>> & {
|
|
13
|
+
$$bindings?: ReturnType<__sveltets_Render<T, V>['bindings']>;
|
|
14
|
+
} & ReturnType<__sveltets_Render<T, V>['exports']>;
|
|
15
|
+
<T extends HTMLElement, V extends any>(internal: unknown, props: ReturnType<__sveltets_Render<T, V>['props']> & {
|
|
16
|
+
$$events?: ReturnType<__sveltets_Render<T, V>['events']>;
|
|
17
|
+
}): ReturnType<__sveltets_Render<T, V>['exports']>;
|
|
18
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
19
|
+
}
|
|
20
|
+
declare const NeoInputValidation: $$IsomorphicComponent;
|
|
21
|
+
type NeoInputValidation<T extends HTMLElement, V extends any> = InstanceType<typeof NeoInputValidation<T, V>>;
|
|
22
|
+
export default NeoInputValidation;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/* eslint-disable prefer-const -- necessary for binding checked */
|
|
3
|
+
import type { NeoLabelProps } from './neo-label.model.js';
|
|
4
|
+
|
|
5
|
+
import { toAction, toActionProps } from '../../utils/action.utils.js';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
// Snippets
|
|
9
|
+
children,
|
|
10
|
+
label,
|
|
11
|
+
|
|
12
|
+
// States
|
|
13
|
+
ref = $bindable(),
|
|
14
|
+
valid,
|
|
15
|
+
required,
|
|
16
|
+
disabled,
|
|
17
|
+
|
|
18
|
+
// Actions
|
|
19
|
+
use,
|
|
20
|
+
|
|
21
|
+
// Other props
|
|
22
|
+
containerTag = 'div',
|
|
23
|
+
containerProps,
|
|
24
|
+
...rest
|
|
25
|
+
}: NeoLabelProps = $props();
|
|
26
|
+
/* eslint-enable prefer-const */
|
|
27
|
+
|
|
28
|
+
const useFn = $derived(toAction(use));
|
|
29
|
+
const useProps = $derived(toActionProps(use));
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<svelte:element this={containerTag} class:neo-label-container={true} {...containerProps}>
|
|
33
|
+
<label
|
|
34
|
+
bind:this={ref}
|
|
35
|
+
class:neo-label={true}
|
|
36
|
+
class:neo-disabled={disabled}
|
|
37
|
+
class:neo-valid={valid === true}
|
|
38
|
+
class:neo-invalid={valid === false}
|
|
39
|
+
class:neo-required={required}
|
|
40
|
+
use:useFn={useProps}
|
|
41
|
+
{...rest}
|
|
42
|
+
>
|
|
43
|
+
{#if typeof label === 'string'}
|
|
44
|
+
{label}
|
|
45
|
+
{:else}
|
|
46
|
+
{@render label?.()}
|
|
47
|
+
{/if}
|
|
48
|
+
</label>
|
|
49
|
+
{@render children?.()}
|
|
50
|
+
</svelte:element>
|
|
51
|
+
|
|
52
|
+
<style>.neo-label-container {
|
|
53
|
+
display: inline-flex;
|
|
54
|
+
flex: 1 1 auto;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
}
|
|
57
|
+
.neo-label-container .neo-label {
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
box-sizing: border-box;
|
|
61
|
+
max-width: var(--neo-label-max-width);
|
|
62
|
+
margin: var(--neo-label-margin, var(--neo-shadow-margin, 0.625rem) var(--neo-shadow-margin, 0.625rem) 0);
|
|
63
|
+
padding: var(--neo-label-padding, 0 0.75rem);
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
color: var(--neo-label-color, inherit);
|
|
66
|
+
text-wrap: stable;
|
|
67
|
+
text-overflow: ellipsis;
|
|
68
|
+
cursor: inherit;
|
|
69
|
+
}
|
|
70
|
+
.neo-label-container .neo-label.neo-required::after {
|
|
71
|
+
margin-left: 0.1rem;
|
|
72
|
+
color: var(--neo-label-required-color, var(--neo-color-error-75));
|
|
73
|
+
font-size: var(--neo-label-font-size, var(--neo-font-size, inherit));
|
|
74
|
+
content: "*";
|
|
75
|
+
}
|
|
76
|
+
.neo-label-container .neo-label.neo-invalid {
|
|
77
|
+
color: var(--neo-label-color-error, var(--neo-color-error));
|
|
78
|
+
}
|
|
79
|
+
.neo-label-container .neo-label.neo-valid {
|
|
80
|
+
color: var(--neo-label-color-success, var(--neo-color-success));
|
|
81
|
+
}
|
|
82
|
+
.neo-label-container .neo-label.neo-disabled {
|
|
83
|
+
color: var(--neo-label-disabled-color, var(--neo-color-disabled));
|
|
84
|
+
}
|
|
85
|
+
.neo-label-container .neo-label.neo-disabled.neo-invalid {
|
|
86
|
+
color: var(--neo-input-color-error-disabled, var(--neo-color-error-50));
|
|
87
|
+
}
|
|
88
|
+
.neo-label-container .neo-label.neo-disabled.neo-valid {
|
|
89
|
+
color: var(--neo-label-color-success-disabled, var(--neo-color-success-50));
|
|
90
|
+
}
|
|
91
|
+
.neo-label-container .neo-label.neo-disabled::after {
|
|
92
|
+
color: var(--neo-label-disabled-color, var(--neo-color-error-50));
|
|
93
|
+
}</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NeoLabelProps } from './neo-label.model.js';
|
|
2
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
+
$$bindings?: Bindings;
|
|
5
|
+
} & Exports;
|
|
6
|
+
(internal: unknown, props: Props & {
|
|
7
|
+
$$events?: Events;
|
|
8
|
+
$$slots?: Slots;
|
|
9
|
+
}): Exports & {
|
|
10
|
+
$set?: any;
|
|
11
|
+
$on?: any;
|
|
12
|
+
};
|
|
13
|
+
z_$$bindings?: Bindings;
|
|
14
|
+
}
|
|
15
|
+
declare const NeoLabel: $$__sveltets_2_IsomorphicComponent<NeoLabelProps, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {}, "ref">;
|
|
18
|
+
type NeoLabel = InstanceType<typeof NeoLabel>;
|
|
19
|
+
export default NeoLabel;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends HTMLElement">
|
|
1
|
+
<script lang="ts" generics="T extends HTMLElement, V extends any">
|
|
2
2
|
import { fade } from 'svelte/transition';
|
|
3
3
|
|
|
4
4
|
import type { NeoValidationContext, NeoValidationProps } from './neo-validation.model.js';
|
|
5
5
|
|
|
6
|
-
import { toTransition, toTransitionProps } from '
|
|
7
|
-
import { enterDefaultTransition, leaveDefaultTransition } from '
|
|
6
|
+
import { toTransition, toTransitionProps } from '../../utils/action.utils.js';
|
|
7
|
+
import { enterDefaultTransition, leaveDefaultTransition } from '../../utils/transition.utils.js';
|
|
8
8
|
|
|
9
9
|
/* eslint-disable prefer-const -- necessary for binding checked */
|
|
10
10
|
let {
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
// Other props
|
|
26
26
|
messageProps,
|
|
27
27
|
messageTag = 'div',
|
|
28
|
-
messageId = messageProps?.id ?? `neo-validation-message-${crypto.randomUUID()}
|
|
28
|
+
messageId = $bindable(messageProps?.id ?? `neo-validation-message-${crypto.randomUUID()}`),
|
|
29
29
|
...rest
|
|
30
|
-
}: NeoValidationProps<T> = $props();
|
|
30
|
+
}: NeoValidationProps<T, V> = $props();
|
|
31
31
|
/* eslint-enable prefer-const */
|
|
32
32
|
|
|
33
|
-
const innerContext = $derived<NeoValidationContext<T>>({
|
|
33
|
+
const innerContext = $derived<NeoValidationContext<T, V>>({
|
|
34
34
|
messageId,
|
|
35
35
|
message,
|
|
36
36
|
error,
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
<svelte:element this={tag} class:neo-validation-group-wrapper={true} out:outFn={outProps} in:inFn={inProps} {...rest}>
|
|
46
46
|
{@render children?.(innerContext)}
|
|
47
|
-
<div class="neo-validation-message"
|
|
47
|
+
<div class="neo-validation-message">
|
|
48
48
|
{#if error}
|
|
49
49
|
<svelte:element
|
|
50
50
|
this={messageTag}
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
}
|
|
86
86
|
.neo-validation-group-wrapper .neo-validation-message {
|
|
87
87
|
min-height: var(--neo-line-height-sm, 1.25rem);
|
|
88
|
-
margin: 0.25rem var(--neo-shadow-margin, 0.
|
|
88
|
+
margin: var(--neo-validation-margin, 0.25rem var(--neo-shadow-margin, 0.625rem) var(--neo-shadow-margin, 0.625rem));
|
|
89
89
|
font-size: var(--neo-font-size-sm, 0.875rem);
|
|
90
90
|
line-height: var(--neo-line-height-xs, 1rem);
|
|
91
91
|
transition: color 0.3s ease, padding 0.3s ease, margin 0.3s ease;
|
|
@@ -95,12 +95,5 @@
|
|
|
95
95
|
}
|
|
96
96
|
.neo-validation-group-wrapper .neo-validation-message .neo-validation-error,
|
|
97
97
|
.neo-validation-group-wrapper .neo-validation-message .neo-validation-description {
|
|
98
|
-
padding: 0 0.75rem;
|
|
99
|
-
}
|
|
100
|
-
.neo-validation-group-wrapper .neo-validation-message.rounded {
|
|
101
|
-
margin: 0.25rem var(--neo-shadow-margin-lg, 1.125rem) var(--neo-shadow-margin-lg, 1.125rem);
|
|
102
|
-
}
|
|
103
|
-
.neo-validation-group-wrapper .neo-validation-message.rounded .neo-validation-error,
|
|
104
|
-
.neo-validation-group-wrapper .neo-validation-message.rounded .neo-validation-description {
|
|
105
|
-
padding: 0 1rem;
|
|
98
|
+
padding: var(--neo-validation-padding, 0 0.75rem);
|
|
106
99
|
}</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { NeoValidationProps } from './neo-validation.model.js';
|
|
2
|
+
declare class __sveltets_Render<T extends HTMLElement, V extends any> {
|
|
3
|
+
props(): NeoValidationProps<T, V>;
|
|
4
|
+
events(): {} & {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots(): {};
|
|
8
|
+
bindings(): "messageId";
|
|
9
|
+
exports(): {};
|
|
10
|
+
}
|
|
11
|
+
interface $$IsomorphicComponent {
|
|
12
|
+
new <T extends HTMLElement, V extends any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, V>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, V>['props']>, ReturnType<__sveltets_Render<T, V>['events']>, ReturnType<__sveltets_Render<T, V>['slots']>> & {
|
|
13
|
+
$$bindings?: ReturnType<__sveltets_Render<T, V>['bindings']>;
|
|
14
|
+
} & ReturnType<__sveltets_Render<T, V>['exports']>;
|
|
15
|
+
<T extends HTMLElement, V extends any>(internal: unknown, props: ReturnType<__sveltets_Render<T, V>['props']> & {
|
|
16
|
+
$$events?: ReturnType<__sveltets_Render<T, V>['events']>;
|
|
17
|
+
}): ReturnType<__sveltets_Render<T, V>['exports']>;
|
|
18
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
19
|
+
}
|
|
20
|
+
declare const NeoValidation: $$IsomorphicComponent;
|
|
21
|
+
type NeoValidation<T extends HTMLElement, V extends any> = InstanceType<typeof NeoValidation<T, V>>;
|
|
22
|
+
export default NeoValidation;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
2
|
+
import type { HTMLNeoBaseElement, HTMLRefProps } from '../../utils/html-element.utils.js';
|
|
3
|
+
export type NeoAffixProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Display loading indicator
|
|
6
|
+
*/
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Display a close button if not loading
|
|
10
|
+
*/
|
|
11
|
+
close?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Display validation state if not loading or closable
|
|
14
|
+
*/
|
|
15
|
+
valid?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Display a skeleton state
|
|
18
|
+
*/
|
|
19
|
+
skeleton?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Display a disabled state
|
|
22
|
+
*/
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The size of the inner svg
|
|
26
|
+
*/
|
|
27
|
+
size?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Props for the close button
|
|
30
|
+
*/
|
|
31
|
+
closeProps?: HTMLButtonAttributes;
|
|
32
|
+
} & HTMLNeoBaseElement<HTMLSpanElement> & HTMLRefProps<HTMLSpanElement>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NeoValidationFieldContext, NeoValidationProps, NeoValidationValue } from './neo-validation.model.js';
|
|
2
|
+
export type NeoInputValidationProps<T extends HTMLElement = HTMLElement, V extends NeoValidationValue = NeoValidationValue, C extends NeoValidationFieldContext<T, V> = NeoValidationFieldContext<T, V>> = NeoValidationProps<T, V, C> & {
|
|
3
|
+
/**
|
|
4
|
+
* `true` if the input passes validation.
|
|
5
|
+
*/
|
|
6
|
+
valid?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* `true` if the any message is displayed
|
|
9
|
+
*/
|
|
10
|
+
visible?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* `true` to display the validation message.
|
|
13
|
+
*/
|
|
14
|
+
validation?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Optional validation message.
|
|
17
|
+
* Note: This will be overridden by the error message if it is set.
|
|
18
|
+
*/
|
|
19
|
+
validationMessage?: string;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,44 +1,17 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { HTMLInputAttributes, HTMLTextareaAttributes } from 'svelte/elements';
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* `true` if the input content has been modified and defers from the initial state.
|
|
13
|
-
* If `dirtyOnChange` is `true`, the input will always be considered dirty once it has been modified.
|
|
14
|
-
*
|
|
15
|
-
* @see dirtyOnChange
|
|
16
|
-
*/
|
|
17
|
-
dirty?: boolean;
|
|
18
|
-
/**
|
|
19
|
-
* `true` if the input passes validation.
|
|
20
|
-
*/
|
|
21
|
-
valid?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* The input/textarea value.
|
|
24
|
-
*/
|
|
25
|
-
value?: string;
|
|
26
|
-
};
|
|
27
|
-
export type NeoInputMethods<T extends HTMLElement> = HTMLRefProps<T> & {
|
|
28
|
-
/**
|
|
29
|
-
* Change the input state. If no value is provided, the state attributes will be unchanged.
|
|
30
|
-
* @param state
|
|
31
|
-
*/
|
|
32
|
-
mark: (state: NeoInputState) => unknown;
|
|
33
|
-
/**
|
|
34
|
-
* Clear the input. If a state is provided, the input state will be updated accordingly.
|
|
35
|
-
* If a partial state is provided, the input state will be reinitialized and the provided state will be merged.
|
|
36
|
-
* @param state
|
|
37
|
-
*/
|
|
38
|
-
clear: (state?: NeoInputState) => unknown;
|
|
3
|
+
import type { NeoLabelProps } from './neo-label.model.js';
|
|
4
|
+
import type { NeoValidationFieldContext, NeoValidationState } from './neo-validation.model.js';
|
|
5
|
+
import type { HTMLTransitionProps, HTMLUseProps } from '../../utils/action.utils.js';
|
|
6
|
+
import type { HTMLNeoBaseElement, HTMLRefProps, SvelteEvent } from '../../utils/html-element.utils.js';
|
|
7
|
+
import type { ShadowElevation } from '../../utils/shadow.utils.js';
|
|
8
|
+
export type NeoInputValue<T extends HTMLInputElement | HTMLTextAreaElement> = T extends HTMLTextAreaElement ? HTMLTextareaAttributes['value'] : HTMLInputAttributes['value'] | HTMLInputAttributes['checked'] | HTMLInputAttributes['bind:files'];
|
|
9
|
+
type NeoInputHTMLAttributes<T extends HTMLInputElement | HTMLTextAreaElement> = T extends HTMLTextAreaElement ? HTMLTextareaAttributes : HTMLInputAttributes & {
|
|
10
|
+
files?: HTMLInputAttributes['bind:files'];
|
|
11
|
+
group?: HTMLInputAttributes['bind:group'];
|
|
39
12
|
};
|
|
40
|
-
export type
|
|
41
|
-
export type
|
|
13
|
+
export type NeoInputState<T extends HTMLInputElement | HTMLTextAreaElement> = NeoValidationState<NeoInputValue<T>>;
|
|
14
|
+
export type NeoInputStyles = {
|
|
42
15
|
/**
|
|
43
16
|
* Input elevation.
|
|
44
17
|
* @default 3
|
|
@@ -49,6 +22,10 @@ export type NeoInputContext<T extends HTMLElement = HTMLElement> = NeoInputState
|
|
|
49
22
|
* @default 0
|
|
50
23
|
*/
|
|
51
24
|
hover?: number;
|
|
25
|
+
/**
|
|
26
|
+
* If true, negative elevation (< 0) will be displayed as pressed instead of inset.
|
|
27
|
+
*/
|
|
28
|
+
pressed?: boolean;
|
|
52
29
|
/**
|
|
53
30
|
* By default, inputs with no elevation will display a border.
|
|
54
31
|
* If this is `true`, the input will never display a border.
|
|
@@ -80,6 +57,38 @@ export type NeoInputContext<T extends HTMLElement = HTMLElement> = NeoInputState
|
|
|
80
57
|
*/
|
|
81
58
|
readonly?: boolean;
|
|
82
59
|
};
|
|
60
|
+
export type NeoInputMethods<T extends HTMLInputElement | HTMLTextAreaElement> = {
|
|
61
|
+
/**
|
|
62
|
+
* Change the input state. If no value is provided, the state attributes will be unchanged.
|
|
63
|
+
* @param state
|
|
64
|
+
*/
|
|
65
|
+
mark: (state: NeoInputState<T>) => unknown;
|
|
66
|
+
/**
|
|
67
|
+
* Clear the input. If a state is provided, the input state will be updated accordingly.
|
|
68
|
+
* If a partial state is provided, the input state will be reinitialized and the provided state will be merged.
|
|
69
|
+
*
|
|
70
|
+
* Note: Clearing the input will trigger `onclear` and `oninput` events, but not `onchange`.
|
|
71
|
+
* @param state
|
|
72
|
+
* @param event
|
|
73
|
+
*/
|
|
74
|
+
clear: (state?: NeoInputState<T>, event?: InputEvent | SvelteEvent<InputEvent>) => Promise<unknown>;
|
|
75
|
+
/**
|
|
76
|
+
* Change the input value.
|
|
77
|
+
* @param value
|
|
78
|
+
* @param event
|
|
79
|
+
*/
|
|
80
|
+
change: (value: NeoInputValue<T>, event?: InputEvent | SvelteEvent<InputEvent>) => NeoInputState<T>;
|
|
81
|
+
/**
|
|
82
|
+
* Check the input validity.
|
|
83
|
+
* @param update whether to check the input dirty and/or valid state.
|
|
84
|
+
*/
|
|
85
|
+
validate: (update?: {
|
|
86
|
+
dirty?: boolean;
|
|
87
|
+
valid?: boolean;
|
|
88
|
+
}) => NeoInputState<T>;
|
|
89
|
+
};
|
|
90
|
+
export type NeoInputElevation = ShadowElevation;
|
|
91
|
+
export type NeoInputContext<T extends HTMLInputElement | HTMLTextAreaElement> = NeoValidationFieldContext<T, NeoInputValue<T>> & Partial<NeoInputStyles & NeoInputMethods<T>>;
|
|
83
92
|
export declare const NeoInputLabelPosition: {
|
|
84
93
|
readonly Inside: "inside";
|
|
85
94
|
readonly Top: "top";
|
|
@@ -87,41 +96,104 @@ export declare const NeoInputLabelPosition: {
|
|
|
87
96
|
readonly Right: "right";
|
|
88
97
|
};
|
|
89
98
|
export type NeoInputLabelPositions = (typeof NeoInputLabelPosition)[keyof typeof NeoInputLabelPosition];
|
|
90
|
-
export type
|
|
99
|
+
export type NeoBaseInputProps<T extends HTMLInputElement | HTMLTextAreaElement = NeoInputHTMLElement> = {
|
|
91
100
|
/**
|
|
92
|
-
*
|
|
101
|
+
* If `true`, the input will have no left padding/border radius.
|
|
93
102
|
*/
|
|
94
|
-
|
|
103
|
+
after?: boolean;
|
|
95
104
|
/**
|
|
96
|
-
*
|
|
105
|
+
* If `true`, the input will have no right padding/border radius.
|
|
97
106
|
*/
|
|
98
|
-
|
|
107
|
+
before?: boolean;
|
|
99
108
|
/**
|
|
100
|
-
*
|
|
109
|
+
* If the input is currently focused.
|
|
101
110
|
*/
|
|
102
|
-
|
|
111
|
+
focused?: boolean;
|
|
103
112
|
/**
|
|
104
|
-
*
|
|
113
|
+
* If false, and a default value is provided, the input will be set to the default value when cleared.
|
|
114
|
+
*
|
|
115
|
+
* Note: This does not apply to checkboxes, radios, and file inputs.
|
|
116
|
+
*
|
|
117
|
+
* @default true
|
|
118
|
+
*/
|
|
119
|
+
nullable?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Fall back value when the input value is cleared.
|
|
122
|
+
*/
|
|
123
|
+
defaultValue?: HTMLInputAttributes['value'];
|
|
124
|
+
/**
|
|
125
|
+
* Fall back checked state when the input value is cleared.
|
|
105
126
|
*/
|
|
106
|
-
|
|
127
|
+
defaultChecked?: HTMLInputAttributes['checked'];
|
|
107
128
|
/**
|
|
108
129
|
* If `true`, the input dirty state will update on input events.
|
|
109
130
|
* If `false`, the input dirty state will only update on change events.
|
|
110
131
|
* @default false
|
|
111
132
|
*/
|
|
112
133
|
dirtyOnInput?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* If `true`, the input dirty state will update on blur events.
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
dirtyOnBlur?: boolean;
|
|
113
139
|
/**
|
|
114
140
|
* If `true`, the input will check for validity on input events.
|
|
115
141
|
* If `false`, the input will only check for validity on change events.
|
|
116
142
|
* @default false
|
|
117
143
|
*/
|
|
118
144
|
validateOnInput?: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* If `true`, the input will check for validity on blur events.
|
|
147
|
+
* @default false
|
|
148
|
+
*/
|
|
149
|
+
validateOnBlur?: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Reflect the input validation message.
|
|
152
|
+
*/
|
|
153
|
+
validationMessage?: T['validationMessage'];
|
|
154
|
+
/**
|
|
155
|
+
* Callback when the input state is manually changed.
|
|
156
|
+
* @param state
|
|
157
|
+
*/
|
|
158
|
+
onmark?: (state: NeoInputState<T>) => unknown;
|
|
159
|
+
/**
|
|
160
|
+
* Callback when the input is cleared.
|
|
161
|
+
* @param state
|
|
162
|
+
* @param event
|
|
163
|
+
*/
|
|
164
|
+
onclear?: (state: NeoInputState<T>, event?: InputEvent) => unknown;
|
|
165
|
+
} & HTMLUseProps & HTMLRefProps<T> & NeoInputState<T> & NeoInputHTMLAttributes<T>;
|
|
166
|
+
export type NeoInputGroupProps<T extends HTMLInputElement | HTMLTextAreaElement> = {
|
|
167
|
+
/**
|
|
168
|
+
* A snippet or a string to display as the input label.
|
|
169
|
+
*/
|
|
170
|
+
label?: Snippet<[NeoInputContext<T>]> | string;
|
|
171
|
+
/**
|
|
172
|
+
* A snippet or a string to display as the input info message.
|
|
173
|
+
*/
|
|
174
|
+
message?: Snippet<[NeoInputContext<T>]> | string;
|
|
175
|
+
/**
|
|
176
|
+
* A snippet or a string to display as the input error message.
|
|
177
|
+
*/
|
|
178
|
+
error?: Snippet<[NeoInputContext<T>]> | string;
|
|
179
|
+
/**
|
|
180
|
+
* A snippet to display as the input suffix.
|
|
181
|
+
*/
|
|
182
|
+
after?: Snippet<[NeoInputContext<T>]>;
|
|
183
|
+
/**
|
|
184
|
+
* Element(s) to render inside the input-group (after the input).
|
|
185
|
+
*/
|
|
186
|
+
children?: Snippet<[NeoInputContext<T>]>;
|
|
119
187
|
/**
|
|
120
188
|
* Display a loading spinner inside the input.
|
|
121
189
|
* If defined, some space will be reserved for the spinner.
|
|
122
190
|
* Set to `undefined` when not loading to regain the space.
|
|
123
191
|
*/
|
|
124
192
|
loading?: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* If the input is currently hovered.
|
|
195
|
+
*/
|
|
196
|
+
hovered?: boolean;
|
|
125
197
|
/**
|
|
126
198
|
* Display a clear button to reset the input value.
|
|
127
199
|
* If used in combination with `loading`, the clear button will be hidden while loading.
|
|
@@ -146,16 +218,6 @@ export type NeoCommonInputProps<T extends HTMLElement> = {
|
|
|
146
218
|
* @default 'inside'
|
|
147
219
|
*/
|
|
148
220
|
position?: NeoInputLabelPositions;
|
|
149
|
-
/**
|
|
150
|
-
* Callback when the input state is manually changed.
|
|
151
|
-
* @param state
|
|
152
|
-
*/
|
|
153
|
-
onmark?: (state: NeoInputState) => unknown;
|
|
154
|
-
/**
|
|
155
|
-
* Callback when the input is cleared.
|
|
156
|
-
* @param state
|
|
157
|
-
*/
|
|
158
|
-
onclear?: (state: NeoInputState) => unknown;
|
|
159
221
|
/**
|
|
160
222
|
* The HTML tag to use for the wrapper component (when message or error are shown).
|
|
161
223
|
*/
|
|
@@ -181,35 +243,46 @@ export type NeoCommonInputProps<T extends HTMLElement> = {
|
|
|
181
243
|
* The props to pass to the message and error components.
|
|
182
244
|
*/
|
|
183
245
|
messageProps?: HTMLNeoBaseElement;
|
|
184
|
-
|
|
246
|
+
afterTag?: keyof HTMLElementTagNameMap;
|
|
185
247
|
/**
|
|
186
248
|
* The props to pass to the suffix.
|
|
187
249
|
*/
|
|
188
|
-
|
|
250
|
+
afterProps?: HTMLNeoBaseElement;
|
|
251
|
+
/**
|
|
252
|
+
* The ref to bind to the suffix.
|
|
253
|
+
*/
|
|
254
|
+
afterRef?: HTMLElement;
|
|
189
255
|
/**
|
|
190
256
|
* The props to pass to the label.
|
|
191
257
|
*/
|
|
192
|
-
labelProps?:
|
|
258
|
+
labelProps?: NeoLabelProps;
|
|
193
259
|
/**
|
|
194
260
|
* The ref to bind to the label.
|
|
195
261
|
*/
|
|
196
262
|
labelRef?: HTMLLabelElement;
|
|
197
|
-
} &
|
|
198
|
-
export type NeoInputProps<T extends HTMLInputElement =
|
|
263
|
+
} & Omit<NeoBaseInputProps<T>, 'after' | 'before'> & NeoInputStyles & HTMLTransitionProps;
|
|
264
|
+
export type NeoInputProps<T extends HTMLInputElement = NeoInputHTMLElement> = {
|
|
199
265
|
/**
|
|
200
266
|
* A snippet to display as the input prefix.
|
|
201
267
|
*/
|
|
202
|
-
|
|
268
|
+
before?: Snippet<[NeoInputContext<T>]>;
|
|
203
269
|
/**
|
|
204
270
|
* The HTML tag to use for the prefix.
|
|
205
271
|
* @default div
|
|
206
272
|
*/
|
|
207
|
-
|
|
273
|
+
beforeTag?: keyof HTMLElementTagNameMap;
|
|
208
274
|
/**
|
|
209
275
|
* The props to pass to the prefix.
|
|
210
276
|
*/
|
|
211
|
-
|
|
212
|
-
|
|
277
|
+
beforeProps?: HTMLNeoBaseElement;
|
|
278
|
+
/**
|
|
279
|
+
* The ref to bind to the prefix.
|
|
280
|
+
*/
|
|
281
|
+
beforeRef?: HTMLElement;
|
|
282
|
+
} & NeoInputGroupProps<T> & HTMLInputAttributes & {
|
|
283
|
+
files?: HTMLInputAttributes['bind:files'];
|
|
284
|
+
group?: HTMLInputAttributes['bind:group'];
|
|
285
|
+
};
|
|
213
286
|
export type NeoTextAreaResize = {
|
|
214
287
|
/**
|
|
215
288
|
* The minimum number of rows the textarea can have.
|
|
@@ -221,7 +294,11 @@ export type NeoTextAreaResize = {
|
|
|
221
294
|
*/
|
|
222
295
|
max?: number;
|
|
223
296
|
};
|
|
224
|
-
export type NeoTextareaProps<T extends HTMLTextAreaElement =
|
|
297
|
+
export type NeoTextareaProps<T extends HTMLTextAreaElement = NeoTextareaHTMLElement> = {
|
|
298
|
+
/**
|
|
299
|
+
* Fall back value when the textarea value is cleared.
|
|
300
|
+
*/
|
|
301
|
+
defaultValue: HTMLTextareaAttributes['value'];
|
|
225
302
|
/**
|
|
226
303
|
* Automatically increments/decrements the textarea rows to fit the content.
|
|
227
304
|
*
|
|
@@ -231,4 +308,7 @@ export type NeoTextareaProps<T extends HTMLTextAreaElement = HTMLTextAreaElement
|
|
|
231
308
|
* @default true
|
|
232
309
|
*/
|
|
233
310
|
autoResize?: boolean | NeoTextAreaResize;
|
|
234
|
-
} &
|
|
311
|
+
} & NeoInputGroupProps<T> & HTMLTextareaAttributes;
|
|
312
|
+
export type NeoInputHTMLElement<T extends HTMLInputElement = HTMLInputElement> = T & Partial<NeoInputMethods<T>>;
|
|
313
|
+
export type NeoTextareaHTMLElement<T extends HTMLTextAreaElement = HTMLTextAreaElement> = T & Partial<NeoInputMethods<T>>;
|
|
314
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLLabelAttributes } from 'svelte/elements';
|
|
3
|
+
import type { HTMLUseProps } from '../../utils/action.utils.js';
|
|
4
|
+
import type { HTMLNeoBaseElement, HTMLRefProps } from '../../utils/html-element.utils.js';
|
|
5
|
+
export type NeoLabelProps = {
|
|
6
|
+
/**
|
|
7
|
+
* The element(s) to wrap with the label.
|
|
8
|
+
*/
|
|
9
|
+
children?: Snippet;
|
|
10
|
+
/**
|
|
11
|
+
* A snippet or a string to display as the label.
|
|
12
|
+
*/
|
|
13
|
+
label?: Snippet | string;
|
|
14
|
+
/**
|
|
15
|
+
* If `true` or `false`, the label will be displayed as valid or invalid.
|
|
16
|
+
* If any other value (undefined, null, etc.), the label will be displayed as normal.
|
|
17
|
+
*/
|
|
18
|
+
valid?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* If `true`, the label will be displayed a required asterisk.
|
|
21
|
+
*/
|
|
22
|
+
required?: boolean | null;
|
|
23
|
+
/**
|
|
24
|
+
* If `true`, the label will be displayed as disabled.
|
|
25
|
+
*/
|
|
26
|
+
disabled?: boolean | null;
|
|
27
|
+
/**
|
|
28
|
+
* The HTML tag to use for the container.
|
|
29
|
+
* @default div
|
|
30
|
+
*/
|
|
31
|
+
containerTag?: keyof HTMLElementTagNameMap;
|
|
32
|
+
/**
|
|
33
|
+
* The props to pass to the label container.
|
|
34
|
+
*/
|
|
35
|
+
containerProps?: HTMLNeoBaseElement;
|
|
36
|
+
} & HTMLRefProps<HTMLLabelElement> & HTMLLabelAttributes & HTMLUseProps;
|