ui-svelte 0.2.11 → 0.2.13

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 (225) hide show
  1. package/README.md +2 -2
  2. package/dist/charts/ArcChart.svelte +9 -14
  3. package/dist/charts/ArcChart.svelte.d.ts +3 -3
  4. package/dist/charts/AreaChart.svelte +347 -118
  5. package/dist/charts/AreaChart.svelte.d.ts +33 -4
  6. package/dist/charts/BarChart.svelte +288 -66
  7. package/dist/charts/BarChart.svelte.d.ts +26 -1
  8. package/dist/charts/Candlestick.svelte +53 -50
  9. package/dist/charts/Candlestick.svelte.d.ts +8 -8
  10. package/dist/charts/LineChart.svelte +391 -91
  11. package/dist/charts/LineChart.svelte.d.ts +26 -3
  12. package/dist/charts/PieChart.svelte +333 -92
  13. package/dist/charts/PieChart.svelte.d.ts +33 -5
  14. package/dist/charts/css/arc-chart.css +3 -3
  15. package/dist/charts/css/area-chart.css +127 -29
  16. package/dist/charts/css/bar-chart.css +114 -8
  17. package/dist/charts/css/candlestick.css +2 -0
  18. package/dist/charts/css/line-chart.css +111 -13
  19. package/dist/charts/css/pie-chart.css +92 -20
  20. package/dist/control/Audio.svelte +86 -44
  21. package/dist/control/Audio.svelte.d.ts +4 -1
  22. package/dist/control/Button.svelte +18 -27
  23. package/dist/control/Button.svelte.d.ts +3 -2
  24. package/dist/control/Fab.svelte +103 -0
  25. package/dist/control/Fab.svelte.d.ts +25 -0
  26. package/dist/control/IconButton.svelte +17 -27
  27. package/dist/control/IconButton.svelte.d.ts +3 -3
  28. package/dist/control/Image.svelte +123 -0
  29. package/dist/control/Image.svelte.d.ts +13 -0
  30. package/dist/control/Record.svelte +141 -98
  31. package/dist/control/Record.svelte.d.ts +2 -1
  32. package/dist/control/ToggleGroup.svelte +22 -8
  33. package/dist/control/ToggleGroup.svelte.d.ts +2 -1
  34. package/dist/control/ToggleTheme.svelte +13 -11
  35. package/dist/control/ToggleTheme.svelte.d.ts +3 -2
  36. package/dist/control/Video.svelte +57 -29
  37. package/dist/control/Video.svelte.d.ts +1 -0
  38. package/dist/control/css/btn.css +200 -152
  39. package/dist/control/css/fab.css +84 -0
  40. package/dist/control/css/image.css +56 -0
  41. package/dist/control/css/media.css +95 -30
  42. package/dist/control/css/toggle-group.css +253 -84
  43. package/dist/control/css/video.css +1 -14
  44. package/dist/css/animations.css +5 -9
  45. package/dist/css/base.css +13 -347
  46. package/dist/css/decorations.css +561 -0
  47. package/dist/css/rich-text.css +485 -0
  48. package/dist/css/transitions.css +158 -0
  49. package/dist/css/typography.css +291 -0
  50. package/dist/css/utilities.css +0 -4
  51. package/dist/display/Accordion.svelte +28 -4
  52. package/dist/display/Accordion.svelte.d.ts +2 -1
  53. package/dist/display/Alert.svelte +32 -12
  54. package/dist/display/Alert.svelte.d.ts +2 -3
  55. package/dist/display/Avatar.svelte +23 -18
  56. package/dist/display/Avatar.svelte.d.ts +4 -1
  57. package/dist/display/AvatarGroup.svelte +20 -18
  58. package/dist/display/AvatarGroup.svelte.d.ts +6 -3
  59. package/dist/display/Badge.svelte +11 -4
  60. package/dist/display/Badge.svelte.d.ts +2 -1
  61. package/dist/display/Card.svelte +15 -14
  62. package/dist/display/Card.svelte.d.ts +2 -3
  63. package/dist/display/Carousel.svelte +130 -99
  64. package/dist/display/Carousel.svelte.d.ts +6 -4
  65. package/dist/display/ChatBox.svelte +245 -106
  66. package/dist/display/ChatBox.svelte.d.ts +32 -5
  67. package/dist/display/Chip.svelte +31 -17
  68. package/dist/display/Chip.svelte.d.ts +3 -2
  69. package/dist/display/Code.svelte +7 -4
  70. package/dist/display/Code.svelte.d.ts +1 -0
  71. package/dist/display/Collapsible.svelte +30 -4
  72. package/dist/display/Collapsible.svelte.d.ts +2 -1
  73. package/dist/display/Countdown.svelte +169 -0
  74. package/dist/display/Countdown.svelte.d.ts +21 -0
  75. package/dist/display/Empty.svelte +37 -3
  76. package/dist/display/Empty.svelte.d.ts +3 -0
  77. package/dist/display/Item.svelte +42 -11
  78. package/dist/display/Item.svelte.d.ts +4 -2
  79. package/dist/display/Map.svelte +488 -0
  80. package/dist/display/Map.svelte.d.ts +44 -0
  81. package/dist/display/Marquee.svelte +0 -2
  82. package/dist/display/Section.svelte +14 -12
  83. package/dist/display/Section.svelte.d.ts +2 -3
  84. package/dist/display/Skeleton.svelte +32 -0
  85. package/dist/display/Skeleton.svelte.d.ts +10 -0
  86. package/dist/display/Table.svelte +94 -132
  87. package/dist/display/Table.svelte.d.ts +10 -1
  88. package/dist/display/css/accordion.css +349 -52
  89. package/dist/display/css/alert.css +38 -18
  90. package/dist/display/css/avatar-group.css +38 -75
  91. package/dist/display/css/avatar.css +139 -121
  92. package/dist/display/css/badge.css +50 -27
  93. package/dist/display/css/card.css +123 -71
  94. package/dist/display/css/carousel.css +25 -5
  95. package/dist/display/css/chat-box.css +158 -26
  96. package/dist/display/css/chip.css +142 -68
  97. package/dist/display/css/code.css +2 -6
  98. package/dist/display/css/collapsible.css +349 -45
  99. package/dist/display/css/countdown.css +206 -0
  100. package/dist/display/css/divider.css +8 -6
  101. package/dist/display/css/empty.css +7 -0
  102. package/dist/display/css/item.css +330 -84
  103. package/dist/display/css/map.css +164 -0
  104. package/dist/display/css/marquee.css +0 -3
  105. package/dist/display/css/section.css +89 -65
  106. package/dist/display/css/skeleton.css +58 -0
  107. package/dist/display/css/table.css +309 -193
  108. package/dist/form/Checkbox.svelte +11 -5
  109. package/dist/form/Checkbox.svelte.d.ts +2 -1
  110. package/dist/form/ColorField.svelte +601 -0
  111. package/dist/form/ColorField.svelte.d.ts +29 -0
  112. package/dist/form/ComboBox.svelte +24 -9
  113. package/dist/form/ComboBox.svelte.d.ts +2 -2
  114. package/dist/form/CsvField.svelte +62 -136
  115. package/dist/form/CsvField.svelte.d.ts +2 -2
  116. package/dist/form/DateField.svelte +33 -15
  117. package/dist/form/DateField.svelte.d.ts +2 -1
  118. package/dist/form/DateRange.svelte +436 -0
  119. package/dist/form/DateRange.svelte.d.ts +24 -0
  120. package/dist/form/DragDrop.svelte +578 -0
  121. package/dist/form/DragDrop.svelte.d.ts +33 -0
  122. package/dist/form/Dropzone.svelte +28 -8
  123. package/dist/form/Dropzone.svelte.d.ts +2 -2
  124. package/dist/form/Editor.svelte +626 -0
  125. package/dist/form/Editor.svelte.d.ts +50 -0
  126. package/dist/form/ImageCropper.svelte +422 -61
  127. package/dist/form/ImageCropper.svelte.d.ts +15 -1
  128. package/dist/form/{PasswordStrength.svelte → PasswordField.svelte} +58 -24
  129. package/dist/form/{PasswordStrength.svelte.d.ts → PasswordField.svelte.d.ts} +6 -5
  130. package/dist/form/PhoneField.svelte +26 -14
  131. package/dist/form/PhoneField.svelte.d.ts +4 -3
  132. package/dist/form/PinField.svelte +39 -31
  133. package/dist/form/PinField.svelte.d.ts +3 -3
  134. package/dist/form/RadioGroup.svelte +9 -5
  135. package/dist/form/RadioGroup.svelte.d.ts +1 -1
  136. package/dist/form/Select.svelte +20 -19
  137. package/dist/form/Select.svelte.d.ts +2 -2
  138. package/dist/form/Slider.svelte +10 -4
  139. package/dist/form/Slider.svelte.d.ts +2 -1
  140. package/dist/form/TextField.svelte +29 -11
  141. package/dist/form/TextField.svelte.d.ts +5 -4
  142. package/dist/form/Textarea.svelte +15 -6
  143. package/dist/form/Textarea.svelte.d.ts +2 -2
  144. package/dist/form/Toggle.svelte +7 -3
  145. package/dist/form/Toggle.svelte.d.ts +1 -1
  146. package/dist/form/css/checkbox.css +18 -2
  147. package/dist/form/css/color-field.css +141 -0
  148. package/dist/form/css/control.css +193 -82
  149. package/dist/form/css/csv-field.css +221 -0
  150. package/dist/form/css/date-range.css +122 -0
  151. package/dist/form/css/date.css +24 -2
  152. package/dist/form/css/drag-drop.css +234 -0
  153. package/dist/form/css/dropzone.css +153 -34
  154. package/dist/form/css/editor.css +367 -0
  155. package/dist/form/css/field.css +4 -0
  156. package/dist/form/css/image-cropper.css +242 -20
  157. package/dist/form/css/radio-group.css +26 -1
  158. package/dist/form/css/select.css +2 -2
  159. package/dist/form/css/slider.css +37 -0
  160. package/dist/form/css/textarea.css +178 -75
  161. package/dist/form/css/toggle.css +15 -3
  162. package/dist/hooks/use-chat.svelte.js +1 -1
  163. package/dist/hooks/use-form.svelte.js +3 -3
  164. package/dist/hooks/use-search.svelte.js +0 -3
  165. package/dist/hooks/use-table.svelte.d.ts +1 -0
  166. package/dist/hooks/use-table.svelte.js +6 -0
  167. package/dist/icons/index.d.ts +34 -2
  168. package/dist/icons/index.js +36 -4
  169. package/dist/index.css +44 -49
  170. package/dist/index.d.ts +14 -4
  171. package/dist/index.js +13 -3
  172. package/dist/layout/AppBar.svelte +22 -14
  173. package/dist/layout/AppBar.svelte.d.ts +2 -1
  174. package/dist/layout/Footer.svelte +19 -11
  175. package/dist/layout/Footer.svelte.d.ts +2 -1
  176. package/dist/layout/Provider.svelte +32 -9
  177. package/dist/layout/Provider.svelte.d.ts +3 -1
  178. package/dist/layout/Sidebar.svelte +17 -8
  179. package/dist/layout/Sidebar.svelte.d.ts +2 -1
  180. package/dist/layout/css/app-bar.css +63 -66
  181. package/dist/layout/css/footer.css +62 -65
  182. package/dist/layout/css/sidebar.css +120 -59
  183. package/dist/navigation/BottomNav.svelte +51 -14
  184. package/dist/navigation/FooterGroup.svelte +1 -1
  185. package/dist/navigation/NavMenu.svelte +47 -23
  186. package/dist/navigation/NavMenu.svelte.d.ts +29 -0
  187. package/dist/navigation/Pagination.svelte +158 -0
  188. package/dist/navigation/Pagination.svelte.d.ts +18 -0
  189. package/dist/navigation/SideNav.svelte +30 -25
  190. package/dist/navigation/SideNav.svelte.d.ts +2 -3
  191. package/dist/navigation/Tabs.svelte +17 -7
  192. package/dist/navigation/Tabs.svelte.d.ts +2 -2
  193. package/dist/navigation/css/bottom-nav.css +319 -257
  194. package/dist/navigation/css/footer-group.css +1 -1
  195. package/dist/navigation/css/footer-nav.css +1 -1
  196. package/dist/navigation/css/nav-menu.css +331 -106
  197. package/dist/navigation/css/pagination.css +74 -0
  198. package/dist/navigation/css/side-nav.css +514 -75
  199. package/dist/navigation/css/tabs.css +246 -52
  200. package/dist/overlay/AlertDialog.svelte +58 -0
  201. package/dist/overlay/AlertDialog.svelte.d.ts +14 -25
  202. package/dist/overlay/Command.svelte +347 -0
  203. package/dist/overlay/Command.svelte.d.ts +33 -25
  204. package/dist/overlay/Drawer.svelte +49 -21
  205. package/dist/overlay/Drawer.svelte.d.ts +2 -2
  206. package/dist/overlay/Dropdown.svelte +3 -3
  207. package/dist/overlay/Modal.svelte +51 -16
  208. package/dist/overlay/Modal.svelte.d.ts +3 -3
  209. package/dist/overlay/Toast.svelte +41 -17
  210. package/dist/overlay/Toast.svelte.d.ts +1 -1
  211. package/dist/overlay/Tooltip.svelte +36 -27
  212. package/dist/overlay/Tooltip.svelte.d.ts +2 -2
  213. package/dist/overlay/css/command.css +68 -0
  214. package/dist/overlay/css/drawer.css +63 -24
  215. package/dist/overlay/css/dropdown.css +1 -1
  216. package/dist/overlay/css/hovercard.css +1 -1
  217. package/dist/overlay/css/modal.css +79 -27
  218. package/dist/overlay/css/toast.css +40 -24
  219. package/dist/overlay/css/tooltip.css +110 -67
  220. package/dist/stores/theme.svelte.js +44 -12
  221. package/dist/stores/toast.svelte.d.ts +4 -4
  222. package/dist/stores/toast.svelte.js +2 -2
  223. package/package.json +1 -1
  224. package/dist/utils/charts.d.ts +0 -27
  225. package/dist/utils/charts.js +0 -140
@@ -5,85 +5,128 @@
5
5
 
6
6
  .tooltip-popover {
7
7
  @apply flex items-center gap-2 px-3 py-2;
8
- @apply rounded-ui text-sm;
8
+ @apply rounded-box text-sm;
9
9
  @apply invisible opacity-0 transition-opacity duration-300 ease-in-out;
10
10
  @apply shadow shadow-muted;
11
11
  @apply whitespace-nowrap;
12
12
  position: fixed;
13
13
  z-index: 9999;
14
14
  pointer-events: none;
15
- }
16
-
17
- .tooltip-popover.is-active {
18
- @apply visible opacity-100;
19
- }
20
-
21
- .tooltip-popover.is-primary {
22
- @apply bg-on-primary text-primary;
23
- }
24
-
25
- .tooltip-popover.is-solid.is-primary {
26
- @apply bg-primary text-on-primary;
27
- }
28
-
29
- .tooltip-popover.is-secondary {
30
- @apply bg-on-secondary text-secondary;
31
- }
32
-
33
- .tooltip-popover.is-solid.is-secondary {
34
- @apply bg-secondary text-on-secondary;
35
- }
36
-
37
- .tooltip-popover.is-muted {
38
- @apply bg-muted text-on-muted;
39
- }
40
15
 
41
- .tooltip-popover.is-solid.is-muted {
42
- @apply bg-on-muted text-muted;
16
+ &.is-active {
17
+ @apply visible opacity-100;
18
+ }
43
19
  }
44
20
 
45
21
  .tooltip-arrow {
46
22
  @apply absolute w-2 h-2 rotate-45;
47
- position: absolute;
48
- }
49
-
50
- .tooltip-arrow.is-primary {
51
- @apply bg-on-primary;
52
- }
53
-
54
- .tooltip-arrow.is-solid.is-primary {
55
- @apply bg-primary;
56
- }
57
-
58
- .tooltip-arrow.is-secondary {
59
- @apply bg-on-secondary;
60
- }
61
-
62
- .tooltip-arrow.is-solid.is-secondary {
63
- @apply bg-secondary;
64
- }
65
-
66
- .tooltip-arrow.is-muted {
67
- @apply bg-muted;
68
- }
69
-
70
- .tooltip-arrow.is-solid.is-muted {
71
- @apply bg-on-muted;
72
- }
73
-
74
- .tooltip-popover.position-top .tooltip-arrow {
75
- @apply -bottom-1 left-1/2 -translate-x-1/2;
76
- }
77
-
78
- .tooltip-popover.position-bottom .tooltip-arrow {
79
- @apply -top-1 left-1/2 -translate-x-1/2;
80
- }
81
-
82
- .tooltip-popover.position-start .tooltip-arrow {
83
- @apply -right-1 top-1/2 -translate-y-1/2;
84
23
  }
85
24
 
86
- .tooltip-popover.position-end .tooltip-arrow {
87
- @apply -left-1 top-1/2 -translate-y-1/2;
25
+ .tooltip-popover {
26
+ &.position-top .tooltip-arrow {
27
+ @apply -bottom-1 left-1/2 -translate-x-1/2;
28
+ }
29
+
30
+ &.position-bottom .tooltip-arrow {
31
+ @apply -top-1 left-1/2 -translate-x-1/2;
32
+ }
33
+
34
+ &.position-start .tooltip-arrow {
35
+ @apply -right-1 top-1/2 -translate-y-1/2;
36
+ }
37
+
38
+ &.position-end .tooltip-arrow {
39
+ @apply -left-1 top-1/2 -translate-y-1/2;
40
+ }
41
+ }
42
+
43
+ .tooltip-popover.is-soft {
44
+ &.is-primary {
45
+ @apply bg-soft-primary text-primary;
46
+ & .tooltip-arrow {
47
+ @apply bg-soft-primary;
48
+ }
49
+ }
50
+ &.is-secondary {
51
+ @apply bg-soft-secondary text-secondary;
52
+ & .tooltip-arrow {
53
+ @apply bg-soft-secondary;
54
+ }
55
+ }
56
+ &.is-muted {
57
+ @apply bg-soft-muted text-on-muted;
58
+ & .tooltip-arrow {
59
+ @apply bg-soft-muted;
60
+ }
61
+ }
62
+ &.is-success {
63
+ @apply bg-soft-success text-success;
64
+ & .tooltip-arrow {
65
+ @apply bg-soft-success;
66
+ }
67
+ }
68
+ &.is-info {
69
+ @apply bg-soft-info text-info;
70
+ & .tooltip-arrow {
71
+ @apply bg-soft-info;
72
+ }
73
+ }
74
+ &.is-warning {
75
+ @apply bg-soft-warning text-warning;
76
+ & .tooltip-arrow {
77
+ @apply bg-soft-warning;
78
+ }
79
+ }
80
+ &.is-danger {
81
+ @apply bg-soft-danger text-danger;
82
+ & .tooltip-arrow {
83
+ @apply bg-soft-danger;
84
+ }
85
+ }
86
+ }
87
+
88
+ .tooltip-popover.is-solid {
89
+ &.is-primary {
90
+ @apply bg-primary text-on-primary;
91
+ & .tooltip-arrow {
92
+ @apply bg-primary;
93
+ }
94
+ }
95
+ &.is-secondary {
96
+ @apply bg-secondary text-on-secondary;
97
+ & .tooltip-arrow {
98
+ @apply bg-secondary;
99
+ }
100
+ }
101
+ &.is-muted {
102
+ @apply bg-on-muted text-muted;
103
+ & .tooltip-arrow {
104
+ @apply bg-on-muted;
105
+ }
106
+ }
107
+ &.is-success {
108
+ @apply bg-success text-on-success;
109
+ & .tooltip-arrow {
110
+ @apply bg-success;
111
+ }
112
+ }
113
+ &.is-info {
114
+ @apply bg-info text-on-info;
115
+ & .tooltip-arrow {
116
+ @apply bg-info;
117
+ }
118
+ }
119
+ &.is-warning {
120
+ @apply bg-warning text-on-warning;
121
+ & .tooltip-arrow {
122
+ @apply bg-warning;
123
+ }
124
+ }
125
+ &.is-danger {
126
+ @apply bg-danger text-on-danger;
127
+ & .tooltip-arrow {
128
+ @apply bg-danger;
129
+ }
130
+ }
88
131
  }
89
132
  }
@@ -3,7 +3,7 @@ const DARK_CLASS = 'dark';
3
3
  let themeState = $state('light');
4
4
  let isDark = $state(false);
5
5
  const getInitialTheme = () => {
6
- if (typeof window === 'undefined') {
6
+ if (typeof window === 'undefined' || typeof localStorage === 'undefined') {
7
7
  return 'light';
8
8
  }
9
9
  const storedTheme = localStorage.getItem(THEME_STORAGE_KEY);
@@ -16,21 +16,26 @@ const getInitialTheme = () => {
16
16
  return 'light';
17
17
  };
18
18
  const initializeTheme = () => {
19
+ if (typeof document === 'undefined') {
20
+ return;
21
+ }
19
22
  const initialTheme = getInitialTheme();
20
23
  themeState = initialTheme;
21
24
  isDark = initialTheme === 'dark';
22
- if (typeof window !== 'undefined') {
23
- const htmlElement = document.documentElement;
24
- if (isDark) {
25
- htmlElement.classList.add(DARK_CLASS);
26
- }
27
- else {
28
- htmlElement.classList.remove(DARK_CLASS);
29
- }
25
+ const htmlElement = document.documentElement;
26
+ if (isDark) {
27
+ htmlElement.classList.add(DARK_CLASS);
28
+ }
29
+ else {
30
+ htmlElement.classList.remove(DARK_CLASS);
30
31
  }
31
32
  };
32
- initializeTheme();
33
- const toggleTheme = () => {
33
+ if (typeof document !== 'undefined') {
34
+ initializeTheme();
35
+ }
36
+ const switchTheme = () => {
37
+ if (typeof document === 'undefined')
38
+ return;
34
39
  themeState = themeState === 'light' ? 'dark' : 'light';
35
40
  isDark = themeState === 'dark';
36
41
  const htmlElement = document.documentElement;
@@ -40,10 +45,37 @@ const toggleTheme = () => {
40
45
  else {
41
46
  htmlElement.classList.remove(DARK_CLASS);
42
47
  }
43
- if (typeof window !== 'undefined') {
48
+ if (typeof localStorage !== 'undefined') {
44
49
  localStorage.setItem(THEME_STORAGE_KEY, themeState);
45
50
  }
46
51
  };
52
+ const toggleTheme = () => {
53
+ if (typeof document === 'undefined')
54
+ return;
55
+ if (!document.startViewTransition) {
56
+ switchTheme();
57
+ }
58
+ else {
59
+ document.documentElement.classList.add('theme-transitioning');
60
+ const transition = document.startViewTransition(() => {
61
+ themeState = themeState === 'light' ? 'dark' : 'light';
62
+ isDark = themeState === 'dark';
63
+ const htmlElement = document.documentElement;
64
+ if (isDark) {
65
+ htmlElement.classList.add(DARK_CLASS);
66
+ }
67
+ else {
68
+ htmlElement.classList.remove(DARK_CLASS);
69
+ }
70
+ if (typeof localStorage !== 'undefined') {
71
+ localStorage.setItem(THEME_STORAGE_KEY, themeState);
72
+ }
73
+ });
74
+ transition.finished.finally(() => {
75
+ document.documentElement.classList.remove('theme-transitioning');
76
+ });
77
+ }
78
+ };
47
79
  export const theme = {
48
80
  get state() {
49
81
  return themeState;
@@ -1,13 +1,13 @@
1
- import type { IconName } from '../types.js';
1
+ import type { IconData } from "../index.js";
2
2
  export interface ToastMessage {
3
3
  id: string;
4
- icon?: IconName;
4
+ icon?: IconData;
5
5
  title?: string;
6
6
  description: string;
7
7
  duration?: number;
8
8
  position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
9
- isSolid?: boolean;
10
- status: 'success' | 'danger' | 'info' | 'warning';
9
+ variant?: 'solid' | 'soft';
10
+ color: 'primary' | 'secondary' | 'muted' | 'success' | 'info' | 'danger' | 'warning';
11
11
  }
12
12
  export declare const toast: {
13
13
  readonly messages: ToastMessage[];
@@ -8,11 +8,11 @@ const toastShow = (message) => {
8
8
  id,
9
9
  title: message.title,
10
10
  description: message.description,
11
- status: message.status || 'info',
11
+ color: message.color || 'info',
12
12
  duration: message.duration || 0,
13
13
  icon: message.icon,
14
14
  position: message.position,
15
- isSolid: message.isSolid
15
+ variant: message.variant || 'soft'
16
16
  };
17
17
  toastMessages = [...toastMessages, newMessage];
18
18
  if (newMessage.duration && newMessage.duration > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ui-svelte",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "author": {
5
5
  "name": "SappsDev",
6
6
  "email": "info@sappsdev.com"
@@ -1,27 +0,0 @@
1
- import type { BandScale, ChartMargin, Scale } from '../types.js';
2
- export declare function calculateDomain(data: any[], key: string): [number, number];
3
- export declare function createLinearScale(domain: [number, number], range: [number, number]): Scale;
4
- export declare function createBandScale(domain: string[], range: [number, number], padding?: number): BandScale;
5
- export declare const DEFAULT_MARGIN: ChartMargin;
6
- export declare function getChartDimensions(width: number, height: number, margin: ChartMargin): {
7
- width: number;
8
- height: number;
9
- };
10
- export declare function generateGridLines(domain: [number, number], scale: Scale, count?: number): Array<{
11
- value: number;
12
- position: number;
13
- }>;
14
- export declare function polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number): {
15
- x: number;
16
- y: number;
17
- };
18
- export declare function createArcPath(centerX: number, centerY: number, radius: number, startAngle: number, endAngle: number, innerRadius?: number): string;
19
- export declare function createSmoothPath(points: Array<{
20
- x: number;
21
- y: number;
22
- }>): string;
23
- export declare function createLinearPath(points: Array<{
24
- x: number;
25
- y: number;
26
- }>): string;
27
- export declare function generateColors(count: number): string[];
@@ -1,140 +0,0 @@
1
- export function calculateDomain(data, key) {
2
- const values = data.map((d) => Number(d[key])).filter((v) => !isNaN(v));
3
- if (values.length === 0)
4
- return [0, 1];
5
- const min = Math.min(...values);
6
- const max = Math.max(...values);
7
- const padding = (max - min) * 0.1;
8
- return [Math.min(0, min - padding), max + padding];
9
- }
10
- export function createLinearScale(domain, range) {
11
- const [domainMin, domainMax] = domain;
12
- const [rangeMin, rangeMax] = range;
13
- return (value) => {
14
- if (domainMax === domainMin)
15
- return rangeMin;
16
- const ratio = (value - domainMin) / (domainMax - domainMin);
17
- return rangeMin + ratio * (rangeMax - rangeMin);
18
- };
19
- }
20
- export function createBandScale(domain, range, padding = 0.1) {
21
- const [rangeMin, rangeMax] = range;
22
- const rangeSize = rangeMax - rangeMin;
23
- const step = rangeSize / domain.length;
24
- const bandwidth = step * (1 - padding);
25
- const paddingOuter = (step * padding) / 2;
26
- const scale = (value) => {
27
- const index = domain.indexOf(value);
28
- return rangeMin + paddingOuter + index * step;
29
- };
30
- scale.bandwidth = () => bandwidth;
31
- scale.step = () => step;
32
- return scale;
33
- }
34
- export const DEFAULT_MARGIN = {
35
- top: 20,
36
- right: 30,
37
- bottom: 40,
38
- left: 40
39
- };
40
- export function getChartDimensions(width, height, margin) {
41
- return {
42
- width: width - margin.left - margin.right,
43
- height: height - margin.top - margin.bottom
44
- };
45
- }
46
- export function generateGridLines(domain, scale, count = 5) {
47
- const [min, max] = domain;
48
- return Array.from({ length: count + 1 }, (_, i) => {
49
- const value = min + ((max - min) * i) / count;
50
- return {
51
- value,
52
- position: scale(value)
53
- };
54
- });
55
- }
56
- export function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
57
- const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;
58
- return {
59
- x: centerX + radius * Math.cos(angleInRadians),
60
- y: centerY + radius * Math.sin(angleInRadians)
61
- };
62
- }
63
- export function createArcPath(centerX, centerY, radius, startAngle, endAngle, innerRadius = 0) {
64
- const start = polarToCartesian(centerX, centerY, radius, endAngle);
65
- const end = polarToCartesian(centerX, centerY, radius, startAngle);
66
- const largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';
67
- if (innerRadius > 0) {
68
- // Donut/doughnut chart
69
- const innerStart = polarToCartesian(centerX, centerY, innerRadius, endAngle);
70
- const innerEnd = polarToCartesian(centerX, centerY, innerRadius, startAngle);
71
- return [
72
- 'M',
73
- start.x,
74
- start.y,
75
- 'A',
76
- radius,
77
- radius,
78
- 0,
79
- largeArcFlag,
80
- 0,
81
- end.x,
82
- end.y,
83
- 'L',
84
- innerEnd.x,
85
- innerEnd.y,
86
- 'A',
87
- innerRadius,
88
- innerRadius,
89
- 0,
90
- largeArcFlag,
91
- 1,
92
- innerStart.x,
93
- innerStart.y,
94
- 'Z'
95
- ].join(' ');
96
- }
97
- else {
98
- return [
99
- 'M',
100
- centerX,
101
- centerY,
102
- 'L',
103
- start.x,
104
- start.y,
105
- 'A',
106
- radius,
107
- radius,
108
- 0,
109
- largeArcFlag,
110
- 0,
111
- end.x,
112
- end.y,
113
- 'Z'
114
- ].join(' ');
115
- }
116
- }
117
- export function createSmoothPath(points) {
118
- if (points.length === 0)
119
- return '';
120
- if (points.length === 1)
121
- return `M ${points[0].x} ${points[0].y}`;
122
- let path = `M ${points[0].x} ${points[0].y}`;
123
- for (let i = 1; i < points.length; i++) {
124
- const prev = points[i - 1];
125
- const curr = points[i];
126
- const controlPointX = (prev.x + curr.x) / 2;
127
- path += ` Q ${controlPointX} ${prev.y} ${curr.x} ${curr.y}`;
128
- }
129
- return path;
130
- }
131
- export function createLinearPath(points) {
132
- if (points.length === 0)
133
- return '';
134
- return points
135
- .map((point, i) => (i === 0 ? `M ${point.x} ${point.y}` : `L ${point.x} ${point.y}`))
136
- .join(' ');
137
- }
138
- export function generateColors(count) {
139
- return Array.from({ length: count }, (_, i) => `hsl(${(i * 360) / count}, 70%, 50%)`);
140
- }