@reshape-biotech/design-system 0.0.44 → 0.0.47

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 (221) hide show
  1. package/dist/index.css +1 -0
  2. package/dist/index.js +68464 -34
  3. package/dist/index.umd.cjs +148 -0
  4. package/package.json +17 -15
  5. package/dist/app.css +0 -103
  6. package/dist/components/avatar/Avatar.svelte +0 -63
  7. package/dist/components/avatar/Avatar.svelte.d.ts +0 -8
  8. package/dist/components/avatar/index.d.ts +0 -1
  9. package/dist/components/avatar/index.js +0 -1
  10. package/dist/components/banner/Banner.stories.svelte +0 -129
  11. package/dist/components/banner/Banner.stories.svelte.d.ts +0 -19
  12. package/dist/components/banner/Banner.svelte +0 -59
  13. package/dist/components/banner/Banner.svelte.d.ts +0 -11
  14. package/dist/components/banner/index.d.ts +0 -1
  15. package/dist/components/banner/index.js +0 -1
  16. package/dist/components/button/Button.stories.svelte +0 -37
  17. package/dist/components/button/Button.stories.svelte.d.ts +0 -19
  18. package/dist/components/button/Button.svelte +0 -176
  19. package/dist/components/button/Button.svelte.d.ts +0 -17
  20. package/dist/components/button/index.d.ts +0 -1
  21. package/dist/components/button/index.js +0 -1
  22. package/dist/components/datepicker/DatePicker.svelte +0 -283
  23. package/dist/components/datepicker/DatePicker.svelte.d.ts +0 -8
  24. package/dist/components/datepicker/index.d.ts +0 -1
  25. package/dist/components/datepicker/index.js +0 -1
  26. package/dist/components/divider/Divider.stories.svelte +0 -14
  27. package/dist/components/divider/Divider.stories.svelte.d.ts +0 -27
  28. package/dist/components/divider/Divider.svelte +0 -9
  29. package/dist/components/divider/Divider.svelte.d.ts +0 -6
  30. package/dist/components/divider/index.d.ts +0 -1
  31. package/dist/components/divider/index.js +0 -1
  32. package/dist/components/drawer/Drawer.stories.svelte +0 -64
  33. package/dist/components/drawer/Drawer.stories.svelte.d.ts +0 -27
  34. package/dist/components/drawer/Drawer.svelte +0 -41
  35. package/dist/components/drawer/Drawer.svelte.d.ts +0 -12
  36. package/dist/components/drawer/DrawerLabel.svelte +0 -62
  37. package/dist/components/drawer/DrawerLabel.svelte.d.ts +0 -9
  38. package/dist/components/drawer/index.d.ts +0 -1
  39. package/dist/components/drawer/index.js +0 -1
  40. package/dist/components/dropdown/Dropdown.stories.svelte +0 -236
  41. package/dist/components/dropdown/Dropdown.stories.svelte.d.ts +0 -27
  42. package/dist/components/dropdown/Dropdown.svelte +0 -69
  43. package/dist/components/dropdown/Dropdown.svelte.d.ts +0 -26
  44. package/dist/components/dropdown/components/DropdownContent.svelte +0 -29
  45. package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +0 -10
  46. package/dist/components/dropdown/components/DropdownMenu.svelte +0 -23
  47. package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +0 -8
  48. package/dist/components/dropdown/components/DropdownTrigger.svelte +0 -44
  49. package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +0 -12
  50. package/dist/components/dropdown/components/OutlinedButton.svelte +0 -61
  51. package/dist/components/dropdown/components/OutlinedButton.svelte.d.ts +0 -8
  52. package/dist/components/dropdown/index.d.ts +0 -1
  53. package/dist/components/dropdown/index.js +0 -1
  54. package/dist/components/icon-button/IconButton.stories.svelte +0 -52
  55. package/dist/components/icon-button/IconButton.stories.svelte.d.ts +0 -19
  56. package/dist/components/icon-button/IconButton.svelte +0 -72
  57. package/dist/components/icon-button/IconButton.svelte.d.ts +0 -14
  58. package/dist/components/icon-button/index.d.ts +0 -1
  59. package/dist/components/icon-button/index.js +0 -1
  60. package/dist/components/image/Image.svelte +0 -56
  61. package/dist/components/image/Image.svelte.d.ts +0 -7
  62. package/dist/components/image/index.d.ts +0 -1
  63. package/dist/components/image/index.js +0 -1
  64. package/dist/components/input/Input.stories.svelte +0 -87
  65. package/dist/components/input/Input.stories.svelte.d.ts +0 -27
  66. package/dist/components/input/Input.svelte +0 -182
  67. package/dist/components/input/Input.svelte.d.ts +0 -21
  68. package/dist/components/input/index.d.ts +0 -1
  69. package/dist/components/input/index.js +0 -1
  70. package/dist/components/list/List.stories.svelte +0 -97
  71. package/dist/components/list/List.stories.svelte.d.ts +0 -19
  72. package/dist/components/list/List.svelte +0 -75
  73. package/dist/components/list/List.svelte.d.ts +0 -24
  74. package/dist/components/list/index.d.ts +0 -1
  75. package/dist/components/list/index.js +0 -1
  76. package/dist/components/logo/Logo.stories.svelte +0 -21
  77. package/dist/components/logo/Logo.stories.svelte.d.ts +0 -27
  78. package/dist/components/logo/Logo.svelte +0 -36
  79. package/dist/components/logo/Logo.svelte.d.ts +0 -6
  80. package/dist/components/logo/index.d.ts +0 -1
  81. package/dist/components/logo/index.js +0 -1
  82. package/dist/components/markdown/Markdown.stories.svelte +0 -41
  83. package/dist/components/markdown/Markdown.stories.svelte.d.ts +0 -27
  84. package/dist/components/markdown/Markdown.svelte +0 -12
  85. package/dist/components/markdown/Markdown.svelte.d.ts +0 -6
  86. package/dist/components/markdown/index.d.ts +0 -1
  87. package/dist/components/markdown/index.js +0 -1
  88. package/dist/components/modal/Modal.stories.svelte +0 -39
  89. package/dist/components/modal/Modal.stories.svelte.d.ts +0 -19
  90. package/dist/components/modal/Modal.svelte +0 -76
  91. package/dist/components/modal/Modal.svelte.d.ts +0 -17
  92. package/dist/components/modal/index.d.ts +0 -1
  93. package/dist/components/modal/index.js +0 -1
  94. package/dist/components/notification-popup/NotificationPopup.stories.svelte +0 -27
  95. package/dist/components/notification-popup/NotificationPopup.stories.svelte.d.ts +0 -27
  96. package/dist/components/notification-popup/NotificationPopup.svelte +0 -31
  97. package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +0 -11
  98. package/dist/components/notification-popup/index.d.ts +0 -1
  99. package/dist/components/notification-popup/index.js +0 -1
  100. package/dist/components/pill/Pill.svelte +0 -39
  101. package/dist/components/pill/Pill.svelte.d.ts +0 -10
  102. package/dist/components/pill/index.d.ts +0 -1
  103. package/dist/components/pill/index.js +0 -1
  104. package/dist/components/progress-circle/ProgressCircle.svelte +0 -79
  105. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +0 -7
  106. package/dist/components/progress-circle/index.d.ts +0 -1
  107. package/dist/components/progress-circle/index.js +0 -1
  108. package/dist/components/segmented-control-buttons/ControlButton.svelte +0 -59
  109. package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +0 -14
  110. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +0 -45
  111. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte.d.ts +0 -19
  112. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +0 -21
  113. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +0 -12
  114. package/dist/components/segmented-control-buttons/index.d.ts +0 -1
  115. package/dist/components/segmented-control-buttons/index.js +0 -1
  116. package/dist/components/select/Select.stories.svelte +0 -113
  117. package/dist/components/select/Select.stories.svelte.d.ts +0 -19
  118. package/dist/components/select/Select.svelte +0 -138
  119. package/dist/components/select/Select.svelte.d.ts +0 -60
  120. package/dist/components/select/index.d.ts +0 -7
  121. package/dist/components/select/index.js +0 -1
  122. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +0 -45
  123. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte.d.ts +0 -27
  124. package/dist/components/skeleton-loader/SkeletonLoader.svelte +0 -17
  125. package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +0 -14
  126. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +0 -17
  127. package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +0 -18
  128. package/dist/components/skeleton-loader/components/Skeleton.svelte +0 -14
  129. package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +0 -8
  130. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +0 -14
  131. package/dist/components/skeleton-loader/components/SkeletonImage.svelte.d.ts +0 -26
  132. package/dist/components/skeleton-loader/index.d.ts +0 -3
  133. package/dist/components/skeleton-loader/index.js +0 -3
  134. package/dist/components/slider/Slider.stories.svelte +0 -37
  135. package/dist/components/slider/Slider.stories.svelte.d.ts +0 -27
  136. package/dist/components/slider/Slider.svelte +0 -117
  137. package/dist/components/slider/Slider.svelte.d.ts +0 -29
  138. package/dist/components/slider/index.d.ts +0 -1
  139. package/dist/components/slider/index.js +0 -1
  140. package/dist/components/spinner/Spinner.svelte +0 -27
  141. package/dist/components/spinner/Spinner.svelte.d.ts +0 -6
  142. package/dist/components/spinner/index.d.ts +0 -1
  143. package/dist/components/spinner/index.js +0 -1
  144. package/dist/components/stat-card/StatCard.stories.svelte +0 -32
  145. package/dist/components/stat-card/StatCard.stories.svelte.d.ts +0 -27
  146. package/dist/components/stat-card/StatCard.svelte +0 -52
  147. package/dist/components/stat-card/StatCard.svelte.d.ts +0 -10
  148. package/dist/components/stat-card/index.d.ts +0 -1
  149. package/dist/components/stat-card/index.js +0 -1
  150. package/dist/components/status-badge/StatusBadge.stories.svelte +0 -401
  151. package/dist/components/status-badge/StatusBadge.stories.svelte.d.ts +0 -19
  152. package/dist/components/status-badge/StatusBadge.svelte +0 -147
  153. package/dist/components/status-badge/StatusBadge.svelte.d.ts +0 -12
  154. package/dist/components/status-badge/index.d.ts +0 -1
  155. package/dist/components/status-badge/index.js +0 -1
  156. package/dist/components/table/Table.stories.svelte +0 -90
  157. package/dist/components/table/Table.stories.svelte.d.ts +0 -24
  158. package/dist/components/table/Table.svelte +0 -47
  159. package/dist/components/table/Table.svelte.d.ts +0 -21
  160. package/dist/components/table/components/TBody.svelte +0 -14
  161. package/dist/components/table/components/TBody.svelte.d.ts +0 -8
  162. package/dist/components/table/components/THead.svelte +0 -14
  163. package/dist/components/table/components/THead.svelte.d.ts +0 -8
  164. package/dist/components/table/components/Td.svelte +0 -14
  165. package/dist/components/table/components/Td.svelte.d.ts +0 -8
  166. package/dist/components/table/components/Th.svelte +0 -15
  167. package/dist/components/table/components/Th.svelte.d.ts +0 -9
  168. package/dist/components/table/components/Tr.svelte +0 -31
  169. package/dist/components/table/components/Tr.svelte.d.ts +0 -8
  170. package/dist/components/table/index.d.ts +0 -1
  171. package/dist/components/table/index.js +0 -1
  172. package/dist/components/tabs/Tabs.stories.svelte +0 -28
  173. package/dist/components/tabs/Tabs.stories.svelte.d.ts +0 -27
  174. package/dist/components/tabs/Tabs.svelte +0 -13
  175. package/dist/components/tabs/Tabs.svelte.d.ts +0 -14
  176. package/dist/components/tabs/components/Content.svelte +0 -15
  177. package/dist/components/tabs/components/Content.svelte.d.ts +0 -9
  178. package/dist/components/tabs/components/Tab.svelte +0 -21
  179. package/dist/components/tabs/components/Tab.svelte.d.ts +0 -10
  180. package/dist/components/tabs/components/Tabs.svelte +0 -14
  181. package/dist/components/tabs/components/Tabs.svelte.d.ts +0 -8
  182. package/dist/components/tabs/index.d.ts +0 -1
  183. package/dist/components/tabs/index.js +0 -1
  184. package/dist/components/tag/Tag.stories.svelte +0 -51
  185. package/dist/components/tag/Tag.stories.svelte.d.ts +0 -19
  186. package/dist/components/tag/Tag.svelte +0 -104
  187. package/dist/components/tag/Tag.svelte.d.ts +0 -11
  188. package/dist/components/tag/index.d.ts +0 -1
  189. package/dist/components/tag/index.js +0 -1
  190. package/dist/components/toggle/Toggle.stories.svelte +0 -15
  191. package/dist/components/toggle/Toggle.stories.svelte.d.ts +0 -27
  192. package/dist/components/toggle/Toggle.svelte +0 -73
  193. package/dist/components/toggle/Toggle.svelte.d.ts +0 -7
  194. package/dist/components/toggle/index.d.ts +0 -1
  195. package/dist/components/toggle/index.js +0 -1
  196. package/dist/components/tooltip/Tooltip.stories.svelte +0 -126
  197. package/dist/components/tooltip/Tooltip.stories.svelte.d.ts +0 -27
  198. package/dist/components/tooltip/Tooltip.svelte +0 -49
  199. package/dist/components/tooltip/Tooltip.svelte.d.ts +0 -13
  200. package/dist/components/tooltip/index.d.ts +0 -1
  201. package/dist/components/tooltip/index.js +0 -1
  202. package/dist/fonts/MDSystem-Medium.woff +0 -0
  203. package/dist/fonts/MDSystem-Medium.woff2 +0 -0
  204. package/dist/fonts/MDSystem-Regular.woff +0 -0
  205. package/dist/fonts/MDSystem-Regular.woff2 +0 -0
  206. package/dist/fonts/MDSystem-Semibold.woff +0 -0
  207. package/dist/fonts/MDSystem-Semibold.woff2 +0 -0
  208. package/dist/fonts/MDSystemMono-Regular.woff +0 -0
  209. package/dist/fonts/MDSystemMono-Regular.woff2 +0 -0
  210. package/dist/fonts/index.d.ts +0 -6
  211. package/dist/fonts/index.js +0 -10
  212. package/dist/index.d.ts +0 -32
  213. package/dist/tailwind-safelist.d.ts +0 -27
  214. package/dist/tailwind-safelist.js +0 -475
  215. package/dist/tailwind.d.ts +0 -11
  216. package/dist/tailwind.js +0 -1
  217. package/dist/tailwind.preset.d.ts +0 -331
  218. package/dist/tailwind.preset.js +0 -54
  219. package/dist/tokens.d.ts +0 -570
  220. package/dist/tokens.js +0 -267
  221. package/dist/types/fonts.d.ts +0 -4
@@ -1,176 +0,0 @@
1
- <script lang="ts">
2
- import Spinner from '../spinner/Spinner.svelte';
3
- import type { Snippet } from 'svelte';
4
-
5
- interface Props {
6
- class?: string;
7
- onClick?: (event?: MouseEvent) => void;
8
- type?: 'button' | 'submit' | 'reset' | null | undefined;
9
- loading?: boolean;
10
- disabled?: boolean;
11
- accessibilityLabel?: string;
12
- size?: 'sm' | 'md' | 'lg';
13
- id?: string | undefined;
14
- tabindex?: number | undefined;
15
- variant?: Variant;
16
- children?: Snippet;
17
- dataTestId?: string;
18
- }
19
-
20
- let {
21
- class: className = '',
22
- onClick = () => {},
23
- type = 'button',
24
- loading = false,
25
- disabled = false,
26
- accessibilityLabel = '',
27
- size = 'lg',
28
- id = undefined,
29
- tabindex = undefined,
30
- variant = 'primary',
31
- children,
32
- dataTestId = undefined
33
- }: Props = $props();
34
-
35
- type Variant =
36
- | 'primary'
37
- | 'secondary'
38
- | 'transparent'
39
- | 'danger'
40
- | 'outline'
41
- | 'secondary-inverse';
42
-
43
- let variantClass = $derived(`btn-${variant}`);
44
- let sizeClass = $derived(`btn-size-${size}`);
45
- </script>
46
-
47
- <button
48
- aria-label={accessibilityLabel}
49
- onclick={(e) => {
50
- if (!loading) {
51
- onClick(e);
52
- } else {
53
- e.preventDefault();
54
- }
55
- }}
56
- {type}
57
- {disabled}
58
- {id}
59
- {tabindex}
60
- class:cursor-wait={loading}
61
- class="button {variantClass} {sizeClass} {className}"
62
- data-testid={dataTestId}
63
- >
64
- {#if loading}
65
- <Spinner />
66
- {:else}
67
- {@render children?.()}
68
- {/if}
69
- </button>
70
-
71
- <style>
72
- .button {
73
- display: inline-flex;
74
- align-items: center;
75
- justify-content: center;
76
- gap: 0.5rem;
77
- border-radius: 9999px;
78
- font-size: 1rem;
79
- font-weight: 500;
80
- line-height: 1.5rem;
81
- transition-duration: 150ms
82
- }
83
- .button:disabled {
84
- background-color: #12192a0d;
85
- --tw-text-opacity: 1;
86
- color: rgb(136 140 148 / var(--tw-text-opacity, 1))
87
- }
88
-
89
- /* Size variants */
90
- .btn-size-sm {
91
- height: 2rem;
92
- padding-left: 0.75rem;
93
- padding-right: 0.75rem;
94
- padding-top: 0.5rem;
95
- padding-bottom: 0.5rem
96
- }
97
- .btn-size-md {
98
- height: 2.5rem;
99
- padding-left: 1.25rem;
100
- padding-right: 1.25rem;
101
- padding-top: 0.75rem;
102
- padding-bottom: 0.75rem
103
- }
104
- .btn-size-lg {
105
- height: 3rem;
106
- padding-left: 1.5rem;
107
- padding-right: 1.5rem;
108
- padding-top: 1rem;
109
- padding-bottom: 1rem
110
- }
111
-
112
- /* Button variants */
113
- .btn-primary {
114
- --tw-bg-opacity: 1;
115
- background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
116
- --tw-text-opacity: 1;
117
- color: rgb(255 255 255 / var(--tw-text-opacity, 1))
118
- }
119
- .btn-primary:hover {
120
- --tw-bg-opacity: 1;
121
- background-color: rgb(71 65 193 / var(--tw-bg-opacity, 1))
122
- }
123
- .btn-secondary {
124
- background-color: #12192a0d;
125
- --tw-text-opacity: 1;
126
- color: rgb(18 25 42 / var(--tw-text-opacity, 1))
127
- }
128
- .btn-secondary:hover {
129
- background-color: #12192A1A
130
- }
131
- .btn-secondary:active {
132
- background-color: #12192a0d
133
- }
134
- .btn-transparent {
135
- background-color: transparent;
136
- --tw-text-opacity: 1;
137
- color: rgb(18 25 42 / var(--tw-text-opacity, 1))
138
- }
139
- .btn-transparent:hover {
140
- background-color: #12192a0d
141
- }
142
- .btn-danger {
143
- --tw-bg-opacity: 1;
144
- background-color: rgb(235 70 71 / var(--tw-bg-opacity, 1));
145
- --tw-text-opacity: 1;
146
- color: rgb(255 255 255 / var(--tw-text-opacity, 1))
147
- }
148
- .btn-danger:hover {
149
- --tw-bg-opacity: 1;
150
- background-color: rgb(191 57 58 / var(--tw-bg-opacity, 1))
151
- }
152
- .btn-outline {
153
- border-width: 1px;
154
- border-color: #12192A26;
155
- background-color: transparent;
156
- --tw-text-opacity: 1;
157
- color: rgb(18 25 42 / var(--tw-text-opacity, 1))
158
- }
159
- .btn-outline:hover {
160
- background-color: #12192A1A
161
- }
162
- .btn-outline:disabled {
163
- border-style: none
164
- }
165
- .btn-secondary-inverse {
166
- background-color: #FFFFFF0D;
167
- --tw-text-opacity: 1;
168
- color: rgb(255 255 255 / var(--tw-text-opacity, 1))
169
- }
170
- .btn-secondary-inverse:hover {
171
- background-color: #FFFFFF26
172
- }
173
- .btn-secondary-inverse:active {
174
- background-color: #FFFFFF0D
175
- }
176
- </style>
@@ -1,17 +0,0 @@
1
- import type { Snippet } from 'svelte';
2
- declare const Button: import("svelte").Component<{
3
- class?: string;
4
- onClick?: (event?: MouseEvent) => void;
5
- type?: "button" | "submit" | "reset" | null | undefined;
6
- loading?: boolean;
7
- disabled?: boolean;
8
- accessibilityLabel?: string;
9
- size?: "sm" | "md" | "lg";
10
- id?: string | undefined;
11
- tabindex?: number | undefined;
12
- variant?: "primary" | "secondary" | "transparent" | "danger" | "outline" | "secondary-inverse";
13
- children?: Snippet;
14
- dataTestId?: string;
15
- }, {}, "">;
16
- type Button = ReturnType<typeof Button>;
17
- export default Button;
@@ -1 +0,0 @@
1
- export { default as Button } from './Button.svelte';
@@ -1 +0,0 @@
1
- export { default as Button } from './Button.svelte';
@@ -1,283 +0,0 @@
1
- <script lang="ts">
2
- import { run } from 'svelte/legacy';
3
-
4
- import { DateTime, type MonthNumbers } from 'luxon';
5
- import { CaretLeft, CaretRight } from 'phosphor-svelte';
6
-
7
- interface Props {
8
- selectedDate: DateTime | undefined;
9
- onClick?: any;
10
- }
11
-
12
- let { selectedDate = $bindable(), onClick = (date: DateTime) => {} }: Props = $props();
13
-
14
- const arrDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
15
- let today = DateTime.local();
16
- const currentDay = today.day;
17
- const currentMonth = today.month;
18
- const currentYear = today.year;
19
- let shownMonth = $state(today.month);
20
- let shownYear = $state(today.year);
21
- let selectedDay: number | undefined = $state();
22
- let selectedMonth: number | undefined = $state();
23
- let selectedYear: number | undefined = $state();
24
- let rows = $state(initRows());
25
-
26
- run(() => {
27
- if (selectedDate) {
28
- selectedDay = selectedDate.day;
29
- selectedMonth = selectedDate.month;
30
- selectedYear = selectedDate.year;
31
- }
32
- });
33
-
34
- affectedRows();
35
-
36
- function initRows() {
37
- return [
38
- [0, 0, 0, 0, 0, 0, 0],
39
- [0, 0, 0, 0, 0, 0, 0],
40
- [0, 0, 0, 0, 0, 0, 0],
41
- [0, 0, 0, 0, 0, 0, 0],
42
- [0, 0, 0, 0, 0, 0, 0],
43
- [0, 0, 0, 0, 0, 0, 0]
44
- ];
45
- }
46
-
47
- function affectedRows() {
48
- rows = initRows();
49
- const firstDayOfCurrentMonth = DateTime.local(shownYear, shownMonth, 1).weekday - 1; // 0-based index
50
- const lastDayOfCurrentMonth = DateTime.local(shownYear, shownMonth, 1).daysInMonth;
51
-
52
- if (lastDayOfCurrentMonth === undefined) {
53
- // Handle invalid date
54
- return;
55
- }
56
-
57
- let iRow = 0;
58
- let iCol = firstDayOfCurrentMonth; // Start at the correct weekday
59
- let cpt = 1; // Start from day 1
60
-
61
- for (iRow = 0; iRow < 6; iRow++) {
62
- while (iCol < 7 && cpt <= lastDayOfCurrentMonth) {
63
- rows[iRow][iCol] = cpt++;
64
- iCol++;
65
- }
66
- iCol = 0; // Reset for the next row
67
- }
68
- }
69
-
70
- function previousMonth() {
71
- let dt = DateTime.local(shownYear, shownMonth).minus({ months: 1 });
72
- shownMonth = dt.month as MonthNumbers;
73
- shownYear = dt.year;
74
- affectedRows();
75
- }
76
-
77
- function nextMonth() {
78
- let dt = DateTime.local(shownYear, shownMonth).plus({ months: 1 });
79
- shownMonth = dt.month as MonthNumbers;
80
- shownYear = dt.year;
81
- affectedRows();
82
- }
83
-
84
- function selectDate(y: number, m: number, d: number) {
85
- selectedDate = DateTime.local(y, m, d);
86
- onClick(selectedDate);
87
- }
88
- </script>
89
-
90
- <!-- svelte-ignore a11y_click_events_have_key_events -->
91
- <!-- svelte-ignore a11y_no_static_element_interactions -->
92
- <div class="calendar-container" onclick={(e) => e.stopPropagation()}>
93
- <div class="calendar">
94
- <div class="calendar-header">
95
- <div class="month-year">
96
- <button class="btn-custom p-2" onclick={previousMonth} aria-label="calendar backward">
97
- <CaretLeft class="text-secondary" weight="bold" size="0.75rem" />
98
- </button>
99
- <h4>
100
- {DateTime.local(shownYear, shownMonth).toFormat('MMM yyyy')}
101
- </h4>
102
- <div>
103
- <button class="btn-custom p-2" onclick={nextMonth} aria-label="calendar forward">
104
- <CaretRight class="text-secondary" weight="bold" size="0.75rem" />
105
- </button>
106
- </div>
107
- </div>
108
- </div>
109
- <div class="calendar-body">
110
- <table>
111
- <thead>
112
- <tr>
113
- {#each arrDays as day}
114
- <th>
115
- <p>{day}</p>
116
- </th>
117
- {/each}
118
- </tr>
119
- </thead>
120
- <tbody>
121
- {#each rows as col}
122
- <tr>
123
- {#each col as dayOfMonth}
124
- <td>
125
- {#if dayOfMonth > 0}
126
- <div class="date-container">
127
- <p
128
- class={dayOfMonth === selectedDay &&
129
- selectedMonth === shownMonth &&
130
- selectedYear === shownYear
131
- ? 'date selected-date'
132
- : 'date'}
133
- >
134
- <button
135
- onclick={() => {
136
- selectDate(shownYear, shownMonth, dayOfMonth);
137
- }}
138
- >
139
- {dayOfMonth}
140
- </button>
141
- </p>
142
- {#if dayOfMonth === currentDay && shownMonth === currentMonth && shownYear === currentYear && dayOfMonth != selectedDay}
143
- <svg
144
- class="current-date-indicator text-accent"
145
- xmlns="http://www.w3.org/2000/svg"
146
- width="4"
147
- height="4"
148
- viewBox="0 0 4 4"
149
- >
150
- <circle cx="2" cy="2" r="2" fill="currentColor" />
151
- </svg>
152
- {/if}
153
- </div>
154
- {/if}
155
- </td>
156
- {/each}
157
- </tr>
158
- {/each}
159
- </tbody>
160
- </table>
161
- </div>
162
- </div>
163
- </div>
164
-
165
- <style>
166
- .calendar-container {
167
- display: flex;
168
- width: 312px;
169
- }
170
-
171
- .calendar {
172
- overflow: hidden;
173
- border-radius: 0.5rem;
174
- --tw-bg-opacity: 1;
175
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
176
- padding: 1rem;
177
- --tw-shadow: 0px 16px 24px 0px rgba(18, 25, 42, 0.16);
178
- --tw-shadow-colored: 0px 16px 24px 0px var(--tw-shadow-color);
179
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
180
- }
181
-
182
- .month-year {
183
- display: flex;
184
- align-items: center;
185
- justify-content: space-between;
186
- }
187
-
188
- .month-year .btn-custom {
189
- background: none;
190
- border: none;
191
- }
192
-
193
- .calendar-body {
194
- display: flex;
195
- align-items: center;
196
- justify-content: space-between;
197
- padding-top: 22px;
198
- overflow-x: auto;
199
- }
200
-
201
- table {
202
- width: 100%;
203
- border-spacing: 0;
204
- border-collapse: collapse;
205
- margin: 0;
206
- padding: 0;
207
- }
208
-
209
- table thead th p {
210
- text-align: center;
211
- font-size: 0.75rem;
212
- line-height: 1rem;
213
- font-weight: 400;
214
- --tw-text-opacity: 1;
215
- color: rgb(136 140 148 / var(--tw-text-opacity, 1));
216
- }
217
-
218
- td {
219
- width: 40px;
220
- height: 40px;
221
- }
222
- table th,
223
- table td {
224
- box-sizing: border-box;
225
- padding: 0;
226
- margin: 0;
227
- }
228
-
229
- .date-container {
230
- position: relative;
231
- }
232
-
233
- .date-container .current-date-indicator {
234
- position: absolute;
235
- top: 20px;
236
- left: 18px;
237
- }
238
-
239
- .date {
240
- display: flex;
241
- cursor: pointer;
242
- align-items: center;
243
- justify-content: center;
244
- font-size: 0.875rem;
245
- line-height: 1.25rem;
246
- font-weight: 400;
247
- }
248
-
249
- .date :hover,
250
- .date :focus {
251
- height: 2.5rem;
252
- width: 2.5rem;
253
- border-radius: 0.5rem;
254
- --tw-bg-opacity: 1;
255
- background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
256
- --tw-text-opacity: 1;
257
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
258
- z-index: 1;
259
- display: flex;
260
- align-items: center;
261
- justify-content: center;
262
- cursor: pointer;
263
- }
264
-
265
- .selected-date {
266
- height: 2.5rem;
267
- width: 2.5rem;
268
- border-radius: 0.5rem;
269
- --tw-bg-opacity: 1;
270
- background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
271
- --tw-text-opacity: 1;
272
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
273
- display: flex;
274
- align-items: center;
275
- justify-content: center;
276
- cursor: pointer;
277
- }
278
-
279
- .date button {
280
- border: none;
281
- background: none;
282
- }
283
- </style>
@@ -1,8 +0,0 @@
1
- import { DateTime } from 'luxon';
2
- interface Props {
3
- selectedDate: DateTime | undefined;
4
- onClick?: any;
5
- }
6
- declare const DatePicker: import("svelte").Component<Props, {}, "selectedDate">;
7
- type DatePicker = ReturnType<typeof DatePicker>;
8
- export default DatePicker;
@@ -1 +0,0 @@
1
- export { default as DatePicker } from './DatePicker.svelte';
@@ -1 +0,0 @@
1
- export { default as DatePicker } from './DatePicker.svelte';
@@ -1,14 +0,0 @@
1
- <script module>
2
- import Divider from './Divider.svelte';
3
- import { defineMeta } from '@storybook/addon-svelte-csf';
4
-
5
- const { Story } = defineMeta({
6
- component: Divider,
7
- title: 'Design System/Divider',
8
- tags: ['autodocs']
9
- });
10
- </script>
11
-
12
- <Story name="Primary">
13
- <Divider />
14
- </Story>
@@ -1,27 +0,0 @@
1
- export default Divider;
2
- type Divider = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
8
- };
9
- declare const Divider: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- import Divider from './Divider.svelte';
15
- 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> {
16
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
- $$bindings?: Bindings;
18
- } & Exports;
19
- (internal: unknown, props: {
20
- $$events?: Events;
21
- $$slots?: Slots;
22
- }): Exports & {
23
- $set?: any;
24
- $on?: any;
25
- };
26
- z_$$bindings?: Bindings;
27
- }
@@ -1,9 +0,0 @@
1
- <script lang="ts">
2
- interface Props {
3
- class?: string;
4
- }
5
-
6
- let { class: className = '' }: Props = $props();
7
- </script>
8
-
9
- <div class={`h-[1px] w-full bg-neutral ${className}`}></div>
@@ -1,6 +0,0 @@
1
- interface Props {
2
- class?: string;
3
- }
4
- declare const Divider: import("svelte").Component<Props, {}, "">;
5
- type Divider = ReturnType<typeof Divider>;
6
- export default Divider;
@@ -1 +0,0 @@
1
- export { default as Divider } from './Divider.svelte';
@@ -1 +0,0 @@
1
- export { default as Divider } from './Divider.svelte';
@@ -1,64 +0,0 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import Drawer from './Drawer.svelte';
4
- import Button from '../button/Button.svelte';
5
-
6
- const { Story } = defineMeta({
7
- component: Drawer,
8
- title: 'Design System/Drawer',
9
- tags: ['autodocs']
10
- });
11
-
12
- let open = $state(false);
13
- </script>
14
-
15
- <Story name="Base">
16
- <div class="py-12">
17
- <Drawer id="my-drawer" bind:open controlled>
18
- {#snippet trigger()}
19
- <Button onClick={() => (open = true)}>Open Drawer</Button>
20
- {/snippet}
21
- {#snippet content()}
22
- <div>
23
- <div>
24
- <p>Drawer content here</p>
25
- </div>
26
- </div>
27
- {/snippet}
28
- </Drawer>
29
- </div>
30
- </Story>
31
-
32
- <Story name="Open">
33
- <div class="py-12">
34
- <Drawer id="my-drawer" open controlled>
35
- {#snippet trigger()}
36
- <Button onClick={() => (open = true)}>Open Drawer</Button>
37
- {/snippet}
38
- {#snippet content()}
39
- <div>
40
- <div>
41
- <p>Drawer content here</p>
42
- </div>
43
- </div>
44
- {/snippet}
45
- </Drawer>
46
- </div>
47
- </Story>
48
-
49
- <Story name="Open Left">
50
- <div class="py-12">
51
- <Drawer id="my-drawer" side="left" bind:open controlled>
52
- {#snippet trigger()}
53
- <Button onClick={() => (open = true)}>Open Drawer</Button>
54
- {/snippet}
55
- {#snippet content()}
56
- <div>
57
- <div>
58
- <p>Drawer content here</p>
59
- </div>
60
- </div>
61
- {/snippet}
62
- </Drawer>
63
- </div>
64
- </Story>
@@ -1,27 +0,0 @@
1
- export default Drawer;
2
- type Drawer = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
8
- };
9
- declare const Drawer: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
- import Drawer from './Drawer.svelte';
15
- 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> {
16
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
- $$bindings?: Bindings;
18
- } & Exports;
19
- (internal: unknown, props: {
20
- $$events?: Events;
21
- $$slots?: Slots;
22
- }): Exports & {
23
- $set?: any;
24
- $on?: any;
25
- };
26
- z_$$bindings?: Bindings;
27
- }
@@ -1,41 +0,0 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
- import DrawerLabel from './DrawerLabel.svelte';
4
-
5
- interface Props {
6
- id: string;
7
- controlled?: boolean;
8
- // Open only works when controlled is true
9
- open?: boolean;
10
- side?: 'left' | 'right';
11
- trigger?: Snippet;
12
- content: Snippet;
13
- }
14
-
15
- let {
16
- id,
17
- controlled = false,
18
- open = $bindable(false),
19
- side = 'right',
20
- trigger,
21
- content
22
- }: Props = $props();
23
- </script>
24
-
25
- <div class={`drawer-auto-gutter drawer`} class:drawer-end={side === 'right'}>
26
- {#if controlled}
27
- <input {id} type="checkbox" class="drawer-toggle" bind:checked={open} />
28
- {:else}
29
- <input {id} type="checkbox" class="drawer-toggle" />
30
- {/if}
31
-
32
- <div class="drawer-content">
33
- {@render trigger?.()}
34
- </div>
35
- <div class="drawer-side" inert={controlled ? !open : false}>
36
- <label for={id} aria-label="close sidebar" class="drawer-overlay"></label>
37
- <div class="h-screen bg-base sm:w-[460px]">
38
- {@render content()}
39
- </div>
40
- </div>
41
- </div>