@reshape-biotech/design-system 0.0.36 → 0.0.38

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.
@@ -40,24 +40,8 @@
40
40
  | 'outline'
41
41
  | 'secondary-inverse';
42
42
 
43
- const Variants: Record<Variant, string> = {
44
- primary: 'bg-accent-inverse text-primary-inverse hover:bg-accent-inverse-hover ',
45
- secondary: 'bg-neutral text-primary hover:bg-neutral-hover active:bg-neutral',
46
- transparent: 'bg-transparent text-primary hover:bg-neutral active:red',
47
- danger: 'bg-danger-inverse text-primary-inverse hover:bg-danger-inverse-hover ',
48
- outline:
49
- 'bg-transparent text-primary border border-interactive hover:bg-neutral-hover disabled:border-none',
50
- 'secondary-inverse':
51
- 'bg-neutral-inverse text-primary-inverse hover:bg-neutral-inverse-hover active:bg-neutral-inverse'
52
- };
53
-
54
- const sizes = {
55
- sm: 'h-8 px-3 py-2',
56
- md: 'h-10 px-5 py-3',
57
- lg: 'h-12 px-6 py-4'
58
- };
59
- let sizeClassName = $derived(sizes[size]);
60
- let colorClassName = $derived(Variants[variant]);
43
+ let variantClass = $derived(`btn-${variant}`);
44
+ let sizeClass = $derived(`btn-size-${size}`);
61
45
  </script>
62
46
 
63
47
  <button
@@ -74,7 +58,7 @@
74
58
  {id}
75
59
  {tabindex}
76
60
  class:cursor-wait={loading}
77
- class="inline-flex items-center justify-center gap-2 rounded-full text-base font-medium leading-6 duration-150 disabled:bg-neutral disabled:text-tertiary {colorClassName} {sizeClassName} {className}"
61
+ class="inline-flex items-center justify-center gap-2 rounded-full text-base font-medium leading-6 duration-150 disabled:bg-neutral disabled:text-tertiary {variantClass} {sizeClass} {className}"
78
62
  data-testid={dataTestId}
79
63
  >
80
64
  {#if loading}
@@ -83,3 +67,93 @@
83
67
  {@render children?.()}
84
68
  {/if}
85
69
  </button>
70
+
71
+ <style>
72
+ /* Size variants */
73
+ .btn-size-sm {
74
+ height: 2rem;
75
+ padding-left: 0.75rem;
76
+ padding-right: 0.75rem;
77
+ padding-top: 0.5rem;
78
+ padding-bottom: 0.5rem
79
+ }
80
+ .btn-size-md {
81
+ height: 2.5rem;
82
+ padding-left: 1.25rem;
83
+ padding-right: 1.25rem;
84
+ padding-top: 0.75rem;
85
+ padding-bottom: 0.75rem
86
+ }
87
+ .btn-size-lg {
88
+ height: 3rem;
89
+ padding-left: 1.5rem;
90
+ padding-right: 1.5rem;
91
+ padding-top: 1rem;
92
+ padding-bottom: 1rem
93
+ }
94
+
95
+ /* Button variants */
96
+ .btn-primary {
97
+ --tw-bg-opacity: 1;
98
+ background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
99
+ --tw-text-opacity: 1;
100
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
101
+ }
102
+ .btn-primary:hover {
103
+ --tw-bg-opacity: 1;
104
+ background-color: rgb(71 65 193 / var(--tw-bg-opacity, 1))
105
+ }
106
+ .btn-secondary {
107
+ background-color: #12192a0d;
108
+ --tw-text-opacity: 1;
109
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
110
+ }
111
+ .btn-secondary:hover {
112
+ background-color: #12192A1A
113
+ }
114
+ .btn-secondary:active {
115
+ background-color: #12192a0d
116
+ }
117
+ .btn-transparent {
118
+ background-color: transparent;
119
+ --tw-text-opacity: 1;
120
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
121
+ }
122
+ .btn-transparent:hover {
123
+ background-color: #12192a0d
124
+ }
125
+ .btn-danger {
126
+ --tw-bg-opacity: 1;
127
+ background-color: rgb(235 70 71 / var(--tw-bg-opacity, 1));
128
+ --tw-text-opacity: 1;
129
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
130
+ }
131
+ .btn-danger:hover {
132
+ --tw-bg-opacity: 1;
133
+ background-color: rgb(191 57 58 / var(--tw-bg-opacity, 1))
134
+ }
135
+ .btn-outline {
136
+ border-width: 1px;
137
+ border-color: #12192A26;
138
+ background-color: transparent;
139
+ --tw-text-opacity: 1;
140
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
141
+ }
142
+ .btn-outline:hover {
143
+ background-color: #12192A1A
144
+ }
145
+ .btn-outline:disabled {
146
+ border-style: none
147
+ }
148
+ .btn-secondary-inverse {
149
+ background-color: #FFFFFF0D;
150
+ --tw-text-opacity: 1;
151
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
152
+ }
153
+ .btn-secondary-inverse:hover {
154
+ background-color: #FFFFFF26
155
+ }
156
+ .btn-secondary-inverse:active {
157
+ background-color: #FFFFFF0D
158
+ }
159
+ </style>
@@ -14,11 +14,11 @@
14
14
  <Story name="Base">
15
15
  <div class="py-12">
16
16
  <Drawer id="my-drawer">
17
- {#snippet trigger({ C })}
17
+ {#snippet trigger({ DrawerLabel })}
18
18
  <div>
19
- <C.DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
19
+ <DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
20
20
  >Open Drawer
21
- </C.DrawerLabel>
21
+ </DrawerLabel>
22
22
  </div>
23
23
  {/snippet}
24
24
  {#snippet content()}
@@ -35,10 +35,10 @@
35
35
  <Story name="Open">
36
36
  <div class="py-12">
37
37
  <Drawer id="my-drawer" open controlled>
38
- {#snippet trigger({ C })}
39
- <C.DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
38
+ {#snippet trigger({ DrawerLabel })}
39
+ <DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
40
40
  >Open Drawer
41
- </C.DrawerLabel>
41
+ </DrawerLabel>
42
42
  {/snippet}
43
43
  {#snippet content()}
44
44
  <div>
@@ -54,10 +54,10 @@
54
54
  <Story name="Open Left">
55
55
  <div class="py-12">
56
56
  <Drawer id="my-drawer" side="left">
57
- {#snippet trigger({ C })}
58
- <C.DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
57
+ {#snippet trigger({ DrawerLabel })}
58
+ <DrawerLabel id="my-drawer" classes="btn btn-primary rounded-full "
59
59
  >Open Drawer
60
- </C.DrawerLabel>
60
+ </DrawerLabel>
61
61
  {/snippet}
62
62
  {#snippet content()}
63
63
  <div>
@@ -8,7 +8,7 @@
8
8
  // Open only works when controlled is true
9
9
  open?: boolean;
10
10
  side?: 'left' | 'right';
11
- trigger?: Snippet<[{ C: { DrawerLabel: typeof DrawerLabel } }]>;
11
+ trigger?: Snippet<[{ DrawerLabel: typeof DrawerLabel }]>;
12
12
  content: Snippet;
13
13
  }
14
14
 
@@ -20,9 +20,6 @@
20
20
  trigger,
21
21
  content
22
22
  }: Props = $props();
23
- const C = {
24
- DrawerLabel
25
- };
26
23
  </script>
27
24
 
28
25
  <div class={`drawer-auto-gutter drawer`} class:drawer-end={side === 'right'}>
@@ -33,7 +30,7 @@
33
30
  {/if}
34
31
 
35
32
  <div class="drawer-content">
36
- {@render trigger?.({ C })}
33
+ {@render trigger?.({ DrawerLabel })}
37
34
  </div>
38
35
  <div class="drawer-side" inert={controlled ? !open : false}>
39
36
  <label for={id} aria-label="close sidebar" class="drawer-overlay"></label>
@@ -6,9 +6,7 @@ interface Props {
6
6
  open?: boolean;
7
7
  side?: 'left' | 'right';
8
8
  trigger?: Snippet<[{
9
- C: {
10
- DrawerLabel: typeof DrawerLabel;
11
- };
9
+ DrawerLabel: typeof DrawerLabel;
12
10
  }]>;
13
11
  content: Snippet;
14
12
  }
@@ -15,16 +15,16 @@
15
15
  {#snippet trigger({ Trigger })}
16
16
  <Trigger>Dropdown</Trigger>
17
17
  {/snippet}
18
- {#snippet content({ C })}
18
+ {#snippet content({ DropdownMenu })}
19
19
  <div>
20
- <C.DropdownMenu class="w-full">
20
+ <DropdownMenu class="w-full">
21
21
  <li>
22
22
  <p>1st item</p>
23
23
  </li>
24
24
  <li>
25
25
  <p>2nd item</p>
26
26
  </li>
27
- </C.DropdownMenu>
27
+ </DropdownMenu>
28
28
  </div>
29
29
  {/snippet}
30
30
  </Dropdown>
@@ -37,16 +37,16 @@
37
37
  {#snippet trigger({ Trigger })}
38
38
  <Trigger variant="secondary">Dropdown</Trigger>
39
39
  {/snippet}
40
- {#snippet content({ C })}
40
+ {#snippet content({ DropdownMenu })}
41
41
  <div>
42
- <C.DropdownMenu class="w-full">
42
+ <DropdownMenu class="w-full">
43
43
  <li>
44
44
  <p>1st item</p>
45
45
  </li>
46
46
  <li>
47
47
  <p>2nd item</p>
48
48
  </li>
49
- </C.DropdownMenu>
49
+ </DropdownMenu>
50
50
  </div>
51
51
  {/snippet}
52
52
  </Dropdown>
@@ -58,16 +58,16 @@
58
58
  {#snippet trigger({ Trigger })}
59
59
  <Trigger variant="transparent">Dropdown</Trigger>
60
60
  {/snippet}
61
- {#snippet content({ C })}
61
+ {#snippet content({ DropdownMenu })}
62
62
  <div>
63
- <C.DropdownMenu class="w-full">
63
+ <DropdownMenu class="w-full">
64
64
  <li>
65
65
  <p>1st item</p>
66
66
  </li>
67
67
  <li>
68
68
  <p>2nd item</p>
69
69
  </li>
70
- </C.DropdownMenu>
70
+ </DropdownMenu>
71
71
  </div>
72
72
  {/snippet}
73
73
  </Dropdown>
@@ -79,16 +79,16 @@
79
79
  {#snippet trigger({ Trigger })}
80
80
  <Trigger variant="danger">Dropdown</Trigger>
81
81
  {/snippet}
82
- {#snippet content({ C })}
82
+ {#snippet content({ DropdownMenu })}
83
83
  <div>
84
- <C.DropdownMenu class="w-full">
84
+ <DropdownMenu class="w-full">
85
85
  <li>
86
86
  <p>1st item</p>
87
87
  </li>
88
88
  <li>
89
89
  <p>2nd item</p>
90
90
  </li>
91
- </C.DropdownMenu>
91
+ </DropdownMenu>
92
92
  </div>
93
93
  {/snippet}
94
94
  </Dropdown>
@@ -103,16 +103,16 @@
103
103
  <Trigger>Bottom</Trigger>
104
104
  {/snippet}
105
105
 
106
- {#snippet content({ C })}
106
+ {#snippet content({ DropdownMenu })}
107
107
  <div>
108
- <C.DropdownMenu class="w-[120px]">
108
+ <DropdownMenu class="w-[120px]">
109
109
  <li>
110
110
  <p>1st item</p>
111
111
  </li>
112
112
  <li>
113
113
  <p>2nd item</p>
114
114
  </li>
115
- </C.DropdownMenu>
115
+ </DropdownMenu>
116
116
  </div>
117
117
  {/snippet}
118
118
  </Dropdown>
@@ -120,16 +120,16 @@
120
120
  {#snippet trigger({ Trigger })}
121
121
  <Trigger>Top</Trigger>
122
122
  {/snippet}
123
- {#snippet content({ C })}
123
+ {#snippet content({ DropdownMenu })}
124
124
  <div>
125
- <C.DropdownMenu class="w-[120px]">
125
+ <DropdownMenu class="w-[120px]">
126
126
  <li>
127
127
  <p>1st item</p>
128
128
  </li>
129
129
  <li>
130
130
  <p>2nd item</p>
131
131
  </li>
132
- </C.DropdownMenu>
132
+ </DropdownMenu>
133
133
  </div>
134
134
  {/snippet}
135
135
  </Dropdown>
@@ -137,16 +137,16 @@
137
137
  {#snippet trigger({ Trigger })}
138
138
  <Trigger>Right</Trigger>
139
139
  {/snippet}
140
- {#snippet content({ C })}
140
+ {#snippet content({ DropdownMenu })}
141
141
  <div>
142
- <C.DropdownMenu class="w-[120px]">
142
+ <DropdownMenu class="w-[120px]">
143
143
  <li>
144
144
  <p>1st item</p>
145
145
  </li>
146
146
  <li>
147
147
  <p>2nd item</p>
148
148
  </li>
149
- </C.DropdownMenu>
149
+ </DropdownMenu>
150
150
  </div>
151
151
  {/snippet}
152
152
  </Dropdown>
@@ -154,16 +154,16 @@
154
154
  {#snippet trigger({ Trigger })}
155
155
  <Trigger>Left</Trigger>
156
156
  {/snippet}
157
- {#snippet content({ C })}
157
+ {#snippet content({ DropdownMenu })}
158
158
  <div>
159
- <C.DropdownMenu class="w-[120px]">
159
+ <DropdownMenu class="w-[120px]">
160
160
  <li>
161
161
  <p>1st item</p>
162
162
  </li>
163
163
  <li>
164
164
  <p>2nd item</p>
165
165
  </li>
166
- </C.DropdownMenu>
166
+ </DropdownMenu>
167
167
  </div>
168
168
  {/snippet}
169
169
  </Dropdown>
@@ -177,16 +177,16 @@
177
177
  {#snippet trigger({ Trigger })}
178
178
  <Trigger>Dropdown</Trigger>
179
179
  {/snippet}
180
- {#snippet content({ C })}
180
+ {#snippet content({ DropdownMenu })}
181
181
  <div>
182
- <C.DropdownMenu>
182
+ <DropdownMenu>
183
183
  <li>
184
184
  <p>1st item</p>
185
185
  </li>
186
186
  <li>
187
187
  <p>2nd item</p>
188
188
  </li>
189
- </C.DropdownMenu>
189
+ </DropdownMenu>
190
190
  </div>
191
191
  {/snippet}
192
192
  </Dropdown>
@@ -199,14 +199,14 @@
199
199
  {#snippet trigger({ Trigger })}
200
200
  <Trigger>Dropdown</Trigger>
201
201
  {/snippet}
202
- {#snippet content({ C })}
202
+ {#snippet content({ DropdownContent })}
203
203
  <div>
204
- <C.DropdownContent>
204
+ <DropdownContent>
205
205
  <div>
206
206
  <p>This is a dropdown with other content</p>
207
207
  <p>It doesn't have to be list items</p>
208
208
  </div>
209
- </C.DropdownContent>
209
+ </DropdownContent>
210
210
  </div>
211
211
  {/snippet}
212
212
  </Dropdown>
@@ -13,7 +13,7 @@
13
13
  class?: string;
14
14
  trigger?: Snippet<[{ Trigger: typeof DropdownTrigger }]>;
15
15
  content?: Snippet<
16
- [{ C: { DropdownContent: typeof DropdownContent; DropdownMenu: typeof DropdownMenu } }]
16
+ [{ DropdownContent: typeof DropdownContent; DropdownMenu: typeof DropdownMenu }]
17
17
  >;
18
18
  }
19
19
 
@@ -28,10 +28,7 @@
28
28
  content
29
29
  }: Props = $props();
30
30
 
31
- let C = {
32
- DropdownMenu,
33
- DropdownContent
34
- };
31
+ let C = {};
35
32
 
36
33
  const closeDropdown = () => {
37
34
  open = false;
@@ -66,6 +63,6 @@
66
63
  onkeydown={handleKeyDown}
67
64
  onclick={handleItemClick}
68
65
  >
69
- {@render content?.({ C })}
66
+ {@render content?.({ DropdownMenu, DropdownContent })}
70
67
  </div>
71
68
  </div>
@@ -14,10 +14,8 @@ interface Props {
14
14
  }]>;
15
15
  content?: Snippet<[
16
16
  {
17
- C: {
18
- DropdownContent: typeof DropdownContent;
19
- DropdownMenu: typeof DropdownMenu;
20
- };
17
+ DropdownContent: typeof DropdownContent;
18
+ DropdownMenu: typeof DropdownMenu;
21
19
  }
22
20
  ]>;
23
21
  }
@@ -66,25 +66,25 @@
66
66
 
67
67
  <Story name="Base">
68
68
  <Table>
69
- {#snippet children({ C })}
70
- <C.THead>
71
- <C.Tr>
72
- <C.Th>Name</C.Th>
73
- <C.Th>Age</C.Th>
74
- <C.Th class="w-[100px]">Role</C.Th>
75
- <C.Th class="w-6"></C.Th>
76
- </C.Tr>
77
- </C.THead>
78
- <C.TBody>
69
+ {#snippet children({ THead, TBody, Tr, Th, Td })}
70
+ <THead>
71
+ <Tr>
72
+ <Th>Name</Th>
73
+ <Th>Age</Th>
74
+ <Th class="w-[100px]">Role</Th>
75
+ <Th class="w-6"></Th>
76
+ </Tr>
77
+ </THead>
78
+ <TBody>
79
79
  {#each users as user}
80
- <C.Tr disabled={user.role === 'deactivated'}>
81
- <C.Td>{user.name}</C.Td>
82
- <C.Td>{user.age}</C.Td>
83
- <C.Td>{user.role}</C.Td>
84
- <C.Td><IconButton disabled={user.role === 'deactivated'}><Phone /></IconButton></C.Td>
85
- </C.Tr>
80
+ <Tr disabled={user.role === 'deactivated'}>
81
+ <Td>{user.name}</Td>
82
+ <Td>{user.age}</Td>
83
+ <Td>{user.role}</Td>
84
+ <Td><IconButton disabled={user.role === 'deactivated'}><Phone /></IconButton></Td>
85
+ </Tr>
86
86
  {/each}
87
- </C.TBody>
87
+ </TBody>
88
88
  {/snippet}
89
89
  </Table>
90
90
  </Story>
@@ -11,13 +11,11 @@
11
11
  children?: Snippet<
12
12
  [
13
13
  {
14
- C: {
15
- THead: typeof THead;
16
- TBody: typeof TBody;
17
- Tr: typeof Tr;
18
- Th: typeof Th;
19
- Td: typeof Td;
20
- };
14
+ THead: typeof THead;
15
+ TBody: typeof TBody;
16
+ Tr: typeof Tr;
17
+ Th: typeof Th;
18
+ Td: typeof Td;
21
19
  }
22
20
  ]
23
21
  >;
@@ -35,7 +33,7 @@
35
33
 
36
34
  <div class="w-full rounded-lg bg-surface px-6 pb-1 pt-3">
37
35
  <table class={`w-full table-fixed sm:table-auto xl:table-${tableLayout}`}>
38
- {@render children?.({ C })}
36
+ {@render children?.({ THead: THead, TBody: TBody, Tr: Tr, Th: Th, Td: Td })}
39
37
  </table>
40
38
  </div>
41
39
 
@@ -8,13 +8,11 @@ interface Props {
8
8
  tableLayout?: 'fixed' | 'auto';
9
9
  children?: Snippet<[
10
10
  {
11
- C: {
12
- THead: typeof THead;
13
- TBody: typeof TBody;
14
- Tr: typeof Tr;
15
- Th: typeof Th;
16
- Td: typeof Td;
17
- };
11
+ THead: typeof THead;
12
+ TBody: typeof TBody;
13
+ Tr: typeof Tr;
14
+ Th: typeof Th;
15
+ Td: typeof Td;
18
16
  }
19
17
  ]>;
20
18
  }
@@ -13,18 +13,16 @@
13
13
 
14
14
  <Story name="Primary">
15
15
  <Tabs>
16
- {#snippet children({ C })}
17
- <C.Tabs>
18
- <C.Tab active={activeTab === 'tab-1'} onClick={() => (activeTab = 'tab-1')}>Tab 1</C.Tab>
19
- <C.Tab active={activeTab === 'tab-2'} onClick={() => (activeTab = 'tab-2')}>Tab 2</C.Tab>
20
- <C.Tab active={activeTab === 'tab-3'} onClick={() => (activeTab = 'tab-3')}>Tab 3</C.Tab>
21
- </C.Tabs>
16
+ {#snippet children({ Tabs, Tab, Content })}
17
+ <Tabs>
18
+ <Tab active={activeTab === 'tab-1'} onClick={() => (activeTab = 'tab-1')}>Tab 1</Tab>
19
+ <Tab active={activeTab === 'tab-2'} onClick={() => (activeTab = 'tab-2')}>Tab 2</Tab>
20
+ <Tab active={activeTab === 'tab-3'} onClick={() => (activeTab = 'tab-3')}>Tab 3</Tab>
21
+ </Tabs>
22
22
 
23
- <C.Content show={activeTab === 'tab-1'}>Showing tab 1 content</C.Content>
24
-
25
- <C.Content show={activeTab === 'tab-2'}>Showing tab 2 content</C.Content>
26
-
27
- <C.Content show={activeTab === 'tab-3'}>Showing tab 3 content</C.Content>
23
+ <Content show={activeTab === 'tab-1'}>Showing tab 1 content</Content>
24
+ <Content show={activeTab === 'tab-2'}>Showing tab 2 content</Content>
25
+ <Content show={activeTab === 'tab-3'}>Showing tab 3 content</Content>
28
26
  {/snippet}
29
27
  </Tabs>
30
28
  </Story>
@@ -4,12 +4,10 @@
4
4
  import Tab from './components/Tab.svelte';
5
5
  import Tabs from './components/Tabs.svelte';
6
6
  interface Props {
7
- children?: Snippet<[any]>;
7
+ children?: Snippet<[{ Tabs: typeof Tabs; Tab: typeof Tab; Content: typeof Content }]>;
8
8
  }
9
9
 
10
10
  let { children }: Props = $props();
11
-
12
- const C = { Tabs, Tab, Content };
13
11
  </script>
14
12
 
15
- {@render children?.({ C })}
13
+ {@render children?.({ Tabs, Tab, Content })}
@@ -1,7 +1,13 @@
1
1
  import type { Snippet } from 'svelte';
2
+ import Content from './components/Content.svelte';
3
+ import Tab from './components/Tab.svelte';
2
4
  import Tabs from './components/Tabs.svelte';
3
5
  interface Props {
4
- children?: Snippet<[any]>;
6
+ children?: Snippet<[{
7
+ Tabs: typeof Tabs;
8
+ Tab: typeof Tab;
9
+ Content: typeof Content;
10
+ }]>;
5
11
  }
6
12
  declare const Tabs: import("svelte").Component<Props, {}, "">;
7
13
  type Tabs = ReturnType<typeof Tabs>;
@@ -11,6 +11,7 @@ export const sizes: string[];
11
11
  export const display: string[];
12
12
  export const rounded: string[];
13
13
  export const tables: string[];
14
+ export const leading: string[];
14
15
  export const flexLayout: string[];
15
16
  export const spacing: string[];
16
17
  export const sizing: string[];
@@ -18,5 +19,9 @@ export const positioning: string[];
18
19
  export const cursors: string[];
19
20
  export const misc: string[];
20
21
  export const daisyui: string[];
22
+ export const hoverVariants: string[];
23
+ export const focusVariants: string[];
24
+ export const disabledVariants: string[];
25
+ export const activeVariants: string[];
21
26
  export const safelist: string[];
22
27
  export const responsive: string[];
@@ -73,7 +73,8 @@ export const borders = [
73
73
  'border-interactive',
74
74
  'border-hover',
75
75
  'border-focus',
76
- 'border-danger'
76
+ 'border-danger',
77
+ 'border-transparent'
77
78
  ];
78
79
 
79
80
  export const shadows = [
@@ -137,6 +138,8 @@ export const rounded = [
137
138
 
138
139
  export const tables = ['table-fixed', 'table-auto'];
139
140
 
141
+ export const leading = ['leading-4', 'leading-5', 'leading-6', 'leading-7'];
142
+
140
143
  export const flexLayout = [
141
144
  'flex',
142
145
  'inline-flex',
@@ -155,6 +158,7 @@ export const flexLayout = [
155
158
  'text-left',
156
159
  'text-right',
157
160
  'text-center',
161
+ 'text-base',
158
162
  'gap-1',
159
163
  'gap-2',
160
164
  'gap-3',
@@ -193,10 +197,7 @@ export const sizing = [
193
197
  'h-5',
194
198
  'h-6',
195
199
  'h-7',
196
- 'h-8',
197
- 'h-10',
198
- 'h-11',
199
- 'h-12',
200
+ 'h-16',
200
201
  'h-28',
201
202
  'h-screen',
202
203
  'w-4',
@@ -225,6 +226,7 @@ export const misc = [
225
226
  'active:red',
226
227
  'active:bg-neutral',
227
228
  'active:bg-neutral-inverse',
229
+ '[&>*>.control-button]:flex-col',
228
230
  '[&>svg]:w-4',
229
231
  '[&>svg]:h-4',
230
232
  '[&>svg]:w-5',
@@ -387,6 +389,55 @@ export const daisyui = [
387
389
  'stack'
388
390
  ];
389
391
 
392
+ // Add hover variants
393
+ export const hoverVariants = [
394
+ 'hover:bg-neutral'
395
+ // 'hover:bg-neutral-hover',
396
+ // 'hover:bg-neutral-darker-hover',
397
+ // 'hover:bg-neutral-inverse-hover',
398
+ // 'hover:bg-accent-hover',
399
+ // 'hover:bg-accent-inverse-hover',
400
+ // 'hover:bg-success-hover',
401
+ // 'hover:bg-success-inverse-hover',
402
+ // 'hover:bg-warning-hover',
403
+ // 'hover:bg-warning-inverse-hover',
404
+ // 'hover:bg-danger-hover',
405
+ // 'hover:bg-danger-inverse-hover',
406
+ // 'hover:bg-blue-hover',
407
+ // 'hover:bg-orange-hover',
408
+ // 'hover:bg-orange-inverse-hover',
409
+ // 'hover:bg-sky-hover',
410
+ // 'hover:bg-sky-inverse-hover'
411
+ ];
412
+
413
+ // Add focus variants
414
+ export const focusVariants = [
415
+ 'focus:outline-none',
416
+ 'focus:ring-2',
417
+ 'focus:ring-offset-2',
418
+ 'focus:border-focus',
419
+ 'focus-visible:outline-none',
420
+ 'focus-visible:ring-2'
421
+ ];
422
+
423
+ // Add disabled variants
424
+ export const disabledVariants = [
425
+ 'disabled:bg-neutral',
426
+ 'disabled:opacity-50',
427
+ 'disabled:cursor-not-allowed',
428
+ 'disabled:text-tertiary',
429
+ 'disabled:border-none'
430
+ ];
431
+
432
+ // Add active variants
433
+ export const activeVariants = [
434
+ 'active:bg-neutral',
435
+ 'active:bg-neutral-inverse',
436
+ 'active:red',
437
+ 'active:scale-95',
438
+ 'active:transform'
439
+ ];
440
+
390
441
  // Export all arrays as a single safelist
391
442
  export const safelist = [
392
443
  ...textColors,
@@ -408,7 +459,11 @@ export const safelist = [
408
459
  ...positioning,
409
460
  ...cursors,
410
461
  ...misc,
411
- ...daisyui
462
+ ...daisyui,
463
+ ...hoverVariants,
464
+ ...focusVariants,
465
+ ...disabledVariants,
466
+ ...activeVariants
412
467
  ];
413
468
 
414
469
  export const responsive = ['sm:w-[460px]', 'md:flex', 'lg:block', 'sm:gap-2'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reshape-biotech/design-system",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",