flikkui 0.2.0-beta.2 → 0.2.0-beta.5

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 (269) hide show
  1. package/README.md +92 -0
  2. package/dist/components/ai/PromptInput/PromptInput.js +23 -15
  3. package/dist/components/ai/PromptSuggestions/PromptSuggestion.d.ts +27 -0
  4. package/dist/components/ai/PromptSuggestions/PromptSuggestion.js +62 -0
  5. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.d.ts +10 -0
  6. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +12 -0
  7. package/dist/components/ai/PromptSuggestions/PromptSuggestion.types.d.ts +53 -0
  8. package/dist/components/ai/PromptSuggestions/index.d.ts +4 -2
  9. package/dist/components/ai/index.d.ts +2 -12
  10. package/dist/components/charts/ActivityRings/ActivityRings.js +70 -58
  11. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +0 -1
  12. package/dist/components/charts/ActivityRings/ActivityRings.types.d.ts +17 -0
  13. package/dist/components/charts/BarChart/BarChart.js +8 -4
  14. package/dist/components/charts/BarChart/BarChart.types.d.ts +14 -0
  15. package/dist/components/charts/DonutChart/DonutChart.js +11 -8
  16. package/dist/components/charts/DonutChart/DonutChart.theme.d.ts +3 -0
  17. package/dist/components/charts/DonutChart/DonutChart.theme.js +5 -4
  18. package/dist/components/charts/DonutChart/donut-utils.d.ts +5 -0
  19. package/dist/components/charts/DonutChart/donut-utils.js +26 -1
  20. package/dist/components/charts/Heatmap/Heatmap.theme.js +2 -2
  21. package/dist/components/charts/shared/ChartAxis/XAxis.d.ts +2 -2
  22. package/dist/components/charts/shared/ChartAxis/XAxis.js +4 -4
  23. package/dist/components/charts/shared/ChartAxis/YAxis.d.ts +2 -2
  24. package/dist/components/charts/shared/ChartAxis/YAxis.js +8 -7
  25. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +1 -1
  26. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +2 -2
  27. package/dist/components/charts/theme/chart.theme.d.ts +1 -1
  28. package/dist/components/charts/theme/chart.theme.js +39 -39
  29. package/dist/components/core/Accordion/Accordion.d.ts +1 -1
  30. package/dist/components/core/Accordion/Accordion.js +2 -2
  31. package/dist/components/core/Accordion/Accordion.types.d.ts +8 -0
  32. package/dist/components/core/Badge/Badge.js +11 -15
  33. package/dist/components/core/Badge/Badge.theme.js +7 -21
  34. package/dist/components/core/Badge/Badge.types.d.ts +9 -1
  35. package/dist/components/core/Button/Button.js +2 -2
  36. package/dist/components/core/Button/Button.theme.js +1 -1
  37. package/dist/components/core/Button/Button.types.d.ts +8 -0
  38. package/dist/components/core/Card/Card.js +8 -2
  39. package/dist/components/core/Card/Card.theme.js +1 -1
  40. package/dist/components/core/Card/Card.types.d.ts +24 -1
  41. package/dist/components/core/Drawer/Drawer.d.ts +1 -1
  42. package/dist/components/core/Drawer/Drawer.js +10 -40
  43. package/dist/components/core/Drawer/Drawer.theme.js +2 -1
  44. package/dist/components/core/Drawer/Drawer.types.d.ts +8 -0
  45. package/dist/components/core/Dropdown/Dropdown.d.ts +1 -1
  46. package/dist/components/core/Dropdown/Dropdown.js +2 -2
  47. package/dist/components/core/Dropdown/Dropdown.types.d.ts +8 -0
  48. package/dist/components/core/Metric/Metric.d.ts +1 -1
  49. package/dist/components/core/Metric/Metric.js +9 -5
  50. package/dist/components/core/Metric/Metric.theme.d.ts +1 -1
  51. package/dist/components/core/Metric/Metric.theme.js +38 -28
  52. package/dist/components/core/Metric/Metric.types.d.ts +27 -8
  53. package/dist/components/core/Modal/Modal.d.ts +1 -1
  54. package/dist/components/core/Modal/Modal.js +17 -40
  55. package/dist/components/core/Modal/Modal.theme.js +8 -3
  56. package/dist/components/core/Modal/Modal.types.d.ts +18 -0
  57. package/dist/components/core/Modal/index.d.ts +1 -1
  58. package/dist/components/core/Notification/Notification.js +2 -0
  59. package/dist/components/core/Pill/Pill.d.ts +6 -11
  60. package/dist/components/core/Pill/Pill.theme.d.ts +2 -2
  61. package/dist/components/core/Pill/Pill.types.d.ts +9 -22
  62. package/dist/components/core/Pill/index.d.ts +1 -1
  63. package/dist/components/core/Popover/Popover.d.ts +1 -1
  64. package/dist/components/core/Popover/Popover.js +2 -2
  65. package/dist/components/core/Popover/Popover.types.d.ts +8 -0
  66. package/dist/components/core/Progress/Progress.d.ts +28 -0
  67. package/dist/components/core/Progress/Progress.js +114 -0
  68. package/dist/components/core/Progress/Progress.theme.d.ts +5 -0
  69. package/dist/components/core/Progress/Progress.theme.js +33 -0
  70. package/dist/components/core/Progress/Progress.types.d.ts +92 -0
  71. package/dist/components/core/Progress/index.d.ts +2 -0
  72. package/dist/components/core/Table/Table.animations.d.ts +5 -16
  73. package/dist/components/core/Table/Table.animations.js +46 -0
  74. package/dist/components/core/Table/Table.d.ts +0 -27
  75. package/dist/components/core/Table/Table.js +58 -156
  76. package/dist/components/core/Table/Table.theme.js +28 -19
  77. package/dist/components/core/Table/Table.types.d.ts +95 -8
  78. package/dist/components/core/Table/Table.utils.d.ts +7 -0
  79. package/dist/components/core/Table/Table.utils.js +11 -1
  80. package/dist/components/core/Table/{components/TableActions/TableActions.d.ts → TableActions.d.ts} +3 -3
  81. package/dist/components/core/Table/{components/TableActions/TableActions.js → TableActions.js} +14 -24
  82. package/dist/components/core/Table/{components/TableActions/TableActionsMenu.d.ts → TableActionsMenu.d.ts} +1 -1
  83. package/dist/components/core/Table/{components/TableActions/TableActionsMenu.js → TableActionsMenu.js} +4 -4
  84. package/dist/components/core/Table/{components/core/TableBody.d.ts → TableBody.d.ts} +1 -1
  85. package/dist/components/core/Table/{components/core/TableBody.js → TableBody.js} +14 -20
  86. package/dist/components/core/Table/{components/core/TableCell.d.ts → TableCell.d.ts} +1 -9
  87. package/dist/components/core/Table/{components/core/TableCell.js → TableCell.js} +5 -13
  88. package/dist/components/core/Table/TableColumnManager.d.ts +3 -0
  89. package/dist/components/core/Table/TableColumnManager.js +34 -0
  90. package/dist/components/core/Table/{components/DeclarativeComponents.d.ts → TableDeclarative.d.ts} +1 -1
  91. package/dist/components/core/Table/{components/DeclarativeComponents.js → TableDeclarative.js} +6 -56
  92. package/dist/components/core/Table/TableFilter.d.ts +3 -0
  93. package/dist/components/core/Table/TableFilter.js +122 -0
  94. package/dist/components/core/Table/{components/core/TableHeader.d.ts → TableHeader.d.ts} +1 -1
  95. package/dist/components/core/Table/{components/core/TableHeader.js → TableHeader.js} +15 -29
  96. package/dist/components/core/Table/TablePagination.d.ts +7 -0
  97. package/dist/components/core/Table/{components/TablePagination/TablePagination.js → TablePagination.js} +5 -16
  98. package/dist/components/core/Table/TableRow.d.ts +8 -0
  99. package/dist/components/core/Table/TableRow.js +45 -0
  100. package/dist/components/core/Table/TableSelectionHeader.d.ts +7 -0
  101. package/dist/components/core/Table/{components/TableSelectionHeader/TableSelectionHeader.js → TableSelectionHeader.js} +4 -5
  102. package/dist/components/core/Table/hooks/index.d.ts +10 -0
  103. package/dist/components/core/Table/hooks/useTableColumns.d.ts +16 -0
  104. package/dist/components/core/Table/hooks/useTableColumns.js +67 -0
  105. package/dist/components/core/Table/hooks/useTableExpansion.d.ts +8 -0
  106. package/dist/components/core/Table/hooks/useTableExpansion.js +15 -0
  107. package/dist/components/core/Table/hooks/useTableFilter.d.ts +12 -0
  108. package/dist/components/core/Table/hooks/useTableFilter.js +37 -0
  109. package/dist/components/core/Table/hooks/useTablePagination.d.ts +12 -0
  110. package/dist/components/core/Table/hooks/useTablePagination.js +13 -0
  111. package/dist/components/core/Table/hooks/useTableSelection.d.ts +17 -0
  112. package/dist/components/core/Table/hooks/useTableSelection.js +40 -0
  113. package/dist/components/core/Table/index.d.ts +9 -8
  114. package/dist/components/core/Table/index.js +7 -5
  115. package/dist/components/core/Tabs/Tabs.js +2 -2
  116. package/dist/components/core/Tabs/Tabs.types.d.ts +8 -0
  117. package/dist/components/core/Tag/Tag.animations.d.ts +3 -0
  118. package/dist/components/core/Tag/Tag.animations.js +31 -0
  119. package/dist/components/core/Tag/Tag.d.ts +14 -0
  120. package/dist/components/core/Tag/Tag.js +45 -0
  121. package/dist/components/core/Tag/Tag.theme.d.ts +2 -0
  122. package/dist/components/core/Tag/Tag.theme.js +21 -0
  123. package/dist/components/core/Tag/Tag.types.d.ts +40 -0
  124. package/dist/components/core/Tag/index.d.ts +3 -0
  125. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  126. package/dist/components/core/Tooltip/Tooltip.js +3 -3
  127. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
  128. package/dist/components/core/Tooltip/Tooltip.types.d.ts +17 -0
  129. package/dist/components/core/index.d.ts +2 -1
  130. package/dist/components/core/index.js +12 -5
  131. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +0 -13
  132. package/dist/components/effects/CustomCursor/CustomCursor.js +26 -2
  133. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +12 -1
  134. package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +14 -1
  135. package/dist/components/forms/Combobox/Combobox.d.ts +25 -0
  136. package/dist/components/forms/Combobox/Combobox.js +412 -0
  137. package/dist/components/forms/Combobox/Combobox.theme.d.ts +6 -0
  138. package/dist/components/forms/Combobox/Combobox.theme.js +60 -0
  139. package/dist/components/forms/Combobox/Combobox.types.d.ts +111 -0
  140. package/dist/components/forms/Combobox/index.d.ts +3 -0
  141. package/dist/components/forms/FileUpload/FileUpload.js +2 -0
  142. package/dist/components/forms/Input/Input.js +25 -28
  143. package/dist/components/forms/Input/inputMasks.d.ts +15 -0
  144. package/dist/components/forms/Input/inputMasks.js +72 -1
  145. package/dist/components/forms/InputTag/InputTag.d.ts +40 -0
  146. package/dist/components/forms/InputTag/InputTag.js +491 -0
  147. package/dist/components/forms/InputTag/InputTag.theme.d.ts +2 -0
  148. package/dist/components/forms/InputTag/InputTag.theme.js +16 -0
  149. package/dist/components/forms/InputTag/InputTag.types.d.ts +107 -0
  150. package/dist/components/forms/InputTag/index.d.ts +3 -0
  151. package/dist/components/forms/Select/Select.d.ts +101 -2
  152. package/dist/components/forms/Select/Select.js +128 -132
  153. package/dist/components/forms/Select/Select.theme.js +10 -14
  154. package/dist/components/forms/Select/Select.types.d.ts +6 -2
  155. package/dist/components/forms/Select/index.d.ts +7 -4
  156. package/dist/components/forms/Select/useSelectState.d.ts +66 -0
  157. package/dist/components/forms/Select/useSelectState.js +134 -0
  158. package/dist/components/forms/SelectExpand/SelectExpand.animations.d.ts +20 -0
  159. package/dist/components/forms/SelectExpand/SelectExpand.animations.js +74 -0
  160. package/dist/components/forms/SelectExpand/SelectExpand.d.ts +9 -0
  161. package/dist/components/forms/SelectExpand/SelectExpand.js +223 -0
  162. package/dist/components/forms/SelectExpand/SelectExpand.theme.d.ts +5 -0
  163. package/dist/components/forms/SelectExpand/SelectExpand.theme.js +74 -0
  164. package/dist/components/forms/SelectExpand/SelectExpand.types.d.ts +126 -0
  165. package/dist/components/forms/SelectExpand/index.d.ts +4 -0
  166. package/dist/components/forms/Switch/Switch.js +3 -3
  167. package/dist/components/forms/Switch/Switch.theme.d.ts +1 -1
  168. package/dist/components/forms/Switch/Switch.theme.js +2 -2
  169. package/dist/components/forms/TimePicker/TimePicker.animations.d.ts +0 -46
  170. package/dist/components/forms/TimePicker/TimePicker.d.ts +15 -6
  171. package/dist/components/forms/TimePicker/TimePicker.js +285 -124
  172. package/dist/components/forms/TimePicker/TimePicker.theme.d.ts +1 -1
  173. package/dist/components/forms/TimePicker/TimePicker.theme.js +39 -22
  174. package/dist/components/forms/TimePicker/TimePicker.types.d.ts +88 -34
  175. package/dist/components/forms/TimePicker/TimePickerContent.d.ts +7 -10
  176. package/dist/components/forms/TimePicker/TimePickerContent.js +149 -16
  177. package/dist/components/forms/TimePicker/TimePickerTrigger.d.ts +3 -3
  178. package/dist/components/forms/TimePicker/TimePickerTrigger.js +22 -19
  179. package/dist/components/forms/TimePicker/WheelColumn.d.ts +14 -0
  180. package/dist/components/forms/TimePicker/WheelColumn.js +90 -0
  181. package/dist/components/forms/TimePicker/index.d.ts +4 -1
  182. package/dist/components/forms/TimePicker/useWheelPicker.d.ts +37 -0
  183. package/dist/components/forms/TimePicker/useWheelPicker.js +138 -0
  184. package/dist/components/forms/forms.theme.d.ts +14 -0
  185. package/dist/components/forms/forms.theme.js +31 -0
  186. package/dist/components/forms/index.d.ts +9 -3
  187. package/dist/components/forms/index.js +73 -2
  188. package/dist/hooks/index.d.ts +0 -4
  189. package/dist/icons/Icon.d.ts +7 -0
  190. package/dist/icons/Icon.js +6 -2
  191. package/dist/index.js +21 -19
  192. package/dist/styles.css +1 -1
  193. package/dist/utils/index.d.ts +0 -1
  194. package/dist/utils/optimisticErrors.js +1 -70
  195. package/package.json +1 -1
  196. package/dist/components/ai/EditingIndicator/EditingIndicator.animations.d.ts +0 -31
  197. package/dist/components/ai/EditingIndicator/EditingIndicator.animations.js +0 -115
  198. package/dist/components/ai/EditingIndicator/EditingIndicator.d.ts +0 -35
  199. package/dist/components/ai/EditingIndicator/EditingIndicator.js +0 -94
  200. package/dist/components/ai/EditingIndicator/EditingIndicator.theme.d.ts +0 -2
  201. package/dist/components/ai/EditingIndicator/EditingIndicator.theme.js +0 -13
  202. package/dist/components/ai/EditingIndicator/EditingIndicator.types.d.ts +0 -54
  203. package/dist/components/ai/EditingIndicator/index.d.ts +0 -9
  204. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.d.ts +0 -3
  205. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.js +0 -126
  206. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.d.ts +0 -2
  207. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.theme.js +0 -8
  208. package/dist/components/ai/GenerativeRenderer/GenerativeRenderer.types.d.ts +0 -45
  209. package/dist/components/ai/GenerativeRenderer/index.d.ts +0 -3
  210. package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.d.ts +0 -17
  211. package/dist/components/ai/PresenceIndicator/PresenceIndicator.animations.js +0 -56
  212. package/dist/components/ai/PresenceIndicator/PresenceIndicator.d.ts +0 -38
  213. package/dist/components/ai/PresenceIndicator/PresenceIndicator.js +0 -110
  214. package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.d.ts +0 -2
  215. package/dist/components/ai/PresenceIndicator/PresenceIndicator.theme.js +0 -13
  216. package/dist/components/ai/PresenceIndicator/PresenceIndicator.types.d.ts +0 -53
  217. package/dist/components/ai/PresenceIndicator/index.d.ts +0 -8
  218. package/dist/components/ai/PresenceProvider/PresenceContext.d.ts +0 -24
  219. package/dist/components/ai/PresenceProvider/PresenceContext.js +0 -34
  220. package/dist/components/ai/PresenceProvider/PresenceProvider.d.ts +0 -32
  221. package/dist/components/ai/PresenceProvider/PresenceProvider.js +0 -321
  222. package/dist/components/ai/PresenceProvider/PresenceProvider.types.d.ts +0 -140
  223. package/dist/components/ai/PresenceProvider/adapters/MockAdapter.d.ts +0 -102
  224. package/dist/components/ai/PresenceProvider/adapters/MockAdapter.js +0 -331
  225. package/dist/components/ai/PresenceProvider/adapters/PresenceAdapter.d.ts +0 -93
  226. package/dist/components/ai/PresenceProvider/adapters/SupabaseAdapter.d.ts +0 -134
  227. package/dist/components/ai/PresenceProvider/adapters/WebSocketAdapter.d.ts +0 -149
  228. package/dist/components/ai/PresenceProvider/adapters/index.d.ts +0 -11
  229. package/dist/components/ai/PresenceProvider/index.d.ts +0 -10
  230. package/dist/components/ai/PromptSuggestions/PromptSuggestions.d.ts +0 -27
  231. package/dist/components/ai/PromptSuggestions/PromptSuggestions.js +0 -61
  232. package/dist/components/ai/PromptSuggestions/PromptSuggestions.types.d.ts +0 -65
  233. package/dist/components/ai/VersionSlider/VersionSlider.d.ts +0 -3
  234. package/dist/components/ai/VersionSlider/VersionSlider.js +0 -97
  235. package/dist/components/ai/VersionSlider/VersionSlider.theme.d.ts +0 -2
  236. package/dist/components/ai/VersionSlider/VersionSlider.theme.js +0 -18
  237. package/dist/components/ai/VersionSlider/VersionSlider.types.d.ts +0 -77
  238. package/dist/components/ai/VersionSlider/index.d.ts +0 -3
  239. package/dist/components/core/Pill/Pill.animations.js +0 -25
  240. package/dist/components/core/Pill/Pill.js +0 -145
  241. package/dist/components/core/Pill/Pill.theme.js +0 -65
  242. package/dist/components/core/RetryBoundary/RetryBoundary.d.ts +0 -35
  243. package/dist/components/core/RetryBoundary/RetryBoundary.js +0 -154
  244. package/dist/components/core/RetryBoundary/RetryBoundary.theme.d.ts +0 -2
  245. package/dist/components/core/RetryBoundary/RetryBoundary.theme.js +0 -7
  246. package/dist/components/core/RetryBoundary/RetryBoundary.types.d.ts +0 -51
  247. package/dist/components/core/RetryBoundary/index.d.ts +0 -3
  248. package/dist/components/core/Table/components/TableActions/TableActions.types.d.ts +0 -40
  249. package/dist/components/core/Table/components/TableActions/index.d.ts +0 -3
  250. package/dist/components/core/Table/components/TableActionsMenu.d.ts +0 -6
  251. package/dist/components/core/Table/components/TablePagination/TablePagination.d.ts +0 -17
  252. package/dist/components/core/Table/components/TablePagination/TablePagination.types.d.ts +0 -21
  253. package/dist/components/core/Table/components/TablePagination/index.d.ts +0 -2
  254. package/dist/components/core/Table/components/TableSelectionHeader/TableSelectionHeader.d.ts +0 -15
  255. package/dist/components/core/Table/components/TableSelectionHeader/index.d.ts +0 -3
  256. package/dist/components/core/Table/components/core/TableRow.d.ts +0 -3
  257. package/dist/components/core/Table/components/core/TableRow.js +0 -44
  258. package/dist/components/core/Table/components/core/index.d.ts +0 -4
  259. package/dist/components/forms/OptimisticForm/OptimisticForm.d.ts +0 -33
  260. package/dist/components/forms/OptimisticForm/OptimisticForm.js +0 -87
  261. package/dist/components/forms/OptimisticForm/OptimisticForm.theme.d.ts +0 -2
  262. package/dist/components/forms/OptimisticForm/OptimisticForm.theme.js +0 -8
  263. package/dist/components/forms/OptimisticForm/OptimisticForm.types.d.ts +0 -74
  264. package/dist/components/forms/OptimisticForm/index.d.ts +0 -3
  265. package/dist/hooks/useOptimisticMutation.d.ts +0 -109
  266. package/dist/hooks/useOptimisticMutation.js +0 -171
  267. package/dist/hooks/usePresence.d.ts +0 -88
  268. package/dist/utils/presenceUtils.d.ts +0 -66
  269. package/dist/utils/presenceUtils.js +0 -107
@@ -1,56 +0,0 @@
1
- /**
2
- * PresenceIndicator Animations
3
- *
4
- * Framer Motion animation variants for the presence indicator.
5
- * Import from 'motion/react'.
6
- */
7
- /**
8
- * Container animation
9
- * Scales in the entire group and staggers children
10
- */
11
- const containerVariants = {
12
- hidden: {
13
- opacity: 0,
14
- scale: 0.95,
15
- },
16
- visible: {
17
- opacity: 1,
18
- scale: 1,
19
- transition: {
20
- duration: 0.3,
21
- ease: "backOut",
22
- staggerChildren: 0.05,
23
- delayChildren: 0.05,
24
- },
25
- },
26
- exit: {
27
- opacity: 0,
28
- scale: 0.95,
29
- transition: {
30
- duration: 0.2,
31
- },
32
- },
33
- };
34
- /**
35
- * Item animation (for custom avatars)
36
- * Pops in individual avatars
37
- */
38
- const itemVariants = {
39
- hidden: {
40
- opacity: 0,
41
- scale: 0,
42
- x: -5,
43
- },
44
- visible: {
45
- opacity: 1,
46
- scale: 1,
47
- x: 0,
48
- transition: {
49
- type: "spring",
50
- stiffness: 400,
51
- damping: 25,
52
- },
53
- },
54
- };
55
-
56
- export { containerVariants, itemVariants };
@@ -1,38 +0,0 @@
1
- /**
2
- * PresenceIndicator Component
3
- *
4
- * Displays active user avatars with overflow handling.
5
- * Reuses existing AvatarGroup component for consistency.
6
- *
7
- * @example
8
- * ```tsx
9
- * <PresenceProvider channel="chat" currentUser={user} adapter={adapter}>
10
- * <PresenceIndicator max={5} showCount />
11
- * </PresenceProvider>
12
- * ```
13
- */
14
- import React from "react";
15
- import { PresenceIndicatorProps } from "./PresenceIndicator.types";
16
- /**
17
- * PresenceIndicator - Show active users with avatars
18
- *
19
- * @example
20
- * ```tsx
21
- * // Basic usage
22
- * <PresenceIndicator max={5} showCount />
23
- *
24
- * // With custom filtering
25
- * <PresenceIndicator
26
- * filter={(user) => user.status === 'online'}
27
- * sortBy="name"
28
- * />
29
- *
30
- * // Custom styling
31
- * <PresenceIndicator
32
- * size="sm"
33
- * spacing="tight"
34
- * className="bg-gray-100 p-2 rounded"
35
- * />
36
- * ```
37
- */
38
- export declare const PresenceIndicator: React.ForwardRefExoticComponent<PresenceIndicatorProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,110 +0,0 @@
1
- import React__default, { useMemo } from 'react';
2
- import { AnimatePresence, motion, useReducedMotion } from 'motion/react';
3
- import { AvatarGroup } from '../../core/AvatarGroup/AvatarGroup.js';
4
- import { usePresenceContext } from '../PresenceProvider/PresenceContext.js';
5
- import { presenceIndicatorTheme } from './PresenceIndicator.theme.js';
6
- import { cn } from '../../../utils/cn.js';
7
- import { sortUsers, formatPresenceCount } from '../../../utils/presenceUtils.js';
8
- import { containerVariants, itemVariants } from './PresenceIndicator.animations.js';
9
-
10
- /**
11
- * PresenceIndicator Component
12
- *
13
- * Displays active user avatars with overflow handling.
14
- * Reuses existing AvatarGroup component for consistency.
15
- *
16
- * @example
17
- * ```tsx
18
- * <PresenceProvider channel="chat" currentUser={user} adapter={adapter}>
19
- * <PresenceIndicator max={5} showCount />
20
- * </PresenceProvider>
21
- * ```
22
- */
23
- /**
24
- * PresenceIndicator - Show active users with avatars
25
- *
26
- * @example
27
- * ```tsx
28
- * // Basic usage
29
- * <PresenceIndicator max={5} showCount />
30
- *
31
- * // With custom filtering
32
- * <PresenceIndicator
33
- * filter={(user) => user.status === 'online'}
34
- * sortBy="name"
35
- * />
36
- *
37
- * // Custom styling
38
- * <PresenceIndicator
39
- * size="sm"
40
- * spacing="tight"
41
- * className="bg-gray-100 p-2 rounded"
42
- * />
43
- * ```
44
- */
45
- const PresenceIndicator = React__default.forwardRef(({ max = 5, size = "md", spacing = "normal", showCount = false, countFormat, filter, sortBy = "joinedAt", renderAvatar, shouldAnimate = true, overflowIndicator, ariaLabel, theme = presenceIndicatorTheme, className, ...props }, ref) => {
46
- var _a;
47
- // Get presence state from context
48
- const { users } = usePresenceContext();
49
- // Process users: filter and sort
50
- const processedUsers = useMemo(() => {
51
- let result = users;
52
- // Apply filter
53
- if (filter) {
54
- result = result.filter(filter);
55
- }
56
- // Apply sort
57
- if (sortBy) {
58
- result = sortUsers(result, sortBy);
59
- }
60
- return result;
61
- }, [users, filter, sortBy]);
62
- // Convert PresenceUser[] to AvatarProps[]
63
- const avatarProps = useMemo(() => {
64
- return processedUsers.map((user) => ({
65
- src: user.avatar,
66
- alt: user.name,
67
- status: user.status,
68
- }));
69
- }, [processedUsers]);
70
- // Format count text
71
- const countText = useMemo(() => {
72
- if (!showCount)
73
- return null;
74
- return countFormat
75
- ? countFormat(processedUsers.length)
76
- : formatPresenceCount(processedUsers.length);
77
- }, [showCount, processedUsers.length, countFormat]);
78
- // Merge theme
79
- const mergedTheme = {
80
- ...presenceIndicatorTheme,
81
- ...theme,
82
- };
83
- // Build className
84
- const containerClassName = cn(mergedTheme.baseStyle, (_a = mergedTheme.sizes) === null || _a === void 0 ? void 0 : _a[size], className // User overrides take precedence
85
- );
86
- // Don't render anything if no users
87
- if (processedUsers.length === 0) {
88
- return (React__default.createElement(AnimatePresence, null,
89
- React__default.createElement(motion.div, { ref: ref, className: containerClassName, role: "group", "aria-label": "No users online", "data-user-count": 0, initial: "hidden", animate: "visible", exit: "exit", variants: shouldAnimate && !useReducedMotion()
90
- ? containerVariants
91
- : undefined, ...props }, showCount && (React__default.createElement("span", { className: mergedTheme.countStyle }, countFormat ? countFormat(0) : "No users online")))));
92
- }
93
- const disableAnimations = useReducedMotion() || !shouldAnimate;
94
- return (React__default.createElement(AnimatePresence, { mode: "popLayout" },
95
- React__default.createElement(motion.div, { ref: ref, className: containerClassName, role: "group", "aria-label": ariaLabel || `${processedUsers.length} active users`, "data-user-count": processedUsers.length, initial: "hidden", animate: "visible", exit: "exit", variants: !disableAnimations ? containerVariants : undefined, ...props },
96
- renderAvatar ? (
97
- // Custom avatar rendering with stagger
98
- React__default.createElement("div", { className: "inline-flex" },
99
- processedUsers.slice(0, max).map((user) => (React__default.createElement(motion.div, { key: user.id, variants: itemVariants }, renderAvatar(user)))),
100
- processedUsers.length > max && (React__default.createElement(motion.span, { variants: itemVariants, className: "text-sm text-[var(--color-text-secondary)]" },
101
- "+",
102
- processedUsers.length - max)))) : (
103
- // Default AvatarGroup rendering
104
- React__default.createElement(AvatarGroup, { avatars: avatarProps, max: max, size: size, spacing: spacing, shouldAnimate: shouldAnimate, overflowIndicator: overflowIndicator, ariaLabel: ariaLabel })),
105
- showCount && countText && (React__default.createElement(motion.span, { variants: itemVariants, className: mergedTheme.countStyle, "aria-live": "polite" }, countText)))));
106
- });
107
- // Display name for dev tools
108
- PresenceIndicator.displayName = "PresenceIndicator";
109
-
110
- export { PresenceIndicator };
@@ -1,2 +0,0 @@
1
- import { PresenceIndicatorTheme } from "./PresenceIndicator.types";
2
- export declare const presenceIndicatorTheme: PresenceIndicatorTheme;
@@ -1,13 +0,0 @@
1
- const presenceIndicatorTheme = {
2
- baseStyle: "inline-flex items-center gap-2",
3
- countStyle: "text-[var(--color-text-secondary)]/80 text-xs tracking-tight whitespace-nowrap",
4
- sizes: {
5
- xs: "gap-1",
6
- sm: "gap-1.5",
7
- md: "gap-2",
8
- lg: "gap-2.5",
9
- xl: "gap-3",
10
- },
11
- };
12
-
13
- export { presenceIndicatorTheme };
@@ -1,53 +0,0 @@
1
- /**
2
- * PresenceIndicator Type Definitions
3
- *
4
- * Defines props and interfaces for the PresenceIndicator component.
5
- */
6
- import React from 'react';
7
- import { PresenceUser } from '../PresenceProvider/PresenceProvider.types';
8
- import { AvatarSize } from '../../core/Avatar/Avatar.types';
9
- import { AvatarGroupSpacing } from '../../core/AvatarGroup/AvatarGroup.types';
10
- /**
11
- * Sort criteria for presence users
12
- */
13
- export type PresenceSort = 'joinedAt' | 'name' | 'status' | ((a: PresenceUser, b: PresenceUser) => number);
14
- /**
15
- * PresenceIndicator component props
16
- */
17
- export interface PresenceIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {
18
- /** Maximum users to display before showing overflow (default: 5) */
19
- max?: number;
20
- /** Avatar size (default: 'md') */
21
- size?: AvatarSize;
22
- /** Spacing between avatars (default: 'normal') */
23
- spacing?: AvatarGroupSpacing;
24
- /** Show user count label (default: false) */
25
- showCount?: boolean;
26
- /** Custom count format function */
27
- countFormat?: (count: number) => string;
28
- /** Filter which users to show */
29
- filter?: (user: PresenceUser) => boolean;
30
- /** Sort users by criteria (default: 'joinedAt') */
31
- sortBy?: PresenceSort;
32
- /** Custom avatar renderer */
33
- renderAvatar?: (user: PresenceUser) => React.ReactNode;
34
- /** Enable animations (default: true) */
35
- shouldAnimate?: boolean;
36
- /** Custom overflow indicator */
37
- overflowIndicator?: (overflowCount: number) => React.ReactNode;
38
- /** ARIA label for the group */
39
- ariaLabel?: string;
40
- /** Theme overrides */
41
- theme?: PresenceIndicatorTheme;
42
- }
43
- /**
44
- * Theme configuration for PresenceIndicator
45
- */
46
- export interface PresenceIndicatorTheme {
47
- /** Base container style */
48
- baseStyle?: string;
49
- /** Count label style */
50
- countStyle?: string;
51
- /** Size-specific gaps */
52
- sizes?: Partial<Record<AvatarSize, string>>;
53
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * PresenceIndicator - Visual display of active users
3
- *
4
- * @module collaboration/PresenceIndicator
5
- */
6
- export { PresenceIndicator } from './PresenceIndicator';
7
- export { presenceIndicatorTheme } from './PresenceIndicator.theme';
8
- export type { PresenceIndicatorProps, PresenceIndicatorTheme, PresenceSort, } from './PresenceIndicator.types';
@@ -1,24 +0,0 @@
1
- /**
2
- * Presence Context
3
- *
4
- * Provides presence state to child components via React Context.
5
- * Follow the same pattern as Tabs and other compound components.
6
- */
7
- import { PresenceContextValue } from './PresenceProvider.types';
8
- /**
9
- * Context for sharing presence state between provider and child components
10
- */
11
- export declare const PresenceContext: import("react").Context<PresenceContextValue | null>;
12
- /**
13
- * Hook to consume PresenceContext
14
- *
15
- * @throws Error if used outside PresenceProvider
16
- * @returns Presence context value
17
- *
18
- * @example
19
- * function MyComponent() {
20
- * const { users, typingUsers, isConnected } = usePresenceContext();
21
- * return <div>{users.length} users online</div>;
22
- * }
23
- */
24
- export declare const usePresenceContext: () => PresenceContextValue;
@@ -1,34 +0,0 @@
1
- import { createContext, useContext } from 'react';
2
-
3
- /**
4
- * Presence Context
5
- *
6
- * Provides presence state to child components via React Context.
7
- * Follow the same pattern as Tabs and other compound components.
8
- */
9
- /**
10
- * Context for sharing presence state between provider and child components
11
- */
12
- const PresenceContext = createContext(null);
13
- /**
14
- * Hook to consume PresenceContext
15
- *
16
- * @throws Error if used outside PresenceProvider
17
- * @returns Presence context value
18
- *
19
- * @example
20
- * function MyComponent() {
21
- * const { users, typingUsers, isConnected } = usePresenceContext();
22
- * return <div>{users.length} users online</div>;
23
- * }
24
- */
25
- const usePresenceContext = () => {
26
- const context = useContext(PresenceContext);
27
- if (!context) {
28
- throw new Error('Presence components must be used within a PresenceProvider. ' +
29
- 'Wrap your component tree with <PresenceProvider>.');
30
- }
31
- return context;
32
- };
33
-
34
- export { PresenceContext, usePresenceContext };
@@ -1,32 +0,0 @@
1
- /**
2
- * Presence Provider Component
3
- *
4
- * Root provider that manages real-time presence state via adapter pattern.
5
- * Provides presence context to child components.
6
- *
7
- * Features:
8
- * - Backend-agnostic adapter pattern
9
- * - Network-aware reconnection
10
- * - Typing state management with debouncing
11
- * - Auto-cleanup on unmount
12
- */
13
- import React from 'react';
14
- import { PresenceProviderProps } from './PresenceProvider.types';
15
- /**
16
- * PresenceProvider - Real-time collaboration provider
17
- *
18
- * @example
19
- * ```tsx
20
- * const adapter = new MockPresenceAdapter();
21
- * const currentUser = { id: '1', name: 'John Doe', status: 'online' };
22
- *
23
- * <PresenceProvider channel="chat-room-123" currentUser={currentUser} adapter={adapter}>
24
- * <PresenceIndicator />
25
- * <ChatInterface>
26
- * <MessageHistory />
27
- * <EditingIndicator />
28
- * </ChatInterface>
29
- * </PresenceProvider>
30
- * ```
31
- */
32
- export declare const PresenceProvider: React.ForwardRefExoticComponent<PresenceProviderProps & React.RefAttributes<HTMLDivElement>>;