@flightlesslabs/dodo-ui 0.6.5 → 0.7.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/dist/index.d.ts +32 -9
- package/dist/index.js +12 -2
- package/dist/stories/Home.mdx +4 -6
- package/dist/stories/components/Form/Button/Button.stories.svelte +16 -37
- package/dist/stories/components/Form/Button/Button.svelte +45 -47
- package/dist/stories/components/Form/Button/Button.svelte.d.ts +16 -12
- package/dist/stories/components/Form/Button/Color/Color.stories.svelte +23 -48
- package/dist/stories/components/Form/Button/Events/Events.stories.svelte +1 -7
- package/dist/stories/components/Form/Button/IconButton/IconButton.stories.svelte +4 -12
- package/dist/stories/components/Form/Button/Roundness/Roundness.stories.svelte +5 -31
- package/dist/stories/components/Form/Button/Size/Size.stories.svelte +3 -9
- package/dist/stories/components/Form/Button/Variant/Variant.stories.svelte +5 -8
- package/dist/stories/components/Form/FormControl/FormControl.stories.svelte +11 -12
- package/dist/stories/components/Form/FormControl/FormControl.svelte +6 -8
- package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +1 -1
- package/dist/stories/components/Form/Label/Label.stories.svelte +1 -11
- package/dist/stories/components/Form/Label/Label.svelte +6 -5
- package/dist/stories/components/Form/Label/Label.svelte.d.ts +1 -3
- package/dist/stories/components/Form/Message/Color/Color.stories.svelte +9 -9
- package/dist/stories/components/Form/Message/Message.stories.svelte +5 -13
- package/dist/stories/components/Form/Message/Message.svelte +5 -7
- package/dist/stories/components/Form/Message/Message.svelte.d.ts +4 -6
- package/dist/stories/components/Form/Message/Size/Size.stories.svelte +3 -5
- package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte +8 -72
- package/dist/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +5 -3
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +26 -33
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +6 -5
- package/dist/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +2 -2
- package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +120 -0
- package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Events/Events.stories.svelte +138 -0
- package/dist/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
- package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte +28 -0
- package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Select.stories.svelte +114 -0
- package/dist/stories/components/Form/Select/Select.stories.svelte.d.ts +22 -0
- package/dist/stories/components/Form/Select/Select.svelte +285 -0
- package/dist/stories/components/Form/Select/Select.svelte.d.ts +87 -0
- package/dist/stories/components/Form/Select/Size/Size.stories.svelte +24 -0
- package/dist/stories/components/Form/Select/Size/Size.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +39 -0
- package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte +7 -63
- package/dist/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/components/Form/TextInput/TextInput.stories.svelte +6 -4
- package/dist/stories/components/Form/TextInput/TextInput.svelte +18 -30
- package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +10 -5
- package/dist/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +4 -4
- package/dist/stories/components/Layout/Menu/Menu.stories.svelte +65 -0
- package/dist/stories/components/Layout/Menu/Menu.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Menu/Menu.svelte +30 -0
- package/dist/stories/components/Layout/Menu/Menu.svelte.d.ts +23 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +30 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +164 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +49 -0
- package/dist/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
- package/dist/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
- package/dist/stories/components/{Form/SimpleSelect/WithIcon/WithIcon.stories.svelte.d.ts → Layout/Menu/MenuItem/Type/Type.stories.svelte.d.ts} +3 -3
- package/dist/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
- package/dist/stories/components/{Form/SimpleSelect/Roundness/Roundness.stories.svelte.d.ts → Layout/Menu/Size/Size.stories.svelte.d.ts} +3 -3
- package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte +63 -0
- package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Layout/Paper/Paper.stories.svelte +25 -16
- package/dist/stories/components/Layout/Paper/Paper.svelte +211 -14
- package/dist/stories/components/Layout/Paper/Paper.svelte.d.ts +20 -9
- package/dist/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +8 -13
- package/dist/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +6 -24
- package/dist/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
- package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
- package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Layout/Separator/Separator.stories.svelte +26 -0
- package/dist/stories/components/Layout/Separator/Separator.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Separator/Separator.svelte +66 -0
- package/dist/stories/components/Layout/Separator/Separator.svelte.d.ts +22 -0
- package/dist/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
- package/dist/stories/developer tools/Intro.mdx +2 -0
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +49 -0
- package/dist/stories/{components/Form/SimpleSelect/SimpleSelect.stories.svelte.d.ts → developer tools/components/DynamicInput/DynamicInput.stories.svelte.d.ts } +5 -7
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +92 -0
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte.d.ts +60 -0
- package/{src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte → dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte } +4 -4
- package/dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +5 -5
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +19 -15
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +4 -3
- package/dist/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +4 -4
- package/dist/stories/developer tools/components/Popper/Popper.stories.svelte +119 -0
- package/dist/stories/developer tools/components/Popper/Popper.stories.svelte.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/Popper.svelte +77 -0
- package/dist/stories/developer tools/components/Popper/Popper.svelte.d.ts +50 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +60 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +66 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte.d.ts +34 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.js +62 -0
- package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +89 -0
- package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
- package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +111 -0
- package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte.d.ts +18 -0
- package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +6 -8
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +4 -7
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -5
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +2 -2
- package/dist/stories/developer tools/directives/clickOutside/clickOutside.d.ts +3 -0
- package/dist/stories/developer tools/directives/clickOutside/clickOutside.js +14 -0
- package/dist/stories/developer tools/directives/clickOutside/index.mdx +25 -0
- package/dist/stories/{philosophy/Colors/Colors.mdx → developer tools/philosophy/Colors/Colors.mdx } +2 -2
- package/dist/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/utils/color.js → developer tools/philosophy/Colors/utils/color.js } +1 -1
- package/dist/stories/{philosophy/Themes.mdx → developer tools/philosophy/Themes.mdx } +1 -1
- package/dist/styles/_colors.css +44 -44
- package/dist/styles/_components.css +6 -3
- package/dist/styles/_shadow.css +13 -20
- package/dist/styles/_space.css +7 -0
- package/dist/styles/_z-index.css +9 -0
- package/dist/styles/global.css +2 -0
- package/dist/types/colors.d.ts +7 -0
- package/dist/types/colors.js +10 -0
- package/dist/types/position.d.ts +4 -0
- package/dist/types/position.js +2 -0
- package/dist/types/roundness.d.ts +3 -0
- package/dist/types/roundness.js +1 -0
- package/dist/types/shadow.d.ts +3 -0
- package/dist/types/shadow.js +1 -0
- package/dist/types/size.d.ts +3 -0
- package/dist/types/size.js +1 -0
- package/dist/types/weight.d.ts +3 -0
- package/dist/types/weight.js +1 -0
- package/package.json +26 -24
- package/src/lib/index.ts +61 -15
- package/src/lib/stories/components/Form/Button/Button.svelte +39 -36
- package/src/lib/stories/components/Form/FormControl/FormControl.svelte +9 -11
- package/src/lib/stories/components/Form/Label/Label.svelte +5 -8
- package/src/lib/stories/components/Form/Message/Message.svelte +11 -16
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +50 -50
- package/src/lib/stories/components/Form/Select/Select.svelte +501 -0
- package/src/lib/stories/components/Form/TextInput/TextInput.svelte +43 -60
- package/src/lib/stories/components/Layout/Menu/Menu.svelte +65 -0
- package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +268 -0
- package/src/lib/stories/components/Layout/Paper/Paper.svelte +154 -27
- package/src/lib/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
- package/src/lib/stories/components/Layout/Separator/Separator.svelte +96 -0
- package/src/lib/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
- package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +195 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +22 -18
- package/src/lib/stories/developer tools/components/Popper/Popper.svelte +159 -0
- package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +120 -0
- package/src/lib/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.ts +87 -0
- package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -6
- package/src/lib/stories/developer tools/directives/clickOutside/clickOutside.ts +17 -0
- package/src/lib/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/utils/color.ts → developer tools/philosophy/Colors/utils/color.ts } +1 -1
- package/src/lib/styles/_colors.css +44 -44
- package/src/lib/styles/_components.css +6 -3
- package/src/lib/styles/_shadow.css +13 -20
- package/src/lib/styles/_space.css +7 -0
- package/src/lib/styles/_z-index.css +9 -0
- package/src/lib/styles/global.css +2 -0
- package/src/lib/types/colors.ts +16 -0
- package/src/lib/types/position.ts +5 -0
- package/src/lib/types/roundness.ts +3 -0
- package/src/lib/types/shadow.ts +3 -0
- package/src/lib/types/size.ts +3 -0
- package/src/lib/types/weight.ts +3 -0
- package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -74
- package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -59
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -69
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +0 -50
- package/dist/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
- package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
- package/dist/types.d.ts +0 -5
- package/dist/types.js +0 -1
- package/src/lib/stories/Home.mdx +0 -61
- package/src/lib/stories/assets/dark-theme-toggle.png +0 -0
- package/src/lib/stories/components/Form/Button/Button.stories.svelte +0 -82
- package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +0 -68
- package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +0 -42
- package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +0 -51
- package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +0 -49
- package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +0 -22
- package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +0 -21
- package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +0 -29
- package/src/lib/stories/components/Form/Label/Label.stories.svelte +0 -23
- package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +0 -36
- package/src/lib/stories/components/Form/Message/Message.stories.svelte +0 -35
- package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +0 -24
- package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +0 -174
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +0 -57
- package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +0 -20
- package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +0 -16
- package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +0 -31
- package/src/lib/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -79
- package/src/lib/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
- package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -64
- package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -159
- package/src/lib/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
- package/src/lib/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
- package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +0 -153
- package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +0 -21
- package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +0 -41
- package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +0 -47
- package/src/lib/stories/components/Layout/Paper/Paper.stories.svelte +0 -41
- package/src/lib/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +0 -30
- package/src/lib/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +0 -42
- package/src/lib/stories/developer tools/Intro.mdx +0 -7
- package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +0 -38
- package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +0 -20
- package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +0 -16
- package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +0 -47
- package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +0 -27
- package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +0 -33
- package/src/lib/stories/philosophy/Colors/Colors.mdx +0 -43
- package/src/lib/stories/philosophy/Colors/Colors.stories.svelte +0 -22
- package/src/lib/stories/philosophy/Colors/Opacity.stories.svelte +0 -11
- package/src/lib/stories/philosophy/Themes.mdx +0 -23
- package/src/lib/types.ts +0 -6
- /package/dist/stories/components/Form/{SimpleSelect → Select}/Events/Events.stories.svelte.d.ts +0 -0
- /package/dist/stories/components/{Form/SimpleSelect → Layout/Menu/MenuItem}/Size/Size.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Palette.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatch.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatches.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/utils/color.d.ts +0 -0
- /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
- /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { ComponentRoundness } from '$lib/types/roundness.js';
|
|
3
|
+
import type { ComponentShadow } from '$lib/types/shadow.js';
|
|
4
|
+
import type { ComponentWeight } from '$lib/types/weight.js';
|
|
5
|
+
import {
|
|
6
|
+
componentColorPriorityArray,
|
|
7
|
+
componentColorSeverityArray,
|
|
8
|
+
type ComponentColor,
|
|
9
|
+
} from '$lib/types/colors.js';
|
|
5
10
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
export type PaperColor = 'default' | ComponentColor;
|
|
12
|
+
|
|
13
|
+
export const paperColorArray: PaperColor[] = [
|
|
14
|
+
'default',
|
|
15
|
+
...componentColorPriorityArray,
|
|
16
|
+
...componentColorSeverityArray,
|
|
17
|
+
];
|
|
9
18
|
|
|
10
|
-
interface PaperProps {
|
|
19
|
+
export interface PaperProps {
|
|
11
20
|
/** Paper contents goes here */
|
|
12
21
|
children?: Snippet;
|
|
13
22
|
/** Paper ref */
|
|
14
23
|
ref?: HTMLDivElement;
|
|
15
24
|
/** How round should the border radius be? */
|
|
16
|
-
roundness?:
|
|
25
|
+
roundness?: ComponentRoundness;
|
|
17
26
|
/** Shadow elevation */
|
|
18
|
-
shadow?:
|
|
27
|
+
shadow?: ComponentShadow;
|
|
19
28
|
/** Custom css class */
|
|
20
29
|
class?: string;
|
|
21
30
|
/** Paper Width */
|
|
@@ -24,48 +33,126 @@
|
|
|
24
33
|
height?: string;
|
|
25
34
|
/** Id */
|
|
26
35
|
id?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
36
|
+
/** Add a border around paper */
|
|
37
|
+
outline?: boolean;
|
|
38
|
+
/** What color to use? */
|
|
39
|
+
color?: PaperColor;
|
|
40
|
+
/** How should paper appear? */
|
|
41
|
+
variant?: ComponentWeight;
|
|
42
|
+
/** Custom background color. Use CSS compatible value */
|
|
43
|
+
customBackgroundColor?: string;
|
|
44
|
+
/** Custom border color. Use CSS compatible value */
|
|
45
|
+
customBorderColor?: string;
|
|
29
46
|
}
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<script lang="ts">
|
|
50
|
+
import type { Snippet } from 'svelte';
|
|
30
51
|
|
|
31
52
|
let {
|
|
32
53
|
children,
|
|
33
|
-
roundness =
|
|
34
|
-
shadow =
|
|
54
|
+
roundness = 1,
|
|
55
|
+
shadow = 0,
|
|
35
56
|
id,
|
|
36
57
|
class: className = '',
|
|
37
|
-
_unsafeChildrenStringForTesting,
|
|
38
58
|
width,
|
|
39
59
|
height,
|
|
40
60
|
ref = $bindable<HTMLDivElement>(),
|
|
61
|
+
color = 'default',
|
|
62
|
+
variant = 'text',
|
|
63
|
+
customBackgroundColor,
|
|
64
|
+
customBorderColor,
|
|
65
|
+
outline = false,
|
|
41
66
|
}: PaperProps = $props();
|
|
42
67
|
</script>
|
|
43
68
|
|
|
44
69
|
<div
|
|
70
|
+
class:outline
|
|
45
71
|
class={[
|
|
46
72
|
'dodo-ui-Paper',
|
|
47
73
|
`roundness--${roundness}`,
|
|
74
|
+
`color--${color}`,
|
|
75
|
+
`variant--${variant}`,
|
|
76
|
+
`shadow--${shadow}`,
|
|
48
77
|
`${shadow ? `shadow--${shadow} dodo-shadow-${shadow}` : `shadow--${shadow}`}`,
|
|
49
78
|
className,
|
|
50
79
|
].join(' ')}
|
|
51
80
|
{id}
|
|
52
81
|
bind:this={ref}
|
|
53
|
-
style={`${width ? `width:${width};` : ''}
|
|
82
|
+
style={`${width ? `width:${width};` : ''}
|
|
83
|
+
${height ? `height:${height};` : ''}
|
|
84
|
+
${customBackgroundColor ? `background-color:${customBackgroundColor};` : ''}
|
|
85
|
+
${customBorderColor ? `border-color:${customBorderColor};` : ''}
|
|
86
|
+
`}
|
|
54
87
|
>
|
|
55
88
|
{#if children}
|
|
56
89
|
{@render children()}
|
|
57
|
-
{:else if _unsafeChildrenStringForTesting}
|
|
58
|
-
{_unsafeChildrenStringForTesting}
|
|
59
90
|
{/if}
|
|
60
91
|
</div>
|
|
61
92
|
|
|
62
93
|
<style lang="scss">
|
|
94
|
+
@use 'utils/scss/mixins.scss' as *;
|
|
95
|
+
|
|
63
96
|
:global(:root) {
|
|
64
|
-
--dodo-ui-Paper-bg: var(--dodo-color-white);
|
|
97
|
+
--dodo-ui-Paper-default-bg: var(--dodo-color-white);
|
|
98
|
+
--dodo-ui-Paper-default-bg-shadow-1: var(--dodo-color-white);
|
|
99
|
+
--dodo-ui-Paper-default-bg-shadow-2: var(--dodo-color-white);
|
|
100
|
+
--dodo-ui-Paper-default-bg-shadow-3: var(--dodo-color-white);
|
|
101
|
+
--dodo-ui-Paper-default-bg-shadow-4: var(--dodo-color-white);
|
|
102
|
+
--dodo-ui-Paper-default-bg-shadow-5: var(--dodo-color-white);
|
|
103
|
+
|
|
104
|
+
--dodo-ui-Paper-outline-default: var(--dodo-color-neutral-300);
|
|
105
|
+
|
|
106
|
+
@include generate-dodo-ui-paper-colors(neutral);
|
|
107
|
+
@include generate-dodo-ui-paper-colors(primary);
|
|
108
|
+
@include generate-dodo-ui-paper-colors(secondary);
|
|
109
|
+
@include generate-dodo-ui-paper-colors(safe);
|
|
110
|
+
@include generate-dodo-ui-paper-colors(warning);
|
|
111
|
+
@include generate-dodo-ui-paper-colors(danger);
|
|
65
112
|
}
|
|
66
113
|
|
|
67
114
|
:global(.dodo-theme--dark) {
|
|
68
|
-
--dodo-ui-Paper-bg:
|
|
115
|
+
--dodo-ui-Paper-default-bg-mixer: #999999fd;
|
|
116
|
+
|
|
117
|
+
--dodo-ui-Paper-default-bg: color-mix(
|
|
118
|
+
in oklab,
|
|
119
|
+
var(--dodo-color-neutral-50) 98%,
|
|
120
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
121
|
+
);
|
|
122
|
+
--dodo-ui-Paper-default-bg-shadow-1: color-mix(
|
|
123
|
+
in oklab,
|
|
124
|
+
var(--dodo-color-neutral-50) 95%,
|
|
125
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
126
|
+
);
|
|
127
|
+
--dodo-ui-Paper-default-bg-shadow-2: color-mix(
|
|
128
|
+
in oklab,
|
|
129
|
+
var(--dodo-color-neutral-50) 90%,
|
|
130
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
131
|
+
);
|
|
132
|
+
--dodo-ui-Paper-default-bg-shadow-3: color-mix(
|
|
133
|
+
in oklab,
|
|
134
|
+
var(--dodo-color-neutral-50) 85%,
|
|
135
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
136
|
+
);
|
|
137
|
+
--dodo-ui-Paper-default-bg-shadow-4: color-mix(
|
|
138
|
+
in oklab,
|
|
139
|
+
var(--dodo-color-neutral-50) 80%,
|
|
140
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
141
|
+
);
|
|
142
|
+
--dodo-ui-Paper-default-bg-shadow-5: color-mix(
|
|
143
|
+
in oklab,
|
|
144
|
+
var(--dodo-color-neutral-50) 75%,
|
|
145
|
+
var(--dodo-ui-Paper-default-bg-mixer)
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
--dodo-ui-Paper-outline-default: var(--dodo-color-neutral-200);
|
|
149
|
+
|
|
150
|
+
@include generate-dodo-ui-paper-colors-dark(neutral);
|
|
151
|
+
@include generate-dodo-ui-paper-colors-dark(primary);
|
|
152
|
+
@include generate-dodo-ui-paper-colors-dark(secondary);
|
|
153
|
+
@include generate-dodo-ui-paper-colors-dark(safe);
|
|
154
|
+
@include generate-dodo-ui-paper-colors-dark(warning);
|
|
155
|
+
@include generate-dodo-ui-paper-colors-dark(danger);
|
|
69
156
|
}
|
|
70
157
|
|
|
71
158
|
.dodo-ui-Paper {
|
|
@@ -73,26 +160,66 @@
|
|
|
73
160
|
transition: all 150ms;
|
|
74
161
|
font-family: inherit;
|
|
75
162
|
color: inherit;
|
|
76
|
-
|
|
77
|
-
|
|
163
|
+
border-style: solid;
|
|
164
|
+
border-width: var(--dodo-ui-element-border-width);
|
|
165
|
+
border-color: transparent;
|
|
78
166
|
overflow: hidden;
|
|
79
167
|
|
|
80
168
|
&.roundness {
|
|
81
|
-
&--
|
|
82
|
-
border-radius: var(--dodo-ui-element-roundness-
|
|
169
|
+
&--1 {
|
|
170
|
+
border-radius: var(--dodo-ui-element-roundness-1);
|
|
83
171
|
}
|
|
84
172
|
|
|
85
|
-
&--
|
|
86
|
-
border-radius: var(--dodo-ui-element-roundness-
|
|
173
|
+
&--2 {
|
|
174
|
+
border-radius: var(--dodo-ui-element-roundness-2);
|
|
87
175
|
}
|
|
88
176
|
|
|
89
|
-
&--
|
|
90
|
-
border-radius: var(--dodo-ui-element-roundness-
|
|
177
|
+
&--3 {
|
|
178
|
+
border-radius: var(--dodo-ui-element-roundness-3);
|
|
91
179
|
}
|
|
92
180
|
|
|
93
181
|
&--full {
|
|
94
182
|
border-radius: 50%;
|
|
95
183
|
}
|
|
96
184
|
}
|
|
185
|
+
|
|
186
|
+
&.color {
|
|
187
|
+
&--default {
|
|
188
|
+
background-color: var(--dodo-ui-Paper-default-bg);
|
|
189
|
+
|
|
190
|
+
&.outline {
|
|
191
|
+
border-color: var(--dodo-ui-Paper-outline-default);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@include generate-dodo-ui-paper-color(neutral);
|
|
196
|
+
@include generate-dodo-ui-paper-color(primary);
|
|
197
|
+
@include generate-dodo-ui-paper-color(secondary);
|
|
198
|
+
@include generate-dodo-ui-paper-color(safe);
|
|
199
|
+
@include generate-dodo-ui-paper-color(warning);
|
|
200
|
+
@include generate-dodo-ui-paper-color(danger);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
&.color--default.shadow {
|
|
204
|
+
&--1 {
|
|
205
|
+
background-color: var(--dodo-ui-Paper-default-bg-shadow-1);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
&--2 {
|
|
209
|
+
background-color: var(--dodo-ui-Paper-default-bg-shadow-2);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
&--3 {
|
|
213
|
+
background-color: var(--dodo-ui-Paper-default-bg-shadow-3);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
&--4 {
|
|
217
|
+
background-color: var(--dodo-ui-Paper-default-bg-shadow-4);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
&--5 {
|
|
221
|
+
background-color: var(--dodo-ui-Paper-default-bg-shadow-5);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
97
224
|
}
|
|
98
225
|
</style>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/// Mixin: generate-dodo-ui-paper-colors
|
|
2
|
+
/// Generates CSS custom properties for Dodo UI paper styles (text & solid)
|
|
3
|
+
/// across different interaction states (default, hover, active).
|
|
4
|
+
/// @param {String} $color-name - The theme color name (e.g., "primary", "safe", etc.)
|
|
5
|
+
@mixin generate-dodo-ui-paper-colors($color-name) {
|
|
6
|
+
--dodo-ui-Paper-outline-#{$color-name}: var(--dodo-color-#{$color-name}-400);
|
|
7
|
+
--dodo-ui-Paper-text-#{$color-name}-bg: var(--dodo-color-#{$color-name}-100);
|
|
8
|
+
--dodo-ui-Paper-solid-#{$color-name}-bg: var(--dodo-color-#{$color-name}-500);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/// Mixin: generate-dodo-ui-paper-colors
|
|
12
|
+
/// Generates CSS custom properties for Dodo UI paper styles (text & solid)
|
|
13
|
+
/// across different interaction states (default, hover, active).
|
|
14
|
+
/// @param {String} $color-name - The theme color name (e.g., "primary", "safe", etc.)
|
|
15
|
+
@mixin generate-dodo-ui-paper-colors-dark($color-name) {
|
|
16
|
+
--dodo-ui-Paper-outline-#{$color-name}: var(--dodo-color-#{$color-name}-300);
|
|
17
|
+
--dodo-ui-Paper-text-#{$color-name}-bg: color-mix(
|
|
18
|
+
in oklab,
|
|
19
|
+
var(--dodo-color-#{$color-name}-50) 80%,
|
|
20
|
+
#00000080
|
|
21
|
+
);
|
|
22
|
+
--dodo-ui-Paper-solid-#{$color-name}-bg: var(--dodo-color-#{$color-name}-300);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// Mixin: generate-dodo-ui-paper-color
|
|
26
|
+
/// Auto-generates .color--[theme] > .variant--text & .variant--solid styles
|
|
27
|
+
/// @param {String} $theme - e.g., default, safe, danger, etc.
|
|
28
|
+
@mixin generate-dodo-ui-paper-color($theme) {
|
|
29
|
+
&--#{$theme} {
|
|
30
|
+
&.variant {
|
|
31
|
+
&--text {
|
|
32
|
+
color: var(--dodo-color-#{$theme}-800);
|
|
33
|
+
background-color: var(--dodo-ui-Paper-text-#{$theme}-bg);
|
|
34
|
+
|
|
35
|
+
&.outline {
|
|
36
|
+
border-color: var(--dodo-ui-Paper-outline-#{$theme});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&--solid {
|
|
41
|
+
color: var(--dodo-color-constant-white);
|
|
42
|
+
background-color: var(--dodo-ui-Paper-solid-#{$theme}-bg);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ComponentColor } from '$lib/types/colors.js';
|
|
3
|
+
|
|
4
|
+
export type SeparatorOrientation = 'horizontal' | 'vertical';
|
|
5
|
+
|
|
6
|
+
export const separatorOrientationArray: SeparatorOrientation[] = ['horizontal', 'vertical'];
|
|
7
|
+
|
|
8
|
+
export interface SeparatorProps {
|
|
9
|
+
/** Separator ref */
|
|
10
|
+
ref?: HTMLDivElement;
|
|
11
|
+
/** Custom css class */
|
|
12
|
+
class?: string;
|
|
13
|
+
/** Id */
|
|
14
|
+
id?: string;
|
|
15
|
+
/** What color to use? */
|
|
16
|
+
color?: ComponentColor;
|
|
17
|
+
/** Separator Width */
|
|
18
|
+
width?: string;
|
|
19
|
+
/** Separator Height */
|
|
20
|
+
height?: string;
|
|
21
|
+
/** Separator orientation, 'horizontal', 'vertical'*/
|
|
22
|
+
orientation?: SeparatorOrientation;
|
|
23
|
+
}
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<script lang="ts">
|
|
27
|
+
let {
|
|
28
|
+
id,
|
|
29
|
+
class: className = '',
|
|
30
|
+
orientation = 'horizontal',
|
|
31
|
+
color = 'neutral',
|
|
32
|
+
ref = $bindable<HTMLDivElement>(),
|
|
33
|
+
width,
|
|
34
|
+
height,
|
|
35
|
+
}: SeparatorProps = $props();
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<div
|
|
39
|
+
class={['dodo-ui-Separator', `color--${color}`, `orientation--${orientation}`, className].join(
|
|
40
|
+
' ',
|
|
41
|
+
)}
|
|
42
|
+
{id}
|
|
43
|
+
style={`${width ? `width:${width};` : ''}
|
|
44
|
+
${height ? `height:${height};` : ''}
|
|
45
|
+
`}
|
|
46
|
+
bind:this={ref}
|
|
47
|
+
></div>
|
|
48
|
+
|
|
49
|
+
<style lang="scss">
|
|
50
|
+
@use 'utils/scss/mixins.scss' as *;
|
|
51
|
+
|
|
52
|
+
:global(:root) {
|
|
53
|
+
@include generate-dodo-ui-separator-colors(neutral);
|
|
54
|
+
@include generate-dodo-ui-separator-colors(primary);
|
|
55
|
+
@include generate-dodo-ui-separator-colors(secondary);
|
|
56
|
+
@include generate-dodo-ui-separator-colors(safe);
|
|
57
|
+
@include generate-dodo-ui-separator-colors(warning);
|
|
58
|
+
@include generate-dodo-ui-separator-colors(danger);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:global(.dodo-theme--dark) {
|
|
62
|
+
@include generate-dodo-ui-separator-colors-dark(neutral);
|
|
63
|
+
@include generate-dodo-ui-separator-colors-dark(primary);
|
|
64
|
+
@include generate-dodo-ui-separator-colors-dark(secondary);
|
|
65
|
+
@include generate-dodo-ui-separator-colors-dark(safe);
|
|
66
|
+
@include generate-dodo-ui-separator-colors-dark(warning);
|
|
67
|
+
@include generate-dodo-ui-separator-colors-dark(danger);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.dodo-ui-Separator {
|
|
71
|
+
&.color {
|
|
72
|
+
@include generate-dodo-ui-separator-color(neutral);
|
|
73
|
+
@include generate-dodo-ui-separator-color(primary);
|
|
74
|
+
@include generate-dodo-ui-separator-color(secondary);
|
|
75
|
+
@include generate-dodo-ui-separator-color(safe);
|
|
76
|
+
@include generate-dodo-ui-separator-color(warning);
|
|
77
|
+
@include generate-dodo-ui-separator-color(danger);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&.orientation {
|
|
81
|
+
&--horizontal {
|
|
82
|
+
display: flex;
|
|
83
|
+
height: var(--dodo-ui-element-border-width);
|
|
84
|
+
width: 100%;
|
|
85
|
+
margin: calc(var(--dodo-ui-space) * 1) 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&--vertical {
|
|
89
|
+
display: inline-flex;
|
|
90
|
+
height: 100%;
|
|
91
|
+
width: var(--dodo-ui-element-border-width);
|
|
92
|
+
margin: 0 calc(var(--dodo-ui-space) * 1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
</style>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// Mixin: generate-dodo-ui-button-colors
|
|
2
|
+
/// Generates CSS custom properties for Dodo UI button styles (text & solid)
|
|
3
|
+
/// across different interaction states (default, hover, active).
|
|
4
|
+
/// @param {String} $color-name - The theme color name (e.g., "primary", "safe", etc.)
|
|
5
|
+
@mixin generate-dodo-ui-separator-colors($color-name) {
|
|
6
|
+
--dodo-ui-Separator-color-#{$color-name}: var(--dodo-color-#{$color-name}-300);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/// Mixin: generate-dodo-ui-button-colors
|
|
10
|
+
/// Generates CSS custom properties for Dodo UI button styles (text & solid)
|
|
11
|
+
/// across different interaction states (default, hover, active).
|
|
12
|
+
/// @param {String} $color-name - The theme color name (e.g., "primary", "safe", etc.)
|
|
13
|
+
@mixin generate-dodo-ui-separator-colors-dark($color-name) {
|
|
14
|
+
--dodo-ui-Separator-color-#{$color-name}: var(--dodo-color-#{$color-name}-300);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/// Mixin: generate-dodo-ui-button-color
|
|
18
|
+
/// Auto-generates .color--[theme] > .variant--text & .variant--solid styles
|
|
19
|
+
/// @param {String} $theme - e.g., default, safe, danger, etc.
|
|
20
|
+
@mixin generate-dodo-ui-separator-color($theme) {
|
|
21
|
+
&--#{$theme} {
|
|
22
|
+
background-color: var(--dodo-ui-Separator-color-#{$theme});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { type ComponentSize, type TextInputType } from '$lib/index.js';
|
|
3
|
+
import type { Snippet } from 'svelte';
|
|
4
|
+
import type {
|
|
5
|
+
ChangeEventHandler,
|
|
6
|
+
ClipboardEventHandler,
|
|
7
|
+
FocusEventHandler,
|
|
8
|
+
FormEventHandler,
|
|
9
|
+
MouseEventHandler,
|
|
10
|
+
} from 'svelte/elements';
|
|
11
|
+
|
|
12
|
+
export type DynamicInputVariant = 'input' | 'button';
|
|
13
|
+
|
|
14
|
+
export const dynamicInputVariantArray: DynamicInputVariant[] = ['input', 'button'];
|
|
15
|
+
|
|
16
|
+
export type DynamicInputClickEvent = MouseEvent & {
|
|
17
|
+
currentTarget: EventTarget & HTMLButtonElement;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type DynamicInputFocusEvent = FocusEvent & {
|
|
21
|
+
currentTarget: EventTarget & (HTMLInputElement | HTMLButtonElement);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export interface DynamicInputProps {
|
|
25
|
+
/** How large should the button be? */
|
|
26
|
+
size?: ComponentSize;
|
|
27
|
+
/** Input type? */
|
|
28
|
+
type?: TextInputType;
|
|
29
|
+
/** Input ref */
|
|
30
|
+
ref?: HTMLInputElement | HTMLButtonElement;
|
|
31
|
+
/** Input value */
|
|
32
|
+
value?: string | number;
|
|
33
|
+
/** variant */
|
|
34
|
+
variant?: DynamicInputVariant;
|
|
35
|
+
/** How round should the border radius be? */
|
|
36
|
+
placeholder?: string;
|
|
37
|
+
/** disabled state */
|
|
38
|
+
disabled?: boolean;
|
|
39
|
+
/** Read only ? */
|
|
40
|
+
readonly?: boolean;
|
|
41
|
+
/** Name */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Id */
|
|
44
|
+
id?: string;
|
|
45
|
+
/** Icon before button content */
|
|
46
|
+
before?: Snippet;
|
|
47
|
+
/** Icon after button content */
|
|
48
|
+
after?: Snippet;
|
|
49
|
+
/** Custom css class*/
|
|
50
|
+
class?: string;
|
|
51
|
+
/** The onclick event handler */
|
|
52
|
+
onclick?: MouseEventHandler<HTMLButtonElement>;
|
|
53
|
+
/** oninput event handler */
|
|
54
|
+
oninput?: FormEventHandler<HTMLInputElement>;
|
|
55
|
+
/** onchange event handler */
|
|
56
|
+
onchange?: ChangeEventHandler<HTMLInputElement>;
|
|
57
|
+
/** onblur event handler */
|
|
58
|
+
onblur?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
|
|
59
|
+
/** onfocus event handler */
|
|
60
|
+
onfocus?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
|
|
61
|
+
/** onpaste event handler */
|
|
62
|
+
onpaste?: ClipboardEventHandler<HTMLInputElement>;
|
|
63
|
+
/** oncopy event handler */
|
|
64
|
+
oncopy?: ClipboardEventHandler<HTMLInputElement>;
|
|
65
|
+
/** oncut event handler */
|
|
66
|
+
oncut?: ClipboardEventHandler<HTMLInputElement>;
|
|
67
|
+
/** custom Content Formatting for variant button */
|
|
68
|
+
customInputContent?: (value: string | number) => Snippet;
|
|
69
|
+
}
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
<script lang="ts">
|
|
73
|
+
let {
|
|
74
|
+
type = 'text',
|
|
75
|
+
name,
|
|
76
|
+
id,
|
|
77
|
+
class: className = '',
|
|
78
|
+
disabled = false,
|
|
79
|
+
onchange,
|
|
80
|
+
oninput,
|
|
81
|
+
onblur,
|
|
82
|
+
onfocus,
|
|
83
|
+
onpaste,
|
|
84
|
+
oncopy,
|
|
85
|
+
oncut,
|
|
86
|
+
value = $bindable<string | number>(),
|
|
87
|
+
placeholder,
|
|
88
|
+
ref = $bindable<HTMLInputElement | HTMLButtonElement>(),
|
|
89
|
+
readonly = false,
|
|
90
|
+
variant = 'input',
|
|
91
|
+
size = 'normal',
|
|
92
|
+
onclick,
|
|
93
|
+
customInputContent,
|
|
94
|
+
}: DynamicInputProps = $props();
|
|
95
|
+
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
+
let customInputContentTyped = customInputContent as any;
|
|
98
|
+
|
|
99
|
+
function onclickMod(e: DynamicInputClickEvent) {
|
|
100
|
+
if (onfocus) {
|
|
101
|
+
onfocus(e);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (onclick) {
|
|
105
|
+
onclick(e);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
</script>
|
|
109
|
+
|
|
110
|
+
{#if variant === 'button'}
|
|
111
|
+
<button
|
|
112
|
+
{id}
|
|
113
|
+
class={[
|
|
114
|
+
'dodo-ui-DynamicInput',
|
|
115
|
+
`size--${size}`,
|
|
116
|
+
`variant--${variant}`,
|
|
117
|
+
`${!value ? 'placeholder' : ''}`,
|
|
118
|
+
className,
|
|
119
|
+
].join(' ')}
|
|
120
|
+
bind:this={ref}
|
|
121
|
+
onclick={onclickMod}
|
|
122
|
+
{onblur}
|
|
123
|
+
{disabled}
|
|
124
|
+
>
|
|
125
|
+
{#if customInputContentTyped}
|
|
126
|
+
{@render customInputContentTyped(value)}
|
|
127
|
+
{:else}
|
|
128
|
+
{`${value}` || placeholder}
|
|
129
|
+
{/if}
|
|
130
|
+
</button>
|
|
131
|
+
{:else}
|
|
132
|
+
<input
|
|
133
|
+
class={['dodo-ui-DynamicInput', `size--${size}`, `variant--${variant}`, className].join(' ')}
|
|
134
|
+
{type}
|
|
135
|
+
{name}
|
|
136
|
+
{id}
|
|
137
|
+
{disabled}
|
|
138
|
+
{oninput}
|
|
139
|
+
{onchange}
|
|
140
|
+
{onfocus}
|
|
141
|
+
{onblur}
|
|
142
|
+
{onpaste}
|
|
143
|
+
{oncopy}
|
|
144
|
+
{oncut}
|
|
145
|
+
{placeholder}
|
|
146
|
+
bind:value
|
|
147
|
+
bind:this={ref}
|
|
148
|
+
{readonly}
|
|
149
|
+
/>
|
|
150
|
+
{/if}
|
|
151
|
+
|
|
152
|
+
<style lang="scss">
|
|
153
|
+
.dodo-ui-DynamicInput {
|
|
154
|
+
flex: 1;
|
|
155
|
+
border: 0;
|
|
156
|
+
outline: 0;
|
|
157
|
+
height: 100%;
|
|
158
|
+
background-color: transparent;
|
|
159
|
+
font-family: inherit;
|
|
160
|
+
color: inherit;
|
|
161
|
+
letter-spacing: 0.3px;
|
|
162
|
+
|
|
163
|
+
margin: 0;
|
|
164
|
+
|
|
165
|
+
&.variant {
|
|
166
|
+
&--button {
|
|
167
|
+
display: flex;
|
|
168
|
+
align-items: center;
|
|
169
|
+
justify-content: flex-start;
|
|
170
|
+
cursor: pointer;
|
|
171
|
+
|
|
172
|
+
&.placeholder {
|
|
173
|
+
opacity: 0.6;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
&.size {
|
|
179
|
+
&--normal {
|
|
180
|
+
font-size: 1rem;
|
|
181
|
+
padding: 0 calc(var(--dodo-ui-space-small) * 2);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
&--small {
|
|
185
|
+
padding: 0 var(--dodo-ui-space);
|
|
186
|
+
font-size: 0.9rem;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
&--large {
|
|
190
|
+
font-size: 1.1rem;
|
|
191
|
+
padding: 0 calc(var(--dodo-ui-space) * 2);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
</style>
|