@korsolutions/ui 0.0.85 → 0.0.87
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/AGENTS.md +3 -3
- package/dist/module/components/alert-dialog/components/alert-dialog-root.js +1 -1
- package/dist/module/components/alert-dialog/components/alert-dialog-root.js.map +1 -1
- package/dist/module/components/alert-dialog/variants/default.js +93 -85
- package/dist/module/components/alert-dialog/variants/default.js.map +1 -1
- package/dist/module/components/button/button.js +1 -1
- package/dist/module/components/button/button.js.map +1 -1
- package/dist/module/components/button/variants/default.js +48 -44
- package/dist/module/components/button/variants/default.js.map +1 -1
- package/dist/module/components/button/variants/ghost.js +64 -60
- package/dist/module/components/button/variants/ghost.js.map +1 -1
- package/dist/module/components/button/variants/secondary.js +66 -62
- package/dist/module/components/button/variants/secondary.js.map +1 -1
- package/dist/module/components/combobox/components/combobox-root.js +1 -1
- package/dist/module/components/combobox/components/combobox-root.js.map +1 -1
- package/dist/module/components/combobox/variants/default.js +91 -88
- package/dist/module/components/combobox/variants/default.js.map +1 -1
- package/dist/module/components/icon-button/icon-button.js +4 -5
- package/dist/module/components/icon-button/icon-button.js.map +1 -1
- package/dist/module/components/icon-button/variants/default.js +31 -24
- package/dist/module/components/icon-button/variants/default.js.map +1 -1
- package/dist/module/components/icon-button/variants/ghost.js +32 -25
- package/dist/module/components/icon-button/variants/ghost.js.map +1 -1
- package/dist/module/components/icon-button/variants/secondary.js +34 -27
- package/dist/module/components/icon-button/variants/secondary.js.map +1 -1
- package/dist/module/components/index.js +1 -0
- package/dist/module/components/index.js.map +1 -1
- package/dist/module/components/input/input.js +1 -1
- package/dist/module/components/input/input.js.map +1 -1
- package/dist/module/components/input/variants/default.js +39 -37
- package/dist/module/components/input/variants/default.js.map +1 -1
- package/dist/module/components/input/variants/secondary.js +39 -37
- package/dist/module/components/input/variants/secondary.js.map +1 -1
- package/dist/module/components/phone-input/components/phone-input-root.js +2 -1
- package/dist/module/components/phone-input/components/phone-input-root.js.map +1 -1
- package/dist/module/components/phone-input/variants/default.js +115 -112
- package/dist/module/components/phone-input/variants/default.js.map +1 -1
- package/dist/module/components/select/components/select-root.js +1 -1
- package/dist/module/components/select/components/select-root.js.map +1 -1
- package/dist/module/components/select/variants/default.js +75 -73
- package/dist/module/components/select/variants/default.js.map +1 -1
- package/dist/module/components/sidebar/components/sidebar-content.js +19 -0
- package/dist/module/components/sidebar/components/sidebar-content.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-footer.js +18 -0
- package/dist/module/components/sidebar/components/sidebar-footer.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-group-label.js +18 -0
- package/dist/module/components/sidebar/components/sidebar-group-label.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-group.js +18 -0
- package/dist/module/components/sidebar/components/sidebar-group.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-header.js +18 -0
- package/dist/module/components/sidebar/components/sidebar-header.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-menu-item.js +36 -0
- package/dist/module/components/sidebar/components/sidebar-menu-item.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-menu-sub.js +22 -0
- package/dist/module/components/sidebar/components/sidebar-menu-sub.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-menu.js +18 -0
- package/dist/module/components/sidebar/components/sidebar-menu.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-provider.js +47 -0
- package/dist/module/components/sidebar/components/sidebar-provider.js.map +1 -0
- package/dist/module/components/sidebar/components/sidebar-root.js +27 -0
- package/dist/module/components/sidebar/components/sidebar-root.js.map +1 -0
- package/dist/module/components/sidebar/context.js +12 -0
- package/dist/module/components/sidebar/context.js.map +1 -0
- package/dist/module/components/sidebar/index.js +26 -0
- package/dist/module/components/sidebar/index.js.map +1 -0
- package/dist/module/components/sidebar/types.js +4 -0
- package/dist/module/components/sidebar/types.js.map +1 -0
- package/dist/module/components/sidebar/variants/default.js +101 -0
- package/dist/module/components/sidebar/variants/default.js.map +1 -0
- package/dist/module/components/sidebar/variants/index.js +7 -0
- package/dist/module/components/sidebar/variants/index.js.map +1 -0
- package/dist/module/themes/default/index.js +1 -0
- package/dist/module/themes/default/index.js.map +1 -1
- package/dist/module/themes/provider.js +1 -0
- package/dist/module/themes/provider.js.map +1 -1
- package/dist/module/themes/utils.js +2 -1
- package/dist/module/themes/utils.js.map +1 -1
- package/dist/module/utils/size-scale.js +42 -0
- package/dist/module/utils/size-scale.js.map +1 -0
- package/dist/module/utils/use-themed-styles.js +4 -1
- package/dist/module/utils/use-themed-styles.js.map +1 -1
- package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts +2 -0
- package/dist/typescript/src/components/alert-dialog/components/alert-dialog-root.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/variants/default.d.ts +3 -2
- package/dist/typescript/src/components/alert-dialog/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/alert-dialog/variants/index.d.ts +1 -1
- package/dist/typescript/src/components/button/button.d.ts +2 -0
- package/dist/typescript/src/components/button/button.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/ghost.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/ghost.d.ts.map +1 -1
- package/dist/typescript/src/components/button/variants/index.d.ts +3 -3
- package/dist/typescript/src/components/button/variants/secondary.d.ts +2 -1
- package/dist/typescript/src/components/button/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/components/combobox-root.d.ts +2 -0
- package/dist/typescript/src/components/combobox/components/combobox-root.d.ts.map +1 -1
- package/dist/typescript/src/components/combobox/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/combobox/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/icon-button.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/icon-button.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/ghost.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/ghost.d.ts.map +1 -1
- package/dist/typescript/src/components/icon-button/variants/index.d.ts +3 -3
- package/dist/typescript/src/components/icon-button/variants/secondary.d.ts +2 -1
- package/dist/typescript/src/components/icon-button/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/index.d.ts +1 -0
- package/dist/typescript/src/components/index.d.ts.map +1 -1
- package/dist/typescript/src/components/input/input.d.ts +2 -0
- package/dist/typescript/src/components/input/input.d.ts.map +1 -1
- package/dist/typescript/src/components/input/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/input/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/input/variants/secondary.d.ts +3 -2
- package/dist/typescript/src/components/input/variants/secondary.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts +3 -1
- package/dist/typescript/src/components/phone-input/components/phone-input-root.d.ts.map +1 -1
- package/dist/typescript/src/components/phone-input/variants/default.d.ts +2 -1
- package/dist/typescript/src/components/phone-input/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/select/components/select-root.d.ts +2 -0
- package/dist/typescript/src/components/select/components/select-root.d.ts.map +1 -1
- package/dist/typescript/src/components/select/variants/default.d.ts +3 -2
- package/dist/typescript/src/components/select/variants/default.d.ts.map +1 -1
- package/dist/typescript/src/components/sidebar/components/sidebar-content.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-content.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-footer.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-footer.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-group-label.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-group-label.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-group.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-group.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-header.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-header.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu-item.d.ts +12 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu-item.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu-sub.d.ts +10 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu-sub.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-menu.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-provider.d.ts +17 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-provider.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-root.d.ts +8 -0
- package/dist/typescript/src/components/sidebar/components/sidebar-root.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/context.d.ts +12 -0
- package/dist/typescript/src/components/sidebar/context.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/index.d.ts +35 -0
- package/dist/typescript/src/components/sidebar/index.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/types.d.ts +29 -0
- package/dist/typescript/src/components/sidebar/types.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/variants/default.d.ts +3 -0
- package/dist/typescript/src/components/sidebar/variants/default.d.ts.map +1 -0
- package/dist/typescript/src/components/sidebar/variants/index.d.ts +5 -0
- package/dist/typescript/src/components/sidebar/variants/index.d.ts.map +1 -0
- package/dist/typescript/src/index.d.ts +2 -0
- package/dist/typescript/src/index.d.ts.map +1 -1
- package/dist/typescript/src/themes/default/index.d.ts.map +1 -1
- package/dist/typescript/src/themes/provider.d.ts +1 -0
- package/dist/typescript/src/themes/provider.d.ts.map +1 -1
- package/dist/typescript/src/themes/types.d.ts +5 -0
- package/dist/typescript/src/themes/types.d.ts.map +1 -1
- package/dist/typescript/src/themes/utils.d.ts.map +1 -1
- package/dist/typescript/src/utils/size-scale.d.ts +20 -0
- package/dist/typescript/src/utils/size-scale.d.ts.map +1 -0
- package/dist/typescript/src/utils/use-themed-styles.d.ts +5 -0
- package/dist/typescript/src/utils/use-themed-styles.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/alert-dialog/components/alert-dialog-root.tsx +3 -1
- package/src/components/alert-dialog/variants/default.tsx +88 -79
- package/src/components/button/button.tsx +3 -1
- package/src/components/button/variants/default.tsx +14 -10
- package/src/components/button/variants/ghost.tsx +14 -10
- package/src/components/button/variants/secondary.tsx +14 -10
- package/src/components/combobox/components/combobox-root.tsx +3 -1
- package/src/components/combobox/variants/default.tsx +17 -14
- package/src/components/icon-button/icon-button.tsx +6 -6
- package/src/components/icon-button/variants/default.tsx +12 -6
- package/src/components/icon-button/variants/ghost.tsx +12 -6
- package/src/components/icon-button/variants/secondary.tsx +12 -6
- package/src/components/index.ts +1 -0
- package/src/components/input/input.tsx +3 -1
- package/src/components/input/variants/default.tsx +11 -9
- package/src/components/input/variants/secondary.tsx +12 -10
- package/src/components/phone-input/components/phone-input-root.tsx +4 -1
- package/src/components/phone-input/variants/default.tsx +21 -18
- package/src/components/select/components/select-root.tsx +3 -1
- package/src/components/select/variants/default.tsx +16 -14
- package/src/components/sidebar/components/sidebar-content.tsx +19 -0
- package/src/components/sidebar/components/sidebar-footer.tsx +15 -0
- package/src/components/sidebar/components/sidebar-group-label.tsx +15 -0
- package/src/components/sidebar/components/sidebar-group.tsx +15 -0
- package/src/components/sidebar/components/sidebar-header.tsx +15 -0
- package/src/components/sidebar/components/sidebar-menu-item.tsx +61 -0
- package/src/components/sidebar/components/sidebar-menu-sub.tsx +23 -0
- package/src/components/sidebar/components/sidebar-menu.tsx +15 -0
- package/src/components/sidebar/components/sidebar-provider.tsx +73 -0
- package/src/components/sidebar/components/sidebar-root.tsx +19 -0
- package/src/components/sidebar/context.ts +21 -0
- package/src/components/sidebar/index.ts +37 -0
- package/src/components/sidebar/types.ts +31 -0
- package/src/components/sidebar/variants/default.tsx +96 -0
- package/src/components/sidebar/variants/index.ts +5 -0
- package/src/index.tsx +2 -0
- package/src/themes/default/index.ts +1 -0
- package/src/themes/provider.tsx +2 -0
- package/src/themes/types.ts +5 -0
- package/src/themes/utils.ts +1 -0
- package/src/utils/size-scale.ts +45 -0
- package/src/utils/use-themed-styles.ts +8 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Platform } from "react-native";
|
|
2
|
+
import type { Size } from "../../../utils/size-scale";
|
|
2
3
|
import { useThemedStyles } from "../../../utils/use-themed-styles";
|
|
3
4
|
import { type InputStyles } from "../types";
|
|
4
5
|
|
|
5
|
-
export function useInputVariantDefault(): InputStyles {
|
|
6
|
-
return useThemedStyles(
|
|
7
|
-
|
|
6
|
+
export function useInputVariantDefault(size: Size): InputStyles {
|
|
7
|
+
return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): InputStyles => {
|
|
8
|
+
const s = sizeScale(size);
|
|
9
|
+
|
|
10
|
+
return {
|
|
8
11
|
default: {
|
|
9
12
|
placeholderTextColor: colors.mutedForeground,
|
|
10
13
|
selectionColor: colors.primary,
|
|
@@ -13,11 +16,10 @@ export function useInputVariantDefault(): InputStyles {
|
|
|
13
16
|
borderColor: colors.border,
|
|
14
17
|
borderRadius: radius,
|
|
15
18
|
backgroundColor: colors.surface,
|
|
16
|
-
|
|
17
|
-
paddingHorizontal: 16,
|
|
19
|
+
paddingHorizontal: s.paddingHorizontal,
|
|
18
20
|
fontFamily,
|
|
19
|
-
fontSize,
|
|
20
|
-
height:
|
|
21
|
+
fontSize: s.fontSize,
|
|
22
|
+
height: s.height,
|
|
21
23
|
color: colors.foreground,
|
|
22
24
|
outlineWidth: 0,
|
|
23
25
|
...Platform.select({
|
|
@@ -39,6 +41,6 @@ export function useInputVariantDefault(): InputStyles {
|
|
|
39
41
|
backgroundColor: colors.muted,
|
|
40
42
|
},
|
|
41
43
|
},
|
|
42
|
-
}
|
|
43
|
-
);
|
|
44
|
+
};
|
|
45
|
+
});
|
|
44
46
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Platform } from "react-native";
|
|
2
|
-
import {
|
|
2
|
+
import type { Size } from "../../../utils/size-scale";
|
|
3
3
|
import { useThemedStyles } from "../../../utils/use-themed-styles";
|
|
4
|
+
import { type InputStyles } from "../types";
|
|
4
5
|
|
|
5
|
-
export function useInputVariantSecondary(): InputStyles {
|
|
6
|
-
return useThemedStyles(
|
|
7
|
-
|
|
6
|
+
export function useInputVariantSecondary(size: Size): InputStyles {
|
|
7
|
+
return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): InputStyles => {
|
|
8
|
+
const s = sizeScale(size);
|
|
9
|
+
|
|
10
|
+
return {
|
|
8
11
|
default: {
|
|
9
12
|
placeholderTextColor: colors.mutedForeground,
|
|
10
13
|
selectionColor: colors.primary,
|
|
@@ -13,11 +16,10 @@ export function useInputVariantSecondary(): InputStyles {
|
|
|
13
16
|
borderColor: colors.border,
|
|
14
17
|
borderRadius: radius,
|
|
15
18
|
backgroundColor: colors.background,
|
|
16
|
-
|
|
17
|
-
paddingHorizontal: 16,
|
|
19
|
+
paddingHorizontal: s.paddingHorizontal,
|
|
18
20
|
fontFamily,
|
|
19
|
-
fontSize,
|
|
20
|
-
height:
|
|
21
|
+
fontSize: s.fontSize,
|
|
22
|
+
height: s.height,
|
|
21
23
|
color: colors.foreground,
|
|
22
24
|
outlineWidth: 0,
|
|
23
25
|
...Platform.select({
|
|
@@ -39,6 +41,6 @@ export function useInputVariantSecondary(): InputStyles {
|
|
|
39
41
|
backgroundColor: colors.muted,
|
|
40
42
|
},
|
|
41
43
|
},
|
|
42
|
-
}
|
|
43
|
-
);
|
|
44
|
+
};
|
|
45
|
+
});
|
|
44
46
|
}
|
|
@@ -5,6 +5,7 @@ import { usePhoneMask } from "../../../hooks/use-phone-mask";
|
|
|
5
5
|
import { useComponentConfig } from "../../../themes/provider";
|
|
6
6
|
import type { ViewRef } from "../../../types/element.types";
|
|
7
7
|
import { mergeStyles } from "../../../utils/calculate-styles";
|
|
8
|
+
import type { Size } from "../../../utils/size-scale";
|
|
8
9
|
import { PhoneInputContext } from "../context";
|
|
9
10
|
import type { PhoneInputState } from "../types";
|
|
10
11
|
import { PhoneInputVariants } from "../variants";
|
|
@@ -17,6 +18,7 @@ export interface PhoneInputRootProps {
|
|
|
17
18
|
countryCodes?: CountryCode[];
|
|
18
19
|
isDisabled?: boolean;
|
|
19
20
|
variant?: keyof typeof PhoneInputVariants;
|
|
21
|
+
size?: Size;
|
|
20
22
|
placeholder?: string;
|
|
21
23
|
style?: StyleProp<ViewStyle>;
|
|
22
24
|
}
|
|
@@ -35,9 +37,10 @@ export function PhoneInputRoot({
|
|
|
35
37
|
countryCodes = ["US"],
|
|
36
38
|
isDisabled = false,
|
|
37
39
|
variant = "default",
|
|
40
|
+
size = "md",
|
|
38
41
|
style,
|
|
39
42
|
}: PhoneInputRootProps) {
|
|
40
|
-
const variantStyles = PhoneInputVariants[variant]();
|
|
43
|
+
const variantStyles = PhoneInputVariants[variant](size);
|
|
41
44
|
const componentConfig = useComponentConfig("phoneInput");
|
|
42
45
|
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
43
46
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Platform } from "react-native";
|
|
2
|
+
import type { Size } from "../../../utils/size-scale";
|
|
2
3
|
import { useThemedStyles } from "../../../utils/use-themed-styles";
|
|
3
4
|
import type { PhoneInputStyles } from "../types";
|
|
4
5
|
|
|
5
|
-
export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
6
|
-
return useThemedStyles(
|
|
7
|
-
|
|
6
|
+
export function usePhoneInputVariantDefault(size: Size): PhoneInputStyles {
|
|
7
|
+
return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): PhoneInputStyles => {
|
|
8
|
+
const s = sizeScale(size);
|
|
9
|
+
|
|
10
|
+
return {
|
|
8
11
|
root: {
|
|
9
12
|
default: {
|
|
10
13
|
flexDirection: "row",
|
|
@@ -13,7 +16,7 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
13
16
|
borderColor: colors.border,
|
|
14
17
|
borderRadius: radius,
|
|
15
18
|
backgroundColor: colors.surface,
|
|
16
|
-
height:
|
|
19
|
+
height: s.height,
|
|
17
20
|
overflow: "hidden",
|
|
18
21
|
outlineWidth: 0,
|
|
19
22
|
},
|
|
@@ -26,18 +29,18 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
26
29
|
},
|
|
27
30
|
countryButton: {
|
|
28
31
|
default: {
|
|
29
|
-
paddingHorizontal:
|
|
32
|
+
paddingHorizontal: s.paddingHorizontal * 0.75,
|
|
30
33
|
height: "100%",
|
|
31
34
|
justifyContent: "center",
|
|
32
35
|
alignItems: "center",
|
|
33
36
|
flexDirection: "row",
|
|
34
|
-
gap:
|
|
37
|
+
gap: s.gap * 0.5,
|
|
35
38
|
},
|
|
36
39
|
},
|
|
37
40
|
countryButtonText: {
|
|
38
41
|
default: {
|
|
39
42
|
fontFamily,
|
|
40
|
-
fontSize,
|
|
43
|
+
fontSize: s.fontSize,
|
|
41
44
|
color: colors.foreground,
|
|
42
45
|
},
|
|
43
46
|
disabled: {
|
|
@@ -55,9 +58,9 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
55
58
|
input: {
|
|
56
59
|
default: {
|
|
57
60
|
flex: 1,
|
|
58
|
-
paddingHorizontal:
|
|
61
|
+
paddingHorizontal: s.paddingHorizontal,
|
|
59
62
|
fontFamily,
|
|
60
|
-
fontSize,
|
|
63
|
+
fontSize: s.fontSize,
|
|
61
64
|
color: colors.foreground,
|
|
62
65
|
height: "100%",
|
|
63
66
|
outlineWidth: 0,
|
|
@@ -87,12 +90,12 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
87
90
|
},
|
|
88
91
|
pickerOption: {
|
|
89
92
|
default: {
|
|
90
|
-
paddingVertical:
|
|
91
|
-
paddingHorizontal:
|
|
93
|
+
paddingVertical: s.paddingVertical * 0.75,
|
|
94
|
+
paddingHorizontal: s.paddingHorizontal * 0.75,
|
|
92
95
|
borderRadius: radius / 2,
|
|
93
96
|
flexDirection: "row",
|
|
94
97
|
alignItems: "center",
|
|
95
|
-
gap:
|
|
98
|
+
gap: s.gap,
|
|
96
99
|
},
|
|
97
100
|
selected: {
|
|
98
101
|
backgroundColor: colors.muted,
|
|
@@ -101,7 +104,7 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
101
104
|
pickerOptionText: {
|
|
102
105
|
default: {
|
|
103
106
|
fontFamily,
|
|
104
|
-
fontSize,
|
|
107
|
+
fontSize: s.fontSize,
|
|
105
108
|
color: colors.foreground,
|
|
106
109
|
},
|
|
107
110
|
},
|
|
@@ -110,15 +113,15 @@ export function usePhoneInputVariantDefault(): PhoneInputStyles {
|
|
|
110
113
|
borderWidth: 1,
|
|
111
114
|
borderColor: colors.border,
|
|
112
115
|
borderRadius: radius,
|
|
113
|
-
paddingVertical:
|
|
114
|
-
paddingHorizontal:
|
|
116
|
+
paddingVertical: s.paddingVertical * 0.5,
|
|
117
|
+
paddingHorizontal: s.paddingHorizontal * 0.75,
|
|
115
118
|
fontFamily,
|
|
116
|
-
fontSize: fontSize * 0.875,
|
|
119
|
+
fontSize: s.fontSize * 0.875,
|
|
117
120
|
color: colors.foreground,
|
|
118
121
|
marginBottom: 4,
|
|
119
122
|
outlineWidth: 0,
|
|
120
123
|
},
|
|
121
124
|
},
|
|
122
|
-
}
|
|
123
|
-
);
|
|
125
|
+
};
|
|
126
|
+
});
|
|
124
127
|
}
|
|
@@ -3,6 +3,7 @@ import { type LayoutRectangle, type StyleProp, View, type ViewStyle } from "reac
|
|
|
3
3
|
import { DEFAULT_LAYOUT, DEFAULT_POSITION, type LayoutPosition } from "../../../hooks";
|
|
4
4
|
import { useComponentConfig } from "../../../themes/provider";
|
|
5
5
|
import { calculateComposedStyles, mergeStyles } from "../../../utils/calculate-styles";
|
|
6
|
+
import type { Size } from "../../../utils/size-scale";
|
|
6
7
|
import { SelectContext } from "../context";
|
|
7
8
|
import type { SelectOption, SelectState } from "../types";
|
|
8
9
|
import { SelectVariants } from "../variants";
|
|
@@ -13,6 +14,7 @@ interface SelectRootInjectedProps {
|
|
|
13
14
|
|
|
14
15
|
export interface SelectRootBaseProps {
|
|
15
16
|
variant?: keyof typeof SelectVariants;
|
|
17
|
+
size?: Size;
|
|
16
18
|
|
|
17
19
|
value?: string;
|
|
18
20
|
onChange?: (value: string) => void;
|
|
@@ -36,7 +38,7 @@ const calculateState = (props: SelectRootProps): SelectState => {
|
|
|
36
38
|
};
|
|
37
39
|
|
|
38
40
|
export function SelectRoot(props: SelectRootProps) {
|
|
39
|
-
const variantStyles = SelectVariants[props.variant ?? "default"]();
|
|
41
|
+
const variantStyles = SelectVariants[props.variant ?? "default"](props.size ?? "md");
|
|
40
42
|
const componentConfig = useComponentConfig("select");
|
|
41
43
|
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
42
44
|
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Size } from "../../../utils/size-scale";
|
|
2
2
|
import { useThemedStyles } from "../../../utils/use-themed-styles";
|
|
3
|
+
import { type SelectStyles } from "../types";
|
|
3
4
|
|
|
4
|
-
export function useSelectVariantDefault(): SelectStyles {
|
|
5
|
-
return useThemedStyles(
|
|
6
|
-
|
|
5
|
+
export function useSelectVariantDefault(size: Size): SelectStyles {
|
|
6
|
+
return useThemedStyles(({ colors, radius, fontFamily, sizeScale }): SelectStyles => {
|
|
7
|
+
const s = sizeScale(size);
|
|
8
|
+
|
|
9
|
+
return {
|
|
7
10
|
root: {
|
|
8
11
|
default: {},
|
|
9
12
|
disabled: {},
|
|
@@ -15,9 +18,8 @@ export function useSelectVariantDefault(): SelectStyles {
|
|
|
15
18
|
borderRadius: radius,
|
|
16
19
|
backgroundColor: colors.surface,
|
|
17
20
|
justifyContent: "center",
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
minHeight: 48,
|
|
21
|
+
paddingHorizontal: s.paddingHorizontal,
|
|
22
|
+
minHeight: s.height,
|
|
21
23
|
},
|
|
22
24
|
disabled: {
|
|
23
25
|
backgroundColor: colors.muted,
|
|
@@ -26,7 +28,7 @@ export function useSelectVariantDefault(): SelectStyles {
|
|
|
26
28
|
value: {
|
|
27
29
|
default: {
|
|
28
30
|
fontFamily,
|
|
29
|
-
fontSize,
|
|
31
|
+
fontSize: s.fontSize,
|
|
30
32
|
color: colors.foreground,
|
|
31
33
|
},
|
|
32
34
|
disabled: {
|
|
@@ -36,7 +38,7 @@ export function useSelectVariantDefault(): SelectStyles {
|
|
|
36
38
|
placeholder: {
|
|
37
39
|
default: {
|
|
38
40
|
fontFamily,
|
|
39
|
-
fontSize,
|
|
41
|
+
fontSize: s.fontSize,
|
|
40
42
|
color: colors.mutedForeground,
|
|
41
43
|
},
|
|
42
44
|
disabled: {
|
|
@@ -63,10 +65,10 @@ export function useSelectVariantDefault(): SelectStyles {
|
|
|
63
65
|
},
|
|
64
66
|
option: {
|
|
65
67
|
default: {
|
|
66
|
-
paddingVertical:
|
|
67
|
-
paddingHorizontal:
|
|
68
|
+
paddingVertical: s.paddingVertical,
|
|
69
|
+
paddingHorizontal: s.paddingHorizontal,
|
|
68
70
|
fontFamily,
|
|
69
|
-
fontSize,
|
|
71
|
+
fontSize: s.fontSize,
|
|
70
72
|
color: colors.foreground,
|
|
71
73
|
borderRadius: radius / 2,
|
|
72
74
|
},
|
|
@@ -80,6 +82,6 @@ export function useSelectVariantDefault(): SelectStyles {
|
|
|
80
82
|
backgroundColor: colors.muted,
|
|
81
83
|
},
|
|
82
84
|
},
|
|
83
|
-
}
|
|
84
|
-
);
|
|
85
|
+
};
|
|
86
|
+
});
|
|
85
87
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ScrollView, type StyleProp, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarContentProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarContent(props: SidebarContentProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<ScrollView style={[sidebar.styles?.content, style]} showsVerticalScrollIndicator={false}>
|
|
16
|
+
{children}
|
|
17
|
+
</ScrollView>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarFooterProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarFooter(props: SidebarFooterProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return <View style={[sidebar.styles?.footer, style]}>{children}</View>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, Text, type TextStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarGroupLabelProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<TextStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarGroupLabel(props: SidebarGroupLabelProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return <Text style={[sidebar.styles?.groupLabel, style]}>{children}</Text>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarGroupProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarGroup(props: SidebarGroupProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return <View style={[sidebar.styles?.group, style]}>{children}</View>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarHeaderProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarHeader(props: SidebarHeaderProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return <View style={[sidebar.styles?.header, style]}>{children}</View>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Pressable,
|
|
4
|
+
type PressableProps,
|
|
5
|
+
type StyleProp,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
type ViewStyle,
|
|
8
|
+
} from "react-native";
|
|
9
|
+
import { useOrganizedChildren } from "../../../hooks/use-organized-children";
|
|
10
|
+
import { useSidebar } from "../context";
|
|
11
|
+
import type { SidebarMenuButtonState } from "../types";
|
|
12
|
+
|
|
13
|
+
export interface SidebarMenuItemProps extends Omit<PressableProps, "style"> {
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
|
|
16
|
+
/** Mark as active item */
|
|
17
|
+
isActive?: boolean;
|
|
18
|
+
|
|
19
|
+
/** Size variant */
|
|
20
|
+
size?: "default" | "lg";
|
|
21
|
+
|
|
22
|
+
style?: StyleProp<ViewStyle>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function SidebarMenuItem(props: SidebarMenuItemProps) {
|
|
26
|
+
const { children, isActive, size = "default", style, onPress, ...rest } = props;
|
|
27
|
+
const sidebar = useSidebar();
|
|
28
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
29
|
+
const styles = sidebar.styles;
|
|
30
|
+
|
|
31
|
+
const state: SidebarMenuButtonState = isActive ? "active" : isHovered ? "hovered" : "default";
|
|
32
|
+
|
|
33
|
+
const textStyle = StyleSheet.flatten([
|
|
34
|
+
styles?.menuItemText?.default,
|
|
35
|
+
styles?.menuItemText?.[state],
|
|
36
|
+
]);
|
|
37
|
+
|
|
38
|
+
const iconProps = StyleSheet.flatten([
|
|
39
|
+
styles?.menuItemIcon?.default,
|
|
40
|
+
styles?.menuItemIcon?.[state],
|
|
41
|
+
]);
|
|
42
|
+
|
|
43
|
+
const organizedChildren = useOrganizedChildren(children, textStyle, iconProps);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Pressable
|
|
47
|
+
{...rest}
|
|
48
|
+
onPress={onPress}
|
|
49
|
+
onHoverIn={() => setIsHovered(true)}
|
|
50
|
+
onHoverOut={() => setIsHovered(false)}
|
|
51
|
+
style={[
|
|
52
|
+
styles?.menuItem?.default,
|
|
53
|
+
state !== "default" && styles?.menuItem?.[state],
|
|
54
|
+
size === "lg" && { minHeight: 48, paddingVertical: 8 },
|
|
55
|
+
style,
|
|
56
|
+
]}
|
|
57
|
+
>
|
|
58
|
+
{organizedChildren}
|
|
59
|
+
</Pressable>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarMenuSubProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
|
|
8
|
+
/** Whether the submenu is open (controlled) */
|
|
9
|
+
open?: boolean;
|
|
10
|
+
|
|
11
|
+
style?: StyleProp<ViewStyle>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function SidebarMenuSub(props: SidebarMenuSubProps) {
|
|
15
|
+
const { children, open = true, style } = props;
|
|
16
|
+
const sidebar = useSidebar();
|
|
17
|
+
|
|
18
|
+
if (!open) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return <View style={[sidebar.styles?.menuSub, style]}>{children}</View>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarMenuProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarMenu(props: SidebarMenuProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
|
|
14
|
+
return <View style={[sidebar.styles?.menu, style]}>{children}</View>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React, { useCallback, useMemo, useState } from "react";
|
|
2
|
+
import { useComponentConfig } from "../../../themes/provider";
|
|
3
|
+
import { mergeStyles } from "../../../utils/calculate-styles";
|
|
4
|
+
import { SidebarContext, type SidebarContextValue } from "../context";
|
|
5
|
+
import { SidebarVariants } from "../variants";
|
|
6
|
+
|
|
7
|
+
export interface SidebarProviderProps {
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
|
|
10
|
+
/** Variant key for sidebar theming */
|
|
11
|
+
variant?: keyof typeof SidebarVariants;
|
|
12
|
+
|
|
13
|
+
/** Width of the sidebar in pixels (default: 256) */
|
|
14
|
+
width?: number;
|
|
15
|
+
|
|
16
|
+
/** Default open state (uncontrolled) */
|
|
17
|
+
defaultOpen?: boolean;
|
|
18
|
+
|
|
19
|
+
/** Open state (controlled) */
|
|
20
|
+
open?: boolean;
|
|
21
|
+
|
|
22
|
+
/** Callback when open state changes (controlled) */
|
|
23
|
+
onOpenChange?: (open: boolean) => void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function SidebarProvider(props: SidebarProviderProps) {
|
|
27
|
+
const {
|
|
28
|
+
children,
|
|
29
|
+
variant = "default",
|
|
30
|
+
width,
|
|
31
|
+
defaultOpen = true,
|
|
32
|
+
open: controlledOpen,
|
|
33
|
+
onOpenChange,
|
|
34
|
+
} = props;
|
|
35
|
+
|
|
36
|
+
const [_open, _setOpen] = useState(defaultOpen);
|
|
37
|
+
|
|
38
|
+
const open = controlledOpen ?? _open;
|
|
39
|
+
const setOpen = useCallback(
|
|
40
|
+
(value: boolean) => {
|
|
41
|
+
if (onOpenChange) {
|
|
42
|
+
onOpenChange(value);
|
|
43
|
+
} else {
|
|
44
|
+
_setOpen(value);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
[onOpenChange],
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const toggleSidebar = useCallback(() => {
|
|
51
|
+
setOpen(!open);
|
|
52
|
+
}, [open, setOpen]);
|
|
53
|
+
|
|
54
|
+
const variantStyles = SidebarVariants[variant]();
|
|
55
|
+
const componentConfig = useComponentConfig("sidebar");
|
|
56
|
+
const mergedStyles = mergeStyles(variantStyles, componentConfig?.styles);
|
|
57
|
+
|
|
58
|
+
const state = open ? "expanded" : "collapsed";
|
|
59
|
+
|
|
60
|
+
const contextValue = useMemo<SidebarContextValue>(
|
|
61
|
+
() => ({
|
|
62
|
+
state,
|
|
63
|
+
open,
|
|
64
|
+
setOpen,
|
|
65
|
+
toggleSidebar,
|
|
66
|
+
width,
|
|
67
|
+
styles: mergedStyles,
|
|
68
|
+
}),
|
|
69
|
+
[state, open, setOpen, toggleSidebar, width, mergedStyles],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
return <SidebarContext.Provider value={contextValue}>{children}</SidebarContext.Provider>;
|
|
73
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type StyleProp, View, type ViewStyle } from "react-native";
|
|
3
|
+
import { useSidebar } from "../context";
|
|
4
|
+
|
|
5
|
+
export interface SidebarRootProps {
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
style?: StyleProp<ViewStyle>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function SidebarRoot(props: SidebarRootProps) {
|
|
11
|
+
const { children, style } = props;
|
|
12
|
+
const { open, width = 256, styles } = useSidebar();
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<View style={[styles?.root, { width }, !open && { width: 0, overflow: "hidden" }, style]}>
|
|
16
|
+
{children}
|
|
17
|
+
</View>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
import type { SidebarState, SidebarStyles } from "./types";
|
|
3
|
+
|
|
4
|
+
export interface SidebarContextValue {
|
|
5
|
+
state: SidebarState;
|
|
6
|
+
open: boolean;
|
|
7
|
+
setOpen: (open: boolean) => void;
|
|
8
|
+
toggleSidebar: () => void;
|
|
9
|
+
width?: number;
|
|
10
|
+
styles?: SidebarStyles;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const SidebarContext = createContext<SidebarContextValue | undefined>(undefined);
|
|
14
|
+
|
|
15
|
+
export const useSidebar = () => {
|
|
16
|
+
const context = useContext(SidebarContext);
|
|
17
|
+
if (!context) {
|
|
18
|
+
throw new Error("useSidebar must be used within a SidebarProvider");
|
|
19
|
+
}
|
|
20
|
+
return context;
|
|
21
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SidebarContent } from "./components/sidebar-content";
|
|
2
|
+
import { SidebarFooter } from "./components/sidebar-footer";
|
|
3
|
+
import { SidebarGroup } from "./components/sidebar-group";
|
|
4
|
+
import { SidebarGroupLabel } from "./components/sidebar-group-label";
|
|
5
|
+
import { SidebarHeader } from "./components/sidebar-header";
|
|
6
|
+
import { SidebarMenuItem } from "./components/sidebar-menu-item";
|
|
7
|
+
import { SidebarMenuSub } from "./components/sidebar-menu-sub";
|
|
8
|
+
import { SidebarMenu } from "./components/sidebar-menu";
|
|
9
|
+
import { SidebarProvider } from "./components/sidebar-provider";
|
|
10
|
+
import { SidebarRoot } from "./components/sidebar-root";
|
|
11
|
+
|
|
12
|
+
export const Sidebar = {
|
|
13
|
+
Provider: SidebarProvider,
|
|
14
|
+
Root: SidebarRoot,
|
|
15
|
+
Header: SidebarHeader,
|
|
16
|
+
Footer: SidebarFooter,
|
|
17
|
+
Content: SidebarContent,
|
|
18
|
+
Group: SidebarGroup,
|
|
19
|
+
GroupLabel: SidebarGroupLabel,
|
|
20
|
+
Menu: SidebarMenu,
|
|
21
|
+
MenuItem: SidebarMenuItem,
|
|
22
|
+
MenuSub: SidebarMenuSub,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { useSidebar } from "./context";
|
|
26
|
+
|
|
27
|
+
export type { SidebarProviderProps } from "./components/sidebar-provider";
|
|
28
|
+
export type { SidebarRootProps } from "./components/sidebar-root";
|
|
29
|
+
export type { SidebarHeaderProps } from "./components/sidebar-header";
|
|
30
|
+
export type { SidebarFooterProps } from "./components/sidebar-footer";
|
|
31
|
+
export type { SidebarContentProps } from "./components/sidebar-content";
|
|
32
|
+
export type { SidebarGroupProps } from "./components/sidebar-group";
|
|
33
|
+
export type { SidebarGroupLabelProps } from "./components/sidebar-group-label";
|
|
34
|
+
export type { SidebarMenuProps } from "./components/sidebar-menu";
|
|
35
|
+
export type { SidebarMenuItemProps } from "./components/sidebar-menu-item";
|
|
36
|
+
export type { SidebarMenuSubProps } from "./components/sidebar-menu-sub";
|
|
37
|
+
export type { SidebarStyles, SidebarState } from "./types";
|