@carto/ps-react-ui 4.2.7 → 5.0.0-widgets.1

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 (248) hide show
  1. package/dist/cjs-D9ro6BXv.js +85 -0
  2. package/dist/cjs-D9ro6BXv.js.map +1 -0
  3. package/dist/components.js +760 -1398
  4. package/dist/components.js.map +1 -1
  5. package/dist/exports-Cr43OCul.js +51 -0
  6. package/dist/exports-Cr43OCul.js.map +1 -0
  7. package/dist/lasso-tool-CYn3ivf-.js +534 -0
  8. package/dist/lasso-tool-CYn3ivf-.js.map +1 -0
  9. package/dist/options-D9wflre6.js +49 -0
  10. package/dist/options-D9wflre6.js.map +1 -0
  11. package/dist/row-C_m1ovHv.js +35 -0
  12. package/dist/row-C_m1ovHv.js.map +1 -0
  13. package/dist/series-6xp-KQ0S.js +91 -0
  14. package/dist/series-6xp-KQ0S.js.map +1 -0
  15. package/dist/smart-tooltip-BEtBaIdz.js +39 -0
  16. package/dist/smart-tooltip-BEtBaIdz.js.map +1 -0
  17. package/dist/styles-dOu_pRNb.js +77 -0
  18. package/dist/styles-dOu_pRNb.js.map +1 -0
  19. package/dist/tooltip-BDnrRKrp.js +25 -0
  20. package/dist/tooltip-BDnrRKrp.js.map +1 -0
  21. package/dist/types/hooks/index.d.ts +2 -0
  22. package/dist/types/hooks/use-debounce.d.ts +19 -0
  23. package/dist/types/hooks/use-widget-ref.d.ts +17 -0
  24. package/dist/types/widgets/_shared/chart-config/config-factory.d.ts +38 -0
  25. package/dist/types/widgets/_shared/chart-config/csv-modifiers.d.ts +19 -0
  26. package/dist/types/widgets/_shared/chart-config/index.d.ts +7 -0
  27. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +34 -0
  28. package/dist/types/widgets/_shared/skeleton/index.d.ts +4 -0
  29. package/dist/types/widgets/_shared/skeleton/styles.d.ts +19 -0
  30. package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -0
  31. package/dist/types/widgets/actions/change-column/change-column.d.ts +16 -0
  32. package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +9 -0
  33. package/dist/types/widgets/actions/change-column/types.d.ts +19 -0
  34. package/dist/types/widgets/actions/download/download.d.ts +2 -0
  35. package/dist/types/widgets/actions/download/exports.d.ts +6 -0
  36. package/dist/types/widgets/actions/download/types.d.ts +21 -0
  37. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +2 -0
  38. package/dist/types/widgets/actions/fullscreen/styles.d.ts +16 -0
  39. package/dist/types/widgets/actions/fullscreen/types.d.ts +20 -0
  40. package/dist/types/widgets/actions/index.d.ts +18 -0
  41. package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +19 -0
  42. package/dist/types/widgets/actions/lock-selection/types.d.ts +38 -0
  43. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +18 -0
  44. package/dist/types/widgets/actions/relative-data/style.d.ts +8 -0
  45. package/dist/types/widgets/actions/relative-data/types.d.ts +27 -0
  46. package/dist/types/widgets/actions/relative-data/utils.d.ts +9 -0
  47. package/dist/types/widgets/actions/relative-data/utils.test.d.ts +1 -0
  48. package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +18 -0
  49. package/dist/types/widgets/actions/searcher/searcher.d.ts +21 -0
  50. package/dist/types/widgets/actions/searcher/types.d.ts +62 -0
  51. package/dist/types/widgets/actions/shared/styles.d.ts +11 -0
  52. package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -0
  53. package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +16 -0
  54. package/dist/types/widgets/actions/stack-toggle/types.d.ts +25 -0
  55. package/dist/types/widgets/actions/zoom-toggle/index.d.ts +2 -0
  56. package/dist/types/widgets/actions/zoom-toggle/style.d.ts +13 -0
  57. package/dist/types/widgets/actions/zoom-toggle/types.d.ts +41 -0
  58. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +18 -0
  59. package/dist/types/widgets/bar/config.d.ts +5 -0
  60. package/dist/types/widgets/bar/index.d.ts +3 -0
  61. package/dist/types/widgets/bar/skeleton.d.ts +1 -0
  62. package/dist/types/widgets/bar/style.d.ts +37 -0
  63. package/dist/types/widgets/bar/types.d.ts +9 -0
  64. package/dist/types/widgets/category/category-ui.d.ts +2 -0
  65. package/dist/types/widgets/category/components/category-bar.d.ts +7 -0
  66. package/dist/types/widgets/category/components/category-legend.d.ts +6 -0
  67. package/dist/types/widgets/category/components/category-row-multi.d.ts +11 -0
  68. package/dist/types/widgets/category/components/category-row-other.d.ts +6 -0
  69. package/dist/types/widgets/category/components/category-row-single.d.ts +11 -0
  70. package/dist/types/widgets/category/components/index.d.ts +10 -0
  71. package/dist/types/widgets/category/config.d.ts +15 -0
  72. package/dist/types/widgets/category/index.d.ts +6 -0
  73. package/dist/types/widgets/category/skeleton.d.ts +1 -0
  74. package/dist/types/widgets/category/style.d.ts +121 -0
  75. package/dist/types/widgets/category/types.d.ts +33 -0
  76. package/dist/types/widgets/echart/const.d.ts +1 -0
  77. package/dist/types/widgets/echart/echart-ui.d.ts +2 -0
  78. package/dist/types/widgets/echart/echart.d.ts +2 -0
  79. package/dist/types/widgets/echart/index.d.ts +5 -0
  80. package/dist/types/widgets/echart/options.d.ts +2 -0
  81. package/dist/types/widgets/echart/types.d.ts +32 -0
  82. package/dist/types/widgets/echart/utils.d.ts +80 -0
  83. package/dist/types/widgets/formula/components/item.d.ts +2 -0
  84. package/dist/types/widgets/formula/components/prefix.d.ts +2 -0
  85. package/dist/types/widgets/formula/components/row.d.ts +2 -0
  86. package/dist/types/widgets/formula/components/series.d.ts +2 -0
  87. package/dist/types/widgets/formula/components/suffix.d.ts +2 -0
  88. package/dist/types/widgets/formula/components/value.d.ts +2 -0
  89. package/dist/types/widgets/formula/config.d.ts +4 -0
  90. package/dist/types/widgets/formula/formula-ui.d.ts +2 -0
  91. package/dist/types/widgets/formula/index.d.ts +11 -0
  92. package/dist/types/widgets/formula/serializer.d.ts +16 -0
  93. package/dist/types/widgets/formula/skeleton.d.ts +1 -0
  94. package/dist/types/widgets/formula/style.d.ts +21 -0
  95. package/dist/types/widgets/formula/types.d.ts +42 -0
  96. package/dist/types/widgets/histogram/config.d.ts +5 -0
  97. package/dist/types/widgets/histogram/index.d.ts +3 -0
  98. package/dist/types/widgets/histogram/skeleton.d.ts +1 -0
  99. package/dist/types/widgets/histogram/style.d.ts +15 -0
  100. package/dist/types/widgets/histogram/types.d.ts +9 -0
  101. package/dist/types/widgets/index.d.ts +2 -1
  102. package/dist/types/widgets/markdown/config.d.ts +4 -0
  103. package/dist/types/widgets/markdown/index.d.ts +5 -0
  104. package/dist/types/widgets/markdown/markdown-ui.d.ts +2 -0
  105. package/dist/types/widgets/markdown/markdown.d.ts +2 -0
  106. package/dist/types/widgets/markdown/skeleton.d.ts +1 -0
  107. package/dist/types/widgets/markdown/style.d.ts +2 -0
  108. package/dist/types/widgets/markdown/types.d.ts +18 -0
  109. package/dist/types/widgets/note/index.d.ts +2 -0
  110. package/dist/types/widgets/note/note.d.ts +2 -0
  111. package/dist/types/widgets/note/style.d.ts +28 -0
  112. package/dist/types/widgets/note/types.d.ts +8 -0
  113. package/dist/types/widgets/pie/config.d.ts +5 -0
  114. package/dist/types/widgets/pie/index.d.ts +3 -0
  115. package/dist/types/widgets/pie/skeleton.d.ts +1 -0
  116. package/dist/types/widgets/pie/style.d.ts +15 -0
  117. package/dist/types/widgets/pie/types.d.ts +9 -0
  118. package/dist/types/widgets/range/components/range-item.d.ts +2 -0
  119. package/dist/types/widgets/range/config.d.ts +6 -0
  120. package/dist/types/widgets/range/index.d.ts +6 -0
  121. package/dist/types/widgets/range/range-ui.d.ts +2 -0
  122. package/dist/types/widgets/range/serializer.d.ts +16 -0
  123. package/dist/types/widgets/range/serializer.test.d.ts +1 -0
  124. package/dist/types/widgets/range/skeleton.d.ts +1 -0
  125. package/dist/types/widgets/range/style.d.ts +2 -0
  126. package/dist/types/widgets/range/types.d.ts +33 -0
  127. package/dist/types/widgets/root/index.d.ts +3 -0
  128. package/dist/types/widgets/root/root.d.ts +2 -0
  129. package/dist/types/widgets/root/style.d.ts +8 -0
  130. package/dist/types/widgets/root/types.d.ts +9 -0
  131. package/dist/types/widgets/root/utils.d.ts +1 -0
  132. package/dist/types/widgets/scatterplot/config.d.ts +5 -0
  133. package/dist/types/widgets/scatterplot/index.d.ts +3 -0
  134. package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -0
  135. package/dist/types/widgets/scatterplot/style.d.ts +24 -0
  136. package/dist/types/widgets/scatterplot/types.d.ts +9 -0
  137. package/dist/types/widgets/selection-summary/index.d.ts +2 -0
  138. package/dist/types/widgets/selection-summary/selection-summary.d.ts +2 -0
  139. package/dist/types/widgets/selection-summary/style.d.ts +9 -0
  140. package/dist/types/widgets/selection-summary/types.d.ts +13 -0
  141. package/dist/types/widgets/skeleton-loader/index.d.ts +2 -0
  142. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +2 -0
  143. package/dist/types/widgets/skeleton-loader/types.d.ts +7 -0
  144. package/dist/types/widgets/spread/components/max-value.d.ts +2 -0
  145. package/dist/types/widgets/spread/components/min-value.d.ts +2 -0
  146. package/dist/types/widgets/spread/components/separator.d.ts +2 -0
  147. package/dist/types/widgets/spread/config.d.ts +10 -0
  148. package/dist/types/widgets/spread/index.d.ts +9 -0
  149. package/dist/types/widgets/spread/skeleton.d.ts +1 -0
  150. package/dist/types/widgets/spread/spread-ui.d.ts +2 -0
  151. package/dist/types/widgets/spread/style.d.ts +21 -0
  152. package/dist/types/widgets/spread/types.d.ts +40 -0
  153. package/dist/types/widgets/stores/index.d.ts +2 -0
  154. package/dist/types/widgets/stores/types.d.ts +233 -0
  155. package/dist/types/widgets/stores/widget-store.d.ts +39 -0
  156. package/dist/types/widgets/stores/widget-store.test.d.ts +1 -0
  157. package/dist/types/widgets/subheader/index.d.ts +2 -0
  158. package/dist/types/widgets/subheader/style.d.ts +19 -0
  159. package/dist/types/widgets/subheader/subheader.d.ts +2 -0
  160. package/dist/types/widgets/subheader/types.d.ts +10 -0
  161. package/dist/types/widgets/table/components/cell-header.d.ts +5 -0
  162. package/dist/types/widgets/table/components/cell.d.ts +16 -0
  163. package/dist/types/widgets/table/components/index.d.ts +4 -0
  164. package/dist/types/widgets/table/components/pagination-actions.d.ts +5 -0
  165. package/dist/types/widgets/table/components/pagination.d.ts +5 -0
  166. package/dist/types/widgets/table/components/row.d.ts +5 -0
  167. package/dist/types/widgets/table/config.d.ts +11 -0
  168. package/dist/types/widgets/table/helpers.d.ts +38 -0
  169. package/dist/types/widgets/table/helpers.test.d.ts +1 -0
  170. package/dist/types/widgets/table/hooks/index.d.ts +6 -0
  171. package/dist/types/widgets/table/hooks/use-pagination.d.ts +45 -0
  172. package/dist/types/widgets/table/hooks/use-pagination.test.d.ts +1 -0
  173. package/dist/types/widgets/table/hooks/use-selection.d.ts +32 -0
  174. package/dist/types/widgets/table/hooks/use-selection.test.d.ts +1 -0
  175. package/dist/types/widgets/table/hooks/use-sort.d.ts +29 -0
  176. package/dist/types/widgets/table/hooks/use-sort.test.d.ts +1 -0
  177. package/dist/types/widgets/table/index.d.ts +13 -0
  178. package/dist/types/widgets/table/serializer.d.ts +16 -0
  179. package/dist/types/widgets/table/skeleton.d.ts +10 -0
  180. package/dist/types/widgets/table/style.d.ts +33 -0
  181. package/dist/types/widgets/table/table-ui.d.ts +32 -0
  182. package/dist/types/widgets/table/types.d.ts +201 -0
  183. package/dist/types/widgets/timeseries/config.d.ts +5 -0
  184. package/dist/types/widgets/timeseries/index.d.ts +3 -0
  185. package/dist/types/widgets/timeseries/skeleton.d.ts +1 -0
  186. package/dist/types/widgets/timeseries/style.d.ts +38 -0
  187. package/dist/types/widgets/timeseries/types.d.ts +9 -0
  188. package/dist/types/widgets/toolbar-actions/index.d.ts +2 -0
  189. package/dist/types/widgets/toolbar-actions/styles.d.ts +37 -0
  190. package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +8 -0
  191. package/dist/types/widgets/toolbar-actions/types.d.ts +45 -0
  192. package/dist/types/widgets/wrapper/components/actions.d.ts +2 -0
  193. package/dist/types/widgets/wrapper/components/options.d.ts +2 -0
  194. package/dist/types/widgets/wrapper/components/title.d.ts +6 -0
  195. package/dist/types/widgets/wrapper/index.d.ts +6 -0
  196. package/dist/types/widgets/wrapper/styles.d.ts +89 -0
  197. package/dist/types/widgets/wrapper/types.d.ts +37 -0
  198. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +2 -0
  199. package/dist/types/widgets/wrapper/wrapper.d.ts +2 -0
  200. package/dist/utils-Dv5Z47UQ.js +144 -0
  201. package/dist/utils-Dv5Z47UQ.js.map +1 -0
  202. package/dist/widget-store-DNyVElxd.js +190 -0
  203. package/dist/widget-store-DNyVElxd.js.map +1 -0
  204. package/dist/widgets/actions.js +828 -0
  205. package/dist/widgets/actions.js.map +1 -0
  206. package/dist/widgets/bar.js +192 -0
  207. package/dist/widgets/bar.js.map +1 -0
  208. package/dist/widgets/category.js +460 -0
  209. package/dist/widgets/category.js.map +1 -0
  210. package/dist/widgets/echart.js +123 -0
  211. package/dist/widgets/echart.js.map +1 -0
  212. package/dist/widgets/formula.js +124 -0
  213. package/dist/widgets/formula.js.map +1 -0
  214. package/dist/widgets/histogram.js +175 -0
  215. package/dist/widgets/histogram.js.map +1 -0
  216. package/dist/widgets/markdown.js +127 -0
  217. package/dist/widgets/markdown.js.map +1 -0
  218. package/dist/widgets/note.js +124 -0
  219. package/dist/widgets/note.js.map +1 -0
  220. package/dist/widgets/pie.js +216 -0
  221. package/dist/widgets/pie.js.map +1 -0
  222. package/dist/widgets/range.js +217 -0
  223. package/dist/widgets/range.js.map +1 -0
  224. package/dist/widgets/root.js +68 -0
  225. package/dist/widgets/root.js.map +1 -0
  226. package/dist/widgets/scatterplot.js +222 -0
  227. package/dist/widgets/scatterplot.js.map +1 -0
  228. package/dist/widgets/selection-summary.js +40 -0
  229. package/dist/widgets/selection-summary.js.map +1 -0
  230. package/dist/widgets/skeleton-loader.js +24 -0
  231. package/dist/widgets/skeleton-loader.js.map +1 -0
  232. package/dist/widgets/spread.js +166 -0
  233. package/dist/widgets/spread.js.map +1 -0
  234. package/dist/widgets/stores.js +5 -0
  235. package/dist/widgets/stores.js.map +1 -0
  236. package/dist/widgets/subheader.js +52 -0
  237. package/dist/widgets/subheader.js.map +1 -0
  238. package/dist/widgets/table.js +691 -0
  239. package/dist/widgets/table.js.map +1 -0
  240. package/dist/widgets/timeseries.js +174 -0
  241. package/dist/widgets/timeseries.js.map +1 -0
  242. package/dist/widgets/toolbar-actions.js +6106 -0
  243. package/dist/widgets/toolbar-actions.js.map +1 -0
  244. package/dist/widgets/wrapper.js +295 -0
  245. package/dist/widgets/wrapper.js.map +1 -0
  246. package/dist/widgets.js +4 -1
  247. package/dist/widgets.js.map +1 -1
  248. package/package.json +105 -3
@@ -0,0 +1,39 @@
1
+ import { WidgetStore } from './types';
2
+ /**
3
+ * Zustand store for managing widget state across the application.
4
+ *
5
+ * This store provides centralized state management for all widget UI components
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // Import the store
10
+ * import { useWidgetStore } from '@carto/ps-react-ui/widgets'
11
+ *
12
+ * // Use in a component
13
+ * function MyWidget() {
14
+ * const setWidget = useWidgetStore((state) => state.setWidget)
15
+ * const widget = useWidgetStore((state) => state.widgets['my-widget'])
16
+ *
17
+ * useEffect(() => {
18
+ * setWidget({
19
+ * id: 'my-widget',
20
+ * type: 'formula',
21
+ * title: 'Total Sales',
22
+ * isLoading: false,
23
+ * visible: true,
24
+ * data: { value: 1000, prefix: '$' }
25
+ * })
26
+ * }, [setWidget])
27
+ *
28
+ * return <div>{widget?.data?.value}</div>
29
+ * }
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * // Get widgets by type
35
+ * const getWidgetsByType = useWidgetStore((state) => state.getWidgetsByType)
36
+ * const formulaWidgets = getWidgetsByType('formula')
37
+ * ```
38
+ */
39
+ export declare const useWidgetStore: import('zustand').UseBoundStore<import('zustand').StoreApi<WidgetStore>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Subheader } from './subheader';
2
+ export type { SubheaderComponentProps } from './types';
@@ -0,0 +1,19 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ root: {
4
+ display: "flex";
5
+ alignItems: "center";
6
+ gap: ({ spacing }: Theme) => string;
7
+ minHeight: ({ spacing }: Theme) => string;
8
+ };
9
+ slotLeft: {
10
+ flexShrink: number;
11
+ };
12
+ slotRight: {
13
+ flexGrow: number;
14
+ display: "flex";
15
+ justifyContent: "flex-end";
16
+ alignItems: "center";
17
+ gap: ({ spacing }: Theme) => string;
18
+ };
19
+ };
@@ -0,0 +1,2 @@
1
+ import { SubheaderComponentProps } from './types';
2
+ export declare function Subheader({ slotLeft, slotRight, sx, }: SubheaderComponentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { SxProps, Theme } from '@mui/material';
2
+ import { ReactNode } from 'react';
3
+ export interface SubheaderComponentProps {
4
+ /** Content for the left slot */
5
+ slotLeft?: ReactNode;
6
+ /** Content for the right slot*/
7
+ slotRight?: ReactNode;
8
+ /** Custom styles */
9
+ sx?: SxProps<Theme>;
10
+ }
@@ -0,0 +1,5 @@
1
+ import { CellHeaderProps } from '../types';
2
+ /**
3
+ * Table cell header component with optional sorting and select-all checkbox
4
+ */
5
+ export declare function CellHeader({ column, sortState, onSort, isSelectAll, isAllSelected, isIndeterminate, onSelectAll, }: CellHeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { TableColumn } from '../types';
2
+ /**
3
+ * Props for Cell component
4
+ */
5
+ export interface CellProps {
6
+ /** Column definition */
7
+ column: TableColumn;
8
+ /** Cell value */
9
+ value: unknown;
10
+ }
11
+ /**
12
+ * Table cell component with automatic markdown support for string values
13
+ * Markdown is rendered when the raw value is a string and no formatter is defined.
14
+ * If a formatter is used, its output is rendered directly without markdown parsing.
15
+ */
16
+ export declare function Cell({ column, value }: CellProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { CellHeader } from './cell-header';
2
+ export { Row } from './row';
3
+ export { Pagination } from './pagination';
4
+ export { PaginationActions } from './pagination-actions';
@@ -0,0 +1,5 @@
1
+ import { PaginationActionsProps } from '../types';
2
+ /**
3
+ * Custom pagination actions with first/prev/next/last buttons
4
+ */
5
+ export declare function PaginationActions({ count, page, rowsPerPage, onPageChange, }: PaginationActionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { PaginationProps } from '../types';
2
+ /**
3
+ * Table pagination component
4
+ */
5
+ export declare function Pagination({ page, rowsPerPage, total, rowsPerPageOptions, onPageChange, onRowsPerPageChange, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { RowProps } from '../types';
2
+ /**
3
+ * Table row component with selection and hover support
4
+ */
5
+ export declare function Row({ row, columns, isSelected, selectable, onClick, onSelect, onMouseEnter, onMouseLeave, }: RowProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { ConfigProps } from '../root/types';
2
+ import { TableDownloadConfig, TableWidgetConfig, TableColumn } from './types';
3
+ /**
4
+ * Default table download configuration
5
+ * Supports PNG export (screenshot) and CSV export (data)
6
+ */
7
+ export declare function tableDownloadConfig({ refUI, }: ConfigProps): TableDownloadConfig;
8
+ /**
9
+ * Default table widget configuration
10
+ */
11
+ export declare function tableConfig(columns?: TableColumn[]): TableWidgetConfig;
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Get formatted cell value for display
4
+ * Handles primitives, arrays, objects, and custom formatters
5
+ *
6
+ * @param cellValue - Raw cell value
7
+ * @param formatter - Optional formatter function
8
+ * @returns Formatted value for display
9
+ */
10
+ export declare function getCellValue<T>(cellValue: T): ReactNode;
11
+ /**
12
+ * Compare two values for sorting
13
+ * Handles strings, numbers, and other types
14
+ *
15
+ * @param a - First value
16
+ * @param b - Second value
17
+ * @param direction - Sort direction
18
+ * @returns Comparison result (-1, 0, 1)
19
+ */
20
+ export declare function compareValues(a: unknown, b: unknown, direction: 'asc' | 'desc'): number;
21
+ /**
22
+ * Sort data array by column
23
+ *
24
+ * @param data - Data array to sort
25
+ * @param columnId - Column ID to sort by
26
+ * @param direction - Sort direction
27
+ * @returns Sorted data array (new array, does not mutate original)
28
+ */
29
+ export declare function sortData<T extends Record<string, unknown>>(data: T[], columnId: string, direction: 'asc' | 'desc'): T[];
30
+ /**
31
+ * Paginate data array
32
+ *
33
+ * @param data - Data array to paginate
34
+ * @param page - Current page (0-indexed)
35
+ * @param rowsPerPage - Number of rows per page
36
+ * @returns Paginated data slice
37
+ */
38
+ export declare function paginateData<T>(data: T[], page: number, rowsPerPage: number): T[];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export { usePagination } from './use-pagination';
2
+ export { useSort } from './use-sort';
3
+ export { useSelection } from './use-selection';
4
+ export type { UsePaginationOptions, UsePaginationResult, } from './use-pagination';
5
+ export type { UseSortOptions, UseSortResult } from './use-sort';
6
+ export type { UseSelectionOptions, UseSelectionResult } from './use-selection';
@@ -0,0 +1,45 @@
1
+ import { TableRow, PaginationMode } from '../types';
2
+ export interface UsePaginationOptions {
3
+ /** Pagination mode: local or remote */
4
+ mode: PaginationMode;
5
+ /** Initial page (0-indexed) */
6
+ initialPage?: number;
7
+ /** Initial rows per page */
8
+ initialRowsPerPage?: number;
9
+ /** Available rows per page options */
10
+ rowsPerPageOptions?: number[];
11
+ /** Total rows (for remote pagination) */
12
+ total?: number;
13
+ /** Callback when page changes (for remote pagination) */
14
+ onPageChange?: (page: number, rowsPerPage: number) => void;
15
+ }
16
+ export interface UsePaginationResult<T> {
17
+ /** Current page (0-indexed) */
18
+ page: number;
19
+ /** Rows per page */
20
+ rowsPerPage: number;
21
+ /** Total row count */
22
+ total: number;
23
+ /** Available rows per page options */
24
+ rowsPerPageOptions: number[];
25
+ /** Paginated data (for local mode) */
26
+ paginatedData: T[];
27
+ /** Set current page */
28
+ setPage: (page: number) => void;
29
+ /** Set rows per page */
30
+ setRowsPerPage: (rowsPerPage: number) => void;
31
+ /** Go to first page */
32
+ goToFirstPage: () => void;
33
+ /** Go to last page */
34
+ goToLastPage: () => void;
35
+ /** Go to next page */
36
+ goToNextPage: () => void;
37
+ /** Go to previous page */
38
+ goToPreviousPage: () => void;
39
+ }
40
+ /**
41
+ * Hook for managing table pagination
42
+ * Supports both local (client-side) and remote (server-side) pagination
43
+ * State is persisted in the widget store for the given widgetId
44
+ */
45
+ export declare function usePagination<T extends TableRow>(widgetId: string, data: T[], options: UsePaginationOptions): UsePaginationResult<T>;
@@ -0,0 +1,32 @@
1
+ import { TableRow } from '../types';
2
+ export interface UseSelectionOptions {
3
+ /** Initial selected IDs */
4
+ initialSelectedIds?: Set<string | number>;
5
+ /** Callback when selection changes */
6
+ onSelectionChange?: (selectedIds: Set<string | number>) => void;
7
+ }
8
+ export interface UseSelectionResult {
9
+ /** Set of selected row IDs */
10
+ selectedIds: Set<string | number>;
11
+ /** Check if a row is selected */
12
+ isSelected: (id: string | number) => boolean;
13
+ /** Check if all provided rows are selected */
14
+ isAllSelected: (rows: TableRow[]) => boolean;
15
+ /** Check if some but not all rows are selected (for indeterminate state) */
16
+ isIndeterminate: (rows: TableRow[]) => boolean;
17
+ /** Toggle selection of a single row */
18
+ toggleRow: (id: string | number) => void;
19
+ /** Toggle selection of all provided rows */
20
+ toggleAll: (rows: TableRow[]) => void;
21
+ /** Select specific rows */
22
+ selectRows: (ids: (string | number)[]) => void;
23
+ /** Deselect specific rows */
24
+ deselectRows: (ids: (string | number)[]) => void;
25
+ /** Clear all selections */
26
+ clearSelection: () => void;
27
+ }
28
+ /**
29
+ * Hook for managing table row selection
30
+ * Selection persists across pagination and is stored in the widget store
31
+ */
32
+ export declare function useSelection(widgetId: string, options?: UseSelectionOptions): UseSelectionResult;
@@ -0,0 +1,29 @@
1
+ import { TableRow, SortMode, SortDirection, SortState } from '../types';
2
+ export interface UseSortOptions {
3
+ /** Sort mode: local or remote */
4
+ mode: SortMode;
5
+ /** Initial sort column ID */
6
+ initialColumnId?: string | null;
7
+ /** Initial sort direction */
8
+ initialDirection?: SortDirection;
9
+ /** Callback when sort changes (for remote sorting) */
10
+ onSortChange?: (columnId: string, direction: SortDirection) => void;
11
+ }
12
+ export interface UseSortResult<T> {
13
+ /** Current sort state */
14
+ sortState: SortState;
15
+ /** Sorted data (for local mode) */
16
+ sortedData: T[];
17
+ /** Toggle sort on a column */
18
+ toggleSort: (columnId: string) => void;
19
+ /** Set sort state directly */
20
+ setSort: (columnId: string | null, direction: SortDirection) => void;
21
+ /** Clear sort */
22
+ clearSort: () => void;
23
+ }
24
+ /**
25
+ * Hook for managing table sorting
26
+ * Supports both local (client-side) and remote (server-side) sorting
27
+ * State is persisted in the widget store for the given widgetId
28
+ */
29
+ export declare function useSort<T extends TableRow>(widgetId: string, data: T[], options: UseSortOptions): UseSortResult<T>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export { CellHeader } from './components/cell-header';
2
+ export { Row } from './components/row';
3
+ export { Pagination } from './components/pagination';
4
+ export { PaginationActions } from './components/pagination-actions';
5
+ export { Table } from './table-ui';
6
+ export { usePagination, useSort, useSelection } from './hooks';
7
+ export { tableConfig, tableDownloadConfig } from './config';
8
+ export { TableSkeleton } from './skeleton';
9
+ export { sanitizeTableRow, sanitizeTableData } from './serializer';
10
+ export { getCellValue, compareValues, sortData, paginateData } from './helpers';
11
+ export { styles as tableStyles } from './style';
12
+ export type { TableUIProps, TableColumn, TableRow, TableWidgetData, TablePaginationState, SortDirection, SortState, PaginationMode, SortMode, TableWidgetConfig, TableWidgetState, TableDownloadConfig, TableProps, CellHeaderProps, RowProps, PaginationProps, PaginationActionsProps, } from './types';
13
+ export type { UsePaginationOptions, UsePaginationResult, UseSortOptions, UseSortResult, UseSelectionOptions, UseSelectionResult, } from './hooks';
@@ -0,0 +1,16 @@
1
+ import { TableRow, TableWidgetData } from './types';
2
+ /**
3
+ * Sanitizes a table row by ensuring all values are serializable.
4
+ * Converts ReactNode and function values to undefined.
5
+ *
6
+ * @param row - The table row to sanitize
7
+ * @returns A sanitized table row
8
+ */
9
+ export declare function sanitizeTableRow(row: TableRow): TableRow;
10
+ /**
11
+ * Sanitizes table widget data by ensuring all rows are serializable.
12
+ *
13
+ * @param data - The table data to sanitize
14
+ * @returns Sanitized table data
15
+ */
16
+ export declare function sanitizeTableData(data: TableWidgetData | undefined): TableWidgetData | undefined;
@@ -0,0 +1,10 @@
1
+ export interface TableSkeletonProps {
2
+ /** Number of columns to display */
3
+ columns?: number;
4
+ /** Number of rows to display */
5
+ rows?: number;
6
+ }
7
+ /**
8
+ * Table skeleton loader component
9
+ */
10
+ export declare function TableSkeleton({ columns, rows }: TableSkeletonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ container: {
4
+ width: string;
5
+ overflow: "auto";
6
+ };
7
+ table: {
8
+ minWidth: number;
9
+ };
10
+ headerCell: {
11
+ fontWeight: number;
12
+ backgroundColor: (theme: Theme) => string;
13
+ };
14
+ row: {
15
+ '&:last-child td, &:last-child th': {
16
+ border: number;
17
+ };
18
+ };
19
+ rowHover: {
20
+ '&:hover': {
21
+ backgroundColor: (theme: Theme) => string;
22
+ };
23
+ };
24
+ rowSelected: {
25
+ backgroundColor: (theme: Theme) => string;
26
+ '&:hover': {
27
+ backgroundColor: (theme: Theme) => string;
28
+ };
29
+ };
30
+ pagination: {
31
+ borderTop: (theme: Theme) => string;
32
+ };
33
+ };
@@ -0,0 +1,32 @@
1
+ import { TableCell, TableProps as MuiTableProps } from '@mui/material';
2
+ import { Ref } from 'react';
3
+ import { TableUIProps } from './types';
4
+ /**
5
+ * Props for the base Table component
6
+ */
7
+ export interface TableComponentProps extends MuiTableProps {
8
+ /** Table element ref */
9
+ ref?: Ref<HTMLTableElement>;
10
+ }
11
+ /**
12
+ * Base Table component with compound component pattern
13
+ * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination
14
+ */
15
+ declare function Table({ children, ref, stickyHeader, ...props }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
16
+ declare namespace Table {
17
+ var Head: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").TableHeadTypeMap<{}, "thead">>;
18
+ var CellHeader: typeof import(".").CellHeader;
19
+ var Body: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").TableBodyTypeMap<{}, "tbody">>;
20
+ var Row: typeof import(".").Row;
21
+ var Cell: typeof TableCell;
22
+ var Container: typeof TableContainer;
23
+ var Paper: import("@mui/material/OverridableComponent").OverridableComponent<import("@mui/material").PaperTypeMap<{}, "div">>;
24
+ var Pagination: typeof import(".").Pagination;
25
+ var PaginationActions: typeof import(".").PaginationActions;
26
+ }
27
+ export { Table };
28
+ /**
29
+ * TableContainer widget component
30
+ * Integrates with widget store and provides ref registration using custom hook
31
+ */
32
+ declare function TableContainer(props: TableUIProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,201 @@
1
+ import { ReactNode, Ref } from 'react';
2
+ import { TableProps as MuiTableProps } from '@mui/material';
3
+ import { BaseWidgetState, WidgetsStoreProps } from '../stores/types';
4
+ import { WrapperState } from '../wrapper/types';
5
+ import { DownloadItem } from '../actions/download/types';
6
+ /**
7
+ * Table UI component props
8
+ */
9
+ export interface TableUIProps {
10
+ id: WidgetsStoreProps['id'];
11
+ children?: ReactNode;
12
+ }
13
+ /**
14
+ * Table column definition
15
+ */
16
+ export interface TableColumn {
17
+ /** Unique column identifier, matches key in row data */
18
+ id: string;
19
+ /** Column header label */
20
+ label: string | ReactNode;
21
+ /** Text alignment */
22
+ align?: 'left' | 'center' | 'right';
23
+ /** Column width (number for px, string for CSS value) */
24
+ width?: number | string;
25
+ /** Enable sorting for this column */
26
+ sortable?: boolean;
27
+ /** Custom cell value formatter */
28
+ formatter?: (value: unknown) => ReactNode;
29
+ }
30
+ /**
31
+ * Table row data - extends Record for flexible data
32
+ */
33
+ export interface TableRow extends Record<string, unknown> {
34
+ /** Unique row identifier */
35
+ id: string | number;
36
+ }
37
+ /**
38
+ * Table widget data type - array of row records
39
+ */
40
+ export type TableWidgetData = TableRow[];
41
+ /**
42
+ * Pagination state
43
+ */
44
+ export interface TablePaginationState {
45
+ /** Current page (0-indexed) */
46
+ page: number;
47
+ /** Rows per page */
48
+ rowsPerPage: number;
49
+ /** Total number of rows (for remote pagination) */
50
+ total: number;
51
+ }
52
+ /**
53
+ * Sort direction
54
+ */
55
+ export type SortDirection = 'asc' | 'desc';
56
+ /**
57
+ * Sort state for single-column sorting
58
+ */
59
+ export interface SortState {
60
+ /** Column ID being sorted */
61
+ columnId: string | null;
62
+ /** Sort direction */
63
+ direction: SortDirection;
64
+ }
65
+ /**
66
+ * Pagination mode
67
+ */
68
+ export type PaginationMode = 'local' | 'remote';
69
+ /**
70
+ * Sort mode
71
+ */
72
+ export type SortMode = 'local' | 'remote';
73
+ /**
74
+ * Table widget configuration
75
+ */
76
+ export interface TableWidgetConfig {
77
+ /** Column definitions */
78
+ columns?: TableColumn[];
79
+ /** Enable row selection with checkboxes */
80
+ selectable?: boolean;
81
+ /** Pagination configuration */
82
+ pagination?: {
83
+ /** Pagination mode: local (client-side) or remote (server-side) */
84
+ mode: PaginationMode;
85
+ /** Available rows per page options */
86
+ rowsPerPageOptions?: number[];
87
+ /** Default rows per page */
88
+ defaultRowsPerPage?: number;
89
+ /** Total rows for remote pagination */
90
+ total?: number;
91
+ };
92
+ /** Sort configuration */
93
+ sort?: {
94
+ /** Sort mode: local (client-side) or remote (server-side) */
95
+ mode: SortMode;
96
+ /** Default sort column */
97
+ defaultColumnId?: string;
98
+ /** Default sort direction */
99
+ defaultDirection?: SortDirection;
100
+ };
101
+ /** Callback when a row is clicked */
102
+ onRowClick?: (row: TableRow) => void;
103
+ /** Callback when hovering over a row (null when leaving table) */
104
+ onRowHover?: (row: TableRow | null) => void;
105
+ /** Callback when selection changes */
106
+ onSelectionChange?: (selectedIds: Set<string | number>) => void;
107
+ /** Callback when page changes (for remote pagination) */
108
+ onPageChange?: (page: number, rowsPerPage: number) => void;
109
+ /** Callback when sort changes (for remote sorting) */
110
+ onSortChange?: (columnId: string, direction: SortDirection) => void;
111
+ }
112
+ /**
113
+ * Table widget state
114
+ */
115
+ export type TableWidgetState = BaseWidgetState<WrapperState<TableWidgetConfig> & {
116
+ data: TableWidgetData;
117
+ paginationState?: TablePaginationState;
118
+ sortState?: SortState;
119
+ selectedIds?: Set<string | number>;
120
+ }>;
121
+ /**
122
+ * Table download configuration
123
+ */
124
+ export type TableDownloadConfig = DownloadItem<TableWidgetData>[];
125
+ /**
126
+ * Props for the base Table component
127
+ */
128
+ export interface TableProps extends MuiTableProps {
129
+ /** Table element ref */
130
+ ref?: Ref<HTMLTableElement>;
131
+ }
132
+ /**
133
+ * Props for CellHeader component
134
+ */
135
+ export interface CellHeaderProps {
136
+ /** Column definition */
137
+ column: TableColumn;
138
+ /** Current sort state */
139
+ sortState?: SortState;
140
+ /** Callback when sort is triggered */
141
+ onSort?: (columnId: string) => void;
142
+ /** Whether this is a select-all checkbox header */
143
+ isSelectAll?: boolean;
144
+ /** Whether all rows are selected */
145
+ isAllSelected?: boolean;
146
+ /** Whether some rows are selected (indeterminate state) */
147
+ isIndeterminate?: boolean;
148
+ /** Callback for select-all toggle */
149
+ onSelectAll?: () => void;
150
+ }
151
+ /**
152
+ * Props for Row component
153
+ */
154
+ export interface RowProps {
155
+ /** Row data */
156
+ row: TableRow;
157
+ /** Column definitions */
158
+ columns: TableColumn[];
159
+ /** Whether row is selected */
160
+ isSelected?: boolean;
161
+ /** Whether selection is enabled */
162
+ selectable?: boolean;
163
+ /** Callback when row is clicked */
164
+ onClick?: (row: TableRow) => void;
165
+ /** Callback when row selection is toggled */
166
+ onSelect?: (row: TableRow) => void;
167
+ /** Callback when mouse enters row */
168
+ onMouseEnter?: (row: TableRow) => void;
169
+ /** Callback when mouse leaves row */
170
+ onMouseLeave?: () => void;
171
+ }
172
+ /**
173
+ * Props for Pagination component
174
+ */
175
+ export interface PaginationProps {
176
+ /** Current page (0-indexed) */
177
+ page: number;
178
+ /** Rows per page */
179
+ rowsPerPage: number;
180
+ /** Total row count */
181
+ total: number;
182
+ /** Available rows per page options */
183
+ rowsPerPageOptions?: number[];
184
+ /** Callback when page changes */
185
+ onPageChange: (page: number) => void;
186
+ /** Callback when rows per page changes */
187
+ onRowsPerPageChange: (rowsPerPage: number) => void;
188
+ }
189
+ /**
190
+ * Props for PaginationActions component
191
+ */
192
+ export interface PaginationActionsProps {
193
+ /** Current page (0-indexed) */
194
+ page: number;
195
+ /** Total row count */
196
+ count: number;
197
+ /** Rows per page */
198
+ rowsPerPage: number;
199
+ /** Callback when page changes */
200
+ onPageChange: (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => void;
201
+ }
@@ -0,0 +1,5 @@
1
+ import { TimeseriesConfig, TimeseriesWidgetConfig, TimeseriesWidgetData } from './types';
2
+ import { DownloadItem } from '../actions';
3
+ import { ConfigProps } from '../root/types';
4
+ export declare function timeseriesDownloadConfig({ refUI, }: ConfigProps): DownloadItem<TimeseriesWidgetData>[];
5
+ export declare function timeseriesConfig(props: TimeseriesConfig): TimeseriesWidgetConfig;
@@ -0,0 +1,3 @@
1
+ export type { TimeseriesWidgetData, TimeseriesWidgetState, TimeseriesWidgetConfig, TimeseriesConfig, } from './types';
2
+ export { timeseriesConfig, timeseriesDownloadConfig } from './config';
3
+ export { TimeseriesSkeleton } from './skeleton';
@@ -0,0 +1 @@
1
+ export declare function TimeseriesSkeleton(): import("react/jsx-runtime").JSX.Element;