@reshape-biotech/design-system 0.0.36 → 0.0.37

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.
@@ -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',
@@ -197,6 +201,7 @@ export const sizing = [
197
201
  'h-10',
198
202
  'h-11',
199
203
  'h-12',
204
+ 'h-16',
200
205
  'h-28',
201
206
  'h-screen',
202
207
  'w-4',
@@ -225,6 +230,7 @@ export const misc = [
225
230
  'active:red',
226
231
  'active:bg-neutral',
227
232
  'active:bg-neutral-inverse',
233
+ '[&>*>.control-button]:flex-col',
228
234
  '[&>svg]:w-4',
229
235
  '[&>svg]:h-4',
230
236
  '[&>svg]:w-5',
@@ -387,6 +393,55 @@ export const daisyui = [
387
393
  'stack'
388
394
  ];
389
395
 
396
+ // Add hover variants
397
+ export const hoverVariants = [
398
+ 'hover:bg-neutral',
399
+ 'hover:bg-neutral-hover',
400
+ 'hover:bg-neutral-darker-hover',
401
+ 'hover:bg-neutral-inverse-hover',
402
+ 'hover:bg-accent-hover',
403
+ 'hover:bg-accent-inverse-hover',
404
+ 'hover:bg-success-hover',
405
+ 'hover:bg-success-inverse-hover',
406
+ 'hover:bg-warning-hover',
407
+ 'hover:bg-warning-inverse-hover',
408
+ 'hover:bg-danger-hover',
409
+ 'hover:bg-danger-inverse-hover',
410
+ 'hover:bg-blue-hover',
411
+ 'hover:bg-orange-hover',
412
+ 'hover:bg-orange-inverse-hover',
413
+ 'hover:bg-sky-hover',
414
+ 'hover:bg-sky-inverse-hover'
415
+ ];
416
+
417
+ // Add focus variants
418
+ export const focusVariants = [
419
+ 'focus:outline-none',
420
+ 'focus:ring-2',
421
+ 'focus:ring-offset-2',
422
+ 'focus:border-focus',
423
+ 'focus-visible:outline-none',
424
+ 'focus-visible:ring-2'
425
+ ];
426
+
427
+ // Add disabled variants
428
+ export const disabledVariants = [
429
+ 'disabled:bg-neutral',
430
+ 'disabled:opacity-50',
431
+ 'disabled:cursor-not-allowed',
432
+ 'disabled:text-tertiary',
433
+ 'disabled:border-none'
434
+ ];
435
+
436
+ // Add active variants
437
+ export const activeVariants = [
438
+ 'active:bg-neutral',
439
+ 'active:bg-neutral-inverse',
440
+ 'active:red',
441
+ 'active:scale-95',
442
+ 'active:transform'
443
+ ];
444
+
390
445
  // Export all arrays as a single safelist
391
446
  export const safelist = [
392
447
  ...textColors,
@@ -408,7 +463,11 @@ export const safelist = [
408
463
  ...positioning,
409
464
  ...cursors,
410
465
  ...misc,
411
- ...daisyui
466
+ ...daisyui,
467
+ ...hoverVariants,
468
+ ...focusVariants,
469
+ ...disabledVariants,
470
+ ...activeVariants
412
471
  ];
413
472
 
414
473
  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.37",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",