@geomak/ui 5.9.0 → 5.10.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.
- package/dist/index.cjs +34 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +35 -11
- package/dist/index.d.ts +35 -11
- package/dist/index.js +34 -25
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -707,6 +707,8 @@ interface TooltipProps {
|
|
|
707
707
|
delayDuration?: number;
|
|
708
708
|
/** Offset from trigger in px (default 8) */
|
|
709
709
|
sideOffset?: number;
|
|
710
|
+
/** Extra classes merged onto the tooltip content bubble. */
|
|
711
|
+
className?: string;
|
|
710
712
|
}
|
|
711
713
|
/**
|
|
712
714
|
* Tooltip powered by Radix Tooltip.
|
|
@@ -723,7 +725,7 @@ interface TooltipProps {
|
|
|
723
725
|
* </Tooltip>
|
|
724
726
|
* </TooltipProvider>
|
|
725
727
|
*/
|
|
726
|
-
declare function Tooltip({ children, title, placement, delayDuration, sideOffset, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
728
|
+
declare function Tooltip({ children, title, placement, delayDuration, sideOffset, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
727
729
|
|
|
728
730
|
declare const TooltipProvider: React__default.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
729
731
|
|
|
@@ -779,6 +781,10 @@ interface TreeProps {
|
|
|
779
781
|
onNodeClick: (payload: TreeItemClickPayload) => void;
|
|
780
782
|
defaultExpandAll?: boolean;
|
|
781
783
|
defaultExpandedKeys?: string[];
|
|
784
|
+
/** Extra classes merged onto the tree root. */
|
|
785
|
+
className?: string;
|
|
786
|
+
/** Inline style on the tree root. */
|
|
787
|
+
style?: React__default.CSSProperties;
|
|
782
788
|
}
|
|
783
789
|
/** ─────────────────── public component ─────────────────── */
|
|
784
790
|
/**
|
|
@@ -795,7 +801,7 @@ interface TreeProps {
|
|
|
795
801
|
* defaultExpandAll
|
|
796
802
|
* />
|
|
797
803
|
*/
|
|
798
|
-
declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, }: TreeProps): react_jsx_runtime.JSX.Element;
|
|
804
|
+
declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, className, style, }: TreeProps): react_jsx_runtime.JSX.Element;
|
|
799
805
|
|
|
800
806
|
/** ─────────────────── types ─────────────────── */
|
|
801
807
|
type NotificationType = 'info' | 'success' | 'warning' | 'danger';
|
|
@@ -873,6 +879,8 @@ interface LoadingSpinnerProps {
|
|
|
873
879
|
* previous state. Ignored when `inline` is true.
|
|
874
880
|
*/
|
|
875
881
|
backdropOpacity?: number;
|
|
882
|
+
/** Extra classes merged onto the spinner root. */
|
|
883
|
+
className?: string;
|
|
876
884
|
}
|
|
877
885
|
/**
|
|
878
886
|
* Enterprise-grade loading indicator.
|
|
@@ -917,7 +925,7 @@ interface LoadingSpinnerProps {
|
|
|
917
925
|
* />
|
|
918
926
|
* ```
|
|
919
927
|
*/
|
|
920
|
-
declare function LoadingSpinner({ prompt, size, inline, spinnerColor, textColor, backdropOpacity, }: LoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
928
|
+
declare function LoadingSpinner({ prompt, size, inline, spinnerColor, textColor, backdropOpacity, className, }: LoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
921
929
|
|
|
922
930
|
interface FadingBaseProps {
|
|
923
931
|
className?: string;
|
|
@@ -1039,6 +1047,8 @@ interface ScalableContainerProps {
|
|
|
1039
1047
|
* Default `'top-right'` — matches the OS-window convention.
|
|
1040
1048
|
*/
|
|
1041
1049
|
togglePosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
1050
|
+
/** Extra classes merged onto the container root. */
|
|
1051
|
+
className?: string;
|
|
1042
1052
|
}
|
|
1043
1053
|
/**
|
|
1044
1054
|
* Container that smoothly expands to fill its parent on click and
|
|
@@ -1065,7 +1075,7 @@ interface ScalableContainerProps {
|
|
|
1065
1075
|
* </ScalableContainer>
|
|
1066
1076
|
* ```
|
|
1067
1077
|
*/
|
|
1068
|
-
declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
|
|
1078
|
+
declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, className, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
|
|
1069
1079
|
|
|
1070
1080
|
interface GridCardItem {
|
|
1071
1081
|
key: string | number;
|
|
@@ -1106,6 +1116,8 @@ interface OpaqueGridCardProps {
|
|
|
1106
1116
|
isRight?: boolean;
|
|
1107
1117
|
buttonText?: string;
|
|
1108
1118
|
onOpen?: (item: GridCardItem) => void;
|
|
1119
|
+
/** Extra classes merged onto the card root. */
|
|
1120
|
+
className?: string;
|
|
1109
1121
|
}
|
|
1110
1122
|
/**
|
|
1111
1123
|
* Opaque carousel variant of GridCard (left or right edge of the carousel).
|
|
@@ -1116,29 +1128,33 @@ interface OpaqueGridCardProps {
|
|
|
1116
1128
|
* @example
|
|
1117
1129
|
* <OpaqueGridCard item={sideItem} isRight onOpen={({ to }) => navigate(to!)} />
|
|
1118
1130
|
*/
|
|
1119
|
-
declare function OpaqueGridCard({ item, isRight, buttonText, onOpen, }: OpaqueGridCardProps): react_jsx_runtime.JSX.Element;
|
|
1131
|
+
declare function OpaqueGridCard({ item, isRight, buttonText, onOpen, className, }: OpaqueGridCardProps): react_jsx_runtime.JSX.Element;
|
|
1120
1132
|
|
|
1121
1133
|
interface CatalogGridProps {
|
|
1122
1134
|
items: GridCardItem[];
|
|
1123
1135
|
buttonText?: string;
|
|
1124
1136
|
onOpen?: (item: GridCardItem) => void;
|
|
1137
|
+
/** Extra classes merged onto the grid root. */
|
|
1138
|
+
className?: string;
|
|
1125
1139
|
}
|
|
1126
1140
|
/**
|
|
1127
1141
|
* Wrapping flex grid of `GridCard` tiles.
|
|
1128
1142
|
*/
|
|
1129
|
-
declare function CatalogGrid({ items, buttonText, onOpen }: CatalogGridProps): react_jsx_runtime.JSX.Element;
|
|
1143
|
+
declare function CatalogGrid({ items, buttonText, onOpen, className }: CatalogGridProps): react_jsx_runtime.JSX.Element;
|
|
1130
1144
|
|
|
1131
1145
|
interface CatalogCarouselProps {
|
|
1132
1146
|
items: GridCardItem[];
|
|
1133
1147
|
buttonText?: string;
|
|
1134
1148
|
onOpen?: (item: GridCardItem) => void;
|
|
1149
|
+
/** Extra classes merged onto the carousel root. */
|
|
1150
|
+
className?: string;
|
|
1135
1151
|
}
|
|
1136
1152
|
/**
|
|
1137
1153
|
* Three-card carousel (previous → active (scaled) → next).
|
|
1138
1154
|
*
|
|
1139
1155
|
* Decoupled from ThemeContext — uses CSS `dark:` classes.
|
|
1140
1156
|
*/
|
|
1141
|
-
declare function CatalogCarousel({ items, buttonText, onOpen }: CatalogCarouselProps): react_jsx_runtime.JSX.Element;
|
|
1157
|
+
declare function CatalogCarousel({ items, buttonText, onOpen, className }: CatalogCarouselProps): react_jsx_runtime.JSX.Element;
|
|
1142
1158
|
|
|
1143
1159
|
interface CatalogProps {
|
|
1144
1160
|
/** 'grid' | 'carousel' */
|
|
@@ -1146,6 +1162,8 @@ interface CatalogProps {
|
|
|
1146
1162
|
items?: GridCardItem[];
|
|
1147
1163
|
buttonText?: string;
|
|
1148
1164
|
onOpen?: (item: GridCardItem) => void;
|
|
1165
|
+
/** Extra classes merged onto the catalog root. */
|
|
1166
|
+
className?: string;
|
|
1149
1167
|
}
|
|
1150
1168
|
/**
|
|
1151
1169
|
* Switches between grid and carousel layouts for a list of application tiles.
|
|
@@ -1153,7 +1171,7 @@ interface CatalogProps {
|
|
|
1153
1171
|
* @example
|
|
1154
1172
|
* <Catalog display="carousel" items={apps} onOpen={({ to }) => navigate(to!)} />
|
|
1155
1173
|
*/
|
|
1156
|
-
declare function Catalog({ display, items, buttonText, onOpen }: CatalogProps): react_jsx_runtime.JSX.Element;
|
|
1174
|
+
declare function Catalog({ display, items, buttonText, onOpen, className }: CatalogProps): react_jsx_runtime.JSX.Element;
|
|
1157
1175
|
|
|
1158
1176
|
/**
|
|
1159
1177
|
* A single action in the context menu.
|
|
@@ -1184,6 +1202,8 @@ interface ContextMenuProps {
|
|
|
1184
1202
|
* component / div / image — anything you can right-click on.
|
|
1185
1203
|
*/
|
|
1186
1204
|
children: React__default.ReactNode;
|
|
1205
|
+
/** Extra classes merged onto the menu content panel. */
|
|
1206
|
+
className?: string;
|
|
1187
1207
|
}
|
|
1188
1208
|
/**
|
|
1189
1209
|
* Right-click context menu, built on `@radix-ui/react-context-menu`.
|
|
@@ -1222,7 +1242,7 @@ interface ContextMenuProps {
|
|
|
1222
1242
|
* </ContextMenu>
|
|
1223
1243
|
* ```
|
|
1224
1244
|
*/
|
|
1225
|
-
declare function ContextMenu({ items, children }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
1245
|
+
declare function ContextMenu({ items, children, className }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
1226
1246
|
/** @deprecated The Radix rewrite positions the menu automatically — no coordinates needed. */
|
|
1227
1247
|
interface ContextMenuPosition {
|
|
1228
1248
|
x: number;
|
|
@@ -1449,6 +1469,8 @@ interface ThemeSwitchProps {
|
|
|
1449
1469
|
}) => void;
|
|
1450
1470
|
/** Optional accessible label (defaults to "Toggle dark mode") */
|
|
1451
1471
|
label?: string;
|
|
1472
|
+
/** Extra classes merged onto the root label. */
|
|
1473
|
+
className?: string;
|
|
1452
1474
|
}
|
|
1453
1475
|
/**
|
|
1454
1476
|
* Theme (dark-mode) toggle switch powered by Radix Switch.
|
|
@@ -1460,7 +1482,7 @@ interface ThemeSwitchProps {
|
|
|
1460
1482
|
* @example
|
|
1461
1483
|
* <ThemeSwitch checked={isDark} onChange={({ target }) => setDark(target.checked)} />
|
|
1462
1484
|
*/
|
|
1463
|
-
declare function ThemeSwitch({ checked, onChange, label }: ThemeSwitchProps): react_jsx_runtime.JSX.Element;
|
|
1485
|
+
declare function ThemeSwitch({ checked, onChange, label, className }: ThemeSwitchProps): react_jsx_runtime.JSX.Element;
|
|
1464
1486
|
|
|
1465
1487
|
interface TopBarProps {
|
|
1466
1488
|
/** Brand area — logo, wordmark, or app name. Rendered on the leading edge. */
|
|
@@ -2772,6 +2794,8 @@ interface DatePickerProps {
|
|
|
2772
2794
|
clearable?: boolean;
|
|
2773
2795
|
/** Size preset. Default `'md'`. */
|
|
2774
2796
|
size?: FieldSize;
|
|
2797
|
+
/** Extra classes merged onto the component root. */
|
|
2798
|
+
className?: string;
|
|
2775
2799
|
}
|
|
2776
2800
|
type TemporalPickerProps = DatePickerProps;
|
|
2777
2801
|
/**
|
|
@@ -2809,7 +2833,7 @@ type TemporalPickerProps = DatePickerProps;
|
|
|
2809
2833
|
* />
|
|
2810
2834
|
* ```
|
|
2811
2835
|
*/
|
|
2812
|
-
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, helperText, required, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, size, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2836
|
+
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, helperText, required, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, size, className, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2813
2837
|
|
|
2814
2838
|
interface TextAreaProps {
|
|
2815
2839
|
/** Controlled value. */
|
package/dist/index.d.ts
CHANGED
|
@@ -707,6 +707,8 @@ interface TooltipProps {
|
|
|
707
707
|
delayDuration?: number;
|
|
708
708
|
/** Offset from trigger in px (default 8) */
|
|
709
709
|
sideOffset?: number;
|
|
710
|
+
/** Extra classes merged onto the tooltip content bubble. */
|
|
711
|
+
className?: string;
|
|
710
712
|
}
|
|
711
713
|
/**
|
|
712
714
|
* Tooltip powered by Radix Tooltip.
|
|
@@ -723,7 +725,7 @@ interface TooltipProps {
|
|
|
723
725
|
* </Tooltip>
|
|
724
726
|
* </TooltipProvider>
|
|
725
727
|
*/
|
|
726
|
-
declare function Tooltip({ children, title, placement, delayDuration, sideOffset, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
728
|
+
declare function Tooltip({ children, title, placement, delayDuration, sideOffset, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
727
729
|
|
|
728
730
|
declare const TooltipProvider: React__default.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
729
731
|
|
|
@@ -779,6 +781,10 @@ interface TreeProps {
|
|
|
779
781
|
onNodeClick: (payload: TreeItemClickPayload) => void;
|
|
780
782
|
defaultExpandAll?: boolean;
|
|
781
783
|
defaultExpandedKeys?: string[];
|
|
784
|
+
/** Extra classes merged onto the tree root. */
|
|
785
|
+
className?: string;
|
|
786
|
+
/** Inline style on the tree root. */
|
|
787
|
+
style?: React__default.CSSProperties;
|
|
782
788
|
}
|
|
783
789
|
/** ─────────────────── public component ─────────────────── */
|
|
784
790
|
/**
|
|
@@ -795,7 +801,7 @@ interface TreeProps {
|
|
|
795
801
|
* defaultExpandAll
|
|
796
802
|
* />
|
|
797
803
|
*/
|
|
798
|
-
declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, }: TreeProps): react_jsx_runtime.JSX.Element;
|
|
804
|
+
declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, className, style, }: TreeProps): react_jsx_runtime.JSX.Element;
|
|
799
805
|
|
|
800
806
|
/** ─────────────────── types ─────────────────── */
|
|
801
807
|
type NotificationType = 'info' | 'success' | 'warning' | 'danger';
|
|
@@ -873,6 +879,8 @@ interface LoadingSpinnerProps {
|
|
|
873
879
|
* previous state. Ignored when `inline` is true.
|
|
874
880
|
*/
|
|
875
881
|
backdropOpacity?: number;
|
|
882
|
+
/** Extra classes merged onto the spinner root. */
|
|
883
|
+
className?: string;
|
|
876
884
|
}
|
|
877
885
|
/**
|
|
878
886
|
* Enterprise-grade loading indicator.
|
|
@@ -917,7 +925,7 @@ interface LoadingSpinnerProps {
|
|
|
917
925
|
* />
|
|
918
926
|
* ```
|
|
919
927
|
*/
|
|
920
|
-
declare function LoadingSpinner({ prompt, size, inline, spinnerColor, textColor, backdropOpacity, }: LoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
928
|
+
declare function LoadingSpinner({ prompt, size, inline, spinnerColor, textColor, backdropOpacity, className, }: LoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
921
929
|
|
|
922
930
|
interface FadingBaseProps {
|
|
923
931
|
className?: string;
|
|
@@ -1039,6 +1047,8 @@ interface ScalableContainerProps {
|
|
|
1039
1047
|
* Default `'top-right'` — matches the OS-window convention.
|
|
1040
1048
|
*/
|
|
1041
1049
|
togglePosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
1050
|
+
/** Extra classes merged onto the container root. */
|
|
1051
|
+
className?: string;
|
|
1042
1052
|
}
|
|
1043
1053
|
/**
|
|
1044
1054
|
* Container that smoothly expands to fill its parent on click and
|
|
@@ -1065,7 +1075,7 @@ interface ScalableContainerProps {
|
|
|
1065
1075
|
* </ScalableContainer>
|
|
1066
1076
|
* ```
|
|
1067
1077
|
*/
|
|
1068
|
-
declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
|
|
1078
|
+
declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, className, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
|
|
1069
1079
|
|
|
1070
1080
|
interface GridCardItem {
|
|
1071
1081
|
key: string | number;
|
|
@@ -1106,6 +1116,8 @@ interface OpaqueGridCardProps {
|
|
|
1106
1116
|
isRight?: boolean;
|
|
1107
1117
|
buttonText?: string;
|
|
1108
1118
|
onOpen?: (item: GridCardItem) => void;
|
|
1119
|
+
/** Extra classes merged onto the card root. */
|
|
1120
|
+
className?: string;
|
|
1109
1121
|
}
|
|
1110
1122
|
/**
|
|
1111
1123
|
* Opaque carousel variant of GridCard (left or right edge of the carousel).
|
|
@@ -1116,29 +1128,33 @@ interface OpaqueGridCardProps {
|
|
|
1116
1128
|
* @example
|
|
1117
1129
|
* <OpaqueGridCard item={sideItem} isRight onOpen={({ to }) => navigate(to!)} />
|
|
1118
1130
|
*/
|
|
1119
|
-
declare function OpaqueGridCard({ item, isRight, buttonText, onOpen, }: OpaqueGridCardProps): react_jsx_runtime.JSX.Element;
|
|
1131
|
+
declare function OpaqueGridCard({ item, isRight, buttonText, onOpen, className, }: OpaqueGridCardProps): react_jsx_runtime.JSX.Element;
|
|
1120
1132
|
|
|
1121
1133
|
interface CatalogGridProps {
|
|
1122
1134
|
items: GridCardItem[];
|
|
1123
1135
|
buttonText?: string;
|
|
1124
1136
|
onOpen?: (item: GridCardItem) => void;
|
|
1137
|
+
/** Extra classes merged onto the grid root. */
|
|
1138
|
+
className?: string;
|
|
1125
1139
|
}
|
|
1126
1140
|
/**
|
|
1127
1141
|
* Wrapping flex grid of `GridCard` tiles.
|
|
1128
1142
|
*/
|
|
1129
|
-
declare function CatalogGrid({ items, buttonText, onOpen }: CatalogGridProps): react_jsx_runtime.JSX.Element;
|
|
1143
|
+
declare function CatalogGrid({ items, buttonText, onOpen, className }: CatalogGridProps): react_jsx_runtime.JSX.Element;
|
|
1130
1144
|
|
|
1131
1145
|
interface CatalogCarouselProps {
|
|
1132
1146
|
items: GridCardItem[];
|
|
1133
1147
|
buttonText?: string;
|
|
1134
1148
|
onOpen?: (item: GridCardItem) => void;
|
|
1149
|
+
/** Extra classes merged onto the carousel root. */
|
|
1150
|
+
className?: string;
|
|
1135
1151
|
}
|
|
1136
1152
|
/**
|
|
1137
1153
|
* Three-card carousel (previous → active (scaled) → next).
|
|
1138
1154
|
*
|
|
1139
1155
|
* Decoupled from ThemeContext — uses CSS `dark:` classes.
|
|
1140
1156
|
*/
|
|
1141
|
-
declare function CatalogCarousel({ items, buttonText, onOpen }: CatalogCarouselProps): react_jsx_runtime.JSX.Element;
|
|
1157
|
+
declare function CatalogCarousel({ items, buttonText, onOpen, className }: CatalogCarouselProps): react_jsx_runtime.JSX.Element;
|
|
1142
1158
|
|
|
1143
1159
|
interface CatalogProps {
|
|
1144
1160
|
/** 'grid' | 'carousel' */
|
|
@@ -1146,6 +1162,8 @@ interface CatalogProps {
|
|
|
1146
1162
|
items?: GridCardItem[];
|
|
1147
1163
|
buttonText?: string;
|
|
1148
1164
|
onOpen?: (item: GridCardItem) => void;
|
|
1165
|
+
/** Extra classes merged onto the catalog root. */
|
|
1166
|
+
className?: string;
|
|
1149
1167
|
}
|
|
1150
1168
|
/**
|
|
1151
1169
|
* Switches between grid and carousel layouts for a list of application tiles.
|
|
@@ -1153,7 +1171,7 @@ interface CatalogProps {
|
|
|
1153
1171
|
* @example
|
|
1154
1172
|
* <Catalog display="carousel" items={apps} onOpen={({ to }) => navigate(to!)} />
|
|
1155
1173
|
*/
|
|
1156
|
-
declare function Catalog({ display, items, buttonText, onOpen }: CatalogProps): react_jsx_runtime.JSX.Element;
|
|
1174
|
+
declare function Catalog({ display, items, buttonText, onOpen, className }: CatalogProps): react_jsx_runtime.JSX.Element;
|
|
1157
1175
|
|
|
1158
1176
|
/**
|
|
1159
1177
|
* A single action in the context menu.
|
|
@@ -1184,6 +1202,8 @@ interface ContextMenuProps {
|
|
|
1184
1202
|
* component / div / image — anything you can right-click on.
|
|
1185
1203
|
*/
|
|
1186
1204
|
children: React__default.ReactNode;
|
|
1205
|
+
/** Extra classes merged onto the menu content panel. */
|
|
1206
|
+
className?: string;
|
|
1187
1207
|
}
|
|
1188
1208
|
/**
|
|
1189
1209
|
* Right-click context menu, built on `@radix-ui/react-context-menu`.
|
|
@@ -1222,7 +1242,7 @@ interface ContextMenuProps {
|
|
|
1222
1242
|
* </ContextMenu>
|
|
1223
1243
|
* ```
|
|
1224
1244
|
*/
|
|
1225
|
-
declare function ContextMenu({ items, children }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
1245
|
+
declare function ContextMenu({ items, children, className }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
1226
1246
|
/** @deprecated The Radix rewrite positions the menu automatically — no coordinates needed. */
|
|
1227
1247
|
interface ContextMenuPosition {
|
|
1228
1248
|
x: number;
|
|
@@ -1449,6 +1469,8 @@ interface ThemeSwitchProps {
|
|
|
1449
1469
|
}) => void;
|
|
1450
1470
|
/** Optional accessible label (defaults to "Toggle dark mode") */
|
|
1451
1471
|
label?: string;
|
|
1472
|
+
/** Extra classes merged onto the root label. */
|
|
1473
|
+
className?: string;
|
|
1452
1474
|
}
|
|
1453
1475
|
/**
|
|
1454
1476
|
* Theme (dark-mode) toggle switch powered by Radix Switch.
|
|
@@ -1460,7 +1482,7 @@ interface ThemeSwitchProps {
|
|
|
1460
1482
|
* @example
|
|
1461
1483
|
* <ThemeSwitch checked={isDark} onChange={({ target }) => setDark(target.checked)} />
|
|
1462
1484
|
*/
|
|
1463
|
-
declare function ThemeSwitch({ checked, onChange, label }: ThemeSwitchProps): react_jsx_runtime.JSX.Element;
|
|
1485
|
+
declare function ThemeSwitch({ checked, onChange, label, className }: ThemeSwitchProps): react_jsx_runtime.JSX.Element;
|
|
1464
1486
|
|
|
1465
1487
|
interface TopBarProps {
|
|
1466
1488
|
/** Brand area — logo, wordmark, or app name. Rendered on the leading edge. */
|
|
@@ -2772,6 +2794,8 @@ interface DatePickerProps {
|
|
|
2772
2794
|
clearable?: boolean;
|
|
2773
2795
|
/** Size preset. Default `'md'`. */
|
|
2774
2796
|
size?: FieldSize;
|
|
2797
|
+
/** Extra classes merged onto the component root. */
|
|
2798
|
+
className?: string;
|
|
2775
2799
|
}
|
|
2776
2800
|
type TemporalPickerProps = DatePickerProps;
|
|
2777
2801
|
/**
|
|
@@ -2809,7 +2833,7 @@ type TemporalPickerProps = DatePickerProps;
|
|
|
2809
2833
|
* />
|
|
2810
2834
|
* ```
|
|
2811
2835
|
*/
|
|
2812
|
-
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, helperText, required, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, size, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2836
|
+
declare function DatePicker({ value, onChange, label, placeholder, htmlFor, name: _name, layout, helperText, required, disabled, errorMessage, min, max, style, format, weekStartsOn, clearable, size, className, }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
2813
2837
|
|
|
2814
2838
|
interface TextAreaProps {
|
|
2815
2839
|
/** Controlled value. */
|
package/dist/index.js
CHANGED
|
@@ -883,7 +883,8 @@ function Tooltip({
|
|
|
883
883
|
title,
|
|
884
884
|
placement = "top",
|
|
885
885
|
delayDuration = 300,
|
|
886
|
-
sideOffset = 8
|
|
886
|
+
sideOffset = 8,
|
|
887
|
+
className = ""
|
|
887
888
|
}) {
|
|
888
889
|
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { delayDuration, children: /* @__PURE__ */ jsxs(TooltipPrimitive.Root, { children: [
|
|
889
890
|
/* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "inline-flex", children }) }),
|
|
@@ -903,8 +904,9 @@ function Tooltip({
|
|
|
903
904
|
// Out animation (always the same — just fade)
|
|
904
905
|
"data-[state=closed]:animate-tooltip-out",
|
|
905
906
|
// In animation — direction-aware
|
|
906
|
-
ANIMATION[placement]
|
|
907
|
-
|
|
907
|
+
ANIMATION[placement],
|
|
908
|
+
className
|
|
909
|
+
].filter(Boolean).join(" "),
|
|
908
910
|
children: [
|
|
909
911
|
title,
|
|
910
912
|
/* @__PURE__ */ jsx(
|
|
@@ -1137,9 +1139,11 @@ function Tree({
|
|
|
1137
1139
|
nodes,
|
|
1138
1140
|
onNodeClick,
|
|
1139
1141
|
defaultExpandAll = false,
|
|
1140
|
-
defaultExpandedKeys = []
|
|
1142
|
+
defaultExpandedKeys = [],
|
|
1143
|
+
className = "",
|
|
1144
|
+
style
|
|
1141
1145
|
}) {
|
|
1142
|
-
return /* @__PURE__ */ jsx("div", { className:
|
|
1146
|
+
return /* @__PURE__ */ jsx("div", { className: `p-1 w-full ${className}`.trim(), style, children: nodes.map((item) => /* @__PURE__ */ jsx(
|
|
1143
1147
|
TreeNodeItem,
|
|
1144
1148
|
{
|
|
1145
1149
|
item,
|
|
@@ -1406,7 +1410,8 @@ function LoadingSpinner({
|
|
|
1406
1410
|
inline = false,
|
|
1407
1411
|
spinnerColor,
|
|
1408
1412
|
textColor,
|
|
1409
|
-
backdropOpacity = 0.8
|
|
1413
|
+
backdropOpacity = 0.8,
|
|
1414
|
+
className = ""
|
|
1410
1415
|
}) {
|
|
1411
1416
|
const reduced = useReducedMotion();
|
|
1412
1417
|
const letters = prompt ? Array.from(prompt) : [];
|
|
@@ -1441,7 +1446,7 @@ function LoadingSpinner({
|
|
|
1441
1446
|
role: "status",
|
|
1442
1447
|
"aria-live": "polite",
|
|
1443
1448
|
"aria-label": prompt ?? "Loading",
|
|
1444
|
-
className:
|
|
1449
|
+
className: `flex flex-col items-center justify-center gap-3 ${className}`.trim(),
|
|
1445
1450
|
children: content
|
|
1446
1451
|
}
|
|
1447
1452
|
);
|
|
@@ -1452,7 +1457,7 @@ function LoadingSpinner({
|
|
|
1452
1457
|
role: "status",
|
|
1453
1458
|
"aria-live": "polite",
|
|
1454
1459
|
"aria-label": prompt ?? "Loading",
|
|
1455
|
-
className:
|
|
1460
|
+
className: `fixed inset-0 z-[8000000] flex flex-col items-center justify-center gap-6 bg-background backdrop-blur-sm ${className}`.trim(),
|
|
1456
1461
|
style: { opacity: backdropOpacity },
|
|
1457
1462
|
children: content
|
|
1458
1463
|
}
|
|
@@ -1561,7 +1566,8 @@ function ScalableContainer({
|
|
|
1561
1566
|
assignClassOnClick,
|
|
1562
1567
|
expandIcon,
|
|
1563
1568
|
collapseIcon,
|
|
1564
|
-
togglePosition = "top-right"
|
|
1569
|
+
togglePosition = "top-right",
|
|
1570
|
+
className = ""
|
|
1565
1571
|
}) {
|
|
1566
1572
|
const containerRef = useRef(null);
|
|
1567
1573
|
const [internalScaled, setInternalScaled] = useState(false);
|
|
@@ -1596,8 +1602,9 @@ function ScalableContainer({
|
|
|
1596
1602
|
// OS-window aesthetic: subtle elevation at rest, lifted shadow
|
|
1597
1603
|
// when expanded. No background colour change.
|
|
1598
1604
|
isScaled ? "shadow-2xl" : "shadow-md",
|
|
1599
|
-
"transition-shadow duration-300"
|
|
1600
|
-
|
|
1605
|
+
"transition-shadow duration-300",
|
|
1606
|
+
className
|
|
1607
|
+
].filter(Boolean).join(" "),
|
|
1601
1608
|
children: [
|
|
1602
1609
|
/* @__PURE__ */ jsx(Tooltip, { placement: "bottom", title: isScaled ? "Collapse" : "Expand", children: /* @__PURE__ */ jsx(
|
|
1603
1610
|
"button",
|
|
@@ -1649,12 +1656,13 @@ function OpaqueGridCard({
|
|
|
1649
1656
|
item,
|
|
1650
1657
|
isRight = false,
|
|
1651
1658
|
buttonText = "Open Application",
|
|
1652
|
-
onOpen
|
|
1659
|
+
onOpen,
|
|
1660
|
+
className = ""
|
|
1653
1661
|
}) {
|
|
1654
1662
|
return /* @__PURE__ */ jsxs(
|
|
1655
1663
|
"div",
|
|
1656
1664
|
{
|
|
1657
|
-
className: `flex flex-col w-[200px] h-[250px] rounded-lg items-center p-2 ${!isRight ? "opaque-carousel-card-left dark:opaque-carousel-card-dark-left" : "opaque-carousel-card-right dark:opaque-carousel-card-dark-right"}
|
|
1665
|
+
className: `flex flex-col w-[200px] h-[250px] rounded-lg items-center p-2 ${!isRight ? "opaque-carousel-card-left dark:opaque-carousel-card-dark-left" : "opaque-carousel-card-right dark:opaque-carousel-card-dark-right"} ${className}`.trim(),
|
|
1658
1666
|
children: [
|
|
1659
1667
|
/* @__PURE__ */ jsx(
|
|
1660
1668
|
"div",
|
|
@@ -1696,10 +1704,10 @@ function OpaqueGridCard({
|
|
|
1696
1704
|
}
|
|
1697
1705
|
);
|
|
1698
1706
|
}
|
|
1699
|
-
function CatalogGrid({ items, buttonText, onOpen }) {
|
|
1700
|
-
return /* @__PURE__ */ jsx("div", { className:
|
|
1707
|
+
function CatalogGrid({ items, buttonText, onOpen, className = "" }) {
|
|
1708
|
+
return /* @__PURE__ */ jsx("div", { className: `flex flex-wrap gap-2 ${className}`.trim(), children: items.map((item) => /* @__PURE__ */ jsx(GridCard, { item, buttonText, onOpen }, item.key)) });
|
|
1701
1709
|
}
|
|
1702
|
-
function CatalogCarousel({ items, buttonText, onOpen }) {
|
|
1710
|
+
function CatalogCarousel({ items, buttonText, onOpen, className = "" }) {
|
|
1703
1711
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
1704
1712
|
const [indexPool, setIndexPool] = useState([]);
|
|
1705
1713
|
const cardRefs = useRef([]);
|
|
@@ -1736,7 +1744,7 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
|
|
|
1736
1744
|
}, [activeIndex, getIndexes, items.length]);
|
|
1737
1745
|
const nextApp = () => setActiveIndex((prev) => prev + 1 === items.length ? 0 : prev + 1);
|
|
1738
1746
|
const previousApp = () => setActiveIndex((prev) => prev - 1 === -1 ? items.length - 1 : prev - 1);
|
|
1739
|
-
return /* @__PURE__ */ jsx("div", { className:
|
|
1747
|
+
return /* @__PURE__ */ jsx("div", { className: `flex items-center justify-center w-full h-full ${className}`.trim(), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-10", children: [
|
|
1740
1748
|
/* @__PURE__ */ jsx(
|
|
1741
1749
|
"button",
|
|
1742
1750
|
{
|
|
@@ -1786,16 +1794,16 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
|
|
|
1786
1794
|
)
|
|
1787
1795
|
] }) });
|
|
1788
1796
|
}
|
|
1789
|
-
function Catalog({ display: display2 = "grid", items = [], buttonText, onOpen }) {
|
|
1790
|
-
return /* @__PURE__ */ jsx("div", { className:
|
|
1797
|
+
function Catalog({ display: display2 = "grid", items = [], buttonText, onOpen, className = "" }) {
|
|
1798
|
+
return /* @__PURE__ */ jsx("div", { className: `w-full h-full ${className}`.trim(), children: display2 === "grid" ? /* @__PURE__ */ jsx(CatalogGrid, { items, buttonText, onOpen }) : /* @__PURE__ */ jsx(CatalogCarousel, { items, buttonText, onOpen }) });
|
|
1791
1799
|
}
|
|
1792
|
-
function ContextMenu({ items, children }) {
|
|
1800
|
+
function ContextMenu({ items, children, className = "" }) {
|
|
1793
1801
|
return /* @__PURE__ */ jsxs(ContextMenuPrimitive.Root, { children: [
|
|
1794
1802
|
/* @__PURE__ */ jsx(ContextMenuPrimitive.Trigger, { asChild: true, children }),
|
|
1795
1803
|
/* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1796
1804
|
ContextMenuPrimitive.Content,
|
|
1797
1805
|
{
|
|
1798
|
-
className: CONTENT_CLASSNAME,
|
|
1806
|
+
className: `${CONTENT_CLASSNAME} ${className}`.trim(),
|
|
1799
1807
|
collisionPadding: 8,
|
|
1800
1808
|
children: items.map((item) => renderItem(item))
|
|
1801
1809
|
}
|
|
@@ -2980,9 +2988,9 @@ function TableSkeletonBody({
|
|
|
2980
2988
|
i
|
|
2981
2989
|
)) });
|
|
2982
2990
|
}
|
|
2983
|
-
function ThemeSwitch({ checked, onChange, label = "Toggle dark mode" }) {
|
|
2991
|
+
function ThemeSwitch({ checked, onChange, label = "Toggle dark mode", className = "" }) {
|
|
2984
2992
|
const id = useId();
|
|
2985
|
-
return /* @__PURE__ */ jsx("label", { htmlFor: id, className:
|
|
2993
|
+
return /* @__PURE__ */ jsx("label", { htmlFor: id, className: `flex items-center gap-2 cursor-pointer select-none ${className}`.trim(), children: /* @__PURE__ */ jsx(
|
|
2986
2994
|
SwitchPrimitive.Root,
|
|
2987
2995
|
{
|
|
2988
2996
|
id,
|
|
@@ -4604,7 +4612,8 @@ function DatePicker({
|
|
|
4604
4612
|
format = defaultFormat,
|
|
4605
4613
|
weekStartsOn = 0,
|
|
4606
4614
|
clearable = true,
|
|
4607
|
-
size = "md"
|
|
4615
|
+
size = "md",
|
|
4616
|
+
className = ""
|
|
4608
4617
|
}) {
|
|
4609
4618
|
const errorId = useId();
|
|
4610
4619
|
const hasError = errorMessage != null;
|
|
@@ -4685,7 +4694,7 @@ function DatePicker({
|
|
|
4685
4694
|
}
|
|
4686
4695
|
};
|
|
4687
4696
|
const displayValue = value ? format(value) : "";
|
|
4688
|
-
return /* @__PURE__ */ jsxs("div", { className:
|
|
4697
|
+
return /* @__PURE__ */ jsxs("div", { className: `flex flex-col gap-1 ${className}`.trim(), children: [
|
|
4689
4698
|
/* @__PURE__ */ jsxs("div", { className: `flex ${layout === "vertical" ? "flex-col gap-1.5" : "flex-row items-start gap-3"}`, children: [
|
|
4690
4699
|
/* @__PURE__ */ jsx(
|
|
4691
4700
|
FieldLabel,
|