@flightlesslabs/dodo-ui 0.6.6 → 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.
Files changed (118) hide show
  1. package/dist/index.d.ts +28 -7
  2. package/dist/index.js +12 -2
  3. package/dist/stories/Home.mdx +1 -1
  4. package/dist/stories/components/Form/Button/Button.svelte +2 -2
  5. package/dist/stories/components/Form/Button/Button.svelte.d.ts +8 -5
  6. package/dist/stories/components/Form/FormControl/FormControl.svelte +3 -0
  7. package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +1 -1
  8. package/dist/stories/components/Form/Label/Label.svelte +5 -2
  9. package/dist/stories/components/Form/Label/Label.svelte.d.ts +1 -1
  10. package/dist/stories/components/Form/Message/Message.svelte +5 -2
  11. package/dist/stories/components/Form/Message/Message.svelte.d.ts +1 -1
  12. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +25 -32
  13. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +5 -5
  14. package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +120 -0
  15. package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte.d.ts +18 -0
  16. package/dist/stories/components/Form/Select/Events/Events.stories.svelte +138 -0
  17. package/dist/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
  18. package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte +28 -0
  19. package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte.d.ts +18 -0
  20. package/dist/stories/components/Form/Select/Select.stories.svelte +114 -0
  21. package/dist/stories/components/Form/Select/Select.stories.svelte.d.ts +22 -0
  22. package/dist/stories/components/Form/Select/Select.svelte +285 -0
  23. package/dist/stories/components/Form/Select/Select.svelte.d.ts +87 -0
  24. package/dist/stories/components/Form/Select/Size/Size.stories.svelte +24 -0
  25. package/dist/stories/components/Form/Select/Size/Size.stories.svelte.d.ts +18 -0
  26. package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +39 -0
  27. package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte.d.ts +18 -0
  28. package/dist/stories/components/Form/TextInput/TextInput.svelte +9 -28
  29. package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +8 -5
  30. package/dist/stories/components/Layout/Menu/Menu.stories.svelte +65 -0
  31. package/dist/stories/components/Layout/Menu/Menu.stories.svelte.d.ts +21 -0
  32. package/dist/stories/components/Layout/Menu/Menu.svelte +30 -0
  33. package/dist/stories/components/Layout/Menu/Menu.svelte.d.ts +23 -0
  34. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +30 -0
  35. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte.d.ts +21 -0
  36. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +164 -0
  37. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +49 -0
  38. package/dist/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
  39. package/dist/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
  40. package/dist/stories/components/{Form/SimpleSelect/WithIcon/WithIcon.stories.svelte.d.ts → Layout/Menu/MenuItem/Type/Type.stories.svelte.d.ts} +3 -3
  41. package/dist/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
  42. package/dist/stories/components/{Form/SimpleSelect/Roundness/Roundness.stories.svelte.d.ts → Layout/Menu/Size/Size.stories.svelte.d.ts} +3 -3
  43. package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte +1 -1
  44. package/dist/stories/components/Layout/Paper/Paper.stories.svelte +1 -1
  45. package/dist/stories/components/Layout/Paper/Paper.svelte.d.ts +5 -5
  46. package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
  47. package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte.d.ts +26 -0
  48. package/dist/stories/components/Layout/Separator/Separator.stories.svelte +26 -0
  49. package/dist/stories/components/Layout/Separator/Separator.stories.svelte.d.ts +21 -0
  50. package/dist/stories/components/Layout/Separator/Separator.svelte +66 -0
  51. package/dist/stories/components/Layout/Separator/Separator.svelte.d.ts +22 -0
  52. package/dist/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
  53. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +49 -0
  54. package/dist/stories/{components/Form/SimpleSelect/SimpleSelect.stories.svelte.d.ts → developer tools/components/DynamicInput/DynamicInput.stories.svelte.d.ts } +5 -7
  55. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +92 -0
  56. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte.d.ts +60 -0
  57. package/dist/stories/{components/Form/SimpleSelect/Size/Size.stories.svelte → developer tools/components/DynamicInput/Size/Size.stories.svelte } +5 -8
  58. package/dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte.d.ts +26 -0
  59. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +6 -2
  60. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +1 -1
  61. package/dist/stories/developer tools/components/Popper/Popper.stories.svelte +119 -0
  62. package/dist/stories/developer tools/components/Popper/Popper.stories.svelte.d.ts +21 -0
  63. package/dist/stories/developer tools/components/Popper/Popper.svelte +77 -0
  64. package/dist/stories/developer tools/components/Popper/Popper.svelte.d.ts +50 -0
  65. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +60 -0
  66. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte.d.ts +21 -0
  67. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +66 -0
  68. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte.d.ts +34 -0
  69. package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.d.ts +21 -0
  70. package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.js +62 -0
  71. package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +89 -0
  72. package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
  73. package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +111 -0
  74. package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte.d.ts +18 -0
  75. package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +3 -5
  76. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +0 -4
  77. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +5 -2
  78. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +1 -1
  79. package/dist/stories/developer tools/directives/clickOutside/clickOutside.d.ts +3 -0
  80. package/dist/stories/developer tools/directives/clickOutside/clickOutside.js +14 -0
  81. package/dist/stories/developer tools/directives/clickOutside/index.mdx +25 -0
  82. package/dist/styles/_z-index.css +9 -0
  83. package/dist/styles/global.css +1 -0
  84. package/dist/types/position.d.ts +4 -0
  85. package/dist/types/position.js +2 -0
  86. package/package.json +1 -1
  87. package/src/lib/index.ts +50 -9
  88. package/src/lib/stories/components/Form/Button/Button.svelte +14 -10
  89. package/src/lib/stories/components/Form/FormControl/FormControl.svelte +7 -4
  90. package/src/lib/stories/components/Form/Label/Label.svelte +4 -2
  91. package/src/lib/stories/components/Form/Message/Message.svelte +4 -2
  92. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +48 -49
  93. package/src/lib/stories/components/Form/Select/Select.svelte +501 -0
  94. package/src/lib/stories/components/Form/TextInput/TextInput.svelte +32 -59
  95. package/src/lib/stories/components/Layout/Menu/Menu.svelte +65 -0
  96. package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +268 -0
  97. package/src/lib/stories/components/Layout/Paper/Paper.svelte +8 -9
  98. package/src/lib/stories/components/Layout/Separator/Separator.svelte +96 -0
  99. package/src/lib/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
  100. package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +195 -0
  101. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +5 -2
  102. package/src/lib/stories/developer tools/components/Popper/Popper.svelte +159 -0
  103. package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +120 -0
  104. package/src/lib/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.ts +87 -0
  105. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte +4 -2
  106. package/src/lib/stories/developer tools/directives/clickOutside/clickOutside.ts +17 -0
  107. package/src/lib/styles/_z-index.css +9 -0
  108. package/src/lib/styles/global.css +1 -0
  109. package/src/lib/types/position.ts +5 -0
  110. package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -47
  111. package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
  112. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -57
  113. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -69
  114. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +0 -51
  115. package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
  116. package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -160
  117. /package/dist/stories/components/Form/{SimpleSelect → Select}/Events/Events.stories.svelte.d.ts +0 -0
  118. /package/dist/stories/components/{Form/SimpleSelect → Layout/Menu/MenuItem}/Size/Size.stories.svelte.d.ts +0 -0
@@ -0,0 +1,19 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { storySeparatorArgTypes } from '../Separator.stories.svelte';
4
+ import Separator from '../Separator.svelte';
5
+
6
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
+ const { Story } = defineMeta({
8
+ component: Separator,
9
+ tags: ['autodocs'],
10
+ argTypes: storySeparatorArgTypes,
11
+ });
12
+ </script>
13
+
14
+ <Story name="Neutral">Hola!</Story>
15
+ <Story name="Primary" args={{ color: 'primary' }}>Hola!</Story>
16
+ <Story name="Secondary" args={{ color: 'secondary' }}>Hola!</Story>
17
+ <Story name="Safe" args={{ color: 'safe' }}>Hola!</Story>
18
+ <Story name="Warning" args={{ color: 'warning' }}>Hola!</Story>
19
+ <Story name="Danger" args={{ color: 'danger' }}>Hola!</Story>
@@ -0,0 +1,26 @@
1
+ export default Color;
2
+ type Color = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Color: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,26 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import Separator, { separatorOrientationArray } from './Separator.svelte';
3
+ import { componentColorArray } from '../../../../types/colors.js';
4
+ export const storySeparatorArgTypes = {
5
+ color: {
6
+ control: { type: 'select' },
7
+ options: componentColorArray,
8
+ },
9
+ orientation: {
10
+ control: { type: 'select' },
11
+ options: separatorOrientationArray,
12
+ },
13
+ };
14
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
15
+ const { Story } = defineMeta({
16
+ component: Separator,
17
+ tags: ['autodocs'],
18
+ argTypes: storySeparatorArgTypes,
19
+ });
20
+ </script>
21
+
22
+ <Story name="Default" />
23
+
24
+ <Story name="FixedWidth" args={{ width: '200px' }} />
25
+
26
+ <Story name="VerticalOrientation" args={{ orientation: 'vertical', height: '200px' }} />
@@ -0,0 +1,21 @@
1
+ import Separator from './Separator.svelte';
2
+ import type { StoryBookArgTypes } from '../../../../storybook-types.js';
3
+ export declare const storySeparatorArgTypes: StoryBookArgTypes;
4
+ 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> {
5
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
6
+ $$bindings?: Bindings;
7
+ } & Exports;
8
+ (internal: unknown, props: {
9
+ $$events?: Events;
10
+ $$slots?: Slots;
11
+ }): Exports & {
12
+ $set?: any;
13
+ $on?: any;
14
+ };
15
+ z_$$bindings?: Bindings;
16
+ }
17
+ declare const Separator: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type Separator = InstanceType<typeof Separator>;
21
+ export default Separator;
@@ -0,0 +1,66 @@
1
+ <script lang="ts" module>export const separatorOrientationArray = ['horizontal', 'vertical'];
2
+ </script>
3
+
4
+ <script lang="ts">"use strict";
5
+ let { id, class: className = '', orientation = 'horizontal', color = 'neutral', ref = $bindable(), width, height, } = $props();
6
+ </script>
7
+
8
+ <div
9
+ class={['dodo-ui-Separator', `color--${color}`, `orientation--${orientation}`, className].join(
10
+ ' ',
11
+ )}
12
+ {id}
13
+ style={`${width ? `width:${width};` : ''}
14
+ ${height ? `height:${height};` : ''}
15
+ `}
16
+ bind:this={ref}
17
+ ></div>
18
+
19
+ <style>:global(:root) {
20
+ --dodo-ui-Separator-color-neutral: var(--dodo-color-neutral-300);
21
+ --dodo-ui-Separator-color-primary: var(--dodo-color-primary-300);
22
+ --dodo-ui-Separator-color-secondary: var(--dodo-color-secondary-300);
23
+ --dodo-ui-Separator-color-safe: var(--dodo-color-safe-300);
24
+ --dodo-ui-Separator-color-warning: var(--dodo-color-warning-300);
25
+ --dodo-ui-Separator-color-danger: var(--dodo-color-danger-300);
26
+ }
27
+
28
+ :global(.dodo-theme--dark) {
29
+ --dodo-ui-Separator-color-neutral: var(--dodo-color-neutral-300);
30
+ --dodo-ui-Separator-color-primary: var(--dodo-color-primary-300);
31
+ --dodo-ui-Separator-color-secondary: var(--dodo-color-secondary-300);
32
+ --dodo-ui-Separator-color-safe: var(--dodo-color-safe-300);
33
+ --dodo-ui-Separator-color-warning: var(--dodo-color-warning-300);
34
+ --dodo-ui-Separator-color-danger: var(--dodo-color-danger-300);
35
+ }
36
+
37
+ .dodo-ui-Separator.color--neutral {
38
+ background-color: var(--dodo-ui-Separator-color-neutral);
39
+ }
40
+ .dodo-ui-Separator.color--primary {
41
+ background-color: var(--dodo-ui-Separator-color-primary);
42
+ }
43
+ .dodo-ui-Separator.color--secondary {
44
+ background-color: var(--dodo-ui-Separator-color-secondary);
45
+ }
46
+ .dodo-ui-Separator.color--safe {
47
+ background-color: var(--dodo-ui-Separator-color-safe);
48
+ }
49
+ .dodo-ui-Separator.color--warning {
50
+ background-color: var(--dodo-ui-Separator-color-warning);
51
+ }
52
+ .dodo-ui-Separator.color--danger {
53
+ background-color: var(--dodo-ui-Separator-color-danger);
54
+ }
55
+ .dodo-ui-Separator.orientation--horizontal {
56
+ display: flex;
57
+ height: var(--dodo-ui-element-border-width);
58
+ width: 100%;
59
+ margin: calc(var(--dodo-ui-space) * 1) 0;
60
+ }
61
+ .dodo-ui-Separator.orientation--vertical {
62
+ display: inline-flex;
63
+ height: 100%;
64
+ width: var(--dodo-ui-element-border-width);
65
+ margin: 0 calc(var(--dodo-ui-space) * 1);
66
+ }</style>
@@ -0,0 +1,22 @@
1
+ import type { ComponentColor } from '../../../../types/colors.js';
2
+ export type SeparatorOrientation = 'horizontal' | 'vertical';
3
+ export declare const separatorOrientationArray: SeparatorOrientation[];
4
+ export interface SeparatorProps {
5
+ /** Separator ref */
6
+ ref?: HTMLDivElement;
7
+ /** Custom css class */
8
+ class?: string;
9
+ /** Id */
10
+ id?: string;
11
+ /** What color to use? */
12
+ color?: ComponentColor;
13
+ /** Separator Width */
14
+ width?: string;
15
+ /** Separator Height */
16
+ height?: string;
17
+ /** Separator orientation, 'horizontal', 'vertical'*/
18
+ orientation?: SeparatorOrientation;
19
+ }
20
+ declare const Separator: import("svelte").Component<SeparatorProps, {}, "ref">;
21
+ type Separator = ReturnType<typeof Separator>;
22
+ export default Separator;
@@ -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,49 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import DynamicInput, { dynamicInputVariantArray } from './DynamicInput.svelte';
3
+ import { componentSizeArray } from '../../../../types/size.js';
4
+ import { textInputTypeArray } from '../../../components/Form/TextInput/TextInput.svelte';
5
+ import Icon from '@iconify/svelte';
6
+ export const storyDynamicInputArgTypes = {
7
+ type: {
8
+ control: { type: 'select' },
9
+ options: textInputTypeArray,
10
+ },
11
+ variant: {
12
+ control: { type: 'select' },
13
+ options: dynamicInputVariantArray,
14
+ },
15
+ size: {
16
+ control: { type: 'select' },
17
+ options: componentSizeArray,
18
+ },
19
+ };
20
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
21
+ const { Story } = defineMeta({
22
+ component: DynamicInput,
23
+ tags: ['autodocs'],
24
+ argTypes: storyDynamicInputArgTypes,
25
+ args: { value: 'Hello world!' },
26
+ });
27
+ </script>
28
+
29
+ <Story name="Default" />
30
+
31
+ <!-- Clickable button type Variant -->
32
+ <Story name="VariantButton" args={{ variant: 'button' }} />
33
+
34
+ <!-- Clickable button type Variant with placeholder -->
35
+ <Story
36
+ name="ButtonWithPlaceholder"
37
+ args={{ variant: 'button', placeholder: 'Type Something...', value: '' }}
38
+ />
39
+
40
+ <Story name="CustomInputContent" asChild>
41
+ <DynamicInput variant="button" value="Hello world!">
42
+ {#snippet customInputContent(value)}
43
+ <div>
44
+ {`${value}`}
45
+ <Icon icon="material-symbols:ads-click" width="24" height="24" style="color: #d21313" />
46
+ </div>
47
+ {/snippet}
48
+ </DynamicInput>
49
+ </Story>
@@ -1,8 +1,6 @@
1
- import { type SimpleSelectOption } from './SimpleSelect.svelte';
1
+ import DynamicInput from './DynamicInput.svelte';
2
2
  import type { StoryBookArgTypes } from '../../../../storybook-types.js';
3
- import SimpleSelect from './SimpleSelect.svelte';
4
- export declare const storySimpleSelectArgTypes: StoryBookArgTypes;
5
- export declare const storySimpleSelectOptions: SimpleSelectOption[];
3
+ export declare const storyDynamicInputArgTypes: StoryBookArgTypes;
6
4
  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> {
7
5
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
8
6
  $$bindings?: Bindings;
@@ -16,8 +14,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
16
14
  };
17
15
  z_$$bindings?: Bindings;
18
16
  }
19
- declare const SimpleSelect: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
17
+ declare const DynamicInput: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
20
18
  [evt: string]: CustomEvent<any>;
21
19
  }, {}, {}, string>;
22
- type SimpleSelect = InstanceType<typeof SimpleSelect>;
23
- export default SimpleSelect;
20
+ type DynamicInput = InstanceType<typeof DynamicInput>;
21
+ export default DynamicInput;
@@ -0,0 +1,92 @@
1
+ <script lang="ts" module>import {} from '../../../../index.js';
2
+ export const dynamicInputVariantArray = ['input', 'button'];
3
+ </script>
4
+
5
+ <script lang="ts">"use strict";
6
+ let { type = 'text', name, id, class: className = '', disabled = false, onchange, oninput, onblur, onfocus, onpaste, oncopy, oncut, value = $bindable(), placeholder, ref = $bindable(), readonly = false, variant = 'input', size = 'normal', onclick, customInputContent, } = $props();
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ let customInputContentTyped = customInputContent;
9
+ function onclickMod(e) {
10
+ if (onfocus) {
11
+ onfocus(e);
12
+ }
13
+ if (onclick) {
14
+ onclick(e);
15
+ }
16
+ }
17
+ </script>
18
+
19
+ {#if variant === 'button'}
20
+ <button
21
+ {id}
22
+ class={[
23
+ 'dodo-ui-DynamicInput',
24
+ `size--${size}`,
25
+ `variant--${variant}`,
26
+ `${!value ? 'placeholder' : ''}`,
27
+ className,
28
+ ].join(' ')}
29
+ bind:this={ref}
30
+ onclick={onclickMod}
31
+ {onblur}
32
+ {disabled}
33
+ >
34
+ {#if customInputContentTyped}
35
+ {@render customInputContentTyped(value)}
36
+ {:else}
37
+ {`${value}` || placeholder}
38
+ {/if}
39
+ </button>
40
+ {:else}
41
+ <input
42
+ class={['dodo-ui-DynamicInput', `size--${size}`, `variant--${variant}`, className].join(' ')}
43
+ {type}
44
+ {name}
45
+ {id}
46
+ {disabled}
47
+ {oninput}
48
+ {onchange}
49
+ {onfocus}
50
+ {onblur}
51
+ {onpaste}
52
+ {oncopy}
53
+ {oncut}
54
+ {placeholder}
55
+ bind:value
56
+ bind:this={ref}
57
+ {readonly}
58
+ />
59
+ {/if}
60
+
61
+ <style>.dodo-ui-DynamicInput {
62
+ flex: 1;
63
+ border: 0;
64
+ outline: 0;
65
+ height: 100%;
66
+ background-color: transparent;
67
+ font-family: inherit;
68
+ color: inherit;
69
+ letter-spacing: 0.3px;
70
+ margin: 0;
71
+ }
72
+ .dodo-ui-DynamicInput.variant--button {
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: flex-start;
76
+ cursor: pointer;
77
+ }
78
+ .dodo-ui-DynamicInput.variant--button.placeholder {
79
+ opacity: 0.6;
80
+ }
81
+ .dodo-ui-DynamicInput.size--normal {
82
+ font-size: 1rem;
83
+ padding: 0 calc(var(--dodo-ui-space-small) * 2);
84
+ }
85
+ .dodo-ui-DynamicInput.size--small {
86
+ padding: 0 var(--dodo-ui-space);
87
+ font-size: 0.9rem;
88
+ }
89
+ .dodo-ui-DynamicInput.size--large {
90
+ font-size: 1.1rem;
91
+ padding: 0 calc(var(--dodo-ui-space) * 2);
92
+ }</style>
@@ -0,0 +1,60 @@
1
+ import { type ComponentSize, type TextInputType } from '../../../../index.js';
2
+ import type { Snippet } from 'svelte';
3
+ import type { ChangeEventHandler, ClipboardEventHandler, FocusEventHandler, FormEventHandler, MouseEventHandler } from 'svelte/elements';
4
+ export type DynamicInputVariant = 'input' | 'button';
5
+ export declare const dynamicInputVariantArray: DynamicInputVariant[];
6
+ export type DynamicInputClickEvent = MouseEvent & {
7
+ currentTarget: EventTarget & HTMLButtonElement;
8
+ };
9
+ export type DynamicInputFocusEvent = FocusEvent & {
10
+ currentTarget: EventTarget & (HTMLInputElement | HTMLButtonElement);
11
+ };
12
+ export interface DynamicInputProps {
13
+ /** How large should the button be? */
14
+ size?: ComponentSize;
15
+ /** Input type? */
16
+ type?: TextInputType;
17
+ /** Input ref */
18
+ ref?: HTMLInputElement | HTMLButtonElement;
19
+ /** Input value */
20
+ value?: string | number;
21
+ /** variant */
22
+ variant?: DynamicInputVariant;
23
+ /** How round should the border radius be? */
24
+ placeholder?: string;
25
+ /** disabled state */
26
+ disabled?: boolean;
27
+ /** Read only ? */
28
+ readonly?: boolean;
29
+ /** Name */
30
+ name?: string;
31
+ /** Id */
32
+ id?: string;
33
+ /** Icon before button content */
34
+ before?: Snippet;
35
+ /** Icon after button content */
36
+ after?: Snippet;
37
+ /** Custom css class*/
38
+ class?: string;
39
+ /** The onclick event handler */
40
+ onclick?: MouseEventHandler<HTMLButtonElement>;
41
+ /** oninput event handler */
42
+ oninput?: FormEventHandler<HTMLInputElement>;
43
+ /** onchange event handler */
44
+ onchange?: ChangeEventHandler<HTMLInputElement>;
45
+ /** onblur event handler */
46
+ onblur?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
47
+ /** onfocus event handler */
48
+ onfocus?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
49
+ /** onpaste event handler */
50
+ onpaste?: ClipboardEventHandler<HTMLInputElement>;
51
+ /** oncopy event handler */
52
+ oncopy?: ClipboardEventHandler<HTMLInputElement>;
53
+ /** oncut event handler */
54
+ oncut?: ClipboardEventHandler<HTMLInputElement>;
55
+ /** custom Content Formatting for variant button */
56
+ customInputContent?: (value: string | number) => Snippet;
57
+ }
58
+ declare const DynamicInput: import("svelte").Component<DynamicInputProps, {}, "ref" | "value">;
59
+ type DynamicInput = ReturnType<typeof DynamicInput>;
60
+ export default DynamicInput;
@@ -1,17 +1,14 @@
1
1
  <script module>
2
2
  import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import SimpleSelect from '../SimpleSelect.svelte';
4
- import {
5
- storySimpleSelectArgTypes,
6
- storySimpleSelectOptions,
7
- } from '../SimpleSelect.stories.svelte';
3
+ import DynamicInput from '../DynamicInput.svelte';
4
+ import { storyDynamicInputArgTypes } from '../DynamicInput.stories.svelte';
8
5
 
9
6
  // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
10
7
  const { Story } = defineMeta({
11
- component: SimpleSelect,
8
+ component: DynamicInput,
12
9
  tags: ['autodocs'],
13
- argTypes: storySimpleSelectArgTypes,
14
- args: { options: storySimpleSelectOptions },
10
+ argTypes: storyDynamicInputArgTypes,
11
+ args: { value: 'Hello world!' },
15
12
  });
16
13
  </script>
17
14
 
@@ -0,0 +1,26 @@
1
+ export default Size;
2
+ type Size = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Size: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -1,5 +1,8 @@
1
- <script lang="ts">let { size = 'normal', roundness = 1, outline = true, class: className = '', disabled = false, before, after, error = false, focused = false, children, ref = $bindable(), } = $props();
2
- export {};
1
+ <script lang="ts" module>export {};
2
+ </script>
3
+
4
+ <script lang="ts">"use strict";
5
+ let { size = 'normal', roundness = 1, outline = true, class: className = '', disabled = false, before, after, error = false, focused = false, children, ref = $bindable(), } = $props();
3
6
  </script>
4
7
 
5
8
  <div
@@ -21,6 +24,7 @@ export {};
21
24
  {#if children}
22
25
  {@render children()}
23
26
  {/if}
27
+
24
28
  {#if after}
25
29
  <span class="content--after">
26
30
  {@render after()}
@@ -1,7 +1,7 @@
1
1
  import type { ComponentRoundness } from '../../../../types/roundness.js';
2
2
  import type { ComponentSize } from '../../../../types/size.js';
3
3
  import type { Snippet } from 'svelte';
4
- interface InputEnclosureProps {
4
+ export interface InputEnclosureProps {
5
5
  /** InputEnclosure contents goes here */
6
6
  children?: Snippet;
7
7
  /** InputEnclosure ref */
@@ -0,0 +1,119 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import { Menu, MenuItem, Popper } from '../../../../index.js';
3
+ import Button from '../../../components/Form/Button/Button.svelte';
4
+ import { positionXArray, positionYArray } from '../../../../types/position.js';
5
+ export const storyPopperArgTypes = {
6
+ popupPositionX: {
7
+ control: { type: 'select' },
8
+ options: positionXArray,
9
+ },
10
+ popupPositionY: {
11
+ control: { type: 'select' },
12
+ options: positionYArray,
13
+ },
14
+ };
15
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
16
+ const { Story } = defineMeta({
17
+ component: Popper,
18
+ tags: ['autodocs'],
19
+ argTypes: storyPopperArgTypes,
20
+ parameters: {
21
+ docs: {
22
+ story: {
23
+ height: '200px',
24
+ inline: false,
25
+ },
26
+ },
27
+ },
28
+ });
29
+ let open = $state(false);
30
+ </script>
31
+
32
+ <Story name="Default" args={{ open, onClickOutside: () => (open = false) }} asChild>
33
+ <Popper {open} onClickOutside={() => (open = false)}>
34
+ <Button onclick={() => (open = true)}>Click to see Popup</Button>
35
+ {#snippet popupChildren()}
36
+ <Menu>
37
+ <MenuItem>One</MenuItem>
38
+ <MenuItem>Two</MenuItem>
39
+ <MenuItem>Three</MenuItem>
40
+ </Menu>
41
+ {/snippet}
42
+ </Popper>
43
+ </Story>
44
+
45
+ <Story name="MenuOpen" args={{ open: true }} asChild>
46
+ <Popper open>
47
+ Hello! how are you doing?
48
+ {#snippet popupChildren()}
49
+ <Menu>
50
+ <MenuItem>One</MenuItem>
51
+ <MenuItem>Two</MenuItem>
52
+ <MenuItem>Three</MenuItem>
53
+ </Menu>
54
+ {/snippet}
55
+ </Popper>
56
+ </Story>
57
+
58
+ <Story
59
+ name="CustomPaperProps"
60
+ args={{
61
+ open: true,
62
+ paperProps: {
63
+ color: 'primary',
64
+ },
65
+ }}
66
+ asChild
67
+ >
68
+ <Popper
69
+ open
70
+ paperProps={{
71
+ color: 'primary',
72
+ }}
73
+ >
74
+ Hello! how are you doing?
75
+ {#snippet popupChildren()}
76
+ <Menu>
77
+ <MenuItem>One</MenuItem>
78
+ <MenuItem>Two</MenuItem>
79
+ <MenuItem>Three</MenuItem>
80
+ </Menu>
81
+ {/snippet}
82
+ </Popper>
83
+ </Story>
84
+
85
+ <Story name="FullWidth" asChild>
86
+ <Popper {open} fullWidth onClickOutside={() => (open = false)}>
87
+ <Button onclick={() => (open = true)}>Click to see Popup</Button>
88
+
89
+ {#snippet popupChildren()}
90
+ <Menu>
91
+ <MenuItem>One</MenuItem>
92
+ <MenuItem>Two</MenuItem>
93
+ <MenuItem>Three</MenuItem>
94
+ </Menu>
95
+ {/snippet}
96
+ </Popper>
97
+ </Story>
98
+
99
+ <Story
100
+ name="CustomPopup"
101
+ args={{
102
+ open,
103
+ onClickOutside: () => (open = false),
104
+ }}
105
+ asChild
106
+ >
107
+ <Popper {open} onClickOutside={() => (open = false)}>
108
+ <Button onclick={() => (open = true)}>Click to see Popup</Button>
109
+
110
+ {#snippet customPopup(popperLocation)}
111
+ {#if open}
112
+ <Menu>
113
+ <MenuItem>{popperLocation?.height}</MenuItem>
114
+ <MenuItem>{popperLocation?.width}</MenuItem>
115
+ </Menu>
116
+ {/if}
117
+ {/snippet}
118
+ </Popper>
119
+ </Story>
@@ -0,0 +1,21 @@
1
+ import type { StoryBookArgTypes } from '../../../../storybook-types.js';
2
+ import { Popper } from '../../../../index.js';
3
+ export declare const storyPopperArgTypes: StoryBookArgTypes;
4
+ 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> {
5
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
6
+ $$bindings?: Bindings;
7
+ } & Exports;
8
+ (internal: unknown, props: {
9
+ $$events?: Events;
10
+ $$slots?: Slots;
11
+ }): Exports & {
12
+ $set?: any;
13
+ $on?: any;
14
+ };
15
+ z_$$bindings?: Bindings;
16
+ }
17
+ declare const Popper: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type Popper = InstanceType<typeof Popper>;
21
+ export default Popper;