@axinom/mosaic-ui 0.66.0-rc.8 → 0.66.0

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 (146) hide show
  1. package/dist/components/DynamicDataList/DynamicListHeader/DynamicListHeader.d.ts.map +1 -1
  2. package/dist/components/FieldSelection/FieldSelection.d.ts.map +1 -1
  3. package/dist/components/Filters/Filter/Filter.d.ts.map +1 -1
  4. package/dist/components/Filters/Filters.model.d.ts +5 -0
  5. package/dist/components/Filters/Filters.model.d.ts.map +1 -1
  6. package/dist/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.d.ts +2 -0
  7. package/dist/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.d.ts.map +1 -1
  8. package/dist/components/Filters/SelectionTypes/FreeTextFilter/FreeTextFilter.d.ts +2 -0
  9. package/dist/components/Filters/SelectionTypes/FreeTextFilter/FreeTextFilter.d.ts.map +1 -1
  10. package/dist/components/Filters/SelectionTypes/MultiOptionFilter/MultiOptionFilter.d.ts +2 -0
  11. package/dist/components/Filters/SelectionTypes/MultiOptionFilter/MultiOptionFilter.d.ts.map +1 -1
  12. package/dist/components/Filters/SelectionTypes/NumericTextFilter/NumericTextFilter.d.ts +2 -0
  13. package/dist/components/Filters/SelectionTypes/NumericTextFilter/NumericTextFilter.d.ts.map +1 -1
  14. package/dist/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.d.ts +2 -0
  15. package/dist/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.d.ts.map +1 -1
  16. package/dist/components/Filters/SelectionTypes/SearcheableOptionsFilter/SearcheableOptionsFilter.d.ts +2 -0
  17. package/dist/components/Filters/SelectionTypes/SearcheableOptionsFilter/SearcheableOptionsFilter.d.ts.map +1 -1
  18. package/dist/components/FormElements/Radio/Radio.d.ts.map +1 -1
  19. package/dist/components/FormElements/ToggleButton/ToggleButton.d.ts.map +1 -1
  20. package/dist/components/Hub/Tile/Tile.d.ts.map +1 -1
  21. package/dist/components/Icons/Icons.d.ts +4 -9
  22. package/dist/components/Icons/Icons.d.ts.map +1 -1
  23. package/dist/components/LandingPageTiles/TileLarge/TileLarge.d.ts.map +1 -1
  24. package/dist/components/LandingPageTiles/TileSmall/TileSmall.d.ts.map +1 -1
  25. package/dist/components/List/ListCheckBox/ListCheckBox.d.ts.map +1 -1
  26. package/dist/components/List/ListHeader/ColumnLabel/ColumnLabel.d.ts.map +1 -1
  27. package/dist/components/List/ListHeader/ListHeader.d.ts.map +1 -1
  28. package/dist/components/List/ListRow/ListRow.d.ts.map +1 -1
  29. package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts +15 -0
  30. package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts.map +1 -0
  31. package/dist/components/List/ListRow/ListRowCell/renderData.d.ts +9 -0
  32. package/dist/components/List/ListRow/ListRowCell/renderData.d.ts.map +1 -0
  33. package/dist/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.d.ts.map +1 -1
  34. package/dist/components/Loaders/ImageLoader/ImageLoader.d.ts.map +1 -1
  35. package/dist/components/PageHeader/PageHeaderAction/PageHeaderAction.d.ts.map +1 -1
  36. package/dist/components/Utils/Postgraphile/CreateConnectionRenderer.d.ts +1 -1
  37. package/dist/components/Utils/Postgraphile/CreateConnectionRenderer.d.ts.map +1 -1
  38. package/dist/components/VisualElements/ImgElement.d.ts +50 -0
  39. package/dist/components/VisualElements/ImgElement.d.ts.map +1 -0
  40. package/dist/components/VisualElements/SvgElement.d.ts +14 -0
  41. package/dist/components/VisualElements/SvgElement.d.ts.map +1 -0
  42. package/dist/components/VisualElements/index.d.ts +3 -0
  43. package/dist/components/VisualElements/index.d.ts.map +1 -0
  44. package/dist/components/index.d.ts +1 -0
  45. package/dist/components/index.d.ts.map +1 -1
  46. package/dist/helpers/idleCallbackHelpers.d.ts +42 -0
  47. package/dist/helpers/idleCallbackHelpers.d.ts.map +1 -0
  48. package/dist/helpers/index.d.ts +1 -0
  49. package/dist/helpers/index.d.ts.map +1 -1
  50. package/dist/hooks/useResize/ResizeIndicator.d.ts +8 -0
  51. package/dist/hooks/useResize/ResizeIndicator.d.ts.map +1 -0
  52. package/dist/hooks/useResize/useResize.d.ts +5 -2
  53. package/dist/hooks/useResize/useResize.d.ts.map +1 -1
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.es.js +4 -4
  57. package/dist/index.es.js.map +1 -1
  58. package/dist/index.js +4 -4
  59. package/dist/index.js.map +1 -1
  60. package/package.json +2 -2
  61. package/src/components/Accordion/Accordion.scss +1 -1
  62. package/src/components/Accordion/AccordionItem/AccordionItem.scss +2 -2
  63. package/src/components/Buttons/Button/Button.scss +5 -5
  64. package/src/components/Buttons/CompositeButton/CompositeButton.scss +7 -7
  65. package/src/components/Buttons/TextButton/TextButton.scss +6 -6
  66. package/src/components/ConfirmDialog/ConfirmDialog.scss +1 -1
  67. package/src/components/DateTime/DatePicker/DatePicker.scss +12 -12
  68. package/src/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.scss +7 -7
  69. package/src/components/DateTime/TimePicker/TimePicker.scss +1 -1
  70. package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.scss +2 -2
  71. package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.spec.tsx +2 -0
  72. package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.tsx +62 -50
  73. package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.scss +2 -2
  74. package/src/components/FieldSelection/FieldSelection.scss +4 -0
  75. package/src/components/FieldSelection/FieldSelection.tsx +1 -0
  76. package/src/components/Filters/Filter/Filter.scss +34 -15
  77. package/src/components/Filters/Filter/Filter.spec.tsx +1 -1
  78. package/src/components/Filters/Filter/Filter.tsx +46 -34
  79. package/src/components/Filters/Filters.model.ts +6 -0
  80. package/src/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.tsx +5 -0
  81. package/src/components/Filters/SelectionTypes/FreeTextFilter/FreeTextFilter.tsx +4 -0
  82. package/src/components/Filters/SelectionTypes/MultiOptionFilter/MultiOptionFilter.scss +1 -1
  83. package/src/components/Filters/SelectionTypes/MultiOptionFilter/MultiOptionFilter.tsx +9 -1
  84. package/src/components/Filters/SelectionTypes/NumericTextFilter/NumericTextFilter.tsx +5 -0
  85. package/src/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.scss +6 -10
  86. package/src/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.tsx +8 -0
  87. package/src/components/Filters/SelectionTypes/SearcheableOptionsFilter/SearcheableOptionsFilter.tsx +6 -1
  88. package/src/components/FormElements/Checkbox/Checkbox.scss +4 -4
  89. package/src/components/FormElements/CustomTags/CustomTags.scss +1 -1
  90. package/src/components/FormElements/FileUploadControl/FileUploadControl.scss +4 -4
  91. package/src/components/FormElements/Radio/Radio.scss +5 -5
  92. package/src/components/FormElements/Radio/Radio.tsx +3 -2
  93. package/src/components/FormElements/Select/Select.scss +11 -6
  94. package/src/components/FormElements/ToggleButton/ToggleButton.scss +7 -7
  95. package/src/components/FormElements/ToggleButton/ToggleButton.tsx +32 -27
  96. package/src/components/Hub/Hub.stories.tsx +3 -2
  97. package/src/components/Hub/Tile/Tile.spec.tsx +7 -2
  98. package/src/components/Hub/Tile/Tile.tsx +2 -1
  99. package/src/components/Icons/Icons.scss +1 -0
  100. package/src/components/Icons/Icons.spec.tsx +90 -41
  101. package/src/components/Icons/Icons.tsx +357 -765
  102. package/src/components/InfoTooltip/InfoTooltip.scss +1 -1
  103. package/src/components/InlineMenu/InlineMenu.scss +2 -2
  104. package/src/components/LandingPageTiles/LandingPageTiles.stories.tsx +3 -2
  105. package/src/components/LandingPageTiles/TileLarge/TileLarge.spec.tsx +5 -1
  106. package/src/components/LandingPageTiles/TileLarge/TileLarge.tsx +2 -1
  107. package/src/components/LandingPageTiles/TileSmall/TileSmall.spec.tsx +7 -2
  108. package/src/components/LandingPageTiles/TileSmall/TileSmall.tsx +2 -1
  109. package/src/components/List/List.scss +4 -4
  110. package/src/components/List/ListCheckBox/ListCheckBox.tsx +1 -0
  111. package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.spec.tsx +6 -6
  112. package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.tsx +10 -13
  113. package/src/components/List/ListHeader/ListHeader.scss +2 -3
  114. package/src/components/List/ListHeader/ListHeader.spec.tsx +2 -0
  115. package/src/components/List/ListHeader/ListHeader.tsx +57 -51
  116. package/src/components/List/ListRow/ListRow.scss +1 -28
  117. package/src/components/List/ListRow/ListRow.spec.tsx +10 -8
  118. package/src/components/List/ListRow/ListRow.tsx +20 -152
  119. package/src/components/List/ListRow/ListRowCell/ListRowCell.scss +26 -0
  120. package/src/components/List/ListRow/ListRowCell/ListRowCell.spec.tsx +491 -0
  121. package/src/components/List/ListRow/ListRowCell/ListRowCell.tsx +57 -0
  122. package/src/components/List/ListRow/ListRowCell/renderData.tsx +124 -0
  123. package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.spec.tsx +191 -80
  124. package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.tsx +63 -34
  125. package/src/components/Loaders/ImageLoader/ImageLoader.spec.tsx +13 -14
  126. package/src/components/Loaders/ImageLoader/ImageLoader.tsx +5 -3
  127. package/src/components/PageHeader/PageHeader.scss +1 -1
  128. package/src/components/PageHeader/PageHeaderAction/PageHeaderAction.tsx +13 -2
  129. package/src/components/Tabs/Tab/CustomTab.scss +4 -4
  130. package/src/components/Tabs/TabList/CustomTabList.scss +2 -2
  131. package/src/components/Utils/Postgraphile/CreateConnectionRenderer.spec.ts +48 -12
  132. package/src/components/Utils/Postgraphile/CreateConnectionRenderer.tsx +5 -4
  133. package/src/components/VisualElements/ImgElement.spec.tsx +92 -0
  134. package/src/components/VisualElements/ImgElement.tsx +72 -0
  135. package/src/components/VisualElements/SvgElement.spec.tsx +160 -0
  136. package/src/components/VisualElements/SvgElement.tsx +40 -0
  137. package/src/components/VisualElements/index.ts +7 -0
  138. package/src/components/index.ts +1 -0
  139. package/src/helpers/idleCallbackHelpers.ts +66 -0
  140. package/src/helpers/index.ts +5 -0
  141. package/src/hooks/useResize/ResizeIndicator.scss +7 -0
  142. package/src/hooks/useResize/ResizeIndicator.tsx +39 -0
  143. package/src/hooks/useResize/{useResize.ts → useResize.tsx} +38 -6
  144. package/src/index.ts +2 -0
  145. package/src/styles/branding.scss +89 -0
  146. package/src/styles/variables.scss +245 -187
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import classes from './ResizeIndicator.scss';
3
+
4
+ interface ResizeIndicatorProps {
5
+ resizePosition: number | undefined;
6
+ isResizing: boolean;
7
+ }
8
+
9
+ export const ResizeIndicator: React.FC<ResizeIndicatorProps> = ({
10
+ resizePosition,
11
+ isResizing,
12
+ }) => {
13
+ const containerRef = React.useRef<HTMLDivElement>(null);
14
+ const getResizeIndicatorBounds = (): React.CSSProperties => {
15
+ if (containerRef.current) {
16
+ const listWrapper = containerRef.current.parentElement;
17
+ if (listWrapper) {
18
+ const rect = listWrapper.getBoundingClientRect();
19
+ return {
20
+ left: `${resizePosition}px`,
21
+ top: `${rect.top}px`,
22
+ height: `${rect.height}px`,
23
+ };
24
+ }
25
+ }
26
+ return { left: `${resizePosition}px` };
27
+ };
28
+
29
+ return (
30
+ <div ref={containerRef}>
31
+ {isResizing && resizePosition !== undefined && (
32
+ <div
33
+ className={classes.resizeIndicator}
34
+ style={getResizeIndicatorBounds()}
35
+ />
36
+ )}
37
+ </div>
38
+ );
39
+ };
@@ -2,13 +2,15 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { DynamicListColumn } from '../../components';
3
3
  import { Column } from '../../components/List/List.model';
4
4
  import { Data } from '../../types';
5
+ import { ResizeIndicator } from './ResizeIndicator';
5
6
 
6
7
  /**
7
8
  * Handles the resizing logic of the columns
8
9
  * @param columns The list of column definitions
9
10
  * @param onColumnSizesChanged Callback that will be called when the column sizes change
10
- * @returns an object containing the refs to the columns (add these to all column header elements)
11
- * and the mouseDown handler (add this to the element that should be used to resize the column)
11
+ * @returns an object containing the refs to the columns (add these to all column header elements),
12
+ * the mouseDown handler (add this to the element that should be used to resize the column),
13
+ * and the ResizeIndicator element (render this to show the resize indicator)
12
14
  */
13
15
  export const useResize = <T extends Data>(
14
16
  columns: Column<T>[] | DynamicListColumn<T>[],
@@ -19,7 +21,10 @@ export const useResize = <T extends Data>(
19
21
  orgSize: string | undefined;
20
22
  }[];
21
23
  mouseDown: (index: number) => void;
24
+ ResizeIndicator: JSX.Element;
22
25
  } => {
26
+ const currentGridColumns = React.useRef<string | undefined>(undefined);
27
+
23
28
  const minCellWidth = 50;
24
29
 
25
30
  const cols = useMemo(
@@ -35,6 +40,9 @@ export const useResize = <T extends Data>(
35
40
  );
36
41
 
37
42
  const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);
43
+ const [resizePosition, setResizePosition] = useState<number | undefined>(
44
+ undefined,
45
+ );
38
46
  const resizeStart = React.useRef<
39
47
  { mouse: number; width: number } | undefined
40
48
  >(undefined);
@@ -59,6 +67,10 @@ export const useResize = <T extends Data>(
59
67
  return;
60
68
  }
61
69
 
70
+ // Calculate position (clientX gives viewport position for fixed positioning)
71
+
72
+ setResizePosition(e.clientX);
73
+
62
74
  const gridColumns = cols.map((col, i) => {
63
75
  if (!col.ref.current) {
64
76
  return col.orgSize;
@@ -68,15 +80,17 @@ export const useResize = <T extends Data>(
68
80
  const width = start.width + e.clientX - start.mouse;
69
81
  if (width >= minCellWidth) {
70
82
  return `${width}px`;
83
+ } else {
84
+ return `${minCellWidth}px`;
71
85
  }
72
86
  }
73
87
  return `${col.ref.current.offsetWidth}px`;
74
88
  });
75
89
 
76
- onColumnSizesChanged(gridColumns.join(' '));
90
+ currentGridColumns.current = gridColumns.join(' ');
77
91
  }
78
92
  },
79
- [activeIndex, cols, onColumnSizesChanged],
93
+ [activeIndex, cols],
80
94
  );
81
95
 
82
96
  const mouseDown = (index: number): void => {
@@ -89,10 +103,19 @@ export const useResize = <T extends Data>(
89
103
  }, [mouseMove]);
90
104
 
91
105
  const mouseUp = useCallback(() => {
106
+ // Apply the new column sizes only if a resize actually happened
107
+ if (resizeStart.current !== undefined) {
108
+ onColumnSizesChanged(
109
+ currentGridColumns.current || cols.map((col) => col.orgSize).join(' '),
110
+ );
111
+ }
112
+
92
113
  setActiveIndex(undefined);
114
+ setResizePosition(undefined);
93
115
  resizeStart.current = undefined;
116
+ currentGridColumns.current = undefined;
94
117
  removeListeners();
95
- }, [setActiveIndex, removeListeners]);
118
+ }, [removeListeners, onColumnSizesChanged, cols]);
96
119
 
97
120
  useEffect(() => {
98
121
  if (activeIndex !== undefined) {
@@ -105,5 +128,14 @@ export const useResize = <T extends Data>(
105
128
  };
106
129
  }, [activeIndex, mouseMove, mouseUp, removeListeners]);
107
130
 
108
- return { cols, mouseDown };
131
+ return {
132
+ cols,
133
+ mouseDown,
134
+ ResizeIndicator: (
135
+ <ResizeIndicator
136
+ resizePosition={resizePosition}
137
+ isResizing={activeIndex !== undefined}
138
+ />
139
+ ),
140
+ };
109
141
  };
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  /** Export all components to be included into the node package here */
2
+ import './styles/branding.scss';
3
+
2
4
  export * from './components';
3
5
  export * from './helpers';
4
6
  export * from './hooks';
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Branding System - CSS Custom Properties for Runtime Theming
3
+ *
4
+ * This file defines CSS custom properties (CSS variables) that enable runtime theming
5
+ * and branding customization throughout the component library.
6
+ *
7
+ * ## CSS Custom Properties Defined
8
+ *
9
+ * ### Primary Colors (Blues)
10
+ * - `--ax-primary`: Base primary color (#1478af)
11
+ * - `--ax-primary-dark`: Darker variant (auto-derived using HSL relative color syntax)
12
+ * - `--ax-primary-light`: Lighter variant (auto-derived using HSL relative color syntax)
13
+ *
14
+ * ### Neutral Colors (Grays)
15
+ * - `--ax-neutral`: Base neutral color (#b7b7b7)
16
+ * - `--ax-neutral-dark`: Darker variant (#707070)
17
+ * - `--ax-neutral-light`: Lighter variant (#dddddd)
18
+ * - `--ax-neutral-lighter`: Lightest variant (#eeeeee)
19
+ *
20
+ * ### Semantic Colors
21
+ * - `--ax-error`: Error/danger state color (#f06c55 - red)
22
+ * - `--ax-warning`: Warning state color (#ffc81a - yellow)
23
+ * - `--ax-success`: Success state color (#95c852 - green)
24
+ *
25
+ * ## Runtime Theming Usage
26
+ *
27
+ * The library uses CSS `@layer ax-defaults` to ensure default colors have the lowest
28
+ * priority in the cascade. This allows easy overriding without `!important`.
29
+ *
30
+ * ### Simple Override (Recommended)
31
+ *
32
+ * Override colors in your application's CSS/SCSS:
33
+ *
34
+ * :root {
35
+ * --ax-primary: #ff5733; // No !important needed
36
+ * --ax-neutral: #666666;
37
+ * }
38
+ *
39
+ * ### Example - Purple Theme
40
+ *
41
+ * :root {
42
+ * --ax-primary: #7c3aed;
43
+ * }
44
+ * // --ax-primary-dark and --ax-primary-light automatically adjust!
45
+ *
46
+ * ### Dynamic Runtime Override
47
+ *
48
+ * document.documentElement.style.setProperty('--ax-primary', '#7c3aed');
49
+ *
50
+ * ### Why This Works
51
+ *
52
+ * - Library defaults are in `@layer ax-defaults` (lowest priority)
53
+ * - Your overrides are in the implicit anonymous layer (higher priority)
54
+ * - No `!important` needed - cascade just works!
55
+ * - Load order doesn't matter - layers handle priority
56
+ *
57
+ * ## Browser Support
58
+ *
59
+ * - CSS Relative Color Syntax (`hsl(from var(...))`) requires:
60
+ * - Chrome 119+
61
+ * - Firefox 128+
62
+ * - Safari 16.4+
63
+ * - For older browsers, colors fallback to the default hardcoded values
64
+ */
65
+
66
+ /**
67
+ * Using @layer to ensure these defaults have the lowest priority in the cascade.
68
+ * This allows consuming applications to override colors without !important.
69
+ */
70
+ @layer ax-defaults {
71
+ :root {
72
+ /* Base Primary Color - override this to change the entire primary palette */
73
+ --ax-primary: #1478af;
74
+ --ax-primary-dark: hsl(from var(--ax-primary) h calc(s + 24) calc(l - 13));
75
+ --ax-primary-light: hsl(
76
+ from var(--ax-primary) calc(h - 4) calc(s + 3) calc(l + 14)
77
+ );
78
+
79
+ --ax-neutral: #b7b7b7;
80
+ --ax-neutral-dark: #707070;
81
+ --ax-neutral-light: #dddddd;
82
+ --ax-neutral-lighter: #eeeeee;
83
+
84
+ /* Semantic Colors */
85
+ --ax-error: #f06c55;
86
+ --ax-warning: #ffc81a;
87
+ --ax-success: #95c852;
88
+ }
89
+ }