@flightlesslabs/dodo-ui 0.1.1 → 0.1.2

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.
@@ -1,7 +1,6 @@
1
1
  <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
2
  import { fn } from '@storybook/test';
3
3
  import Button from './Button.svelte';
4
- import Icon from '@iconify/svelte';
5
4
  export const storyButtonArgTypes = {
6
5
  type: {
7
6
  control: { type: 'select' },
@@ -15,6 +14,10 @@ export const storyButtonArgTypes = {
15
14
  control: { type: 'select' },
16
15
  options: ['text', 'solid'],
17
16
  },
17
+ roundness: {
18
+ control: { type: 'select' },
19
+ options: [false, 1, 2, 3, 'full'],
20
+ },
18
21
  size: {
19
22
  control: { type: 'select' },
20
23
  options: ['small', 'medium', 'large'],
@@ -18,6 +18,12 @@ export declare const storyButtonArgTypes: {
18
18
  };
19
19
  options: string[];
20
20
  };
21
+ roundness: {
22
+ control: {
23
+ type: string;
24
+ };
25
+ options: (string | number | boolean)[];
26
+ };
21
27
  size: {
22
28
  control: {
23
29
  type: string;
@@ -1,4 +1,4 @@
1
- <script lang="ts">const { children, type = 'button', size = 'normal', color = 'primary', variant = 'text', outline = false, compact = false, name, id, title, class: className = '', disabled = false, onclick, before, after, href, download, hreflang, media, ping, rel, target, anchorMediaType, referrerpolicy, } = $props();
1
+ <script lang="ts">const { children, type = 'button', size = 'normal', color = 'default', roundness = 1, variant = 'text', outline = false, compact = false, name, id, title, class: className = '', disabled = false, onclick, before, after, href, download, hreflang, media, ping, rel, target, anchorMediaType, referrerpolicy, } = $props();
2
2
  export {};
3
3
  </script>
4
4
 
@@ -37,10 +37,11 @@ export {};
37
37
  class:compact
38
38
  class:disabled
39
39
  class={[
40
- 'dodo-button',
40
+ 'dodo-ui-button',
41
41
  `size--${size}`,
42
42
  `color--${color}`,
43
43
  `variant--${variant}`,
44
+ `roundness--${roundness}`,
44
45
  className,
45
46
  ].join(' ')}
46
47
  >
@@ -51,10 +52,11 @@ export {};
51
52
  class:outline
52
53
  class:compact
53
54
  class={[
54
- 'dodo-button',
55
+ 'dodo-ui-button',
55
56
  `size--${size}`,
56
57
  `color--${color}`,
57
58
  `variant--${variant}`,
59
+ `roundness--${roundness}`,
58
60
  className,
59
61
  ].join(' ')}
60
62
  {type}
@@ -68,4 +70,234 @@ export {};
68
70
  </button>
69
71
  {/if}
70
72
 
71
- <style></style>
73
+ <style>.dodo-ui-button {
74
+ cursor: pointer;
75
+ outline: none;
76
+ transition: all 150ms;
77
+ text-decoration: none;
78
+ margin: 0;
79
+ display: inline-flex;
80
+ justify-content: center;
81
+ align-items: center;
82
+ font-family: inherit;
83
+ font-weight: 500;
84
+ background-color: transparent;
85
+ border: 1px solid;
86
+ border-color: transparent;
87
+ outline: 0;
88
+ color: inherit;
89
+ letter-spacing: 0.3px;
90
+ }
91
+ .dodo-ui-button.size--normal {
92
+ height: var(--dodo-ui-element-height-normal);
93
+ font-size: 1rem;
94
+ padding: 0 12px;
95
+ min-width: 45px;
96
+ }
97
+ .dodo-ui-button.size--small {
98
+ height: var(--dodo-ui-element-height-small);
99
+ padding: 0 8px;
100
+ font-size: 0.9rem;
101
+ min-width: 35px;
102
+ }
103
+ .dodo-ui-button.size--large {
104
+ height: var(--dodo-ui-element-height-large);
105
+ font-size: 1.1rem;
106
+ padding: 0 16px;
107
+ min-width: 85px;
108
+ }
109
+ .dodo-ui-button.roundness--1 {
110
+ border-radius: var(--dodo-ui-element-roundness-1);
111
+ }
112
+ .dodo-ui-button.roundness--2 {
113
+ border-radius: var(--dodo-ui-element-roundness-2);
114
+ }
115
+ .dodo-ui-button.roundness--3 {
116
+ border-radius: var(--dodo-ui-element-roundness-3);
117
+ }
118
+ .dodo-ui-button.roundness--4 {
119
+ border-radius: var(--dodo-ui-element-roundness-4);
120
+ }
121
+ .dodo-ui-button.roundness--full {
122
+ border-radius: 50%;
123
+ }
124
+ .dodo-ui-button.color--default.variant--text {
125
+ color: var(--dodo-color-default-800);
126
+ background-color: var(--dodo-color-default-100);
127
+ }
128
+ .dodo-ui-button.color--default.variant--text:hover {
129
+ background-color: var(--dodo-color-default-200);
130
+ }
131
+ .dodo-ui-button.color--default.variant--text:active {
132
+ background-color: var(--dodo-color-default-300);
133
+ }
134
+ .dodo-ui-button.color--default.variant--text.outline {
135
+ border-color: var(--dodo-color-default-400);
136
+ }
137
+ .dodo-ui-button.color--default.variant--solid {
138
+ color: var(--dodo-color-white);
139
+ background-color: var(--dodo-color-default-500);
140
+ }
141
+ .dodo-ui-button.color--default.variant--solid:hover {
142
+ background-color: var(--dodo-color-default-600);
143
+ }
144
+ .dodo-ui-button.color--default.variant--solid:active {
145
+ background-color: var(--dodo-color-default-700);
146
+ }
147
+ .dodo-ui-button.color--primary.variant--text {
148
+ color: var(--dodo-color-primary-800);
149
+ background-color: var(--dodo-color-primary-100);
150
+ }
151
+ .dodo-ui-button.color--primary.variant--text:hover {
152
+ background-color: var(--dodo-color-primary-200);
153
+ }
154
+ .dodo-ui-button.color--primary.variant--text:active {
155
+ background-color: var(--dodo-color-primary-300);
156
+ }
157
+ .dodo-ui-button.color--primary.variant--text.outline {
158
+ border-color: var(--dodo-color-primary-400);
159
+ }
160
+ .dodo-ui-button.color--primary.variant--solid {
161
+ color: var(--dodo-color-white);
162
+ background-color: var(--dodo-color-primary-500);
163
+ }
164
+ .dodo-ui-button.color--primary.variant--solid:hover {
165
+ background-color: var(--dodo-color-primary-600);
166
+ }
167
+ .dodo-ui-button.color--primary.variant--solid:active {
168
+ background-color: var(--dodo-color-primary-700);
169
+ }
170
+ .dodo-ui-button.color--safe.variant--text {
171
+ color: var(--dodo-color-safe-800);
172
+ background-color: var(--dodo-color-safe-100);
173
+ }
174
+ .dodo-ui-button.color--safe.variant--text:hover {
175
+ background-color: var(--dodo-color-safe-200);
176
+ }
177
+ .dodo-ui-button.color--safe.variant--text:active {
178
+ background-color: var(--dodo-color-safe-300);
179
+ }
180
+ .dodo-ui-button.color--safe.variant--text.outline {
181
+ border-color: var(--dodo-color-safe-400);
182
+ }
183
+ .dodo-ui-button.color--safe.variant--solid {
184
+ color: var(--dodo-color-white);
185
+ background-color: var(--dodo-color-safe-500);
186
+ }
187
+ .dodo-ui-button.color--safe.variant--solid:hover {
188
+ background-color: var(--dodo-color-safe-600);
189
+ }
190
+ .dodo-ui-button.color--safe.variant--solid:active {
191
+ background-color: var(--dodo-color-safe-700);
192
+ }
193
+ .dodo-ui-button.color--warning.variant--text {
194
+ color: var(--dodo-color-warning-800);
195
+ background-color: var(--dodo-color-warning-100);
196
+ }
197
+ .dodo-ui-button.color--warning.variant--text:hover {
198
+ background-color: var(--dodo-color-warning-200);
199
+ }
200
+ .dodo-ui-button.color--warning.variant--text:active {
201
+ background-color: var(--dodo-color-warning-300);
202
+ }
203
+ .dodo-ui-button.color--warning.variant--text.outline {
204
+ border-color: var(--dodo-color-warning-400);
205
+ }
206
+ .dodo-ui-button.color--warning.variant--solid {
207
+ color: var(--dodo-color-white);
208
+ background-color: var(--dodo-color-warning-500);
209
+ }
210
+ .dodo-ui-button.color--warning.variant--solid:hover {
211
+ background-color: var(--dodo-color-warning-600);
212
+ }
213
+ .dodo-ui-button.color--warning.variant--solid:active {
214
+ background-color: var(--dodo-color-warning-700);
215
+ }
216
+ .dodo-ui-button.color--danger.variant--text {
217
+ color: var(--dodo-color-danger-800);
218
+ background-color: var(--dodo-color-danger-100);
219
+ }
220
+ .dodo-ui-button.color--danger.variant--text:hover {
221
+ background-color: var(--dodo-color-danger-200);
222
+ }
223
+ .dodo-ui-button.color--danger.variant--text:active {
224
+ background-color: var(--dodo-color-danger-300);
225
+ }
226
+ .dodo-ui-button.color--danger.variant--text.outline {
227
+ border-color: var(--dodo-color-danger-400);
228
+ }
229
+ .dodo-ui-button.color--danger.variant--solid {
230
+ color: var(--dodo-color-white);
231
+ background-color: var(--dodo-color-danger-500);
232
+ }
233
+ .dodo-ui-button.color--danger.variant--solid:hover {
234
+ background-color: var(--dodo-color-danger-600);
235
+ }
236
+ .dodo-ui-button.color--danger.variant--solid:active {
237
+ background-color: var(--dodo-color-danger-700);
238
+ }
239
+ .dodo-ui-button.color--info.variant--text {
240
+ color: var(--dodo-color-info-800);
241
+ background-color: var(--dodo-color-info-100);
242
+ }
243
+ .dodo-ui-button.color--info.variant--text:hover {
244
+ background-color: var(--dodo-color-info-200);
245
+ }
246
+ .dodo-ui-button.color--info.variant--text:active {
247
+ background-color: var(--dodo-color-info-300);
248
+ }
249
+ .dodo-ui-button.color--info.variant--text.outline {
250
+ border-color: var(--dodo-color-info-400);
251
+ }
252
+ .dodo-ui-button.color--info.variant--solid {
253
+ color: var(--dodo-color-white);
254
+ background-color: var(--dodo-color-info-500);
255
+ }
256
+ .dodo-ui-button.color--info.variant--solid:hover {
257
+ background-color: var(--dodo-color-info-600);
258
+ }
259
+ .dodo-ui-button.color--info.variant--solid:active {
260
+ background-color: var(--dodo-color-info-700);
261
+ }
262
+ .dodo-ui-button[disabled] {
263
+ cursor: initial;
264
+ }
265
+ .dodo-ui-button[disabled].variant--text, .dodo-ui-button[disabled].variant--solid {
266
+ background-color: var(--dodo-color-default-200);
267
+ color: var(--dodo-color-default-400);
268
+ }
269
+ .dodo-ui-button[disabled].variant--text:hover, .dodo-ui-button[disabled].variant--solid:hover {
270
+ background-color: var(--dodo-color-default-200);
271
+ color: var(--dodo-color-default-400);
272
+ }
273
+ .dodo-ui-button[disabled].variant--text:active, .dodo-ui-button[disabled].variant--solid:active {
274
+ background-color: var(--dodo-color-default-200);
275
+ color: var(--dodo-color-default-400);
276
+ }
277
+ .dodo-ui-button[disabled].variant--text.outline, .dodo-ui-button[disabled].variant--solid.outline {
278
+ border-color: transparent;
279
+ }
280
+ .dodo-ui-button.compact.size--normal, .dodo-ui-button.compact.size--small, .dodo-ui-button.compact.size--large {
281
+ min-width: initial;
282
+ padding: 0;
283
+ }
284
+ .dodo-ui-button.compact.size--normal {
285
+ width: var(--dodo-ui-element-height-normal);
286
+ }
287
+ .dodo-ui-button.compact.size--small {
288
+ width: var(--dodo-ui-element-height-small);
289
+ }
290
+ .dodo-ui-button.compact.size--large {
291
+ width: var(--dodo-ui-element-height-large);
292
+ }
293
+ .dodo-ui-button .button-content--after, .dodo-ui-button .button-content--before {
294
+ display: inline-flex;
295
+ height: 100%;
296
+ align-items: center;
297
+ }
298
+ .dodo-ui-button .button-content--before {
299
+ margin-right: 6px;
300
+ }
301
+ .dodo-ui-button .button-content--after {
302
+ margin-left: 6px;
303
+ }</style>
@@ -1,4 +1,4 @@
1
- import type { ComponentSize } from '../../../../types.js';
1
+ import type { ComponentRoundness, ComponentSize } from '../../../../types.js';
2
2
  import type { Snippet } from 'svelte';
3
3
  interface ButtonProps {
4
4
  /** Button contents goes here*/
@@ -9,6 +9,8 @@ interface ButtonProps {
9
9
  size?: ComponentSize;
10
10
  /** What color to use? */
11
11
  color?: 'default' | 'primary' | 'safe' | 'warning' | 'danger' | 'info';
12
+ /** How round should the border radius be? */
13
+ roundness?: ComponentRoundness;
12
14
  /** How should the button appear? */
13
15
  variant?: 'text' | 'solid';
14
16
  /** Add a border around the button */
@@ -26,3 +26,44 @@
26
26
  <Story name="Warning" args={{ color: 'warning' }}><Button color="warning">Click me!</Button></Story>
27
27
  <Story name="Danger" args={{ color: 'danger' }}><Button color="danger">Click me!</Button></Story>
28
28
  <Story name="Info" args={{ color: 'info' }}><Button color="info">Click me!</Button></Story>
29
+
30
+ <Story
31
+ name="Default Solid"
32
+ args={{ outline: false, disabled: false, compact: false, variant: 'solid' }}
33
+ >
34
+ <Button variant="solid">Click me!</Button>
35
+ </Story>
36
+ <Story name="Primary Solid" args={{ color: 'primary', variant: 'solid' }}>
37
+ <Button color="primary" variant="solid">Click me!</Button>
38
+ </Story>
39
+ <Story name="Safe Solid" args={{ color: 'safe', variant: 'solid' }}>
40
+ <Button color="safe" variant="solid">Click me!</Button>
41
+ </Story>
42
+ <Story name="Warning Solid" args={{ color: 'warning', variant: 'solid' }}>
43
+ <Button color="warning" variant="solid">Click me!</Button>
44
+ </Story>
45
+ <Story name="Danger Solid" args={{ color: 'danger', variant: 'solid' }}>
46
+ <Button color="danger" variant="solid">Click me!</Button>
47
+ </Story>
48
+ <Story name="Info Solid" args={{ color: 'info', variant: 'solid' }}>
49
+ <Button color="info" variant="solid">Click me!</Button>
50
+ </Story>
51
+
52
+ <Story name="Default Outline" args={{ outline: true, disabled: false, compact: false }}>
53
+ <Button outline>Click me!</Button>
54
+ </Story>
55
+ <Story name="Primary Outline" args={{ outline: true, color: 'primary' }}>
56
+ <Button color="primary" outline>Click me!</Button>
57
+ </Story>
58
+ <Story name="Safe Outline" args={{ outline: true, color: 'safe' }}>
59
+ <Button color="safe" outline>Click me!</Button>
60
+ </Story>
61
+ <Story name="Warning Outline" args={{ outline: true, color: 'warning' }}>
62
+ <Button color="warning" outline>Click me!</Button>
63
+ </Story>
64
+ <Story name="Danger Outline" args={{ outline: true, color: 'danger' }}>
65
+ <Button color="danger" outline>Click me!</Button>
66
+ </Story>
67
+ <Story name="Info Outline" args={{ outline: true, color: 'info' }}>
68
+ <Button color="info" outline>Click me!</Button>
69
+ </Story>
@@ -20,8 +20,10 @@
20
20
  </script>
21
21
 
22
22
  <!-- Compact button with paddings stripped out and fixed size. We are using this icon library https://iconify.design/docs/icon-components/svelte/ -->
23
- <Story name="Icon Button" args={{ compact: true }}>
24
- <Button compact><Icon icon="material-symbols:app-badging" width="24" height="24" /></Button>
23
+ <Story name="Icon Button" args={{ compact: true, roundness: 'full' }}>
24
+ <Button roundness="full" compact>
25
+ <Icon icon="material-symbols:app-badging" width="18" height="18" />
26
+ </Button>
25
27
  </Story>
26
28
 
27
29
  <!-- Button with an icon in front. -->
@@ -0,0 +1,48 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { fn } from '@storybook/test';
4
+ import Button from '../Button.svelte';
5
+ import { storyButtonArgTypes } from '../Button.stories.svelte';
6
+
7
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
8
+ const { Story } = defineMeta({
9
+ component: Button,
10
+ tags: ['autodocs'],
11
+ // @ts-ignore
12
+ argTypes: {
13
+ ...storyButtonArgTypes,
14
+ },
15
+ args: {
16
+ onclick: fn(),
17
+ },
18
+ });
19
+ </script>
20
+
21
+ <Story
22
+ name="Roundness1"
23
+ args={{ outline: false, disabled: false, compact: false, roundness: 'full' }}
24
+ >
25
+ <Button roundness="full">Click me!</Button>
26
+ </Story>
27
+
28
+ <Story name="Roundness2" args={{ outline: false, disabled: false, compact: false, roundness: 2 }}>
29
+ <Button roundness={2}>Click me!</Button>
30
+ </Story>
31
+
32
+ <Story name="Roundness3" args={{ outline: false, disabled: false, compact: false, roundness: 3 }}>
33
+ <Button roundness={3}>Click me!</Button>
34
+ </Story>
35
+
36
+ <Story
37
+ name="RoundnessFalse"
38
+ args={{ outline: false, disabled: false, compact: false, roundness: false }}
39
+ >
40
+ <Button roundness={false}>Click me!</Button>
41
+ </Story>
42
+
43
+ <Story
44
+ name="RoundnessFull"
45
+ args={{ outline: false, disabled: false, compact: false, roundness: 'full' }}
46
+ >
47
+ <Button roundness="full">C</Button>
48
+ </Story>
@@ -0,0 +1,26 @@
1
+ export default Roundness;
2
+ type Roundness = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Roundness: $$__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,83 @@
1
+ :root {
2
+ /* Base colors */
3
+ --dodo-color-black: var(--dodo-color-base-black);
4
+ --dodo-color-white: var(--dodo-color-base-white);
5
+
6
+ /* Default color */
7
+ --dodo-color-default-50: var(--dodo-color-base-slate-50);
8
+ --dodo-color-default-100: var(--dodo-color-base-slate-100);
9
+ --dodo-color-default-200: var(--dodo-color-base-slate-200);
10
+ --dodo-color-default-300: var(--dodo-color-base-slate-300);
11
+ --dodo-color-default-400: var(--dodo-color-base-slate-400);
12
+ --dodo-color-default-500: var(--dodo-color-base-slate-500);
13
+ --dodo-color-default-600: var(--dodo-color-base-slate-600);
14
+ --dodo-color-default-700: var(--dodo-color-base-slate-700);
15
+ --dodo-color-default-800: var(--dodo-color-base-slate-800);
16
+ --dodo-color-default-900: var(--dodo-color-base-slate-900);
17
+ --dodo-color-default-950: var(--dodo-color-base-slate-950);
18
+
19
+ /* Primary color */
20
+ --dodo-color-primary-50: var(--dodo-color-base-violet-50);
21
+ --dodo-color-primary-100: var(--dodo-color-base-violet-100);
22
+ --dodo-color-primary-200: var(--dodo-color-base-violet-200);
23
+ --dodo-color-primary-300: var(--dodo-color-base-violet-300);
24
+ --dodo-color-primary-400: var(--dodo-color-base-violet-400);
25
+ --dodo-color-primary-500: var(--dodo-color-base-violet-500);
26
+ --dodo-color-primary-600: var(--dodo-color-base-violet-600);
27
+ --dodo-color-primary-700: var(--dodo-color-base-violet-700);
28
+ --dodo-color-primary-800: var(--dodo-color-base-violet-800);
29
+ --dodo-color-primary-900: var(--dodo-color-base-violet-900);
30
+ --dodo-color-primary-950: var(--dodo-color-base-violet-950);
31
+
32
+ /* Safe color */
33
+ --dodo-color-safe-50: var(--dodo-color-base-emerald-50);
34
+ --dodo-color-safe-100: var(--dodo-color-base-emerald-100);
35
+ --dodo-color-safe-200: var(--dodo-color-base-emerald-200);
36
+ --dodo-color-safe-300: var(--dodo-color-base-emerald-300);
37
+ --dodo-color-safe-400: var(--dodo-color-base-emerald-400);
38
+ --dodo-color-safe-500: var(--dodo-color-base-emerald-500);
39
+ --dodo-color-safe-600: var(--dodo-color-base-emerald-600);
40
+ --dodo-color-safe-700: var(--dodo-color-base-emerald-700);
41
+ --dodo-color-safe-800: var(--dodo-color-base-emerald-800);
42
+ --dodo-color-safe-900: var(--dodo-color-base-emerald-900);
43
+ --dodo-color-safe-950: var(--dodo-color-base-emerald-950);
44
+
45
+ /* Warning color */
46
+ --dodo-color-warning-50: var(--dodo-color-base-amber-50);
47
+ --dodo-color-warning-100: var(--dodo-color-base-amber-100);
48
+ --dodo-color-warning-200: var(--dodo-color-base-amber-200);
49
+ --dodo-color-warning-300: var(--dodo-color-base-amber-300);
50
+ --dodo-color-warning-400: var(--dodo-color-base-amber-400);
51
+ --dodo-color-warning-500: var(--dodo-color-base-amber-500);
52
+ --dodo-color-warning-600: var(--dodo-color-base-amber-600);
53
+ --dodo-color-warning-700: var(--dodo-color-base-amber-700);
54
+ --dodo-color-warning-800: var(--dodo-color-base-amber-800);
55
+ --dodo-color-warning-900: var(--dodo-color-base-amber-900);
56
+ --dodo-color-warning-950: var(--dodo-color-base-amber-950);
57
+
58
+ /* Danger color */
59
+ --dodo-color-danger-50: var(--dodo-color-base-red-50);
60
+ --dodo-color-danger-100: var(--dodo-color-base-red-100);
61
+ --dodo-color-danger-200: var(--dodo-color-base-red-200);
62
+ --dodo-color-danger-300: var(--dodo-color-base-red-300);
63
+ --dodo-color-danger-400: var(--dodo-color-base-red-400);
64
+ --dodo-color-danger-500: var(--dodo-color-base-red-500);
65
+ --dodo-color-danger-600: var(--dodo-color-base-red-600);
66
+ --dodo-color-danger-700: var(--dodo-color-base-red-700);
67
+ --dodo-color-danger-800: var(--dodo-color-base-red-800);
68
+ --dodo-color-danger-900: var(--dodo-color-base-red-900);
69
+ --dodo-color-danger-950: var(--dodo-color-base-red-950);
70
+
71
+ /* Info color */
72
+ --dodo-color-info-50: var(--dodo-color-base-cyan-50);
73
+ --dodo-color-info-100: var(--dodo-color-base-cyan-100);
74
+ --dodo-color-info-200: var(--dodo-color-base-cyan-200);
75
+ --dodo-color-info-300: var(--dodo-color-base-cyan-300);
76
+ --dodo-color-info-400: var(--dodo-color-base-cyan-400);
77
+ --dodo-color-info-500: var(--dodo-color-base-cyan-500);
78
+ --dodo-color-info-600: var(--dodo-color-base-cyan-600);
79
+ --dodo-color-info-700: var(--dodo-color-base-cyan-700);
80
+ --dodo-color-info-800: var(--dodo-color-base-cyan-800);
81
+ --dodo-color-info-900: var(--dodo-color-base-cyan-900);
82
+ --dodo-color-info-950: var(--dodo-color-base-cyan-950);
83
+ }
@@ -0,0 +1,10 @@
1
+ :root {
2
+ --dodo-ui-element-height-normal: 40px;
3
+ --dodo-ui-element-height-small: 34px;
4
+ --dodo-ui-element-height-large: 48px;
5
+
6
+ --dodo-ui-element-roundness-unit: 7px;
7
+ --dodo-ui-element-roundness-1: var(--dodo-ui-element-roundness-unit);
8
+ --dodo-ui-element-roundness-2: calc(var(--dodo-ui-element-roundness-unit) * 2);
9
+ --dodo-ui-element-roundness-3: calc(var(--dodo-ui-element-roundness-unit) * 4);
10
+ }
@@ -1,3 +1,4 @@
1
1
  @import '_colors-base.css';
2
2
  @import '_colors.css';
3
3
  @import '_breakpoint.css';
4
+ @import '_components.css';
package/dist/types.d.ts CHANGED
@@ -1 +1,2 @@
1
- export type ComponentSize = 'small' | 'normal' | 'large';
1
+ export type ComponentSize = 'normal' | 'small' | 'large';
2
+ export type ComponentRoundness = false | 1 | 2 | 3 | 'full';
package/package.json CHANGED
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "name": "@flightlesslabs/dodo-ui",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
+ "scripts": {
5
+ "build": "vite build && pnpm run prepack",
6
+ "preview": "vite preview",
7
+ "prepare": "svelte-kit sync || echo ''",
8
+ "prepack": "svelte-kit sync && svelte-package && publint",
9
+ "svelte-check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
10
+ "format": "prettier --write .",
11
+ "lint": "prettier --check . && eslint .",
12
+ "dev": "storybook dev -p 6006",
13
+ "build-storybook": "storybook build && touch ./storybook-static/.nojekyll",
14
+ "check": "pnpm run svelte-check && eslint . && pnpm run lint",
15
+ "check:fix": "pnpm run svelte-check && eslint . && pnpm run format"
16
+ },
4
17
  "homepage": "https://flightlesslabs.github.io/dodo-ui",
5
18
  "repository": {
6
19
  "type": "git",
@@ -80,16 +93,5 @@
80
93
  },
81
94
  "dependencies": {
82
95
  "@iconify/svelte": "^4.2.0"
83
- },
84
- "scripts": {
85
- "build": "vite build && pnpm run prepack",
86
- "preview": "vite preview",
87
- "svelte-check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
88
- "format": "prettier --write .",
89
- "lint": "prettier --check . && eslint .",
90
- "dev": "storybook dev -p 6006",
91
- "build-storybook": "storybook build && touch ./storybook-static/.nojekyll",
92
- "check": "pnpm run svelte-check && eslint . && pnpm run lint",
93
- "check:fix": "pnpm run svelte-check && eslint . && pnpm run format"
94
96
  }
95
- }
97
+ }
@@ -2,7 +2,6 @@
2
2
  import { defineMeta } from '@storybook/addon-svelte-csf';
3
3
  import { fn } from '@storybook/test';
4
4
  import Button from './Button.svelte';
5
- import Icon from '@iconify/svelte';
6
5
 
7
6
  export const storyButtonArgTypes = {
8
7
  type: {
@@ -17,6 +16,10 @@
17
16
  control: { type: 'select' },
18
17
  options: ['text', 'solid'],
19
18
  },
19
+ roundness: {
20
+ control: { type: 'select' },
21
+ options: [false, 1, 2, 3, 'full'],
22
+ },
20
23
  size: {
21
24
  control: { type: 'select' },
22
25
  options: ['small', 'medium', 'large'],
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { ComponentSize } from '$lib/types.js';
2
+ import type { ComponentRoundness, ComponentSize } from '$lib/types.js';
3
3
  import type { Snippet } from 'svelte';
4
4
 
5
5
  interface ButtonProps {
@@ -11,6 +11,8 @@
11
11
  size?: ComponentSize;
12
12
  /** What color to use? */
13
13
  color?: 'default' | 'primary' | 'safe' | 'warning' | 'danger' | 'info';
14
+ /** How round should the border radius be? */
15
+ roundness?: ComponentRoundness;
14
16
  /** How should the button appear? */
15
17
  variant?: 'text' | 'solid';
16
18
  /** Add a border around the button */
@@ -57,7 +59,8 @@
57
59
  children,
58
60
  type = 'button',
59
61
  size = 'normal',
60
- color = 'primary',
62
+ color = 'default',
63
+ roundness = 1,
61
64
  variant = 'text',
62
65
  outline = false,
63
66
  compact = false,
@@ -116,10 +119,11 @@
116
119
  class:compact
117
120
  class:disabled
118
121
  class={[
119
- 'dodo-button',
122
+ 'dodo-ui-button',
120
123
  `size--${size}`,
121
124
  `color--${color}`,
122
125
  `variant--${variant}`,
126
+ `roundness--${roundness}`,
123
127
  className,
124
128
  ].join(' ')}
125
129
  >
@@ -130,10 +134,11 @@
130
134
  class:outline
131
135
  class:compact
132
136
  class={[
133
- 'dodo-button',
137
+ 'dodo-ui-button',
134
138
  `size--${size}`,
135
139
  `color--${color}`,
136
140
  `variant--${variant}`,
141
+ `roundness--${roundness}`,
137
142
  className,
138
143
  ].join(' ')}
139
144
  {type}
@@ -148,4 +153,339 @@
148
153
  {/if}
149
154
 
150
155
  <style lang="scss">
156
+ .dodo-ui-button {
157
+ cursor: pointer;
158
+ outline: none;
159
+ transition: all 150ms;
160
+ text-decoration: none;
161
+ margin: 0;
162
+ display: inline-flex;
163
+ justify-content: center;
164
+ align-items: center;
165
+ font-family: inherit;
166
+ font-weight: 500;
167
+ background-color: transparent;
168
+ border: 1px solid;
169
+ border-color: transparent;
170
+ outline: 0;
171
+ color: inherit;
172
+ letter-spacing: 0.3px;
173
+
174
+ &.size {
175
+ &--normal {
176
+ height: var(--dodo-ui-element-height-normal);
177
+ font-size: 1rem;
178
+ padding: 0 12px;
179
+ min-width: 45px;
180
+ }
181
+
182
+ &--small {
183
+ height: var(--dodo-ui-element-height-small);
184
+ padding: 0 8px;
185
+ font-size: 0.9rem;
186
+ min-width: 35px;
187
+ }
188
+
189
+ &--large {
190
+ height: var(--dodo-ui-element-height-large);
191
+ font-size: 1.1rem;
192
+ padding: 0 16px;
193
+ min-width: 85px;
194
+ }
195
+ }
196
+
197
+ &.roundness {
198
+ &--1 {
199
+ border-radius: var(--dodo-ui-element-roundness-1);
200
+ }
201
+
202
+ &--2 {
203
+ border-radius: var(--dodo-ui-element-roundness-2);
204
+ }
205
+
206
+ &--3 {
207
+ border-radius: var(--dodo-ui-element-roundness-3);
208
+ }
209
+
210
+ &--4 {
211
+ border-radius: var(--dodo-ui-element-roundness-4);
212
+ }
213
+
214
+ &--full {
215
+ border-radius: 50%;
216
+ }
217
+ }
218
+
219
+ &.color {
220
+ &--default {
221
+ &.variant {
222
+ &--text {
223
+ color: var(--dodo-color-default-800);
224
+ background-color: var(--dodo-color-default-100);
225
+
226
+ &:hover {
227
+ background-color: var(--dodo-color-default-200);
228
+ }
229
+
230
+ &:active {
231
+ background-color: var(--dodo-color-default-300);
232
+ }
233
+
234
+ &.outline {
235
+ border-color: var(--dodo-color-default-400);
236
+ }
237
+ }
238
+
239
+ &--solid {
240
+ color: var(--dodo-color-white);
241
+ background-color: var(--dodo-color-default-500);
242
+
243
+ &:hover {
244
+ background-color: var(--dodo-color-default-600);
245
+ }
246
+
247
+ &:active {
248
+ background-color: var(--dodo-color-default-700);
249
+ }
250
+ }
251
+ }
252
+ }
253
+
254
+ &--primary {
255
+ &.variant {
256
+ &--text {
257
+ color: var(--dodo-color-primary-800);
258
+ background-color: var(--dodo-color-primary-100);
259
+
260
+ &:hover {
261
+ background-color: var(--dodo-color-primary-200);
262
+ }
263
+
264
+ &:active {
265
+ background-color: var(--dodo-color-primary-300);
266
+ }
267
+
268
+ &.outline {
269
+ border-color: var(--dodo-color-primary-400);
270
+ }
271
+ }
272
+
273
+ &--solid {
274
+ color: var(--dodo-color-white);
275
+ background-color: var(--dodo-color-primary-500);
276
+
277
+ &:hover {
278
+ background-color: var(--dodo-color-primary-600);
279
+ }
280
+
281
+ &:active {
282
+ background-color: var(--dodo-color-primary-700);
283
+ }
284
+ }
285
+ }
286
+ }
287
+
288
+ &--safe {
289
+ &.variant {
290
+ &--text {
291
+ color: var(--dodo-color-safe-800);
292
+ background-color: var(--dodo-color-safe-100);
293
+
294
+ &:hover {
295
+ background-color: var(--dodo-color-safe-200);
296
+ }
297
+
298
+ &:active {
299
+ background-color: var(--dodo-color-safe-300);
300
+ }
301
+
302
+ &.outline {
303
+ border-color: var(--dodo-color-safe-400);
304
+ }
305
+ }
306
+
307
+ &--solid {
308
+ color: var(--dodo-color-white);
309
+ background-color: var(--dodo-color-safe-500);
310
+
311
+ &:hover {
312
+ background-color: var(--dodo-color-safe-600);
313
+ }
314
+
315
+ &:active {
316
+ background-color: var(--dodo-color-safe-700);
317
+ }
318
+ }
319
+ }
320
+ }
321
+
322
+ &--warning {
323
+ &.variant {
324
+ &--text {
325
+ color: var(--dodo-color-warning-800);
326
+ background-color: var(--dodo-color-warning-100);
327
+
328
+ &:hover {
329
+ background-color: var(--dodo-color-warning-200);
330
+ }
331
+
332
+ &:active {
333
+ background-color: var(--dodo-color-warning-300);
334
+ }
335
+
336
+ &.outline {
337
+ border-color: var(--dodo-color-warning-400);
338
+ }
339
+ }
340
+
341
+ &--solid {
342
+ color: var(--dodo-color-white);
343
+ background-color: var(--dodo-color-warning-500);
344
+
345
+ &:hover {
346
+ background-color: var(--dodo-color-warning-600);
347
+ }
348
+
349
+ &:active {
350
+ background-color: var(--dodo-color-warning-700);
351
+ }
352
+ }
353
+ }
354
+ }
355
+
356
+ &--danger {
357
+ &.variant {
358
+ &--text {
359
+ color: var(--dodo-color-danger-800);
360
+ background-color: var(--dodo-color-danger-100);
361
+
362
+ &:hover {
363
+ background-color: var(--dodo-color-danger-200);
364
+ }
365
+
366
+ &:active {
367
+ background-color: var(--dodo-color-danger-300);
368
+ }
369
+
370
+ &.outline {
371
+ border-color: var(--dodo-color-danger-400);
372
+ }
373
+ }
374
+
375
+ &--solid {
376
+ color: var(--dodo-color-white);
377
+ background-color: var(--dodo-color-danger-500);
378
+
379
+ &:hover {
380
+ background-color: var(--dodo-color-danger-600);
381
+ }
382
+
383
+ &:active {
384
+ background-color: var(--dodo-color-danger-700);
385
+ }
386
+ }
387
+ }
388
+ }
389
+
390
+ &--info {
391
+ &.variant {
392
+ &--text {
393
+ color: var(--dodo-color-info-800);
394
+ background-color: var(--dodo-color-info-100);
395
+
396
+ &:hover {
397
+ background-color: var(--dodo-color-info-200);
398
+ }
399
+
400
+ &:active {
401
+ background-color: var(--dodo-color-info-300);
402
+ }
403
+
404
+ &.outline {
405
+ border-color: var(--dodo-color-info-400);
406
+ }
407
+ }
408
+
409
+ &--solid {
410
+ color: var(--dodo-color-white);
411
+ background-color: var(--dodo-color-info-500);
412
+
413
+ &:hover {
414
+ background-color: var(--dodo-color-info-600);
415
+ }
416
+
417
+ &:active {
418
+ background-color: var(--dodo-color-info-700);
419
+ }
420
+ }
421
+ }
422
+ }
423
+ }
424
+
425
+ &[disabled] {
426
+ cursor: initial;
427
+
428
+ &.variant {
429
+ &--text,
430
+ &--solid {
431
+ background-color: var(--dodo-color-default-200);
432
+ color: var(--dodo-color-default-400);
433
+
434
+ &:hover {
435
+ background-color: var(--dodo-color-default-200);
436
+ color: var(--dodo-color-default-400);
437
+ }
438
+
439
+ &:active {
440
+ background-color: var(--dodo-color-default-200);
441
+ color: var(--dodo-color-default-400);
442
+ }
443
+
444
+ &.outline {
445
+ border-color: transparent;
446
+ }
447
+ }
448
+ }
449
+ }
450
+
451
+ &.compact {
452
+ &.size {
453
+ &--normal,
454
+ &--small,
455
+ &--large {
456
+ min-width: initial;
457
+ padding: 0;
458
+ }
459
+
460
+ &--normal {
461
+ width: var(--dodo-ui-element-height-normal);
462
+ }
463
+
464
+ &--small {
465
+ width: var(--dodo-ui-element-height-small);
466
+ }
467
+
468
+ &--large {
469
+ width: var(--dodo-ui-element-height-large);
470
+ }
471
+ }
472
+ }
473
+
474
+ .button-content {
475
+ &--after,
476
+ &--before {
477
+ display: inline-flex;
478
+ height: 100%;
479
+ align-items: center;
480
+ }
481
+
482
+ &--before {
483
+ margin-right: 6px;
484
+ }
485
+
486
+ &--after {
487
+ margin-left: 6px;
488
+ }
489
+ }
490
+ }
151
491
  </style>
@@ -26,3 +26,44 @@
26
26
  <Story name="Warning" args={{ color: 'warning' }}><Button color="warning">Click me!</Button></Story>
27
27
  <Story name="Danger" args={{ color: 'danger' }}><Button color="danger">Click me!</Button></Story>
28
28
  <Story name="Info" args={{ color: 'info' }}><Button color="info">Click me!</Button></Story>
29
+
30
+ <Story
31
+ name="Default Solid"
32
+ args={{ outline: false, disabled: false, compact: false, variant: 'solid' }}
33
+ >
34
+ <Button variant="solid">Click me!</Button>
35
+ </Story>
36
+ <Story name="Primary Solid" args={{ color: 'primary', variant: 'solid' }}>
37
+ <Button color="primary" variant="solid">Click me!</Button>
38
+ </Story>
39
+ <Story name="Safe Solid" args={{ color: 'safe', variant: 'solid' }}>
40
+ <Button color="safe" variant="solid">Click me!</Button>
41
+ </Story>
42
+ <Story name="Warning Solid" args={{ color: 'warning', variant: 'solid' }}>
43
+ <Button color="warning" variant="solid">Click me!</Button>
44
+ </Story>
45
+ <Story name="Danger Solid" args={{ color: 'danger', variant: 'solid' }}>
46
+ <Button color="danger" variant="solid">Click me!</Button>
47
+ </Story>
48
+ <Story name="Info Solid" args={{ color: 'info', variant: 'solid' }}>
49
+ <Button color="info" variant="solid">Click me!</Button>
50
+ </Story>
51
+
52
+ <Story name="Default Outline" args={{ outline: true, disabled: false, compact: false }}>
53
+ <Button outline>Click me!</Button>
54
+ </Story>
55
+ <Story name="Primary Outline" args={{ outline: true, color: 'primary' }}>
56
+ <Button color="primary" outline>Click me!</Button>
57
+ </Story>
58
+ <Story name="Safe Outline" args={{ outline: true, color: 'safe' }}>
59
+ <Button color="safe" outline>Click me!</Button>
60
+ </Story>
61
+ <Story name="Warning Outline" args={{ outline: true, color: 'warning' }}>
62
+ <Button color="warning" outline>Click me!</Button>
63
+ </Story>
64
+ <Story name="Danger Outline" args={{ outline: true, color: 'danger' }}>
65
+ <Button color="danger" outline>Click me!</Button>
66
+ </Story>
67
+ <Story name="Info Outline" args={{ outline: true, color: 'info' }}>
68
+ <Button color="info" outline>Click me!</Button>
69
+ </Story>
@@ -20,8 +20,10 @@
20
20
  </script>
21
21
 
22
22
  <!-- Compact button with paddings stripped out and fixed size. We are using this icon library https://iconify.design/docs/icon-components/svelte/ -->
23
- <Story name="Icon Button" args={{ compact: true }}>
24
- <Button compact><Icon icon="material-symbols:app-badging" width="24" height="24" /></Button>
23
+ <Story name="Icon Button" args={{ compact: true, roundness: 'full' }}>
24
+ <Button roundness="full" compact>
25
+ <Icon icon="material-symbols:app-badging" width="18" height="18" />
26
+ </Button>
25
27
  </Story>
26
28
 
27
29
  <!-- Button with an icon in front. -->
@@ -0,0 +1,48 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { fn } from '@storybook/test';
4
+ import Button from '../Button.svelte';
5
+ import { storyButtonArgTypes } from '../Button.stories.svelte';
6
+
7
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
8
+ const { Story } = defineMeta({
9
+ component: Button,
10
+ tags: ['autodocs'],
11
+ // @ts-ignore
12
+ argTypes: {
13
+ ...storyButtonArgTypes,
14
+ },
15
+ args: {
16
+ onclick: fn(),
17
+ },
18
+ });
19
+ </script>
20
+
21
+ <Story
22
+ name="Roundness1"
23
+ args={{ outline: false, disabled: false, compact: false, roundness: 'full' }}
24
+ >
25
+ <Button roundness="full">Click me!</Button>
26
+ </Story>
27
+
28
+ <Story name="Roundness2" args={{ outline: false, disabled: false, compact: false, roundness: 2 }}>
29
+ <Button roundness={2}>Click me!</Button>
30
+ </Story>
31
+
32
+ <Story name="Roundness3" args={{ outline: false, disabled: false, compact: false, roundness: 3 }}>
33
+ <Button roundness={3}>Click me!</Button>
34
+ </Story>
35
+
36
+ <Story
37
+ name="RoundnessFalse"
38
+ args={{ outline: false, disabled: false, compact: false, roundness: false }}
39
+ >
40
+ <Button roundness={false}>Click me!</Button>
41
+ </Story>
42
+
43
+ <Story
44
+ name="RoundnessFull"
45
+ args={{ outline: false, disabled: false, compact: false, roundness: 'full' }}
46
+ >
47
+ <Button roundness="full">C</Button>
48
+ </Story>
@@ -0,0 +1,83 @@
1
+ :root {
2
+ /* Base colors */
3
+ --dodo-color-black: var(--dodo-color-base-black);
4
+ --dodo-color-white: var(--dodo-color-base-white);
5
+
6
+ /* Default color */
7
+ --dodo-color-default-50: var(--dodo-color-base-slate-50);
8
+ --dodo-color-default-100: var(--dodo-color-base-slate-100);
9
+ --dodo-color-default-200: var(--dodo-color-base-slate-200);
10
+ --dodo-color-default-300: var(--dodo-color-base-slate-300);
11
+ --dodo-color-default-400: var(--dodo-color-base-slate-400);
12
+ --dodo-color-default-500: var(--dodo-color-base-slate-500);
13
+ --dodo-color-default-600: var(--dodo-color-base-slate-600);
14
+ --dodo-color-default-700: var(--dodo-color-base-slate-700);
15
+ --dodo-color-default-800: var(--dodo-color-base-slate-800);
16
+ --dodo-color-default-900: var(--dodo-color-base-slate-900);
17
+ --dodo-color-default-950: var(--dodo-color-base-slate-950);
18
+
19
+ /* Primary color */
20
+ --dodo-color-primary-50: var(--dodo-color-base-violet-50);
21
+ --dodo-color-primary-100: var(--dodo-color-base-violet-100);
22
+ --dodo-color-primary-200: var(--dodo-color-base-violet-200);
23
+ --dodo-color-primary-300: var(--dodo-color-base-violet-300);
24
+ --dodo-color-primary-400: var(--dodo-color-base-violet-400);
25
+ --dodo-color-primary-500: var(--dodo-color-base-violet-500);
26
+ --dodo-color-primary-600: var(--dodo-color-base-violet-600);
27
+ --dodo-color-primary-700: var(--dodo-color-base-violet-700);
28
+ --dodo-color-primary-800: var(--dodo-color-base-violet-800);
29
+ --dodo-color-primary-900: var(--dodo-color-base-violet-900);
30
+ --dodo-color-primary-950: var(--dodo-color-base-violet-950);
31
+
32
+ /* Safe color */
33
+ --dodo-color-safe-50: var(--dodo-color-base-emerald-50);
34
+ --dodo-color-safe-100: var(--dodo-color-base-emerald-100);
35
+ --dodo-color-safe-200: var(--dodo-color-base-emerald-200);
36
+ --dodo-color-safe-300: var(--dodo-color-base-emerald-300);
37
+ --dodo-color-safe-400: var(--dodo-color-base-emerald-400);
38
+ --dodo-color-safe-500: var(--dodo-color-base-emerald-500);
39
+ --dodo-color-safe-600: var(--dodo-color-base-emerald-600);
40
+ --dodo-color-safe-700: var(--dodo-color-base-emerald-700);
41
+ --dodo-color-safe-800: var(--dodo-color-base-emerald-800);
42
+ --dodo-color-safe-900: var(--dodo-color-base-emerald-900);
43
+ --dodo-color-safe-950: var(--dodo-color-base-emerald-950);
44
+
45
+ /* Warning color */
46
+ --dodo-color-warning-50: var(--dodo-color-base-amber-50);
47
+ --dodo-color-warning-100: var(--dodo-color-base-amber-100);
48
+ --dodo-color-warning-200: var(--dodo-color-base-amber-200);
49
+ --dodo-color-warning-300: var(--dodo-color-base-amber-300);
50
+ --dodo-color-warning-400: var(--dodo-color-base-amber-400);
51
+ --dodo-color-warning-500: var(--dodo-color-base-amber-500);
52
+ --dodo-color-warning-600: var(--dodo-color-base-amber-600);
53
+ --dodo-color-warning-700: var(--dodo-color-base-amber-700);
54
+ --dodo-color-warning-800: var(--dodo-color-base-amber-800);
55
+ --dodo-color-warning-900: var(--dodo-color-base-amber-900);
56
+ --dodo-color-warning-950: var(--dodo-color-base-amber-950);
57
+
58
+ /* Danger color */
59
+ --dodo-color-danger-50: var(--dodo-color-base-red-50);
60
+ --dodo-color-danger-100: var(--dodo-color-base-red-100);
61
+ --dodo-color-danger-200: var(--dodo-color-base-red-200);
62
+ --dodo-color-danger-300: var(--dodo-color-base-red-300);
63
+ --dodo-color-danger-400: var(--dodo-color-base-red-400);
64
+ --dodo-color-danger-500: var(--dodo-color-base-red-500);
65
+ --dodo-color-danger-600: var(--dodo-color-base-red-600);
66
+ --dodo-color-danger-700: var(--dodo-color-base-red-700);
67
+ --dodo-color-danger-800: var(--dodo-color-base-red-800);
68
+ --dodo-color-danger-900: var(--dodo-color-base-red-900);
69
+ --dodo-color-danger-950: var(--dodo-color-base-red-950);
70
+
71
+ /* Info color */
72
+ --dodo-color-info-50: var(--dodo-color-base-cyan-50);
73
+ --dodo-color-info-100: var(--dodo-color-base-cyan-100);
74
+ --dodo-color-info-200: var(--dodo-color-base-cyan-200);
75
+ --dodo-color-info-300: var(--dodo-color-base-cyan-300);
76
+ --dodo-color-info-400: var(--dodo-color-base-cyan-400);
77
+ --dodo-color-info-500: var(--dodo-color-base-cyan-500);
78
+ --dodo-color-info-600: var(--dodo-color-base-cyan-600);
79
+ --dodo-color-info-700: var(--dodo-color-base-cyan-700);
80
+ --dodo-color-info-800: var(--dodo-color-base-cyan-800);
81
+ --dodo-color-info-900: var(--dodo-color-base-cyan-900);
82
+ --dodo-color-info-950: var(--dodo-color-base-cyan-950);
83
+ }
@@ -0,0 +1,10 @@
1
+ :root {
2
+ --dodo-ui-element-height-normal: 40px;
3
+ --dodo-ui-element-height-small: 34px;
4
+ --dodo-ui-element-height-large: 48px;
5
+
6
+ --dodo-ui-element-roundness-unit: 7px;
7
+ --dodo-ui-element-roundness-1: var(--dodo-ui-element-roundness-unit);
8
+ --dodo-ui-element-roundness-2: calc(var(--dodo-ui-element-roundness-unit) * 2);
9
+ --dodo-ui-element-roundness-3: calc(var(--dodo-ui-element-roundness-unit) * 4);
10
+ }
@@ -1,3 +1,4 @@
1
1
  @import '_colors-base.css';
2
2
  @import '_colors.css';
3
3
  @import '_breakpoint.css';
4
+ @import '_components.css';
package/src/lib/types.ts CHANGED
@@ -1 +1,3 @@
1
- export type ComponentSize = 'small' | 'normal' | 'large';
1
+ export type ComponentSize = 'normal' | 'small' | 'large';
2
+
3
+ export type ComponentRoundness = false | 1 | 2 | 3 | 'full';
@@ -1,13 +0,0 @@
1
- import { Source } from '@storybook/blocks';
2
-
3
- # Getting Started
4
-
5
- ## Install
6
-
7
- <Source dark language='bash' code={`
8
- // pnpm
9
- pnpm add @siddacoolpkg/dodo-ui
10
-
11
- // npm
12
- npm i @siddacoolpkg/dodo-ui
13
- `} />
@@ -1,10 +0,0 @@
1
- <img
2
- src="dodo-circle-6.png"
3
- style={{ width: 200, height: 'auto', display: 'flex', justifySelf: 'center' }}
4
- />
5
-
6
- <h1 style={{ textAlign: 'center' }}>Dodo UI</h1>
7
-
8
- <div style={{ textAlign: 'center', fontSize: '1rem', fontWeight: 400 }}>
9
- An open-source, opinionated UI framework for Svelte.
10
- </div>