@rkosafo/cai.components 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/dist/baseEditor/index.svelte +32 -0
  2. package/dist/baseEditor/index.svelte.d.ts +18 -0
  3. package/dist/builders/filters/FilterBuilder.svelte +638 -0
  4. package/dist/builders/filters/FilterBuilder.svelte.d.ts +4 -0
  5. package/dist/builders/filters/index.d.ts +1 -0
  6. package/dist/builders/filters/index.js +1 -0
  7. package/dist/forms/FormCheckbox/FormCheckbox.svelte +53 -0
  8. package/dist/forms/FormCheckbox/FormCheckbox.svelte.d.ts +4 -0
  9. package/dist/forms/FormCheckbox/index.d.ts +1 -0
  10. package/dist/forms/FormCheckbox/index.js +1 -0
  11. package/dist/forms/FormDatepicker/FormDatepicker.svelte +159 -0
  12. package/dist/forms/FormDatepicker/FormDatepicker.svelte.d.ts +13 -0
  13. package/dist/forms/FormDatepicker/index.d.ts +1 -0
  14. package/dist/forms/FormDatepicker/index.js +1 -0
  15. package/dist/forms/FormInput/FormInput.svelte +87 -0
  16. package/dist/forms/FormInput/FormInput.svelte.d.ts +4 -0
  17. package/dist/forms/FormInput/index.d.ts +1 -0
  18. package/dist/forms/FormInput/index.js +1 -0
  19. package/dist/forms/FormRadio/FormRadio.svelte +53 -0
  20. package/dist/forms/FormRadio/FormRadio.svelte.d.ts +4 -0
  21. package/dist/forms/FormRadio/index.d.ts +1 -0
  22. package/dist/forms/FormRadio/index.js +1 -0
  23. package/dist/forms/FormSelect/FormSelect.svelte +86 -0
  24. package/dist/forms/FormSelect/FormSelect.svelte.d.ts +4 -0
  25. package/dist/forms/FormSelect/index.d.ts +1 -0
  26. package/dist/forms/FormSelect/index.js +1 -0
  27. package/dist/forms/FormTextarea/FormTextarea.svelte +77 -0
  28. package/dist/forms/FormTextarea/FormTextarea.svelte.d.ts +4 -0
  29. package/dist/forms/FormTextarea/index.d.ts +1 -0
  30. package/dist/forms/FormTextarea/index.js +1 -0
  31. package/dist/forms/checkbox/Checkbox.svelte +82 -0
  32. package/dist/forms/checkbox/Checkbox.svelte.d.ts +4 -0
  33. package/dist/forms/checkbox/CheckboxButton.svelte +92 -0
  34. package/dist/forms/checkbox/CheckboxButton.svelte.d.ts +18 -0
  35. package/dist/forms/checkbox/index.d.ts +3 -0
  36. package/dist/forms/checkbox/index.js +3 -0
  37. package/dist/forms/checkbox/theme.d.ts +317 -0
  38. package/dist/forms/checkbox/theme.js +113 -0
  39. package/dist/forms/datepicker/Datepicker.svelte +706 -0
  40. package/dist/forms/datepicker/Datepicker.svelte.d.ts +41 -0
  41. package/dist/forms/datepicker/index.d.ts +2 -0
  42. package/dist/forms/datepicker/index.js +2 -0
  43. package/dist/forms/datepicker/theme.d.ts +385 -0
  44. package/dist/forms/datepicker/theme.js +56 -0
  45. package/dist/forms/form/Form.svelte +69 -0
  46. package/dist/forms/form/Form.svelte.d.ts +6 -0
  47. package/dist/forms/form/index.d.ts +2 -0
  48. package/dist/forms/form/index.js +2 -0
  49. package/dist/forms/input/Input.svelte +363 -0
  50. package/dist/forms/input/Input.svelte.d.ts +4 -0
  51. package/dist/forms/input/index.d.ts +4 -0
  52. package/dist/forms/input/index.js +5 -0
  53. package/dist/forms/input/theme.d.ts +301 -0
  54. package/dist/forms/input/theme.js +100 -0
  55. package/dist/forms/label/Label.svelte +38 -0
  56. package/dist/forms/label/Label.svelte.d.ts +15 -0
  57. package/dist/forms/label/index.d.ts +2 -0
  58. package/dist/forms/label/index.js +2 -0
  59. package/dist/forms/label/theme.d.ts +75 -0
  60. package/dist/forms/label/theme.js +29 -0
  61. package/dist/forms/radio/Radio.svelte +48 -0
  62. package/dist/forms/radio/Radio.svelte.d.ts +25 -0
  63. package/dist/forms/radio/RadioButton.svelte +22 -0
  64. package/dist/forms/radio/RadioButton.svelte.d.ts +25 -0
  65. package/dist/forms/radio/index.d.ts +3 -0
  66. package/dist/forms/radio/index.js +3 -0
  67. package/dist/forms/radio/theme.d.ts +290 -0
  68. package/dist/forms/radio/theme.js +95 -0
  69. package/dist/forms/select/Select.svelte +50 -0
  70. package/dist/forms/select/Select.svelte.d.ts +4 -0
  71. package/dist/forms/select/index.d.ts +1 -0
  72. package/dist/forms/select/index.js +1 -0
  73. package/dist/forms/textarea/Textarea.svelte +165 -0
  74. package/dist/forms/textarea/Textarea.svelte.d.ts +4 -0
  75. package/dist/forms/textarea/index.d.ts +2 -0
  76. package/dist/forms/textarea/index.js +2 -0
  77. package/dist/forms/textarea/theme.d.ts +100 -0
  78. package/dist/forms/textarea/theme.js +35 -0
  79. package/dist/index.d.ts +42 -2
  80. package/dist/index.js +42 -2
  81. package/dist/layout/TF/Content/Content.svelte +28 -0
  82. package/dist/layout/TF/Content/Content.svelte.d.ts +8 -0
  83. package/dist/layout/TF/Content/index.d.ts +1 -0
  84. package/dist/layout/TF/Content/index.js +1 -0
  85. package/dist/layout/TF/Header/Header.svelte +159 -0
  86. package/dist/layout/TF/Header/Header.svelte.d.ts +21 -0
  87. package/dist/layout/TF/Header/index.d.ts +1 -0
  88. package/dist/layout/TF/Header/index.js +1 -0
  89. package/dist/layout/TF/Sidebar/Sidebar.svelte +74 -0
  90. package/dist/layout/TF/Sidebar/Sidebar.svelte.d.ts +23 -0
  91. package/dist/layout/TF/Sidebar/index.d.ts +1 -0
  92. package/dist/layout/TF/Sidebar/index.js +1 -0
  93. package/dist/layout/TF/Wrapper/Wrapper.svelte +17 -0
  94. package/dist/layout/TF/Wrapper/Wrapper.svelte.d.ts +8 -0
  95. package/dist/layout/TF/Wrapper/index.d.ts +1 -0
  96. package/dist/layout/TF/Wrapper/index.js +1 -0
  97. package/dist/layout/TF/index.d.ts +5 -0
  98. package/dist/layout/TF/index.js +5 -0
  99. package/dist/themes/ThemeProvider.svelte +20 -0
  100. package/dist/themes/ThemeProvider.svelte.d.ts +9 -0
  101. package/dist/themes/index.d.ts +7 -0
  102. package/dist/themes/index.js +1 -0
  103. package/dist/themes/themeUtils.d.ts +24 -0
  104. package/dist/themes/themeUtils.js +74 -0
  105. package/dist/themes/themes.d.ts +18 -0
  106. package/dist/themes/themes.js +18 -0
  107. package/dist/types/index.d.ts +755 -0
  108. package/dist/types/index.js +1 -0
  109. package/dist/typography/heading/Heading.svelte +35 -0
  110. package/dist/typography/heading/Heading.svelte.d.ts +10 -0
  111. package/dist/typography/heading/index.d.ts +2 -0
  112. package/dist/typography/heading/index.js +2 -0
  113. package/dist/typography/heading/theme.d.ts +30 -0
  114. package/dist/typography/heading/theme.js +17 -0
  115. package/dist/ui/accordion/Accordion.svelte +49 -0
  116. package/dist/ui/accordion/Accordion.svelte.d.ts +4 -0
  117. package/dist/ui/accordion/AccordionItem.svelte +173 -0
  118. package/dist/ui/accordion/AccordionItem.svelte.d.ts +4 -0
  119. package/dist/ui/accordion/index.d.ts +3 -0
  120. package/dist/ui/accordion/index.js +3 -0
  121. package/dist/ui/accordion/theme.d.ts +96 -0
  122. package/dist/ui/accordion/theme.js +59 -0
  123. package/dist/ui/alert/Alert.svelte +83 -0
  124. package/dist/ui/alert/Alert.svelte.d.ts +5 -0
  125. package/dist/ui/alert/index.d.ts +2 -0
  126. package/dist/ui/alert/index.js +2 -0
  127. package/dist/ui/alert/theme.d.ts +108 -0
  128. package/dist/ui/alert/theme.js +149 -0
  129. package/dist/ui/alertDialog/AlertDialog.svelte +40 -0
  130. package/dist/ui/alertDialog/AlertDialog.svelte.d.ts +4 -0
  131. package/dist/ui/alertDialog/index.d.ts +1 -0
  132. package/dist/ui/alertDialog/index.js +1 -0
  133. package/dist/ui/avatar/Avatar.svelte +77 -0
  134. package/dist/ui/avatar/Avatar.svelte.d.ts +4 -0
  135. package/dist/ui/avatar/index.d.ts +2 -0
  136. package/dist/ui/avatar/index.js +2 -0
  137. package/dist/ui/avatar/theme.d.ts +63 -0
  138. package/dist/ui/avatar/theme.js +31 -0
  139. package/dist/ui/buttons/Button.svelte +102 -0
  140. package/dist/ui/buttons/Button.svelte.d.ts +4 -0
  141. package/dist/ui/buttons/GradientButton.svelte +59 -0
  142. package/dist/ui/buttons/GradientButton.svelte.d.ts +4 -0
  143. package/dist/ui/buttons/index.d.ts +3 -0
  144. package/dist/ui/buttons/index.js +3 -0
  145. package/dist/ui/buttons/theme.d.ts +704 -0
  146. package/dist/ui/buttons/theme.js +332 -0
  147. package/dist/ui/datatable/Datatable.svelte +516 -0
  148. package/dist/ui/datatable/Datatable.svelte.d.ts +5 -0
  149. package/dist/ui/datatable/index.d.ts +2 -0
  150. package/dist/ui/datatable/index.js +2 -0
  151. package/dist/ui/drawer/Drawer.svelte +280 -0
  152. package/dist/ui/drawer/Drawer.svelte.d.ts +37 -0
  153. package/dist/ui/drawer/index.d.ts +2 -0
  154. package/dist/ui/drawer/index.js +2 -0
  155. package/dist/ui/drawer/theme.d.ts +211 -0
  156. package/dist/ui/drawer/theme.js +46 -0
  157. package/dist/ui/dropdown/Dropdown.svelte +36 -0
  158. package/dist/ui/dropdown/Dropdown.svelte.d.ts +4 -0
  159. package/dist/ui/dropdown/DropdownDivider.svelte +11 -0
  160. package/dist/ui/dropdown/DropdownDivider.svelte.d.ts +4 -0
  161. package/dist/ui/dropdown/DropdownGroup.svelte +14 -0
  162. package/dist/ui/dropdown/DropdownGroup.svelte.d.ts +4 -0
  163. package/dist/ui/dropdown/DropdownHeader.svelte +14 -0
  164. package/dist/ui/dropdown/DropdownHeader.svelte.d.ts +4 -0
  165. package/dist/ui/dropdown/DropdownItem.svelte +52 -0
  166. package/dist/ui/dropdown/DropdownItem.svelte.d.ts +4 -0
  167. package/dist/ui/dropdown/index.d.ts +6 -0
  168. package/dist/ui/dropdown/index.js +6 -0
  169. package/dist/ui/dropdown/theme.d.ts +55 -0
  170. package/dist/ui/dropdown/theme.js +20 -0
  171. package/dist/ui/footer/Footer.svelte +15 -0
  172. package/dist/ui/footer/Footer.svelte.d.ts +4 -0
  173. package/dist/ui/footer/FooterBrand.svelte +37 -0
  174. package/dist/ui/footer/FooterBrand.svelte.d.ts +4 -0
  175. package/dist/ui/footer/FooterCopyright.svelte +45 -0
  176. package/dist/ui/footer/FooterCopyright.svelte.d.ts +4 -0
  177. package/dist/ui/footer/FooterIcon.svelte +22 -0
  178. package/dist/ui/footer/FooterIcon.svelte.d.ts +4 -0
  179. package/dist/ui/footer/FooterLink.svelte +33 -0
  180. package/dist/ui/footer/FooterLink.svelte.d.ts +4 -0
  181. package/dist/ui/footer/FooterLinkGroup.svelte +13 -0
  182. package/dist/ui/footer/FooterLinkGroup.svelte.d.ts +4 -0
  183. package/dist/ui/footer/index.d.ts +7 -0
  184. package/dist/ui/footer/index.js +7 -0
  185. package/dist/ui/footer/theme.d.ts +137 -0
  186. package/dist/ui/footer/theme.js +39 -0
  187. package/dist/ui/indicator/Indicator.svelte +42 -0
  188. package/dist/ui/indicator/Indicator.svelte.d.ts +4 -0
  189. package/dist/ui/indicator/index.d.ts +2 -0
  190. package/dist/ui/indicator/index.js +2 -0
  191. package/dist/ui/indicator/theme.d.ts +177 -0
  192. package/dist/ui/indicator/theme.js +114 -0
  193. package/dist/ui/modal/Modal.svelte +265 -0
  194. package/dist/ui/modal/Modal.svelte.d.ts +38 -0
  195. package/dist/ui/modal/index.d.ts +2 -0
  196. package/dist/ui/modal/index.js +2 -0
  197. package/dist/ui/modal/theme.d.ts +190 -0
  198. package/dist/ui/modal/theme.js +41 -0
  199. package/dist/ui/notificationList/NotificationList.svelte +123 -0
  200. package/dist/ui/notificationList/NotificationList.svelte.d.ts +25 -0
  201. package/dist/ui/notificationList/index.d.ts +1 -0
  202. package/dist/ui/notificationList/index.js +1 -0
  203. package/dist/ui/pageLoader/PageLoader.svelte +10 -0
  204. package/dist/ui/pageLoader/PageLoader.svelte.d.ts +4 -0
  205. package/dist/ui/pageLoader/index.d.ts +1 -0
  206. package/dist/ui/pageLoader/index.js +1 -0
  207. package/dist/ui/paginate/Paginate.svelte +96 -0
  208. package/dist/ui/paginate/Paginate.svelte.d.ts +4 -0
  209. package/dist/ui/paginate/index.d.ts +1 -0
  210. package/dist/ui/paginate/index.js +1 -0
  211. package/dist/ui/tab/Tab.svelte +65 -0
  212. package/dist/ui/tab/Tab.svelte.d.ts +4 -0
  213. package/dist/ui/tab/index.d.ts +2 -0
  214. package/dist/ui/tab/index.js +2 -0
  215. package/dist/ui/tab/theme.d.ts +135 -0
  216. package/dist/ui/tab/theme.js +83 -0
  217. package/dist/ui/table/Table.svelte +385 -0
  218. package/dist/ui/table/Table.svelte.d.ts +4 -0
  219. package/dist/ui/table/index.d.ts +1 -0
  220. package/dist/ui/table/index.js +1 -0
  221. package/dist/ui/tableLoader/TableLoader.svelte +24 -0
  222. package/dist/ui/tableLoader/TableLoader.svelte.d.ts +13 -0
  223. package/dist/ui/tableLoader/index.d.ts +1 -0
  224. package/dist/ui/tableLoader/index.js +1 -0
  225. package/dist/ui/toolbar/Toolbar.svelte +59 -0
  226. package/dist/ui/toolbar/Toolbar.svelte.d.ts +17 -0
  227. package/dist/ui/toolbar/ToolbarButton.svelte +56 -0
  228. package/dist/ui/toolbar/ToolbarButton.svelte.d.ts +17 -0
  229. package/dist/ui/toolbar/ToolbarGroup.svelte +43 -0
  230. package/dist/ui/toolbar/ToolbarGroup.svelte.d.ts +16 -0
  231. package/dist/ui/toolbar/index.d.ts +4 -0
  232. package/dist/ui/toolbar/index.js +4 -0
  233. package/dist/ui/toolbar/theme.d.ts +320 -0
  234. package/dist/ui/toolbar/theme.js +155 -0
  235. package/dist/utils/Popper.svelte +257 -0
  236. package/dist/utils/Popper.svelte.d.ts +4 -0
  237. package/dist/utils/action.d.ts +16 -0
  238. package/dist/utils/action.js +107 -0
  239. package/dist/utils/closeButton/CloseButton.svelte +88 -0
  240. package/dist/utils/closeButton/CloseButton.svelte.d.ts +12 -0
  241. package/dist/utils/closeButton/index.d.ts +2 -0
  242. package/dist/utils/closeButton/index.js +2 -0
  243. package/dist/utils/closeButton/theme.d.ts +100 -0
  244. package/dist/utils/closeButton/theme.js +69 -0
  245. package/dist/utils/dismissable.d.ts +9 -0
  246. package/dist/utils/dismissable.js +16 -0
  247. package/dist/utils/index.d.ts +8 -0
  248. package/dist/utils/index.js +35 -0
  249. package/dist/utils/paginate.svelte.d.ts +22 -0
  250. package/dist/utils/paginate.svelte.js +167 -0
  251. package/dist/utils/singleSelection.svelte.d.ts +15 -0
  252. package/dist/utils/singleSelection.svelte.js +49 -0
  253. package/dist/utils/svelte-legos.d.ts +7 -0
  254. package/dist/utils/svelte-legos.js +14 -0
  255. package/package.json +24 -2
@@ -0,0 +1,8 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export { default as Popper } from './Popper.svelte';
3
+ export * from './closeButton/index.js';
4
+ export { trapFocus } from './action.js';
5
+ export declare function cn(...inputs: ClassValue[]): string;
6
+ export declare function saveToLocalStorage<T>(key: string, data: T): void;
7
+ export declare function loadFromLocalStorage<T>(key: string): T | undefined;
8
+ export declare function extractQueryParam(queryString: string, index?: string): string;
@@ -0,0 +1,35 @@
1
+ import { browser } from '$app/environment';
2
+ import clsx, {} from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ export { default as Popper } from './Popper.svelte';
5
+ export * from './closeButton/index.js';
6
+ export { trapFocus } from './action.js';
7
+ export function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ export function saveToLocalStorage(key, data) {
11
+ if (browser) {
12
+ window.localStorage.setItem(key, JSON.stringify(data));
13
+ }
14
+ }
15
+ export function loadFromLocalStorage(key) {
16
+ if (browser) {
17
+ const data = window.localStorage.getItem(key);
18
+ if (data) {
19
+ try {
20
+ return JSON.parse(data);
21
+ }
22
+ catch (e) {
23
+ console.log(`Could not parse: ${data}`);
24
+ }
25
+ }
26
+ else {
27
+ return undefined;
28
+ }
29
+ }
30
+ }
31
+ export function extractQueryParam(queryString, index = 'q') {
32
+ const urlParams = new URLSearchParams(queryString);
33
+ const warehouse = urlParams.get(index);
34
+ return warehouse ?? '';
35
+ }
@@ -0,0 +1,22 @@
1
+ export declare class PageInfo {
2
+ #private;
3
+ private computePages;
4
+ get currentPage(): number;
5
+ get pageSize(): number;
6
+ get totalItems(): number;
7
+ get totalPages(): number;
8
+ get hasNextPage(): boolean;
9
+ get hasPrevPage(): boolean;
10
+ get nextPageUrl(): string;
11
+ get prevPageUrl(): string;
12
+ setPageSize(newPageSize: number): void;
13
+ setHasNextPage(newValue: boolean): void;
14
+ setHasPrevPage(newValue: boolean): void;
15
+ setNextPageUrl(newValue: string): void;
16
+ setPrevPageUrl(newValue: string): void;
17
+ gotoStart(): void;
18
+ gotoNext(): boolean;
19
+ gotoPrev(): boolean;
20
+ setCurrentPage(val: number): void;
21
+ set totalItems(v: number);
22
+ }
@@ -0,0 +1,167 @@
1
+ // export class PageInfo {
2
+ // // private _currentPage: number = 1;
3
+ // // private _pageSize: number;
4
+ // // private _totalItems: number;
5
+ // // private _totalPages: number = 0;
6
+ // // private _hasNextPage = false;
7
+ // // private _hasPrevPage = false;
8
+ // // private _nextPageUrl: string = '';
9
+ // // private _prevPageUrl: string = '';
10
+ // constructor(pageSize = 100, currentPage = 1, totalItems = 0) {
11
+ // this._currentPage = currentPage;
12
+ // this._pageSize = pageSize;
13
+ // this._totalItems = totalItems;
14
+ // this.computePages();
15
+ // }
16
+ // private computePages() {
17
+ // this._totalPages = Math.ceil(this._totalItems / this._pageSize);
18
+ // this._hasNextPage = this._totalPages > this._currentPage;
19
+ // this._hasPrevPage = this._currentPage > 1;
20
+ // }
21
+ // get currentPage() {
22
+ // return this._currentPage;
23
+ // }
24
+ // get pageSize() {
25
+ // return this._pageSize;
26
+ // }
27
+ // get totalItems() {
28
+ // return this._totalItems;
29
+ // }
30
+ // get totalPages() {
31
+ // return this._totalPages;
32
+ // }
33
+ // get hasNextPage() {
34
+ // return this._hasNextPage;
35
+ // }
36
+ // get hasPrevPage() {
37
+ // return this._hasPrevPage;
38
+ // }
39
+ // get nextPageUrl() {
40
+ // return this._nextPageUrl;
41
+ // }
42
+ // get prevPageUrl() {
43
+ // return this._prevPageUrl;
44
+ // }
45
+ // setPageSize(newPageSize: number) {
46
+ // this._pageSize = newPageSize;
47
+ // this.computePages();
48
+ // }
49
+ // setHasNextPage(newValue: boolean) {
50
+ // this._hasNextPage = newValue;
51
+ // }
52
+ // setHasPrevPage(newValue: boolean) {
53
+ // this._hasPrevPage = newValue;
54
+ // }
55
+ // setNextPageUrl(newValue: string) {
56
+ // this._nextPageUrl = newValue;
57
+ // }
58
+ // setPrevPageUrl(newValue: string) {
59
+ // this._prevPageUrl = newValue;
60
+ // }
61
+ // gotoStart() {
62
+ // this._currentPage = 1;
63
+ // }
64
+ // gotoNext() {
65
+ // if (this._hasNextPage) {
66
+ // this._currentPage += 1;
67
+ // return true;
68
+ // }
69
+ // return false;
70
+ // }
71
+ // gotoPrev() {
72
+ // if (this._hasPrevPage) {
73
+ // this._currentPage -= 1;
74
+ // if (this._currentPage < 1) this._currentPage = 1;
75
+ // return true;
76
+ // }
77
+ // return false;
78
+ // }
79
+ // setCurrentPage(val:number){
80
+ // this._currentPage = val
81
+ // }
82
+ // set totalItems(v: number) {
83
+ // this._totalItems = v;
84
+ // this.computePages();
85
+ // }
86
+ // }
87
+ export class PageInfo {
88
+ #currentPage = $state(1);
89
+ #pageSize = $state(100);
90
+ #totalItems = $state(0);
91
+ #totalPages = $state(0);
92
+ #hasNextPage = $state(false);
93
+ #hasPrevPage = $state(false);
94
+ #nextPageUrl = $state('');
95
+ #prevPageUrl = $state('');
96
+ computePages() {
97
+ this.#totalPages = Math.ceil(this.totalItems / this.#pageSize);
98
+ this.#hasNextPage = this.#totalPages > this.#currentPage;
99
+ this.#hasPrevPage = this.#currentPage > 1;
100
+ }
101
+ get currentPage() {
102
+ return this.#currentPage;
103
+ }
104
+ get pageSize() {
105
+ return this.#pageSize;
106
+ }
107
+ get totalItems() {
108
+ return this.#totalItems;
109
+ }
110
+ get totalPages() {
111
+ return this.#totalPages;
112
+ }
113
+ get hasNextPage() {
114
+ return this.#hasNextPage;
115
+ }
116
+ get hasPrevPage() {
117
+ return this.#hasPrevPage;
118
+ }
119
+ get nextPageUrl() {
120
+ return this.#nextPageUrl;
121
+ }
122
+ get prevPageUrl() {
123
+ return this.#prevPageUrl;
124
+ }
125
+ setPageSize(newPageSize) {
126
+ this.#pageSize = newPageSize;
127
+ this.computePages();
128
+ }
129
+ setHasNextPage(newValue) {
130
+ this.#hasNextPage = newValue;
131
+ }
132
+ setHasPrevPage(newValue) {
133
+ this.#hasPrevPage = newValue;
134
+ }
135
+ setNextPageUrl(newValue) {
136
+ this.#nextPageUrl = newValue;
137
+ }
138
+ setPrevPageUrl(newValue) {
139
+ this.#prevPageUrl = newValue;
140
+ }
141
+ gotoStart() {
142
+ this.#currentPage = 1;
143
+ }
144
+ gotoNext() {
145
+ if (this.#hasNextPage) {
146
+ this.#currentPage += 1;
147
+ return true;
148
+ }
149
+ return false;
150
+ }
151
+ gotoPrev() {
152
+ if (this.#hasPrevPage) {
153
+ this.#currentPage -= 1;
154
+ if (this.#currentPage < 1)
155
+ this.#currentPage = 1;
156
+ return true;
157
+ }
158
+ return false;
159
+ }
160
+ setCurrentPage(val) {
161
+ this.#currentPage = val;
162
+ }
163
+ set totalItems(v) {
164
+ this.#totalItems = v;
165
+ this.computePages();
166
+ }
167
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @template T
3
+ * @param {boolean} [nonReactive=false] - use a non-reactive placeholder to allow multiple selection and keep context shallow
4
+ * @returns {SingleSelectionContext<T>}
5
+ */
6
+ export function createSingleSelectionContext<T>(nonReactive?: boolean): SingleSelectionContext<T>;
7
+ /**
8
+ * @template T
9
+ * @param {(value: T) => void} callback
10
+ * @returns {(open: boolean, v?: T) => SingleSelectionContext<T>}
11
+ */
12
+ export function useSingleSelection<T>(callback: (value: T) => void): (open: boolean, v?: T) => SingleSelectionContext<T>;
13
+ export type SingleSelectionContext<T> = {
14
+ value?: T | undefined;
15
+ };
@@ -0,0 +1,49 @@
1
+ import { getContext, setContext } from "svelte";
2
+
3
+ /**
4
+ * @template T
5
+ * @typedef {Object} SingleSelectionContext
6
+ * @property {T=} value
7
+ */
8
+
9
+ /** @type {symbol} */
10
+ const SINGLE_SELECTION_KEY = Symbol("singleton");
11
+
12
+ /**
13
+ * @template T
14
+ * @param {boolean} [nonReactive=false] - use a non-reactive placeholder to allow multiple selection and keep context shallow
15
+ * @returns {SingleSelectionContext<T>}
16
+ */
17
+ export function createSingleSelectionContext(nonReactive = false) {
18
+ const context = $state({ value: undefined });
19
+ return setContext(SINGLE_SELECTION_KEY, nonReactive ? {} : context);
20
+ }
21
+
22
+ /**
23
+ * @template T
24
+ * @param {SingleSelectionContext<T>} context
25
+ * @param {boolean} open
26
+ * @param {T=} value
27
+ * @returns {SingleSelectionContext<T>}
28
+ */
29
+ function setSelected(context, open, value) {
30
+ if (Object.hasOwn(context, 'value')) {
31
+ if (open) context.value = value;
32
+ else if (context.value === value) context.value = undefined;
33
+ }
34
+ return context;
35
+ }
36
+
37
+ /**
38
+ * @template T
39
+ * @param {(value: T) => void} callback
40
+ * @returns {(open: boolean, v?: T) => SingleSelectionContext<T>}
41
+ */
42
+ export function useSingleSelection(callback) {
43
+ const context = getContext(SINGLE_SELECTION_KEY) ?? createSingleSelectionContext(false);
44
+
45
+ $effect(() => {
46
+ if (context.value !== undefined) callback(context.value);
47
+ });
48
+ return (open, v) => setSelected(context, open, v);
49
+ }
@@ -0,0 +1,7 @@
1
+ import type { ActionReturn } from "svelte/action";
2
+ interface Attributes {
3
+ "on:clickoutside"?: (e: CustomEvent<void>) => void;
4
+ }
5
+ type Callback = () => unknown;
6
+ export declare function clickOutsideAction(node: HTMLElement, callback?: Callback): ActionReturn<{}, Attributes>;
7
+ export {};
@@ -0,0 +1,14 @@
1
+ export function clickOutsideAction(node, callback) {
2
+ const handleClick = (event) => {
3
+ if (event.target !== null && !node.contains(event.target)) {
4
+ node.dispatchEvent(new CustomEvent("clickoutside"));
5
+ callback?.();
6
+ }
7
+ };
8
+ document.addEventListener("click", handleClick, true);
9
+ return {
10
+ destroy() {
11
+ document.removeEventListener("click", handleClick, true);
12
+ },
13
+ };
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rkosafo/cai.components",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "files": [
5
5
  "dist",
6
6
  "!dist/**/*.test.*",
@@ -22,7 +22,7 @@
22
22
  "svelte": "^5.0.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@sveltejs/adapter-auto": "^6.0.0",
25
+ "@sveltejs/adapter-auto": "latest",
26
26
  "@sveltejs/kit": "^2.22.0",
27
27
  "@sveltejs/package": "^2.0.0",
28
28
  "@sveltejs/vite-plugin-svelte": "^6.0.0",
@@ -35,6 +35,7 @@
35
35
  "publint": "^0.3.2",
36
36
  "svelte": "^5.0.0",
37
37
  "svelte-check": "^4.0.0",
38
+ "svelte-headless-table": "^0.18.3",
38
39
  "tailwindcss": "^4.0.0",
39
40
  "typescript": "^5.0.0",
40
41
  "vite": "^7.0.4"
@@ -42,6 +43,27 @@
42
43
  "keywords": [
43
44
  "cai"
44
45
  ],
46
+ "dependencies": {
47
+ "@felte/validator-zod": "^1.0.18",
48
+ "@floating-ui/dom": "^1.7.3",
49
+ "@tiptap/core": "^3.0.7",
50
+ "@tiptap/extension-list": "^3.0.7",
51
+ "@tiptap/extension-text-style": "^3.0.7",
52
+ "@tiptap/pm": "^3.0.7",
53
+ "@tiptap/starter-kit": "^3.0.7",
54
+ "clsx": "^2.1.1",
55
+ "date-fns": "^4.1.0",
56
+ "felte": "^1.3.0",
57
+ "iconify-icon": "^3.0.0",
58
+ "lodash": "^4.17.21",
59
+ "mdsvex": "^0.12.6",
60
+ "nanoid": "^5.1.5",
61
+ "svelecte": "^5.3.0",
62
+ "svelte-meta-tags": "^4.4.0",
63
+ "tailwind-merge": "^3.3.1",
64
+ "tailwind-variants": "^2.1.0",
65
+ "zod": "^4.0.17"
66
+ },
45
67
  "scripts": {
46
68
  "dev": "vite dev",
47
69
  "build": "vite build && pnpm run prepack",