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
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { TableSelectionHeaderProps } from "./Table.types";
3
+ /**
4
+ * Selection header that appears when rows are selected
5
+ * Shows selection count and bulk action buttons
6
+ */
7
+ export declare const TableSelectionHeader: React.FC<TableSelectionHeaderProps>;
@@ -1,7 +1,7 @@
1
1
  import React__default from 'react';
2
2
  import { XMarkIcon } from '@heroicons/react/24/outline';
3
- import { Button } from '../../../Button/Button.js';
4
- import { cn } from '../../../../../utils/cn.js';
3
+ import { Button } from '../Button/Button.js';
4
+ import { cn } from '../../../utils/cn.js';
5
5
 
6
6
  /**
7
7
  * Selection header that appears when rows are selected
@@ -10,13 +10,12 @@ import { cn } from '../../../../../utils/cn.js';
10
10
  const TableSelectionHeader = ({ selectedCount, totalCount, selectedRows, bulkActions = [], onClearSelection, className, }) => {
11
11
  if (selectedCount === 0)
12
12
  return null;
13
- return (React__default.createElement("div", { className: cn("flex items-center justify-between px-3 py-1 rounded-lg shadow-xl bg-neutral-50 z-10", className) },
13
+ return (React__default.createElement("div", { className: cn("flex items-center justify-between px-3 py-1 rounded-lg shadow-xl bg-[var(--color-background-secondary)] z-10", className) },
14
14
  React__default.createElement("div", { className: "flex items-center gap-3" },
15
- React__default.createElement("span", { className: "text-[var(--color-text-muted)] text-sm border-r border-border pr-3" }, selectedCount === totalCount
15
+ React__default.createElement("span", { className: "text-[var(--color-text-muted)] text-sm border-r border-[var(--color-border)] pr-3" }, selectedCount === totalCount
16
16
  ? `All ${selectedCount} selected`
17
17
  : `${selectedCount} selected`),
18
18
  bulkActions.length > 0 && (React__default.createElement("div", { className: "flex items-center gap-2" }, bulkActions.map((action) => {
19
- action.icon;
20
19
  return (React__default.createElement(Button, { key: action.id, color: "neutral", variant: "filled", onClick: () => action.onClick(selectedRows), className: "text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)]", size: "sm" }, action.label));
21
20
  })))),
22
21
  React__default.createElement(Button, { color: "primary", variant: "link", onClick: onClearSelection, "aria-label": "Clear selection" },
@@ -0,0 +1,10 @@
1
+ export { useTableColumns } from './useTableColumns';
2
+ export { useTableSelection } from './useTableSelection';
3
+ export { useTableExpansion } from './useTableExpansion';
4
+ export { useTablePagination } from './useTablePagination';
5
+ export { useTableFilter } from './useTableFilter';
6
+ export type { UseTableColumnsReturn } from './useTableColumns';
7
+ export type { UseTableSelectionReturn } from './useTableSelection';
8
+ export type { UseTableExpansionReturn } from './useTableExpansion';
9
+ export type { UseTablePaginationReturn } from './useTablePagination';
10
+ export type { UseTableFilterReturn } from './useTableFilter';
@@ -0,0 +1,16 @@
1
+ import { Column } from '../Table.types';
2
+ export interface UseTableColumnsOptions<T> {
3
+ columns?: Column<T>[];
4
+ initialVisibleColumns?: string[];
5
+ onVisibleColumnsChange?: (visibleColumns: string[]) => void;
6
+ onColumnReorder?: (fromIndex: number, toIndex: number) => void;
7
+ }
8
+ export interface UseTableColumnsReturn<T> {
9
+ visibleColumns: string[];
10
+ columnOrder: string[];
11
+ visibleColumnsList: Column<T>[];
12
+ handleToggleColumn: (columnId: string) => void;
13
+ handleColumnReorder: (fromIndex: number, toIndex: number) => void;
14
+ handleResetToDefault: () => void;
15
+ }
16
+ export declare function useTableColumns<T>({ columns, initialVisibleColumns, onVisibleColumnsChange, onColumnReorder, }: UseTableColumnsOptions<T>): UseTableColumnsReturn<T>;
@@ -0,0 +1,67 @@
1
+ import { useState, useEffect, useCallback, useMemo } from 'react';
2
+
3
+ function useTableColumns({ columns, initialVisibleColumns, onVisibleColumnsChange, onColumnReorder, }) {
4
+ const defaultVisibleColumns = initialVisibleColumns || (columns ? columns.map((col) => col.id) : []);
5
+ const defaultColumnOrder = columns ? columns.map((col) => col.id) : [];
6
+ const [visibleColumns, setVisibleColumns] = useState(defaultVisibleColumns);
7
+ const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
8
+ // Sync column order when columns prop changes
9
+ useEffect(() => {
10
+ if (columns) {
11
+ setColumnOrder(columns.map((col) => col.id));
12
+ }
13
+ }, [columns]);
14
+ const handleVisibleColumnsChange = useCallback((newVisibleColumns) => {
15
+ setVisibleColumns(newVisibleColumns);
16
+ onVisibleColumnsChange === null || onVisibleColumnsChange === void 0 ? void 0 : onVisibleColumnsChange(newVisibleColumns);
17
+ }, [onVisibleColumnsChange]);
18
+ const handleToggleColumn = useCallback((columnId) => {
19
+ const column = columns === null || columns === void 0 ? void 0 : columns.find(col => col.id === columnId);
20
+ if (column === null || column === void 0 ? void 0 : column.locked)
21
+ return;
22
+ setVisibleColumns(prev => {
23
+ const newVisibleColumns = prev.includes(columnId)
24
+ ? prev.filter((id) => id !== columnId)
25
+ : [...prev, columnId];
26
+ onVisibleColumnsChange === null || onVisibleColumnsChange === void 0 ? void 0 : onVisibleColumnsChange(newVisibleColumns);
27
+ return newVisibleColumns;
28
+ });
29
+ }, [columns, onVisibleColumnsChange]);
30
+ const handleColumnReorder = useCallback((fromIndex, toIndex) => {
31
+ setColumnOrder(prev => {
32
+ const newColumnOrder = [...prev];
33
+ const [movedColumn] = newColumnOrder.splice(fromIndex, 1);
34
+ newColumnOrder.splice(toIndex, 0, movedColumn);
35
+ return newColumnOrder;
36
+ });
37
+ onColumnReorder === null || onColumnReorder === void 0 ? void 0 : onColumnReorder(fromIndex, toIndex);
38
+ }, [onColumnReorder]);
39
+ const handleResetToDefault = useCallback(() => {
40
+ const lockedColumnIds = (columns === null || columns === void 0 ? void 0 : columns.filter(col => col.locked).map(col => col.id)) || [];
41
+ const resetVisibleColumns = Array.from(new Set([...defaultVisibleColumns, ...lockedColumnIds]));
42
+ handleVisibleColumnsChange(resetVisibleColumns);
43
+ if (columns) {
44
+ setColumnOrder(columns.map((col) => col.id));
45
+ }
46
+ }, [columns, defaultVisibleColumns, handleVisibleColumnsChange]);
47
+ const visibleColumnsList = useMemo(() => {
48
+ if (!columns)
49
+ return [];
50
+ if (columnOrder.length > 0) {
51
+ return columnOrder
52
+ .map(colId => columns.find(col => col.id === colId))
53
+ .filter((col) => col !== undefined && visibleColumns.includes(col.id));
54
+ }
55
+ return columns.filter((col) => visibleColumns.includes(col.id));
56
+ }, [columns, columnOrder, visibleColumns]);
57
+ return {
58
+ visibleColumns,
59
+ columnOrder,
60
+ visibleColumnsList,
61
+ handleToggleColumn,
62
+ handleColumnReorder,
63
+ handleResetToDefault,
64
+ };
65
+ }
66
+
67
+ export { useTableColumns };
@@ -0,0 +1,8 @@
1
+ export interface UseTableExpansionOptions {
2
+ expandedRows?: string[];
3
+ onExpandedRowsChange?: (expandedRows: string[]) => void;
4
+ }
5
+ export interface UseTableExpansionReturn {
6
+ handleExpandChange: (rowId: string, expanded: boolean) => void;
7
+ }
8
+ export declare function useTableExpansion({ expandedRows, onExpandedRowsChange, }: UseTableExpansionOptions): UseTableExpansionReturn;
@@ -0,0 +1,15 @@
1
+ import { useCallback } from 'react';
2
+
3
+ function useTableExpansion({ expandedRows = [], onExpandedRowsChange, }) {
4
+ const handleExpandChange = useCallback((rowId, expanded) => {
5
+ if (!onExpandedRowsChange)
6
+ return;
7
+ const newExpandedRows = expanded
8
+ ? [...expandedRows, rowId]
9
+ : expandedRows.filter(id => id !== rowId);
10
+ onExpandedRowsChange(newExpandedRows);
11
+ }, [expandedRows, onExpandedRowsChange]);
12
+ return { handleExpandChange };
13
+ }
14
+
15
+ export { useTableExpansion };
@@ -0,0 +1,12 @@
1
+ import { FilterConfig, FilterOperator } from '../Table.types';
2
+ export interface UseTableFilterOptions {
3
+ filterConfig?: FilterConfig[];
4
+ onFilterChange?: (filterConfig: FilterConfig[]) => void;
5
+ }
6
+ export interface UseTableFilterReturn {
7
+ handleAddFilter: (columnId: string, value: any, operator?: FilterOperator) => void;
8
+ handleRemoveFilter: (columnId: string) => void;
9
+ handleUpdateFilter: (columnId: string, value: any, operator?: FilterOperator) => void;
10
+ handleClearFilters: () => void;
11
+ }
12
+ export declare function useTableFilter({ filterConfig, onFilterChange, }: UseTableFilterOptions): UseTableFilterReturn;
@@ -0,0 +1,37 @@
1
+ import { useCallback } from 'react';
2
+
3
+ function useTableFilter({ filterConfig = [], onFilterChange, }) {
4
+ const handleAddFilter = useCallback((columnId, value, operator) => {
5
+ if (!onFilterChange)
6
+ return;
7
+ const existing = filterConfig.find(f => f.columnId === columnId);
8
+ if (existing) {
9
+ const updated = filterConfig.map(f => f.columnId === columnId ? { ...f, value, operator } : f);
10
+ onFilterChange(updated);
11
+ }
12
+ else {
13
+ onFilterChange([...filterConfig, { columnId, value, operator }]);
14
+ }
15
+ }, [filterConfig, onFilterChange]);
16
+ const handleRemoveFilter = useCallback((columnId) => {
17
+ if (!onFilterChange)
18
+ return;
19
+ onFilterChange(filterConfig.filter(f => f.columnId !== columnId));
20
+ }, [filterConfig, onFilterChange]);
21
+ const handleUpdateFilter = useCallback((columnId, value, operator) => {
22
+ if (!onFilterChange)
23
+ return;
24
+ onFilterChange(filterConfig.map(f => f.columnId === columnId ? { ...f, value, operator } : f));
25
+ }, [filterConfig, onFilterChange]);
26
+ const handleClearFilters = useCallback(() => {
27
+ onFilterChange === null || onFilterChange === void 0 ? void 0 : onFilterChange([]);
28
+ }, [onFilterChange]);
29
+ return {
30
+ handleAddFilter,
31
+ handleRemoveFilter,
32
+ handleUpdateFilter,
33
+ handleClearFilters,
34
+ };
35
+ }
36
+
37
+ export { useTableFilter };
@@ -0,0 +1,12 @@
1
+ export interface UseTablePaginationOptions<T> {
2
+ data?: T[];
3
+ pagination?: {
4
+ pageSize: number;
5
+ currentPage: number;
6
+ totalItems: number;
7
+ };
8
+ }
9
+ export interface UseTablePaginationReturn<T> {
10
+ paginatedData: T[];
11
+ }
12
+ export declare function useTablePagination<T>({ data, pagination, }: UseTablePaginationOptions<T>): UseTablePaginationReturn<T>;
@@ -0,0 +1,13 @@
1
+ import { useMemo } from 'react';
2
+
3
+ function useTablePagination({ data, pagination, }) {
4
+ const paginatedData = useMemo(() => {
5
+ if (pagination && data) {
6
+ return data.slice((pagination.currentPage - 1) * pagination.pageSize, pagination.currentPage * pagination.pageSize);
7
+ }
8
+ return data || [];
9
+ }, [data, pagination]);
10
+ return { paginatedData };
11
+ }
12
+
13
+ export { useTablePagination };
@@ -0,0 +1,17 @@
1
+ import { SelectionType } from '../Table.types';
2
+ export interface UseTableSelectionOptions<T> {
3
+ data: T[];
4
+ rowKey?: keyof T | ((row: T, index: number) => string | number);
5
+ selectable?: boolean;
6
+ selectionType?: SelectionType;
7
+ selectedRows?: string[];
8
+ onSelectionChange?: (selectedRows: string[]) => void;
9
+ }
10
+ export interface UseTableSelectionReturn {
11
+ isAllSelected: boolean;
12
+ isIndeterminate: boolean;
13
+ handleSelectAll: (checked: boolean) => void;
14
+ handleSelectionChange: (rowId: string, selected: boolean) => void;
15
+ handleClearSelection: () => void;
16
+ }
17
+ export declare function useTableSelection<T extends Record<string, any>>({ data, rowKey, selectionType, selectedRows, onSelectionChange, }: UseTableSelectionOptions<T>): UseTableSelectionReturn;
@@ -0,0 +1,40 @@
1
+ import { useMemo, useCallback } from 'react';
2
+ import { getRowId } from '../Table.utils.js';
3
+
4
+ function useTableSelection({ data, rowKey, selectionType = 'checkbox', selectedRows = [], onSelectionChange, }) {
5
+ const isAllSelected = useMemo(() => selectedRows.length === data.length && data.length > 0, [selectedRows.length, data.length]);
6
+ const isIndeterminate = useMemo(() => selectedRows.length > 0 && selectedRows.length < data.length, [selectedRows.length, data.length]);
7
+ const handleSelectAll = useCallback((checked) => {
8
+ if (!onSelectionChange || selectionType !== 'checkbox')
9
+ return;
10
+ if (checked) {
11
+ const allRowIds = data.map((row, index) => getRowId(row, index, rowKey));
12
+ onSelectionChange(allRowIds);
13
+ }
14
+ else {
15
+ onSelectionChange([]);
16
+ }
17
+ }, [data, rowKey, selectionType, onSelectionChange]);
18
+ const handleSelectionChange = useCallback((rowId, selected) => {
19
+ if (!onSelectionChange)
20
+ return;
21
+ const newSelectedRows = selectionType === 'checkbox'
22
+ ? selected
23
+ ? [...selectedRows, rowId]
24
+ : selectedRows.filter(id => id !== rowId)
25
+ : selected ? [rowId] : [];
26
+ onSelectionChange(newSelectedRows);
27
+ }, [selectionType, selectedRows, onSelectionChange]);
28
+ const handleClearSelection = useCallback(() => {
29
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([]);
30
+ }, [onSelectionChange]);
31
+ return {
32
+ isAllSelected,
33
+ isIndeterminate,
34
+ handleSelectAll,
35
+ handleSelectionChange,
36
+ handleClearSelection,
37
+ };
38
+ }
39
+
40
+ export { useTableSelection };
@@ -1,9 +1,8 @@
1
- import { TableProps, Column, SortConfig, FilterConfig, TableThemeOverrides, TableVariant, TableAlignment, SelectionType, TableHeaderProps, TableBodyProps, TableRowProps, TableCellProps, TableHeaderCellProps, BulkAction } from './Table.types';
2
- import { TableActions } from './components/TableActions/TableActions';
3
- import { TableActionsMenu } from './components/TableActions/TableActionsMenu';
4
- import { TablePagination } from './components/TablePagination';
5
- import { ActionItem, ActionVariant, ActionPriority, TableActionsProps, TableActionsMenuProps } from './components/TableActions/TableActions.types';
6
- import { TablePaginationProps } from './components/TablePagination/TablePagination.types';
1
+ import { TableProps, Column, SortConfig, FilterConfig, FilterOperator, FilterType, FilterOption, TableThemeOverrides, TableVariant, TableAlignment, SelectionType, TableHeaderProps, TableBodyProps, TableRowProps, TableCellProps, TableHeaderCellProps, BulkAction, ActionItem, ActionVariant, ActionPriority, TableActionsProps, TableActionsMenuProps, TablePaginationProps, TableSelectionHeaderProps, TableColumnManagerProps, TableFilterProps } from './Table.types';
2
+ import { TableActions } from './TableActions';
3
+ import { TableActionsMenu } from './TableActionsMenu';
4
+ import { TablePagination } from './TablePagination';
5
+ import { TableFilter } from './TableFilter';
7
6
  interface TableCompound {
8
7
  <T extends Record<string, any>>(props: TableProps<T>): React.ReactElement;
9
8
  Header: React.FC<TableHeaderProps>;
@@ -13,8 +12,10 @@ interface TableCompound {
13
12
  HeaderCell: React.FC<TableHeaderCellProps>;
14
13
  Actions: typeof TableActions;
15
14
  Pagination: React.FC<TablePaginationProps>;
15
+ Filter: typeof TableFilter;
16
16
  }
17
17
  declare const Table: TableCompound;
18
18
  export { Table };
19
- export type { TableProps, Column, SortConfig, FilterConfig, TableThemeOverrides, TableVariant, TableAlignment, SelectionType, TableHeaderProps, TableBodyProps, TableRowProps, TableCellProps, TableHeaderCellProps, BulkAction, ActionItem, ActionVariant, ActionPriority, TableActionsProps, TableActionsMenuProps, TablePaginationProps, };
20
- export { TableActions, TableActionsMenu, TablePagination };
19
+ export type { TableProps, Column, SortConfig, FilterConfig, FilterOperator, FilterType, FilterOption, TableThemeOverrides, TableVariant, TableAlignment, SelectionType, TableHeaderProps, TableBodyProps, TableRowProps, TableCellProps, TableHeaderCellProps, BulkAction, ActionItem, ActionVariant, ActionPriority, TableActionsProps, TableActionsMenuProps, TablePaginationProps, TableSelectionHeaderProps, TableColumnManagerProps, TableFilterProps, };
20
+ export { TableActions, TableActionsMenu, TablePagination, TableFilter };
21
+ export { useTableColumns, useTableSelection, useTableExpansion, useTablePagination, useTableFilter, } from './hooks';
@@ -1,10 +1,11 @@
1
1
  import { Table as Table$1 } from './Table.js';
2
- import { HeaderCell, Cell, Row, Body, Header } from './components/DeclarativeComponents.js';
3
- import { TableActions } from './components/TableActions/TableActions.js';
2
+ import { HeaderCell, Cell, Row, Body, Header } from './TableDeclarative.js';
3
+ import { TableActions } from './TableActions.js';
4
4
  import 'react';
5
5
  import 'clsx';
6
6
  import 'tailwind-merge';
7
- import { TablePagination } from './components/TablePagination/TablePagination.js';
7
+ import { TablePagination } from './TablePagination.js';
8
+ import { TableFilter } from './TableFilter.js';
8
9
 
9
10
  // First import the Table component itself
10
11
  // Create a compound component by attaching the subcomponents
@@ -15,7 +16,8 @@ const Table = Object.assign(Table$1, {
15
16
  Cell: Cell,
16
17
  HeaderCell: HeaderCell,
17
18
  Actions: TableActions,
18
- Pagination: TablePagination
19
+ Pagination: TablePagination,
20
+ Filter: TableFilter,
19
21
  });
20
22
 
21
- export { Table, TableActions, TablePagination };
23
+ export { Table, TableActions, TableFilter, TablePagination };
@@ -11,7 +11,7 @@ import { TabsContent } from './TabsContent.js';
11
11
  * Uses compound component pattern with Tabs.List, Tabs.Trigger, and Tabs.Content
12
12
  * Supports optional Framer Motion animations and comprehensive accessibility
13
13
  */
14
- const TabsComponent = React__default.forwardRef(({ value, defaultValue, onValueChange, orientation = "horizontal", size = "md", disabled = false, children, className, ...props }, ref) => {
14
+ const TabsComponent = React__default.forwardRef(({ value, defaultValue, onValueChange, orientation = "horizontal", size = "md", disabled = false, children, className, darkMode = false, ...props }, ref) => {
15
15
  const [currentValue, setCurrentValue] = useState(value || defaultValue || "");
16
16
  // Track trigger elements for underline positioning
17
17
  const triggerRefs = useRef(new Map());
@@ -74,7 +74,7 @@ const TabsComponent = React__default.forwardRef(({ value, defaultValue, onValueC
74
74
  disabledStyle: disabled ? "opacity-50 cursor-not-allowed pointer-events-none" : "",
75
75
  }), [disabled]);
76
76
  return (React__default.createElement(TabsContext.Provider, { value: contextValue },
77
- React__default.createElement("div", { ref: ref, className: cn(themeClasses.baseStyle, themeClasses.disabledStyle, className // User overrides take precedence
77
+ React__default.createElement("div", { ref: ref, className: cn(themeClasses.baseStyle, themeClasses.disabledStyle, darkMode && "dark", className // User overrides take precedence
78
78
  ), "data-orientation": orientation, "data-size": size, "data-disabled": disabled, role: "tablist" // Add semantic role for screen readers
79
79
  , "aria-orientation": orientation, ...props }, children)));
80
80
  });
@@ -48,6 +48,14 @@ export interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
48
48
  disabled?: boolean;
49
49
  /** Children components - typically Tabs.List and Tabs.Content components */
50
50
  children?: React.ReactNode;
51
+ /**
52
+ * Force dark mode styling for the component. Use when placing the component
53
+ * on a dark background while the page is in light mode. This applies the
54
+ * 'dark' class to the container, making text, borders, and other elements
55
+ * use light colors for visibility.
56
+ * @default false
57
+ */
58
+ darkMode?: boolean;
51
59
  }
52
60
  /**
53
61
  * TabsList component props - container for tab trigger buttons
@@ -0,0 +1,3 @@
1
+ import type { Variants, Transition } from "motion/react";
2
+ export declare const tagVariants: Variants;
3
+ export declare const tagLayoutTransition: Transition;
@@ -0,0 +1,31 @@
1
+ const tagVariants = {
2
+ initial: {
3
+ scale: 0,
4
+ opacity: 0,
5
+ },
6
+ animate: {
7
+ scale: 1,
8
+ opacity: 1,
9
+ transition: {
10
+ type: "spring",
11
+ stiffness: 500,
12
+ damping: 25,
13
+ },
14
+ },
15
+ exit: {
16
+ scale: 0,
17
+ opacity: 0,
18
+ transition: {
19
+ type: "spring",
20
+ stiffness: 500,
21
+ damping: 30,
22
+ },
23
+ },
24
+ };
25
+ const tagLayoutTransition = {
26
+ type: "spring",
27
+ stiffness: 500,
28
+ damping: 30,
29
+ };
30
+
31
+ export { tagLayoutTransition, tagVariants };
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { TagProps } from "./Tag.types";
3
+ /**
4
+ * Tag component for displaying removable labels or keywords.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <Tag onRemove={() => handleRemove('tag1')}>JavaScript</Tag>
10
+ * <Tag size="sm" removable={false}>Read Only</Tag>
11
+ * <Tag disabled>Disabled Tag</Tag>
12
+ * ```
13
+ */
14
+ export declare const Tag: React.ForwardRefExoticComponent<TagProps & React.RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1,45 @@
1
+ import React__default from 'react';
2
+ import { motion } from 'motion/react';
3
+ import { XMarkIcon } from '@heroicons/react/24/outline';
4
+ import { cn } from '../../../utils/cn.js';
5
+ import { tagTheme } from './Tag.theme.js';
6
+ import { tagVariants, tagLayoutTransition } from './Tag.animations.js';
7
+
8
+ /**
9
+ * Tag component for displaying removable labels or keywords.
10
+ *
11
+ * @component
12
+ * @example
13
+ * ```tsx
14
+ * <Tag onRemove={() => handleRemove('tag1')}>JavaScript</Tag>
15
+ * <Tag size="sm" removable={false}>Read Only</Tag>
16
+ * <Tag disabled>Disabled Tag</Tag>
17
+ * ```
18
+ */
19
+ const Tag = React__default.forwardRef(({ children, size = "md", removable = true, onRemove, disabled = false, className, theme: customTheme, ...props }, ref) => {
20
+ var _a, _b, _c;
21
+ // Merge default theme with custom theme overrides
22
+ const theme = {
23
+ baseStyle: (_a = customTheme === null || customTheme === void 0 ? void 0 : customTheme.baseStyle) !== null && _a !== void 0 ? _a : tagTheme.baseStyle,
24
+ sizes: { ...tagTheme.sizes, ...customTheme === null || customTheme === void 0 ? void 0 : customTheme.sizes },
25
+ disabledStyle: (_b = customTheme === null || customTheme === void 0 ? void 0 : customTheme.disabledStyle) !== null && _b !== void 0 ? _b : tagTheme.disabledStyle,
26
+ removeButtonStyle: (_c = customTheme === null || customTheme === void 0 ? void 0 : customTheme.removeButtonStyle) !== null && _c !== void 0 ? _c : tagTheme.removeButtonStyle,
27
+ removeIconSizes: {
28
+ ...tagTheme.removeIconSizes,
29
+ ...customTheme === null || customTheme === void 0 ? void 0 : customTheme.removeIconSizes,
30
+ },
31
+ };
32
+ const handleRemove = (e) => {
33
+ e.stopPropagation();
34
+ if (!disabled && onRemove) {
35
+ onRemove();
36
+ }
37
+ };
38
+ return (React__default.createElement(motion.span, { ref: ref, className: cn(theme.baseStyle, theme.sizes[size], disabled && theme.disabledStyle, className), layout: true, transition: tagLayoutTransition, variants: tagVariants, initial: "initial", animate: "animate", exit: "exit", "data-size": size, "data-disabled": disabled ? "true" : "false", "data-removable": removable ? "true" : "false", ...props },
39
+ children,
40
+ removable && onRemove && !disabled && (React__default.createElement("button", { type: "button", onClick: handleRemove, className: theme.removeButtonStyle, "aria-label": `Remove ${typeof children === "string" ? children : "tag"}` },
41
+ React__default.createElement(XMarkIcon, { className: theme.removeIconSizes[size] })))));
42
+ });
43
+ Tag.displayName = "Tag";
44
+
45
+ export { Tag };
@@ -0,0 +1,2 @@
1
+ import { TagTheme } from "./Tag.types";
2
+ export declare const tagTheme: TagTheme;
@@ -0,0 +1,21 @@
1
+ const tagTheme = {
2
+ baseStyle: "inline-flex items-center gap-1 font-medium rounded-full " +
3
+ "bg-[var(--color-background-secondary)] border border-[var(--color-border)] " +
4
+ "text-[var(--color-text-primary)]",
5
+ sizes: {
6
+ sm: "text-xs px-2 py-0.5 pr-0.5",
7
+ md: "text-sm px-2.5 py-0.5 pr-0.5",
8
+ },
9
+ disabledStyle: "opacity-50 cursor-not-allowed",
10
+ removeButtonStyle: "inline-flex items-center justify-center rounded-full p-1 " +
11
+ "hover:bg-[var(--color-background-quaternary)] " +
12
+ "text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] " +
13
+ "transition-all duration-300 cursor-pointer focus:outline-none " +
14
+ "focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]",
15
+ removeIconSizes: {
16
+ sm: "size-3",
17
+ md: "size-3.5",
18
+ },
19
+ };
20
+
21
+ export { tagTheme };
@@ -0,0 +1,40 @@
1
+ import React from "react";
2
+ /**
3
+ * Tag component props
4
+ */
5
+ export interface TagProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "onRemove" | "onDrag" | "onDragEnd" | "onDragStart" | "onAnimationStart"> {
6
+ /** The content of the tag */
7
+ children: React.ReactNode;
8
+ /** The size of the tag */
9
+ size?: TagSize;
10
+ /** Whether to show the remove button (default: true) */
11
+ removable?: boolean;
12
+ /** Callback when the remove button is clicked */
13
+ onRemove?: () => void;
14
+ /** Whether the tag is disabled */
15
+ disabled?: boolean;
16
+ /** Additional class name for the tag */
17
+ className?: string;
18
+ /** Theme overrides */
19
+ theme?: TagThemeOverrides;
20
+ }
21
+ export type TagSize = "sm" | "md";
22
+ export interface TagTheme {
23
+ /** Base styles for the tag container */
24
+ baseStyle: string;
25
+ /** Size-specific styles */
26
+ sizes: Record<TagSize, string>;
27
+ /** Disabled state style */
28
+ disabledStyle: string;
29
+ /** Remove button style */
30
+ removeButtonStyle: string;
31
+ /** Remove icon sizes for each tag size */
32
+ removeIconSizes: Record<TagSize, string>;
33
+ }
34
+ export interface TagThemeOverrides {
35
+ baseStyle?: string;
36
+ sizes?: Partial<Record<TagSize, string>>;
37
+ disabledStyle?: string;
38
+ removeButtonStyle?: string;
39
+ removeIconSizes?: Partial<Record<TagSize, string>>;
40
+ }
@@ -0,0 +1,3 @@
1
+ export { Tag } from "./Tag";
2
+ export type { TagProps, TagSize, TagTheme, TagThemeOverrides } from "./Tag.types";
3
+ export { tagTheme } from "./Tag.theme";
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { TooltipProps } from "./Tooltip.types";
3
3
  declare const Tooltip: {
4
- ({ content, children, placement, delay, disabled, className, maxWidth, minWidth, showOnFocus, wrapText, id, theme: themeOverrides, "aria-label": ariaLabel, role, }: TooltipProps): React.JSX.Element;
4
+ ({ content, children, placement, delay, disabled, className, maxWidth, minWidth, showOnFocus, wrapText, id, theme: themeOverrides, "aria-label": ariaLabel, role, offset, darkMode, }: TooltipProps): React.JSX.Element;
5
5
  displayName: string;
6
6
  };
7
7
  export { Tooltip };
@@ -35,7 +35,7 @@ const useDarkMode = () => {
35
35
  }, []);
36
36
  return isDark;
37
37
  };
38
- const Tooltip = ({ content, children, placement = "top", delay = 300, disabled = false, className, maxWidth = "360px", minWidth = "fit-content", showOnFocus = true, wrapText = false, id, theme: themeOverrides, "aria-label": ariaLabel, role = "tooltip", }) => {
38
+ const Tooltip = ({ content, children, placement = "top", delay = 300, disabled = false, className, maxWidth = "360px", minWidth = "fit-content", showOnFocus = true, wrapText = false, id, theme: themeOverrides, "aria-label": ariaLabel, role = "tooltip", offset = 8, darkMode = false, }) => {
39
39
  const [isVisible, setIsVisible] = useState(false);
40
40
  const tooltipRef = useRef(null);
41
41
  const triggerRef = useRef(null);
@@ -53,7 +53,7 @@ const Tooltip = ({ content, children, placement = "top", delay = 300, disabled =
53
53
  triggerRef,
54
54
  isOpen: isVisible,
55
55
  placement: placement, // TooltipPlacement matches SelectPlacement subset
56
- offset: 8,
56
+ offset,
57
57
  autoWidth: true,
58
58
  });
59
59
  // Event handlers - simplified timer management
@@ -123,7 +123,7 @@ const Tooltip = ({ content, children, placement = "top", delay = 300, disabled =
123
123
  return (React__default.createElement("div", { className: "relative inline-block", ref: triggerRef, ...triggerHandlers, tabIndex: showOnFocus ? 0 : undefined, "aria-describedby": isVisible && id ? id : undefined },
124
124
  children,
125
125
  typeof document !== "undefined" &&
126
- createPortal(React__default.createElement("div", { className: isDarkMode ? "dark" : undefined }, tooltipContent), document.body)));
126
+ createPortal(React__default.createElement("div", { className: darkMode || isDarkMode ? "dark" : undefined }, tooltipContent), document.body)));
127
127
  };
128
128
  // Set display name for dev tools and Storybook
129
129
  Tooltip.displayName = "Tooltip";
@@ -1,6 +1,6 @@
1
1
  const tooltipTheme = {
2
2
  // Base style for the tooltip - using fixed positioning for portal rendering
3
- baseStyle: "fixed z-50 rounded-lg py-1 px-2 text-xs text-[var(--color-text-primary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 pointer-events-none bg-white/60 backdrop-blur-md outline outline-[var(--color-border)] shadow-lg border-t-[1px] border-white " +
3
+ baseStyle: "fixed z-[99] rounded-lg py-1 px-2 text-xs text-[var(--color-text-primary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 pointer-events-none bg-white/60 backdrop-blur-md outline outline-[var(--color-border)] shadow-lg border-t-[1px] border-white " +
4
4
  "dark:bg-neutral-800/80 dark:outline-[var(--color-border)]/80 dark:border-[var(--color-border)]",
5
5
  };
6
6
 
@@ -78,4 +78,21 @@ export interface TooltipProps {
78
78
  * @default "tooltip"
79
79
  */
80
80
  role?: 'tooltip' | 'dialog' | 'region';
81
+ /**
82
+ * Distance offset between the tooltip and trigger element (in pixels)
83
+ * Positive values increase the gap, negative values decrease it (can overlap)
84
+ * The offset is applied based on placement direction:
85
+ * - top/bottom: affects Y axis
86
+ * - left/right: affects X axis
87
+ * @default 8
88
+ */
89
+ offset?: number;
90
+ /**
91
+ * Force dark mode styling for the component. Use when placing the component
92
+ * on a dark background while the page is in light mode. This applies the
93
+ * 'dark' class to the container, making text, borders, and other elements
94
+ * use light colors for visibility.
95
+ * @default false
96
+ */
97
+ darkMode?: boolean;
81
98
  }