@flightlesslabs/dodo-ui 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/index.d.ts +15 -0
  2. package/dist/index.js +12 -0
  3. package/dist/stories/Home.mdx +1 -1
  4. package/dist/stories/components/Form/Button/Button.stories.svelte +10 -5
  5. package/dist/stories/components/Form/Button/Button.svelte +216 -208
  6. package/dist/stories/components/Form/Button/Button.svelte.d.ts +8 -3
  7. package/dist/stories/components/Form/Button/Events/Events.stories.svelte +40 -0
  8. package/dist/stories/components/Form/Button/Events/Events.stories.svelte.d.ts +18 -0
  9. package/dist/stories/components/Form/Button/utils/scss/mixins.scss +21 -21
  10. package/dist/stories/components/Form/FormControl/FormControl.stories.svelte +27 -0
  11. package/dist/stories/components/Form/FormControl/FormControl.stories.svelte.d.ts +19 -0
  12. package/dist/stories/components/Form/FormControl/FormControl.svelte +34 -0
  13. package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +20 -0
  14. package/dist/stories/components/Form/Label/Label.stories.svelte +21 -0
  15. package/dist/stories/components/Form/Label/Label.stories.svelte.d.ts +19 -0
  16. package/dist/stories/components/Form/Label/Label.svelte +19 -0
  17. package/dist/stories/components/Form/Label/Label.svelte.d.ts +18 -0
  18. package/dist/stories/components/Form/Message/Message.stories.svelte +46 -0
  19. package/dist/stories/components/Form/Message/Message.stories.svelte.d.ts +19 -0
  20. package/dist/stories/components/Form/Message/Message.svelte +39 -0
  21. package/dist/stories/components/Form/Message/Message.svelte.d.ts +17 -0
  22. package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte +168 -0
  23. package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte.d.ts +18 -0
  24. package/dist/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +53 -0
  25. package/dist/stories/components/Form/PasswordInput/PasswordInput.stories.svelte.d.ts +21 -0
  26. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +196 -0
  27. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +63 -0
  28. package/dist/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +20 -0
  29. package/dist/stories/components/Form/{ExampleButton/ExampleButton.stories.svelte.d.ts → PasswordInput/Roundness/Roundness.stories.svelte.d.ts} +3 -4
  30. package/dist/stories/components/Form/PasswordInput/Size/Size.stories.svelte +16 -0
  31. package/dist/stories/components/Form/PasswordInput/Size/Size.stories.svelte.d.ts +26 -0
  32. package/dist/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +31 -0
  33. package/dist/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte.d.ts +26 -0
  34. package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte +148 -0
  35. package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte.d.ts +18 -0
  36. package/dist/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +21 -0
  37. package/dist/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte.d.ts +26 -0
  38. package/dist/stories/components/Form/TextInput/Size/Size.stories.svelte +17 -0
  39. package/dist/stories/components/Form/TextInput/Size/Size.stories.svelte.d.ts +26 -0
  40. package/dist/stories/components/Form/TextInput/TextInput.stories.svelte +37 -0
  41. package/dist/stories/components/Form/TextInput/TextInput.stories.svelte.d.ts +21 -0
  42. package/dist/stories/components/Form/TextInput/TextInput.svelte +168 -0
  43. package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +60 -0
  44. package/dist/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +47 -0
  45. package/dist/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte.d.ts +26 -0
  46. package/dist/stories/developer tools/Intro.mdx +7 -0
  47. package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +27 -0
  48. package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte.d.ts +26 -0
  49. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +29 -0
  50. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte.d.ts +21 -0
  51. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +79 -0
  52. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +26 -0
  53. package/dist/styles/_components.css +8 -7
  54. package/dist/styles/_minimal-reset.css +3 -0
  55. package/dist/styles/global.css +1 -0
  56. package/package.json +30 -30
  57. package/src/lib/index.ts +26 -0
  58. package/src/lib/stories/components/Form/Button/Button.stories.svelte +10 -5
  59. package/src/lib/stories/components/Form/Button/Button.svelte +40 -24
  60. package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +42 -0
  61. package/src/lib/stories/components/Form/Button/utils/scss/mixins.scss +21 -21
  62. package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +29 -0
  63. package/src/lib/stories/components/Form/FormControl/FormControl.svelte +67 -0
  64. package/src/lib/stories/components/Form/Label/Label.stories.svelte +23 -0
  65. package/src/lib/stories/components/Form/Label/Label.svelte +45 -0
  66. package/src/lib/stories/components/Form/Message/Message.stories.svelte +48 -0
  67. package/src/lib/stories/components/Form/Message/Message.svelte +71 -0
  68. package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +174 -0
  69. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +57 -0
  70. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +338 -0
  71. package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +20 -0
  72. package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +16 -0
  73. package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +31 -0
  74. package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +153 -0
  75. package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +21 -0
  76. package/src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte +17 -0
  77. package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +41 -0
  78. package/src/lib/stories/components/Form/TextInput/TextInput.svelte +301 -0
  79. package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +47 -0
  80. package/src/lib/stories/developer tools/Intro.mdx +7 -0
  81. package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +27 -0
  82. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +33 -0
  83. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte +128 -0
  84. package/src/lib/styles/_components.css +8 -7
  85. package/src/lib/styles/_minimal-reset.css +3 -0
  86. package/src/lib/styles/global.css +1 -0
  87. package/dist/stories/components/Form/ExampleButton/ExampleButton.stories.svelte +0 -30
  88. package/dist/stories/components/Form/ExampleButton/ExampleButton.svelte +0 -14
  89. package/dist/stories/components/Form/ExampleButton/ExampleButton.svelte.d.ts +0 -16
  90. package/dist/stories/components/Form/ExampleButton/button.css +0 -30
  91. package/src/lib/stories/components/Form/ExampleButton/ExampleButton.stories.svelte +0 -30
  92. package/src/lib/stories/components/Form/ExampleButton/ExampleButton.svelte +0 -29
  93. package/src/lib/stories/components/Form/ExampleButton/button.css +0 -30
@@ -0,0 +1,128 @@
1
+ <script lang="ts">
2
+ import type { ComponentSize } from '$lib/types.js';
3
+ import type { Snippet } from 'svelte';
4
+ import type { MouseEventHandler } from 'svelte/elements';
5
+
6
+ interface UtilityButtonProps {
7
+ /** Button contents goes here*/
8
+ children?: Snippet;
9
+ /** Button ref */
10
+ ref?: HTMLButtonElement;
11
+ /** How large should the button be? */
12
+ size?: ComponentSize;
13
+ /** Button disabled state */
14
+ disabled?: boolean;
15
+ /** Name */
16
+ name?: string;
17
+ /** Id */
18
+ id?: string;
19
+ /** Title (for tooltip) */
20
+ title?: string;
21
+ /** Custom css class*/
22
+ class?: string;
23
+ /** The onclick event handler */
24
+ onclick?: MouseEventHandler<HTMLButtonElement>;
25
+ }
26
+
27
+ let {
28
+ children,
29
+ size = 'normal',
30
+ name,
31
+ id,
32
+ title,
33
+ class: className = '',
34
+ disabled = false,
35
+ onclick,
36
+ ref = $bindable<HTMLButtonElement>(),
37
+ }: UtilityButtonProps = $props();
38
+ </script>
39
+
40
+ <button
41
+ class={['dodo-ui-UtilityButton', `size--${size}`, className].join(' ')}
42
+ {name}
43
+ {id}
44
+ {title}
45
+ {disabled}
46
+ {onclick}
47
+ bind:this={ref}
48
+ >
49
+ {#if children}
50
+ {@render children()}
51
+ {/if}
52
+ </button>
53
+
54
+ <style lang="scss">
55
+ :global(:root) {
56
+ --dodo-ui-UtilityButton-hover: var(--dodo-color-primary-600);
57
+ --dodo-ui-UtilityButton-active: var(--dodo-color-primary-600);
58
+
59
+ --dodo-ui-UtilityButton-disabled-color: var(--dodo-color-default-400);
60
+ }
61
+
62
+ :global(.dodo-theme--dark) {
63
+ --dodo-ui-UtilityButton-hover: var(--dodo-color-primary-600);
64
+ --dodo-ui-UtilityButton-active: var(--dodo-color-primary-600);
65
+
66
+ --dodo-ui-UtilityButton-disabled-color: var(--dodo-color-default-500);
67
+ }
68
+
69
+ .dodo-ui-UtilityButton {
70
+ cursor: pointer;
71
+ outline: none;
72
+ transition: all 150ms;
73
+ text-decoration: none;
74
+ margin: 0;
75
+ display: inline-flex;
76
+ justify-content: center;
77
+ align-items: center;
78
+ font-family: inherit;
79
+ background-color: transparent;
80
+ border: 0;
81
+ outline: 0;
82
+ padding: 0;
83
+ color: var(--dodo-color-default-700);
84
+ border-radius: 50%;
85
+ font-family: inherit;
86
+
87
+ &:hover {
88
+ color: var(--dodo-ui-UtilityButton-hover);
89
+ }
90
+
91
+ &:active {
92
+ color: var(--dodo-ui-UtilityButton-active);
93
+ }
94
+
95
+ &.size {
96
+ &--normal {
97
+ height: var(--dodo-ui-element-height-normal);
98
+ width: var(--dodo-ui-element-height-normal);
99
+ font-size: 1rem;
100
+ }
101
+
102
+ &--small {
103
+ height: var(--dodo-ui-element-height-small);
104
+ width: var(--dodo-ui-element-height-small);
105
+ font-size: 0.9rem;
106
+ }
107
+
108
+ &--large {
109
+ height: var(--dodo-ui-element-height-large);
110
+ width: var(--dodo-ui-element-height-large);
111
+ font-size: 1.1rem;
112
+ }
113
+ }
114
+
115
+ &[disabled] {
116
+ cursor: initial;
117
+ color: var(--dodo-ui-UtilityButton-disabled-color);
118
+
119
+ &:hover {
120
+ color: var(--dodo-ui-UtilityButton-disabled-color);
121
+ }
122
+
123
+ &:active {
124
+ color: var(--dodo-ui-UtilityButton-disabled-color);
125
+ }
126
+ }
127
+ }
128
+ </style>
@@ -1,10 +1,11 @@
1
1
  :root {
2
- --dodo-ui-element-height-normal: 2.5rem;
3
- --dodo-ui-element-height-small: 2.125rem;
4
- --dodo-ui-element-height-large: 3rem;
2
+ --dodo-ui-element-height-small: 34px;
3
+ --dodo-ui-element-height-normal: 40px;
4
+ --dodo-ui-element-height-large: 50px;
5
5
 
6
- --dodo-ui-element-roundness-base: 0.438rem;
7
- --dodo-ui-element-roundness-1: var(--dodo-ui-element-roundness-base);
8
- --dodo-ui-element-roundness-2: calc(var(--dodo-ui-element-roundness-base) * 2);
9
- --dodo-ui-element-roundness-3: calc(var(--dodo-ui-element-roundness-base) * 4);
6
+ --dodo-ui-element-roundness-1x: 7px;
7
+ --dodo-ui-element-roundness-2x: 13px;
8
+ --dodo-ui-element-roundness-3x: 31px;
9
+
10
+ --dodo-ui-element-border-width: 1px;
10
11
  }
@@ -0,0 +1,3 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
@@ -1,3 +1,4 @@
1
+ @import '_minimal-reset.css';
1
2
  @import '_colors-base.css';
2
3
  @import '_colors.css';
3
4
  @import '_breakpoint.css';
@@ -1,30 +0,0 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import ExampleButton from './ExampleButton.svelte';
4
- import { fn } from '@storybook/test';
5
-
6
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
- const { Story } = defineMeta({
8
- component: ExampleButton,
9
- tags: ['autodocs'],
10
- argTypes: {
11
- backgroundColor: { control: 'color' },
12
- size: {
13
- control: { type: 'select' },
14
- options: ['small', 'medium', 'large'],
15
- },
16
- },
17
- args: {
18
- onClick: fn(),
19
- },
20
- });
21
- </script>
22
-
23
- <!-- More on writing stories with args: https://storybook.js.org/docs/writing-stories/args -->
24
- <Story name="Primary" args={{ primary: true, label: 'Button' }} />
25
-
26
- <Story name="Secondary" args={{ label: 'Button' }} />
27
-
28
- <Story name="Large" args={{ size: 'large', label: 'Button' }} />
29
-
30
- <Story name="Small" args={{ size: 'small', label: 'Button' }} />
@@ -1,14 +0,0 @@
1
- <script lang="ts">import './button.css';
2
- const { primary = false, backgroundColor, size = 'medium', label, onClick } = $props();
3
- </script>
4
-
5
- <button
6
- type="button"
7
- class={['storybook-button', `storybook-button--${size}`].join(' ')}
8
- class:storybook-button--primary={primary}
9
- class:storybook-button--secondary={!primary}
10
- style:background-color={backgroundColor}
11
- onclick={onClick}
12
- >
13
- {label}
14
- </button>
@@ -1,16 +0,0 @@
1
- import './button.css';
2
- interface Props {
3
- /** Is this the principal call to action on the page? */
4
- primary?: boolean;
5
- /** What background color to use */
6
- backgroundColor?: string;
7
- /** How large should the button be? */
8
- size?: 'small' | 'medium' | 'large';
9
- /** Button contents */
10
- label: string;
11
- /** The onclick event handler */
12
- onClick?: () => void;
13
- }
14
- declare const ExampleButton: import("svelte").Component<Props, {}, "">;
15
- type ExampleButton = ReturnType<typeof ExampleButton>;
16
- export default ExampleButton;
@@ -1,30 +0,0 @@
1
- .storybook-button {
2
- display: inline-block;
3
- cursor: pointer;
4
- border: 0;
5
- border-radius: 3em;
6
- font-weight: 700;
7
- line-height: 1;
8
- font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
- }
10
- .storybook-button--primary {
11
- background-color: #555ab9;
12
- color: white;
13
- }
14
- .storybook-button--secondary {
15
- box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
16
- background-color: transparent;
17
- color: #333;
18
- }
19
- .storybook-button--small {
20
- padding: 10px 16px;
21
- font-size: 12px;
22
- }
23
- .storybook-button--medium {
24
- padding: 11px 20px;
25
- font-size: 14px;
26
- }
27
- .storybook-button--large {
28
- padding: 12px 24px;
29
- font-size: 16px;
30
- }
@@ -1,30 +0,0 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import ExampleButton from './ExampleButton.svelte';
4
- import { fn } from '@storybook/test';
5
-
6
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
- const { Story } = defineMeta({
8
- component: ExampleButton,
9
- tags: ['autodocs'],
10
- argTypes: {
11
- backgroundColor: { control: 'color' },
12
- size: {
13
- control: { type: 'select' },
14
- options: ['small', 'medium', 'large'],
15
- },
16
- },
17
- args: {
18
- onClick: fn(),
19
- },
20
- });
21
- </script>
22
-
23
- <!-- More on writing stories with args: https://storybook.js.org/docs/writing-stories/args -->
24
- <Story name="Primary" args={{ primary: true, label: 'Button' }} />
25
-
26
- <Story name="Secondary" args={{ label: 'Button' }} />
27
-
28
- <Story name="Large" args={{ size: 'large', label: 'Button' }} />
29
-
30
- <Story name="Small" args={{ size: 'small', label: 'Button' }} />
@@ -1,29 +0,0 @@
1
- <script lang="ts">
2
- import './button.css';
3
-
4
- interface Props {
5
- /** Is this the principal call to action on the page? */
6
- primary?: boolean;
7
- /** What background color to use */
8
- backgroundColor?: string;
9
- /** How large should the button be? */
10
- size?: 'small' | 'medium' | 'large';
11
- /** Button contents */
12
- label: string;
13
- /** The onclick event handler */
14
- onClick?: () => void;
15
- }
16
-
17
- const { primary = false, backgroundColor, size = 'medium', label, onClick }: Props = $props();
18
- </script>
19
-
20
- <button
21
- type="button"
22
- class={['storybook-button', `storybook-button--${size}`].join(' ')}
23
- class:storybook-button--primary={primary}
24
- class:storybook-button--secondary={!primary}
25
- style:background-color={backgroundColor}
26
- onclick={onClick}
27
- >
28
- {label}
29
- </button>
@@ -1,30 +0,0 @@
1
- .storybook-button {
2
- display: inline-block;
3
- cursor: pointer;
4
- border: 0;
5
- border-radius: 3em;
6
- font-weight: 700;
7
- line-height: 1;
8
- font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
- }
10
- .storybook-button--primary {
11
- background-color: #555ab9;
12
- color: white;
13
- }
14
- .storybook-button--secondary {
15
- box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
16
- background-color: transparent;
17
- color: #333;
18
- }
19
- .storybook-button--small {
20
- padding: 10px 16px;
21
- font-size: 12px;
22
- }
23
- .storybook-button--medium {
24
- padding: 11px 20px;
25
- font-size: 14px;
26
- }
27
- .storybook-button--large {
28
- padding: 12px 24px;
29
- font-size: 16px;
30
- }