@flightlesslabs/dodo-ui 0.1.2 → 0.1.3

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 (31) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.js +1 -0
  3. package/dist/stories/components/Form/Button/Button.stories.svelte +13 -4
  4. package/dist/stories/components/Form/Button/Button.stories.svelte.d.ts +2 -32
  5. package/dist/stories/components/Form/Button/Button.svelte +155 -56
  6. package/dist/stories/components/Form/Button/Button.svelte.d.ts +12 -6
  7. package/dist/stories/components/Form/Button/Color/Color.stories.svelte +1 -4
  8. package/dist/stories/components/Form/Button/IconButton/IconButton.stories.svelte +9 -5
  9. package/dist/stories/components/Form/Button/Roundness/Roundness.stories.svelte +2 -4
  10. package/dist/stories/components/Form/Button/Size/Size.stories.svelte +1 -4
  11. package/dist/stories/components/Form/Button/Variant/Variant.stories.svelte +1 -4
  12. package/dist/stories/components/Form/Button/utils/scss/mixins.scss +70 -0
  13. package/dist/storybook-types.d.ts +129 -0
  14. package/dist/storybook-types.js +1 -0
  15. package/dist/styles/_colors.css +88 -0
  16. package/dist/styles/_components.css +4 -4
  17. package/dist/types.d.ts +3 -1
  18. package/package.json +1 -1
  19. package/src/lib/index.ts +8 -1
  20. package/src/lib/stories/components/Form/Button/Button.stories.svelte +15 -5
  21. package/src/lib/stories/components/Form/Button/Button.svelte +64 -215
  22. package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +1 -4
  23. package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +9 -5
  24. package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +2 -4
  25. package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +1 -4
  26. package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +1 -4
  27. package/src/lib/stories/components/Form/Button/utils/scss/mixins.scss +70 -0
  28. package/src/lib/storybook-types.ts +182 -0
  29. package/src/lib/styles/_colors.css +88 -0
  30. package/src/lib/styles/_components.css +4 -4
  31. package/src/lib/types.ts +3 -1
@@ -0,0 +1,129 @@
1
+ type ControlType = 'object' | 'boolean' | 'check' | 'inline-check' | 'radio' | 'inline-radio' | 'select' | 'multi-select' | 'number' | 'range' | 'file' | 'color' | 'date' | 'text';
2
+ interface ControlBase {
3
+ [key: string]: any;
4
+ /** @see https://storybook.js.org/docs/api/arg-types#controltype */
5
+ type?: ControlType;
6
+ disable?: boolean;
7
+ }
8
+ type Control = ControlType | false | (ControlBase & (ControlBase | {
9
+ type: 'color';
10
+ /** @see https://storybook.js.org/docs/api/arg-types#controlpresetcolors */
11
+ presetColors?: string[];
12
+ } | {
13
+ type: 'file';
14
+ /** @see https://storybook.js.org/docs/api/arg-types#controlaccept */
15
+ accept?: string;
16
+ } | {
17
+ type: 'inline-check' | 'radio' | 'inline-radio' | 'select' | 'multi-select';
18
+ /** @see https://storybook.js.org/docs/api/arg-types#controllabels */
19
+ labels?: {
20
+ [options: string]: string;
21
+ };
22
+ } | {
23
+ type: 'number' | 'range';
24
+ /** @see https://storybook.js.org/docs/api/arg-types#controlmax */
25
+ max?: number;
26
+ /** @see https://storybook.js.org/docs/api/arg-types#controlmin */
27
+ min?: number;
28
+ /** @see https://storybook.js.org/docs/api/arg-types#controlstep */
29
+ step?: number;
30
+ }));
31
+ type ConditionalTest = {
32
+ truthy?: boolean;
33
+ } | {
34
+ exists: boolean;
35
+ } | {
36
+ eq: any;
37
+ } | {
38
+ neq: any;
39
+ };
40
+ type ConditionalValue = {
41
+ arg: string;
42
+ } | {
43
+ global: string;
44
+ };
45
+ type Conditional = ConditionalValue & ConditionalTest;
46
+ interface Args {
47
+ [name: string]: any;
48
+ }
49
+ interface SBBaseType {
50
+ required?: boolean;
51
+ raw?: string;
52
+ }
53
+ type SBScalarType = SBBaseType & {
54
+ name: 'boolean' | 'string' | 'number' | 'function' | 'symbol';
55
+ };
56
+ type SBArrayType = SBBaseType & {
57
+ name: 'array';
58
+ value: SBType;
59
+ };
60
+ type SBObjectType = SBBaseType & {
61
+ name: 'object';
62
+ value: Record<string, SBType>;
63
+ };
64
+ type SBEnumType = SBBaseType & {
65
+ name: 'enum';
66
+ value: (string | number)[];
67
+ };
68
+ type SBIntersectionType = SBBaseType & {
69
+ name: 'intersection';
70
+ value: SBType[];
71
+ };
72
+ type SBUnionType = SBBaseType & {
73
+ name: 'union';
74
+ value: SBType[];
75
+ };
76
+ type SBOtherType = SBBaseType & {
77
+ name: 'other';
78
+ value: string;
79
+ };
80
+ type SBType = SBScalarType | SBEnumType | SBArrayType | SBObjectType | SBIntersectionType | SBUnionType | SBOtherType;
81
+ interface InputType {
82
+ /** @see https://storybook.js.org/docs/api/arg-types#control */
83
+ control?: Control;
84
+ /** @see https://storybook.js.org/docs/api/arg-types#description */
85
+ description?: string;
86
+ /** @see https://storybook.js.org/docs/api/arg-types#if */
87
+ if?: Conditional;
88
+ /** @see https://storybook.js.org/docs/api/arg-types#mapping */
89
+ mapping?: {
90
+ [key: string]: any;
91
+ };
92
+ /** @see https://storybook.js.org/docs/api/arg-types#name */
93
+ name?: string;
94
+ /** @see https://storybook.js.org/docs/api/arg-types#options */
95
+ options?: readonly any[];
96
+ /** @see https://storybook.js.org/docs/api/arg-types#table */
97
+ table?: {
98
+ [key: string]: unknown;
99
+ /** @see https://storybook.js.org/docs/api/arg-types#tablecategory */
100
+ category?: string;
101
+ /** @see https://storybook.js.org/docs/api/arg-types#tabledefaultvalue */
102
+ defaultValue?: {
103
+ summary?: string;
104
+ detail?: string;
105
+ };
106
+ /** @see https://storybook.js.org/docs/api/arg-types#tabledisable */
107
+ disable?: boolean;
108
+ /** @see https://storybook.js.org/docs/api/arg-types#tablesubcategory */
109
+ subcategory?: string;
110
+ /** @see https://storybook.js.org/docs/api/arg-types#tabletype */
111
+ type?: {
112
+ summary?: string;
113
+ detail?: string;
114
+ };
115
+ };
116
+ /** @see https://storybook.js.org/docs/api/arg-types#type */
117
+ type?: SBType | SBScalarType['name'];
118
+ /**
119
+ * @deprecated Use `table.defaultValue.summary` instead.
120
+ * @see https://storybook.js.org/docs/api/arg-types#defaultvalue
121
+ */
122
+ defaultValue?: any;
123
+ [key: string]: any;
124
+ }
125
+ export type ArgTypes<TArgs = Args> = {
126
+ [name in keyof TArgs]: InputType;
127
+ };
128
+ export type StoryBookArgTypes = Partial<ArgTypes<Args>>;
129
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -3,6 +3,10 @@
3
3
  --dodo-color-black: var(--dodo-color-base-black);
4
4
  --dodo-color-white: var(--dodo-color-base-white);
5
5
 
6
+ /* Base colors constants */
7
+ --dodo-color-constant-black: var(--dodo-color-base-black);
8
+ --dodo-color-constant-white: var(--dodo-color-base-white);
9
+
6
10
  /* Default color */
7
11
  --dodo-color-default-50: var(--dodo-color-base-slate-50);
8
12
  --dodo-color-default-100: var(--dodo-color-base-slate-100);
@@ -81,3 +85,87 @@
81
85
  --dodo-color-info-900: var(--dodo-color-base-cyan-900);
82
86
  --dodo-color-info-950: var(--dodo-color-base-cyan-950);
83
87
  }
88
+
89
+ .dodo-theme--dark {
90
+ /* Dark: Base colors */
91
+ --dodo-color-black: var(--dodo-color-base-white);
92
+ --dodo-color-white: var(--dodo-color-base-black);
93
+
94
+ /* Dark: Default color */
95
+ --dodo-color-default-50: var(--dodo-color-base-slate-950);
96
+ --dodo-color-default-100: var(--dodo-color-base-slate-900);
97
+ --dodo-color-default-200: var(--dodo-color-base-slate-800);
98
+ --dodo-color-default-300: var(--dodo-color-base-slate-700);
99
+ --dodo-color-default-400: var(--dodo-color-base-slate-600);
100
+ --dodo-color-default-500: var(--dodo-color-base-slate-500);
101
+ --dodo-color-default-600: var(--dodo-color-base-slate-400);
102
+ --dodo-color-default-700: var(--dodo-color-base-slate-300);
103
+ --dodo-color-default-800: var(--dodo-color-base-slate-200);
104
+ --dodo-color-default-900: var(--dodo-color-base-slate-100);
105
+ --dodo-color-default-950: var(--dodo-color-base-slate-50);
106
+
107
+ /* Dark: Primary color */
108
+ --dodo-color-primary-50: var(--dodo-color-base-violet-950);
109
+ --dodo-color-primary-100: var(--dodo-color-base-violet-900);
110
+ --dodo-color-primary-200: var(--dodo-color-base-violet-800);
111
+ --dodo-color-primary-300: var(--dodo-color-base-violet-700);
112
+ --dodo-color-primary-400: var(--dodo-color-base-violet-600);
113
+ --dodo-color-primary-500: var(--dodo-color-base-violet-500);
114
+ --dodo-color-primary-600: var(--dodo-color-base-violet-400);
115
+ --dodo-color-primary-700: var(--dodo-color-base-violet-300);
116
+ --dodo-color-primary-800: var(--dodo-color-base-violet-200);
117
+ --dodo-color-primary-900: var(--dodo-color-base-violet-100);
118
+ --dodo-color-primary-950: var(--dodo-color-base-violet-50);
119
+
120
+ /* Dark: Safe color */
121
+ --dodo-color-safe-50: var(--dodo-color-base-emerald-950);
122
+ --dodo-color-safe-100: var(--dodo-color-base-emerald-900);
123
+ --dodo-color-safe-200: var(--dodo-color-base-emerald-800);
124
+ --dodo-color-safe-300: var(--dodo-color-base-emerald-700);
125
+ --dodo-color-safe-400: var(--dodo-color-base-emerald-600);
126
+ --dodo-color-safe-500: var(--dodo-color-base-emerald-500);
127
+ --dodo-color-safe-600: var(--dodo-color-base-emerald-400);
128
+ --dodo-color-safe-700: var(--dodo-color-base-emerald-300);
129
+ --dodo-color-safe-800: var(--dodo-color-base-emerald-200);
130
+ --dodo-color-safe-900: var(--dodo-color-base-emerald-100);
131
+ --dodo-color-safe-950: var(--dodo-color-base-emerald-50);
132
+
133
+ /* Dark: Warning color */
134
+ --dodo-color-warning-50: var(--dodo-color-base-amber-950);
135
+ --dodo-color-warning-100: var(--dodo-color-base-amber-900);
136
+ --dodo-color-warning-200: var(--dodo-color-base-amber-800);
137
+ --dodo-color-warning-300: var(--dodo-color-base-amber-700);
138
+ --dodo-color-warning-400: var(--dodo-color-base-amber-600);
139
+ --dodo-color-warning-500: var(--dodo-color-base-amber-500);
140
+ --dodo-color-warning-600: var(--dodo-color-base-amber-400);
141
+ --dodo-color-warning-700: var(--dodo-color-base-amber-300);
142
+ --dodo-color-warning-800: var(--dodo-color-base-amber-200);
143
+ --dodo-color-warning-900: var(--dodo-color-base-amber-100);
144
+ --dodo-color-warning-950: var(--dodo-color-base-amber-50);
145
+
146
+ /* Dark: Danger color */
147
+ --dodo-color-danger-50: var(--dodo-color-base-red-950);
148
+ --dodo-color-danger-100: var(--dodo-color-base-red-900);
149
+ --dodo-color-danger-200: var(--dodo-color-base-red-800);
150
+ --dodo-color-danger-300: var(--dodo-color-base-red-700);
151
+ --dodo-color-danger-400: var(--dodo-color-base-red-600);
152
+ --dodo-color-danger-500: var(--dodo-color-base-red-500);
153
+ --dodo-color-danger-600: var(--dodo-color-base-red-400);
154
+ --dodo-color-danger-700: var(--dodo-color-base-red-300);
155
+ --dodo-color-danger-800: var(--dodo-color-base-red-200);
156
+ --dodo-color-danger-900: var(--dodo-color-base-red-100);
157
+ --dodo-color-danger-950: var(--dodo-color-base-red-50);
158
+
159
+ /* Dark: Info color */
160
+ --dodo-color-info-50: var(--dodo-color-base-cyan-950);
161
+ --dodo-color-info-100: var(--dodo-color-base-cyan-900);
162
+ --dodo-color-info-200: var(--dodo-color-base-cyan-800);
163
+ --dodo-color-info-300: var(--dodo-color-base-cyan-700);
164
+ --dodo-color-info-400: var(--dodo-color-base-cyan-600);
165
+ --dodo-color-info-500: var(--dodo-color-base-cyan-500);
166
+ --dodo-color-info-600: var(--dodo-color-base-cyan-400);
167
+ --dodo-color-info-700: var(--dodo-color-base-cyan-300);
168
+ --dodo-color-info-800: var(--dodo-color-base-cyan-200);
169
+ --dodo-color-info-900: var(--dodo-color-base-cyan-100);
170
+ --dodo-color-info-950: var(--dodo-color-base-cyan-50);
171
+ }
@@ -3,8 +3,8 @@
3
3
  --dodo-ui-element-height-small: 34px;
4
4
  --dodo-ui-element-height-large: 48px;
5
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);
6
+ --dodo-ui-element-roundness-base: 7px;
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);
10
10
  }
package/dist/types.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ /** Component Size */
1
2
  export type ComponentSize = 'normal' | 'small' | 'large';
2
- export type ComponentRoundness = false | 1 | 2 | 3 | 'full';
3
+ export type ComponentRoundness = 1 | 2 | 3;
4
+ export type ComponentRoundnessFull = 'full';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flightlesslabs/dodo-ui",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "scripts": {
5
5
  "build": "vite build && pnpm run prepack",
6
6
  "preview": "vite preview",
package/src/lib/index.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  import '$lib/styles/global.css';
2
2
 
3
- export type { ComponentSize } from './types.js';
3
+ export type { ComponentSize, ComponentRoundness, ComponentRoundnessFull } from './types.js';
4
4
 
5
+ /** Form: Button */
5
6
  export { default as Button } from '$lib/stories/components/Form/Button/Button.svelte';
7
+ export type {
8
+ ButtonColor,
9
+ ButtonRoundness,
10
+ ButtonLinkTarget,
11
+ ButtonLinkReferrerpolicy,
12
+ } from '$lib/stories/components/Form/Button/Button.svelte';
@@ -2,8 +2,9 @@
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 type { StoryBookArgTypes } from '$lib/storybook-types.js';
5
6
 
6
- export const storyButtonArgTypes = {
7
+ export const storyButtonArgTypes: StoryBookArgTypes = {
7
8
  type: {
8
9
  control: { type: 'select' },
9
10
  options: ['button', 'submit'],
@@ -30,16 +31,25 @@
30
31
  const { Story } = defineMeta({
31
32
  component: Button,
32
33
  tags: ['autodocs'],
33
- // @ts-ignore
34
- argTypes: {
35
- ...storyButtonArgTypes,
36
- },
34
+ argTypes: storyButtonArgTypes,
37
35
  args: {
38
36
  onclick: fn(),
39
37
  },
40
38
  });
41
39
  </script>
42
40
 
41
+ <!-- ⚠️ Test Button: Do not use! -->
42
+ <Story
43
+ name="Test Button"
44
+ args={{
45
+ outline: false,
46
+ disabled: false,
47
+ compact: false,
48
+ _unsafeChildrenStringForTesting: 'Click me!',
49
+ }}
50
+ />
51
+
52
+ <!-- Button with default style -->
43
53
  <Story name="Default" args={{ outline: false, disabled: false, compact: false }}>
44
54
  <Button>Click me!</Button>
45
55
  </Story>
@@ -1,5 +1,19 @@
1
+ <script lang="ts" module>
2
+ export type ButtonColor = 'default' | 'primary' | 'safe' | 'warning' | 'danger' | 'info';
3
+ export type ButtonRoundness = ComponentRoundness | false | ComponentRoundnessFull;
4
+ export type ButtonLinkTarget =
5
+ | '_self'
6
+ | '_blank'
7
+ | '_parent'
8
+ | '_top'
9
+ | (string & {})
10
+ | undefined
11
+ | null;
12
+ export type ButtonLinkReferrerpolicy = ReferrerPolicy | undefined | null;
13
+ </script>
14
+
1
15
  <script lang="ts">
2
- import type { ComponentRoundness, ComponentSize } from '$lib/types.js';
16
+ import type { ComponentRoundness, ComponentRoundnessFull, ComponentSize } from '$lib/types.js';
3
17
  import type { Snippet } from 'svelte';
4
18
 
5
19
  interface ButtonProps {
@@ -10,9 +24,9 @@
10
24
  /** How large should the button be? */
11
25
  size?: ComponentSize;
12
26
  /** What color to use? */
13
- color?: 'default' | 'primary' | 'safe' | 'warning' | 'danger' | 'info';
27
+ color?: ButtonColor;
14
28
  /** How round should the border radius be? */
15
- roundness?: ComponentRoundness;
29
+ roundness?: ButtonRoundness;
16
30
  /** How should the button appear? */
17
31
  variant?: 'text' | 'solid';
18
32
  /** Add a border around the button */
@@ -36,8 +50,9 @@
36
50
  /** The onclick event handler */
37
51
  onclick?: (e: MouseEvent) => void;
38
52
  /** Turn Button into link */
39
- href?: string | undefined | null;
53
+ href?: string;
40
54
  /** Link button: download */
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
56
  download?: any;
42
57
  /** Link button: hreflang */
43
58
  hreflang?: string | undefined | null;
@@ -48,11 +63,13 @@
48
63
  /** Link button: rel */
49
64
  rel?: string | undefined | null;
50
65
  /** Link button: target */
51
- target?: '_self' | '_blank' | '_parent' | '_top' | (string & {}) | undefined | null;
66
+ target?: ButtonLinkTarget;
52
67
  /** Link button: Type */
53
68
  anchorMediaType?: string | undefined | null;
54
69
  /** Link button: referrerpolicy */
55
- referrerpolicy?: ReferrerPolicy | undefined | null;
70
+ referrerpolicy?: ButtonLinkReferrerpolicy;
71
+ /** Test: ⚠️ Unsafe Children String. Do Not use*/
72
+ _unsafeChildrenStringForTesting?: string;
56
73
  }
57
74
 
58
75
  const {
@@ -81,6 +98,7 @@
81
98
  target,
82
99
  anchorMediaType,
83
100
  referrerpolicy,
101
+ _unsafeChildrenStringForTesting,
84
102
  }: ButtonProps = $props();
85
103
  </script>
86
104
 
@@ -93,6 +111,8 @@
93
111
 
94
112
  {#if children}
95
113
  {@render children()}
114
+ {:else if _unsafeChildrenStringForTesting}
115
+ {_unsafeChildrenStringForTesting}
96
116
  {/if}
97
117
 
98
118
  {#if after}
@@ -153,6 +173,32 @@
153
173
  {/if}
154
174
 
155
175
  <style lang="scss">
176
+ @use 'utils/scss/mixins.scss' as *;
177
+
178
+ :global(:root) {
179
+ --dodo-ui-button-disabled-color: var(--dodo-color-default-400);
180
+ --dodo-ui-button-disabled-bg: var(--dodo-color-default-200);
181
+
182
+ @include generate-dodo-ui-button-colors(default);
183
+ @include generate-dodo-ui-button-colors(primary);
184
+ @include generate-dodo-ui-button-colors(safe);
185
+ @include generate-dodo-ui-button-colors(warning);
186
+ @include generate-dodo-ui-button-colors(danger);
187
+ @include generate-dodo-ui-button-colors(info);
188
+ }
189
+
190
+ :global(.dodo-theme--dark) {
191
+ --dodo-ui-button-disabled-bg: var(--dodo-color-default-100);
192
+ --dodo-ui-button-disabled-color: var(--dodo-color-default-500);
193
+
194
+ @include generate-dodo-ui-button-colors-dark(default);
195
+ @include generate-dodo-ui-button-colors-dark(primary);
196
+ @include generate-dodo-ui-button-colors-dark(safe);
197
+ @include generate-dodo-ui-button-colors-dark(warning);
198
+ @include generate-dodo-ui-button-colors-dark(danger);
199
+ @include generate-dodo-ui-button-colors-dark(info);
200
+ }
201
+
156
202
  .dodo-ui-button {
157
203
  cursor: pointer;
158
204
  outline: none;
@@ -217,209 +263,12 @@
217
263
  }
218
264
 
219
265
  &.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
- }
266
+ @include generate-dodo-ui-button-color(default);
267
+ @include generate-dodo-ui-button-color(primary);
268
+ @include generate-dodo-ui-button-color(safe);
269
+ @include generate-dodo-ui-button-color(warning);
270
+ @include generate-dodo-ui-button-color(danger);
271
+ @include generate-dodo-ui-button-color(info);
423
272
  }
424
273
 
425
274
  &[disabled] {
@@ -428,17 +277,17 @@
428
277
  &.variant {
429
278
  &--text,
430
279
  &--solid {
431
- background-color: var(--dodo-color-default-200);
432
- color: var(--dodo-color-default-400);
280
+ background-color: var(--dodo-ui-button-disabled-bg);
281
+ color: var(--dodo-ui-button-disabled-color);
433
282
 
434
283
  &:hover {
435
- background-color: var(--dodo-color-default-200);
436
- color: var(--dodo-color-default-400);
284
+ background-color: var(--dodo-ui-button-disabled-bg);
285
+ color: var(--dodo-ui-button-disabled-color);
437
286
  }
438
287
 
439
288
  &:active {
440
- background-color: var(--dodo-color-default-200);
441
- color: var(--dodo-color-default-400);
289
+ background-color: var(--dodo-ui-button-disabled-bg);
290
+ color: var(--dodo-ui-button-disabled-color);
442
291
  }
443
292
 
444
293
  &.outline {
@@ -8,10 +8,7 @@
8
8
  const { Story } = defineMeta({
9
9
  component: Button,
10
10
  tags: ['autodocs'],
11
- // @ts-ignore
12
- argTypes: {
13
- ...storyButtonArgTypes,
14
- },
11
+ argTypes: storyButtonArgTypes,
15
12
  args: {
16
13
  onclick: fn(),
17
14
  },