@rkosafo/cai.components 0.0.75 → 0.0.78

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 (127) hide show
  1. package/README.md +8 -8
  2. package/dist/baseEditor/index.svelte +32 -32
  3. package/dist/builders/filters/FilterBuilder.svelte +641 -641
  4. package/dist/forms/FormCheckbox/FormCheckbox.svelte +53 -53
  5. package/dist/forms/FormClEditor/ClEdito.svelte +68 -68
  6. package/dist/forms/FormDatepicker/FormDatepicker.svelte +159 -159
  7. package/dist/forms/FormFileUpload/FormFileUplad.svelte +134 -134
  8. package/dist/forms/FormInput/FormInput.svelte +87 -87
  9. package/dist/forms/FormRadio/FormRadio.svelte +53 -53
  10. package/dist/forms/FormSelect/FormSelect.svelte +88 -88
  11. package/dist/forms/FormTextarea/FormTextarea.svelte +78 -78
  12. package/dist/forms/button-toggle/ButtonToggle.svelte +119 -0
  13. package/dist/forms/button-toggle/ButtonToggle.svelte.d.ts +139 -0
  14. package/dist/forms/button-toggle/ButtonToggleGroup.svelte +0 -0
  15. package/dist/forms/button-toggle/ButtonToggleGroup.svelte.d.ts +26 -0
  16. package/dist/forms/button-toggle/CheckIcon.svelte +28 -0
  17. package/dist/forms/button-toggle/CheckIcon.svelte.d.ts +4 -0
  18. package/dist/forms/button-toggle/index.d.ts +4 -0
  19. package/dist/forms/button-toggle/index.js +4 -0
  20. package/dist/forms/button-toggle/theme.d.ts +347 -0
  21. package/dist/forms/button-toggle/theme.js +129 -0
  22. package/dist/forms/checkbox/Checkbox.svelte +82 -82
  23. package/dist/forms/checkbox/CheckboxButton.svelte +92 -92
  24. package/dist/forms/datepicker/Datepicker.svelte +707 -707
  25. package/dist/forms/form/Form.svelte +69 -69
  26. package/dist/forms/input/Input.svelte +363 -363
  27. package/dist/forms/label/Label.svelte +38 -38
  28. package/dist/forms/radio/Radio.svelte +48 -48
  29. package/dist/forms/radio/RadioButton.svelte +22 -22
  30. package/dist/forms/select/Select.svelte +56 -56
  31. package/dist/forms/textarea/Textarea.svelte +165 -165
  32. package/dist/forms/toggle/Toggle.svelte +70 -0
  33. package/dist/forms/toggle/Toggle.svelte.d.ts +3 -0
  34. package/dist/forms/toggle/index.d.ts +2 -0
  35. package/dist/forms/toggle/index.js +2 -0
  36. package/dist/forms/toggle/theme.d.ts +280 -0
  37. package/dist/forms/toggle/theme.js +97 -0
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.js +3 -0
  40. package/dist/layout/Chat/CategorySelector.svelte +52 -52
  41. package/dist/layout/Chat/ChatEntry.svelte +246 -246
  42. package/dist/layout/Chat/ChatEntrySkeleton.svelte +81 -81
  43. package/dist/layout/Chat/ChatHeader.svelte +172 -172
  44. package/dist/layout/Chat/ChatInput.svelte +207 -207
  45. package/dist/layout/Chat/DraggableWindow.svelte +230 -230
  46. package/dist/layout/Chat/PreviewPage.svelte +182 -182
  47. package/dist/layout/Chat/RichText.svelte +216 -216
  48. package/dist/layout/ComponentCanvas/Canvas.svelte +40 -40
  49. package/dist/layout/ComponentCanvas/ComponentRenderer.svelte +85 -85
  50. package/dist/layout/TF/Content/Content.svelte +21 -21
  51. package/dist/layout/TF/Header/Header.svelte +166 -166
  52. package/dist/layout/TF/Sidebar/Sidebar.svelte +148 -148
  53. package/dist/layout/TF/Wrapper/Wrapper.svelte +17 -17
  54. package/dist/layout/mailing/MailPaginator.svelte +36 -36
  55. package/dist/layout/mailing/MailSidebar.svelte +39 -39
  56. package/dist/layout/mailing/MailToolBar.svelte +174 -174
  57. package/dist/layout/mailing/MailingContent.svelte +10 -10
  58. package/dist/layout/mailing/MailingHeader.svelte +55 -55
  59. package/dist/layout/mailing/MailingMessageCard.svelte +112 -112
  60. package/dist/layout/mailing/MailingMessageViewer.svelte +87 -87
  61. package/dist/layout/mailing/MailingModule.svelte +448 -448
  62. package/dist/styles/docs.css +615 -615
  63. package/dist/styles/tf-layout.css +185 -185
  64. package/dist/themes/ThemeProvider.svelte +20 -20
  65. package/dist/themes/themes.d.ts +3 -0
  66. package/dist/themes/themes.js +3 -0
  67. package/dist/types/index.d.ts +57 -1
  68. package/dist/typography/heading/Heading.svelte +35 -35
  69. package/dist/ui/accordion/Accordion.svelte +49 -49
  70. package/dist/ui/accordion/AccordionItem.svelte +173 -173
  71. package/dist/ui/alert/Alert.svelte +83 -83
  72. package/dist/ui/alertDialog/AlertDialog.svelte +40 -40
  73. package/dist/ui/avatar/Avatar.svelte +77 -77
  74. package/dist/ui/box/Box.svelte +28 -28
  75. package/dist/ui/breadcrumb/Breadcrumb.svelte +39 -39
  76. package/dist/ui/buttons/ActionButton.svelte +234 -234
  77. package/dist/ui/buttons/Button.svelte +102 -102
  78. package/dist/ui/buttons/GradientButton.svelte +59 -59
  79. package/dist/ui/datatable/Datatable.svelte +525 -525
  80. package/dist/ui/drawer/Drawer.svelte +300 -300
  81. package/dist/ui/dropdown/Dropdown.svelte +36 -36
  82. package/dist/ui/dropdown/DropdownDivider.svelte +11 -11
  83. package/dist/ui/dropdown/DropdownGroup.svelte +14 -14
  84. package/dist/ui/dropdown/DropdownHeader.svelte +14 -14
  85. package/dist/ui/dropdown/DropdownItem.svelte +52 -52
  86. package/dist/ui/footer/Footer.svelte +15 -15
  87. package/dist/ui/footer/FooterBrand.svelte +37 -37
  88. package/dist/ui/footer/FooterCopyright.svelte +45 -45
  89. package/dist/ui/footer/FooterIcon.svelte +22 -22
  90. package/dist/ui/footer/FooterLink.svelte +33 -33
  91. package/dist/ui/footer/FooterLinkGroup.svelte +13 -13
  92. package/dist/ui/icons/IconifyIcon.svelte +7 -7
  93. package/dist/ui/indicator/Indicator.svelte +42 -42
  94. package/dist/ui/modal/Modal.svelte +265 -265
  95. package/dist/ui/modal/theme.d.ts +26 -26
  96. package/dist/ui/modal/theme.js +25 -25
  97. package/dist/ui/notificationList/NotificationList.svelte +123 -123
  98. package/dist/ui/pageLoader/PageLoader.svelte +14 -14
  99. package/dist/ui/paginate/Paginate.svelte +96 -96
  100. package/dist/ui/speedDial/SpeedDial.svelte +77 -0
  101. package/dist/ui/speedDial/SpeedDial.svelte.d.ts +21 -0
  102. package/dist/ui/speedDial/SpeedDialButton.svelte +75 -0
  103. package/dist/ui/speedDial/SpeedDialButton.svelte.d.ts +20 -0
  104. package/dist/ui/speedDial/SpeedDialTrigger.svelte +79 -0
  105. package/dist/ui/speedDial/SpeedDialTrigger.svelte.d.ts +18 -0
  106. package/dist/ui/speedDial/index.d.ts +4 -0
  107. package/dist/ui/speedDial/index.js +4 -0
  108. package/dist/ui/speedDial/theme.d.ts +75 -0
  109. package/dist/ui/speedDial/theme.js +35 -0
  110. package/dist/ui/tab/Tab.svelte +67 -67
  111. package/dist/ui/table/Table.svelte +396 -396
  112. package/dist/ui/tableLoader/TableLoader.svelte +24 -24
  113. package/dist/ui/toast/Toast.svelte +337 -337
  114. package/dist/ui/toast/Toast.svelte.d.ts +10 -10
  115. package/dist/ui/toast/index.d.ts +1 -2
  116. package/dist/ui/toast/index.js +3 -1
  117. package/dist/ui/toolbar/Toolbar.svelte +59 -59
  118. package/dist/ui/toolbar/ToolbarButton.svelte +56 -56
  119. package/dist/ui/toolbar/ToolbarGroup.svelte +43 -43
  120. package/dist/ui/tooltip/Tooltip.svelte +51 -51
  121. package/dist/utils/Popper.svelte +257 -257
  122. package/dist/utils/closeButton/CloseButton.svelte +88 -88
  123. package/dist/utils/index.d.ts +3 -2
  124. package/dist/utils/index.js +13 -3
  125. package/dist/utils/singleSelection.svelte.js +48 -48
  126. package/dist/youtube/index.svelte +12 -12
  127. package/package.json +2 -1
@@ -1,112 +1,112 @@
1
- <script lang="ts">
2
- import { Checkbox } from '../../forms/checkbox/index.js';
3
- import IconifyIcon from '../../ui/icons/IconifyIcon.svelte';
4
- import dayjs from 'dayjs';
5
- import { type MailingMessageCardProps } from './index.js';
6
-
7
- let {
8
- id = 0,
9
- sender = '',
10
- subject = '',
11
- date,
12
- message = '',
13
- isStared = false,
14
- isImportant = false,
15
- isRead = false,
16
- isChecked = false,
17
- onItemChecked,
18
- toggelImportant,
19
- toggleFavorited,
20
- onItemSelected,
21
- showCheckbox = true,
22
- showMarkAsFavorite = true,
23
- showMarkAsImportant = true
24
- }: MailingMessageCardProps = $props();
25
-
26
- function handleClik(e: any) {
27
- if (e.target.tagName !== 'INPUT' && e.target.localName !== 'iconify-icon') onItemSelected?.(id);
28
- }
29
-
30
- function formatDate(date: Date | string): string {
31
- const messageDate = dayjs(date);
32
- const today = dayjs();
33
-
34
- if (messageDate.isSame(today, 'day')) {
35
- return messageDate.format('HH:mm');
36
- } else if (messageDate.isSame(today.subtract(1, 'day'), 'day')) {
37
- return 'Yesterday';
38
- } else if (messageDate.isSame(today, 'year')) {
39
- return messageDate.format('MMM DD');
40
- } else {
41
- return messageDate.format('DD/MM/YYYY');
42
- }
43
- }
44
- </script>
45
-
46
- <div
47
- class:hover:bg-gray-200={!isChecked}
48
- class="flex items-center border border-gray-300 bg-white px-2 shadow"
49
- role="button"
50
- tabindex="0"
51
- onkeydown={handleClik}
52
- onclick={handleClik}
53
- >
54
- {#if showCheckbox}
55
- <Checkbox
56
- checked={isChecked}
57
- class="cursor-pointer border-2 border-gray-400 transition-colors hover:ring-4 hover:ring-gray-400 focus:ring-0"
58
- onchange={(e) => {
59
- const target = e.target;
60
- onItemChecked?.({ checked: target.checked, id });
61
- }}
62
- />
63
- {/if}
64
- <div class="my-1 flex w-full cursor-pointer items-center justify-between p-1">
65
- <div class="flex w-full items-center">
66
- <div class="flex">
67
- <div class="mr-4 flex items-center gap-1 space-x-1">
68
- <button
69
- class:hidden={!showMarkAsFavorite}
70
- onclick={(e) => {
71
- toggleFavorited?.(id);
72
- }}
73
- aria-label="Not starred"
74
- >
75
- <IconifyIcon
76
- style="font-size: 24px"
77
- icon={isStared ? 'mdi:star' : 'mdi:star-outline'}
78
- class="flex justify-center transition-colors {isStared
79
- ? 'text-yellow-500 hover:text-yellow-600'
80
- : 'text-gray-500 hover:text-gray-900'}"
81
- />
82
- </button>
83
- <button
84
- class:hidden={!showMarkAsImportant}
85
- onclick={(e) => {
86
- toggelImportant?.(id);
87
- }}
88
- aria-label="Click to mark this email as important"
89
- >
90
- <IconifyIcon
91
- style="font-size: 18px"
92
- icon={isImportant ? 'ic:outline-bookmark' : 'solar:bookmark-broken'}
93
- class="flex justify-center transition-colors {isImportant
94
- ? 'text-yellow-500 hover:text-yellow-600'
95
- : 'text-gray-500 hover:text-gray-900'}"
96
- />
97
- </button>
98
- </div>
99
- <span class="w-56 truncate pr-2" class:font-bold={!isRead}>{sender}</span>
100
- <span class="w-64 truncate" class:font-bold={!isRead}>{subject}</span>
101
- <span class="mx-1">-</span>
102
- </div>
103
-
104
- <p class=" max-l truncate text-sm text-gray-600 xl:max-w-2xl 2xl:max-w-5xl">{message}</p>
105
- </div>
106
- <div class="flex w-32 shrink-0 items-center justify-end">
107
- <span class="text-sm" class:font-bold={!isRead} class:text-gray-500={isRead}>
108
- {formatDate(date)}
109
- </span>
110
- </div>
111
- </div>
112
- </div>
1
+ <script lang="ts">
2
+ import { Checkbox } from '../../forms/checkbox/index.js';
3
+ import IconifyIcon from '../../ui/icons/IconifyIcon.svelte';
4
+ import dayjs from 'dayjs';
5
+ import { type MailingMessageCardProps } from './index.js';
6
+
7
+ let {
8
+ id = 0,
9
+ sender = '',
10
+ subject = '',
11
+ date,
12
+ message = '',
13
+ isStared = false,
14
+ isImportant = false,
15
+ isRead = false,
16
+ isChecked = false,
17
+ onItemChecked,
18
+ toggelImportant,
19
+ toggleFavorited,
20
+ onItemSelected,
21
+ showCheckbox = true,
22
+ showMarkAsFavorite = true,
23
+ showMarkAsImportant = true
24
+ }: MailingMessageCardProps = $props();
25
+
26
+ function handleClik(e: any) {
27
+ if (e.target.tagName !== 'INPUT' && e.target.localName !== 'iconify-icon') onItemSelected?.(id);
28
+ }
29
+
30
+ function formatDate(date: Date | string): string {
31
+ const messageDate = dayjs(date);
32
+ const today = dayjs();
33
+
34
+ if (messageDate.isSame(today, 'day')) {
35
+ return messageDate.format('HH:mm');
36
+ } else if (messageDate.isSame(today.subtract(1, 'day'), 'day')) {
37
+ return 'Yesterday';
38
+ } else if (messageDate.isSame(today, 'year')) {
39
+ return messageDate.format('MMM DD');
40
+ } else {
41
+ return messageDate.format('DD/MM/YYYY');
42
+ }
43
+ }
44
+ </script>
45
+
46
+ <div
47
+ class:hover:bg-gray-200={!isChecked}
48
+ class="flex items-center border border-gray-300 bg-white px-2 shadow"
49
+ role="button"
50
+ tabindex="0"
51
+ onkeydown={handleClik}
52
+ onclick={handleClik}
53
+ >
54
+ {#if showCheckbox}
55
+ <Checkbox
56
+ checked={isChecked}
57
+ class="cursor-pointer border-2 border-gray-400 transition-colors hover:ring-4 hover:ring-gray-400 focus:ring-0"
58
+ onchange={(e) => {
59
+ const target = e.target;
60
+ onItemChecked?.({ checked: target.checked, id });
61
+ }}
62
+ />
63
+ {/if}
64
+ <div class="my-1 flex w-full cursor-pointer items-center justify-between p-1">
65
+ <div class="flex w-full items-center">
66
+ <div class="flex">
67
+ <div class="mr-4 flex items-center gap-1 space-x-1">
68
+ <button
69
+ class:hidden={!showMarkAsFavorite}
70
+ onclick={(e) => {
71
+ toggleFavorited?.(id);
72
+ }}
73
+ aria-label="Not starred"
74
+ >
75
+ <IconifyIcon
76
+ style="font-size: 24px"
77
+ icon={isStared ? 'mdi:star' : 'mdi:star-outline'}
78
+ class="flex justify-center transition-colors {isStared
79
+ ? 'text-yellow-500 hover:text-yellow-600'
80
+ : 'text-gray-500 hover:text-gray-900'}"
81
+ />
82
+ </button>
83
+ <button
84
+ class:hidden={!showMarkAsImportant}
85
+ onclick={(e) => {
86
+ toggelImportant?.(id);
87
+ }}
88
+ aria-label="Click to mark this email as important"
89
+ >
90
+ <IconifyIcon
91
+ style="font-size: 18px"
92
+ icon={isImportant ? 'ic:outline-bookmark' : 'solar:bookmark-broken'}
93
+ class="flex justify-center transition-colors {isImportant
94
+ ? 'text-yellow-500 hover:text-yellow-600'
95
+ : 'text-gray-500 hover:text-gray-900'}"
96
+ />
97
+ </button>
98
+ </div>
99
+ <span class="w-56 truncate pr-2" class:font-bold={!isRead}>{sender}</span>
100
+ <span class="w-64 truncate" class:font-bold={!isRead}>{subject}</span>
101
+ <span class="mx-1">-</span>
102
+ </div>
103
+
104
+ <p class=" max-l truncate text-sm text-gray-600 xl:max-w-2xl 2xl:max-w-5xl">{message}</p>
105
+ </div>
106
+ <div class="flex w-32 shrink-0 items-center justify-end">
107
+ <span class="text-sm" class:font-bold={!isRead} class:text-gray-500={isRead}>
108
+ {formatDate(date)}
109
+ </span>
110
+ </div>
111
+ </div>
112
+ </div>
@@ -1,87 +1,87 @@
1
- <script lang="ts">
2
- import { PageLoader } from '../../ui/pageLoader/index.js';
3
- import { slide } from 'svelte/transition';
4
- import type { MailingHeaderData, MailingMessageViewerProps, MailingReplyType } from './index.js';
5
- import MailingHeader from './MailingHeader.svelte';
6
- import { onMount } from 'svelte';
7
- import toast from 'svelte-french-toast';
8
- import { getInitials } from '../../index.js';
9
- import MailingContent from './MailingContent.svelte';
10
-
11
- let {
12
- readMessage,
13
- recordId = $bindable(0),
14
- updatePageInfo,
15
- showReplies = true,
16
- showHeader = true
17
- }: MailingMessageViewerProps = $props();
18
-
19
- let busy = $state(true);
20
- let header = $state<MailingHeaderData>({} as MailingHeaderData);
21
- let inputType = $state<MailingReplyType | undefined>(undefined);
22
- let content = $state('');
23
-
24
- onMount(async () => {
25
- try {
26
- const ret = await readMessage(recordId);
27
- if (!ret?.success) {
28
- toast.error(ret?.message);
29
- recordId = 0;
30
- return;
31
- }
32
- updatePageInfo?.({
33
- currentPage: 1,
34
- pageSize: 1,
35
- totalCount: 1,
36
- hasNextPage: false,
37
- hasPreviousPage: false
38
- });
39
-
40
- const { data } = ret;
41
- header = {
42
- subject: data?.subject ?? '',
43
- user: {
44
- firstName: data?.user.firstName ?? '',
45
- surname: data?.user.surname ?? '',
46
- staffNumber: data?.user.staffNumber ?? '',
47
- initials: `${getInitials(data?.user.firstName)}${getInitials(data?.user.surname)}`
48
- },
49
- to: data?.to ?? ''
50
- };
51
- content = data.message ?? '';
52
- } catch (error: any) {
53
- toast.error(error?.message || error);
54
- } finally {
55
- busy = false;
56
- }
57
- });
58
- </script>
59
-
60
- <div class="h-full w-full">
61
- {#if busy}
62
- <PageLoader size={50} />
63
- {:else}
64
- <div class="flex h-full w-full flex-col gap-2" in:slide>
65
- <div class:hidden={!showHeader}>
66
- <MailingHeader bind:replyType={inputType} data={header} {showReplies} />
67
- </div>
68
- <div class="fex-grow h-full w-full">
69
- <div
70
- class:h-[71vh]={inputType}
71
- class:h-full={!inputType}
72
- class="flex w-full flex-col gap-4"
73
- >
74
- <div class="custom-scrollbar h-full flex-grow overflow-y-auto bg-white p-4">
75
- <MailingContent {content} />
76
- </div>
77
- <div class="h-modal p-4 pt-2" class:hidden={!Boolean(inputType) || !showReplies}>
78
- <div class=" rounded-md bg-white p-4">
79
- Reply
80
- <!-- <Reply {inputType} /> -->
81
- </div>
82
- </div>
83
- </div>
84
- </div>
85
- </div>
86
- {/if}
87
- </div>
1
+ <script lang="ts">
2
+ import { PageLoader } from '../../ui/pageLoader/index.js';
3
+ import { slide } from 'svelte/transition';
4
+ import type { MailingHeaderData, MailingMessageViewerProps, MailingReplyType } from './index.js';
5
+ import MailingHeader from './MailingHeader.svelte';
6
+ import { onMount } from 'svelte';
7
+ import toast from 'svelte-french-toast';
8
+ import { getInitials } from '../../index.js';
9
+ import MailingContent from './MailingContent.svelte';
10
+
11
+ let {
12
+ readMessage,
13
+ recordId = $bindable(0),
14
+ updatePageInfo,
15
+ showReplies = true,
16
+ showHeader = true
17
+ }: MailingMessageViewerProps = $props();
18
+
19
+ let busy = $state(true);
20
+ let header = $state<MailingHeaderData>({} as MailingHeaderData);
21
+ let inputType = $state<MailingReplyType | undefined>(undefined);
22
+ let content = $state('');
23
+
24
+ onMount(async () => {
25
+ try {
26
+ const ret = await readMessage(recordId);
27
+ if (!ret?.success) {
28
+ toast.error(ret?.message);
29
+ recordId = 0;
30
+ return;
31
+ }
32
+ updatePageInfo?.({
33
+ currentPage: 1,
34
+ pageSize: 1,
35
+ totalCount: 1,
36
+ hasNextPage: false,
37
+ hasPreviousPage: false
38
+ });
39
+
40
+ const { data } = ret;
41
+ header = {
42
+ subject: data?.subject ?? '',
43
+ user: {
44
+ firstName: data?.user.firstName ?? '',
45
+ surname: data?.user.surname ?? '',
46
+ staffNumber: data?.user.staffNumber ?? '',
47
+ initials: `${getInitials(data?.user.firstName)}${getInitials(data?.user.surname)}`
48
+ },
49
+ to: data?.to ?? ''
50
+ };
51
+ content = data.message ?? '';
52
+ } catch (error: any) {
53
+ toast.error(error?.message || error);
54
+ } finally {
55
+ busy = false;
56
+ }
57
+ });
58
+ </script>
59
+
60
+ <div class="h-full w-full">
61
+ {#if busy}
62
+ <PageLoader size={50} />
63
+ {:else}
64
+ <div class="flex h-full w-full flex-col gap-2" in:slide>
65
+ <div class:hidden={!showHeader}>
66
+ <MailingHeader bind:replyType={inputType} data={header} {showReplies} />
67
+ </div>
68
+ <div class="fex-grow h-full w-full">
69
+ <div
70
+ class:h-[71vh]={inputType}
71
+ class:h-full={!inputType}
72
+ class="flex w-full flex-col gap-4"
73
+ >
74
+ <div class="custom-scrollbar h-full flex-grow overflow-y-auto bg-white p-4">
75
+ <MailingContent {content} />
76
+ </div>
77
+ <div class="h-modal p-4 pt-2" class:hidden={!Boolean(inputType) || !showReplies}>
78
+ <div class=" rounded-md bg-white p-4">
79
+ Reply
80
+ <!-- <Reply {inputType} /> -->
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ {/if}
87
+ </div>