@pixpilot/shadcn-ui 0.25.1 → 0.27.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/AbsoluteFill.cjs +1 -0
- package/dist/AbsoluteFill.js +1 -0
- package/dist/Button.cjs +1 -0
- package/dist/Button.js +1 -0
- package/dist/ColorSelect.d.ts +2 -2
- package/dist/ContentCard.d.cts +2 -2
- package/dist/ContentCard.d.ts +2 -2
- package/dist/DatePicker.d.cts +2 -2
- package/dist/DatePicker.d.ts +2 -2
- package/dist/ScaledPreview.cjs +2 -0
- package/dist/ScaledPreview.js +2 -0
- package/dist/file-upload/FileUpload.d.cts +2 -2
- package/dist/file-upload/FileUpload.d.ts +2 -2
- package/dist/file-upload-inline/FileUploadInline.d.ts +2 -2
- package/dist/index.cjs +10 -1
- package/dist/index.d.cts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +7 -2
- package/dist/input/Input.d.ts +2 -2
- package/dist/layout/Layout.cjs +1 -0
- package/dist/layout/Layout.js +1 -0
- package/dist/layout/LayoutFooter.cjs +1 -0
- package/dist/layout/LayoutFooter.js +1 -0
- package/dist/layout/LayoutHeader.cjs +1 -0
- package/dist/layout/LayoutHeader.js +1 -0
- package/dist/layout/LayoutMain.cjs +1 -0
- package/dist/layout/LayoutMain.js +1 -0
- package/dist/theme-provider/index.d.ts +2 -2
- package/dist/theme-provider/index.js +2 -2
- package/dist/theme-toggle/ThemeModeDropdown.cjs +81 -0
- package/dist/theme-toggle/ThemeModeDropdown.d.cts +25 -0
- package/dist/theme-toggle/ThemeModeDropdown.d.ts +25 -0
- package/dist/theme-toggle/ThemeModeDropdown.js +76 -0
- package/dist/theme-toggle/ThemeModeSwitchInside.cjs +86 -0
- package/dist/theme-toggle/ThemeModeSwitchInside.d.cts +33 -0
- package/dist/theme-toggle/ThemeModeSwitchInside.d.ts +33 -0
- package/dist/theme-toggle/ThemeModeSwitchInside.js +82 -0
- package/dist/theme-toggle/ThemeModeSwitchOutside.cjs +68 -0
- package/dist/theme-toggle/ThemeModeSwitchOutside.d.cts +30 -0
- package/dist/theme-toggle/ThemeModeSwitchOutside.d.ts +30 -0
- package/dist/theme-toggle/ThemeModeSwitchOutside.js +63 -0
- package/dist/theme-toggle/ThemeModeToggleButton.cjs +48 -0
- package/dist/theme-toggle/ThemeModeToggleButton.d.cts +21 -0
- package/dist/theme-toggle/ThemeModeToggleButton.d.ts +21 -0
- package/dist/theme-toggle/ThemeModeToggleButton.js +43 -0
- package/dist/{ThemeToggle.cjs → theme-toggle/ThemeToggle.cjs} +13 -23
- package/dist/theme-toggle/ThemeToggle.d.cts +17 -0
- package/dist/theme-toggle/ThemeToggle.d.ts +17 -0
- package/dist/{ThemeToggle.js → theme-toggle/ThemeToggle.js} +13 -22
- package/dist/theme-toggle/index.cjs +5 -0
- package/dist/theme-toggle/index.d.cts +5 -0
- package/dist/theme-toggle/index.d.ts +5 -0
- package/dist/theme-toggle/index.js +5 -0
- package/package.json +1 -1
- package/dist/ThemeToggle.d.cts +0 -6
- package/dist/ThemeToggle.d.ts +0 -6
package/dist/AbsoluteFill.cjs
CHANGED
|
@@ -15,6 +15,7 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
15
15
|
function AbsoluteFill(props) {
|
|
16
16
|
const { ref, className,...rest } = props;
|
|
17
17
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
18
|
+
"data-slot": "absolute-fill",
|
|
18
19
|
ref,
|
|
19
20
|
...rest,
|
|
20
21
|
className: (0, __pixpilot_shadcn.cn)("absolute top-0 right-0 bottom-0 left-0", className)
|
package/dist/AbsoluteFill.js
CHANGED
|
@@ -11,6 +11,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
11
11
|
function AbsoluteFill(props) {
|
|
12
12
|
const { ref, className,...rest } = props;
|
|
13
13
|
return /* @__PURE__ */ jsx("div", {
|
|
14
|
+
"data-slot": "absolute-fill",
|
|
14
15
|
ref,
|
|
15
16
|
...rest,
|
|
16
17
|
className: cn("absolute top-0 right-0 bottom-0 left-0", className)
|
package/dist/Button.cjs
CHANGED
|
@@ -33,6 +33,7 @@ function Button(props) {
|
|
|
33
33
|
const showTooltip = hasTooltip || hasDisabledTooltip;
|
|
34
34
|
const tooltipContent = hasDisabledTooltip ? disabledTooltip ?? "" : tooltip ?? title ?? "";
|
|
35
35
|
const Loader = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
36
|
+
"data-slot": "button-loader",
|
|
36
37
|
className: (0, __pixpilot_shadcn.cn)("flex items-center justify-center", loaderPlacement === "center" && "rounded-0 absolute inset-0", loaderPlacement === "start" && "mr-1", loaderPlacement === "end" && "ml-1"),
|
|
37
38
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Loader2, {
|
|
38
39
|
className: "text-background animate-spin",
|
package/dist/Button.js
CHANGED
|
@@ -28,6 +28,7 @@ function Button$1(props) {
|
|
|
28
28
|
const showTooltip = hasTooltip || hasDisabledTooltip;
|
|
29
29
|
const tooltipContent = hasDisabledTooltip ? disabledTooltip ?? "" : tooltip ?? title ?? "";
|
|
30
30
|
const Loader = /* @__PURE__ */ jsx("div", {
|
|
31
|
+
"data-slot": "button-loader",
|
|
31
32
|
className: cn("flex items-center justify-center", loaderPlacement === "center" && "rounded-0 absolute inset-0", loaderPlacement === "start" && "mr-1", loaderPlacement === "end" && "ml-1"),
|
|
32
33
|
children: /* @__PURE__ */ jsx(Loader2, {
|
|
33
34
|
className: "text-background animate-spin",
|
package/dist/ColorSelect.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Select, SelectContent } from "@pixpilot/shadcn";
|
|
2
2
|
import React, { ComponentProps } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/ColorSelect.d.ts
|
|
6
6
|
interface ColorSelectOption {
|
|
@@ -15,6 +15,6 @@ type BaseColorSelectProps = {
|
|
|
15
15
|
placeholder?: string;
|
|
16
16
|
keyboardMode?: 'cycle' | 'dropdown';
|
|
17
17
|
} & Omit<ComponentProps<typeof Select>, 'value' | 'onValueChange' | 'children'>;
|
|
18
|
-
declare function ColorSelect(props: BaseColorSelectProps):
|
|
18
|
+
declare function ColorSelect(props: BaseColorSelectProps): react_jsx_runtime2.JSX.Element;
|
|
19
19
|
//#endregion
|
|
20
20
|
export { BaseColorSelectProps, ColorSelect, ColorSelectOption };
|
package/dist/ContentCard.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
2
2
|
import { Card } from "@pixpilot/shadcn";
|
|
3
3
|
import React, { ReactNode } from "react";
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ interface SectionCardProps extends React.ComponentProps<typeof Card> {
|
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
marginBottom?: boolean;
|
|
10
10
|
}
|
|
11
|
-
declare function ContentCard(props: SectionCardProps):
|
|
11
|
+
declare function ContentCard(props: SectionCardProps): react_jsx_runtime2.JSX.Element;
|
|
12
12
|
declare namespace ContentCard {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
package/dist/ContentCard.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Card } from "@pixpilot/shadcn";
|
|
2
2
|
import React, { ReactNode } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime3 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/ContentCard.d.ts
|
|
6
6
|
interface SectionCardProps extends React.ComponentProps<typeof Card> {
|
|
@@ -8,7 +8,7 @@ interface SectionCardProps extends React.ComponentProps<typeof Card> {
|
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
marginBottom?: boolean;
|
|
10
10
|
}
|
|
11
|
-
declare function ContentCard(props: SectionCardProps):
|
|
11
|
+
declare function ContentCard(props: SectionCardProps): react_jsx_runtime3.JSX.Element;
|
|
12
12
|
declare namespace ContentCard {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
package/dist/DatePicker.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime3 from "react/jsx-runtime";
|
|
2
2
|
import { Calendar } from "@pixpilot/shadcn";
|
|
3
3
|
import { ComponentProps } from "react";
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ type DatePickerProps = {
|
|
|
8
8
|
onChange?: (date: Date | undefined) => void;
|
|
9
9
|
placeholder?: string;
|
|
10
10
|
} & Omit<ComponentProps<typeof Calendar>, 'selected' | 'onSelect' | 'mode'>;
|
|
11
|
-
declare function DatePicker(props: DatePickerProps):
|
|
11
|
+
declare function DatePicker(props: DatePickerProps): react_jsx_runtime3.JSX.Element;
|
|
12
12
|
declare namespace DatePicker {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
package/dist/DatePicker.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Calendar } from "@pixpilot/shadcn";
|
|
2
2
|
import { ComponentProps } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime1 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/DatePicker.d.ts
|
|
6
6
|
type DatePickerProps = {
|
|
@@ -8,7 +8,7 @@ type DatePickerProps = {
|
|
|
8
8
|
onChange?: (date: Date | undefined) => void;
|
|
9
9
|
placeholder?: string;
|
|
10
10
|
} & Omit<ComponentProps<typeof Calendar>, 'selected' | 'onSelect' | 'mode'>;
|
|
11
|
-
declare function DatePicker(props: DatePickerProps):
|
|
11
|
+
declare function DatePicker(props: DatePickerProps): react_jsx_runtime1.JSX.Element;
|
|
12
12
|
declare namespace DatePicker {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
package/dist/ScaledPreview.cjs
CHANGED
|
@@ -20,6 +20,7 @@ const ScaledPreview = ({ baseSize = DEFAULT_BASE_SIZE, scaleFactor, previewBoxSi
|
|
|
20
20
|
const finalScale = forceScale ?? calculatedScale;
|
|
21
21
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
22
22
|
...rest,
|
|
23
|
+
"data-slot": "scaled-preview",
|
|
23
24
|
style: {
|
|
24
25
|
width: calculatedPreviewBoxSize.width,
|
|
25
26
|
height: calculatedPreviewBoxSize.height,
|
|
@@ -27,6 +28,7 @@ const ScaledPreview = ({ baseSize = DEFAULT_BASE_SIZE, scaleFactor, previewBoxSi
|
|
|
27
28
|
...rest.style
|
|
28
29
|
},
|
|
29
30
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
31
|
+
"data-slot": "scaled-preview-content",
|
|
30
32
|
className: "absolute top-1/2 left-1/2",
|
|
31
33
|
style: {
|
|
32
34
|
width: baseSize.width,
|
package/dist/ScaledPreview.js
CHANGED
|
@@ -17,6 +17,7 @@ const ScaledPreview = ({ baseSize = DEFAULT_BASE_SIZE, scaleFactor, previewBoxSi
|
|
|
17
17
|
const finalScale = forceScale ?? calculatedScale;
|
|
18
18
|
return /* @__PURE__ */ jsx("div", {
|
|
19
19
|
...rest,
|
|
20
|
+
"data-slot": "scaled-preview",
|
|
20
21
|
style: {
|
|
21
22
|
width: calculatedPreviewBoxSize.width,
|
|
22
23
|
height: calculatedPreviewBoxSize.height,
|
|
@@ -24,6 +25,7 @@ const ScaledPreview = ({ baseSize = DEFAULT_BASE_SIZE, scaleFactor, previewBoxSi
|
|
|
24
25
|
...rest.style
|
|
25
26
|
},
|
|
26
27
|
children: /* @__PURE__ */ jsx("div", {
|
|
28
|
+
"data-slot": "scaled-preview-content",
|
|
27
29
|
className: "absolute top-1/2 left-1/2",
|
|
28
30
|
style: {
|
|
29
31
|
width: baseSize.width,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FileUploadProps } from "./types/index.cjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/file-upload/FileUpload.d.ts
|
|
5
|
-
declare function FileUpload(props: FileUploadProps):
|
|
5
|
+
declare function FileUpload(props: FileUploadProps): react_jsx_runtime6.JSX.Element;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { FileUpload };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FileUploadProps } from "./types/index.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/file-upload/FileUpload.d.ts
|
|
5
|
-
declare function FileUpload(props: FileUploadProps):
|
|
5
|
+
declare function FileUpload(props: FileUploadProps): react_jsx_runtime6.JSX.Element;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { FileUpload };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FileUploadInlineProps } from "./types.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime7 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/file-upload-inline/FileUploadInline.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* FileUploadInline - An inline file upload component using FileUpload primitives
|
|
7
7
|
*/
|
|
8
|
-
declare function FileUploadInline(props: FileUploadInlineProps):
|
|
8
|
+
declare function FileUploadInline(props: FileUploadInlineProps): react_jsx_runtime7.JSX.Element;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { FileUploadInline };
|
package/dist/index.cjs
CHANGED
|
@@ -53,7 +53,12 @@ require('./tabs/index.cjs');
|
|
|
53
53
|
const require_tags_input = require('./tags-input.cjs');
|
|
54
54
|
const require_ThemeProvider = require('./theme-provider/ThemeProvider.cjs');
|
|
55
55
|
require('./theme-provider/index.cjs');
|
|
56
|
-
const
|
|
56
|
+
const require_ThemeModeDropdown = require('./theme-toggle/ThemeModeDropdown.cjs');
|
|
57
|
+
const require_ThemeModeSwitchInside = require('./theme-toggle/ThemeModeSwitchInside.cjs');
|
|
58
|
+
const require_ThemeModeSwitchOutside = require('./theme-toggle/ThemeModeSwitchOutside.cjs');
|
|
59
|
+
const require_ThemeModeToggleButton = require('./theme-toggle/ThemeModeToggleButton.cjs');
|
|
60
|
+
const require_ThemeToggle = require('./theme-toggle/ThemeToggle.cjs');
|
|
61
|
+
require('./theme-toggle/index.cjs');
|
|
57
62
|
const require_toast = require('./toast/toast.cjs');
|
|
58
63
|
require('./toast/index.cjs');
|
|
59
64
|
let __pixpilot_shadcn = require("@pixpilot/shadcn");
|
|
@@ -98,6 +103,10 @@ exports.TabsContext = require_TabsContext.TabsContext;
|
|
|
98
103
|
exports.TabsList = require_TabsList.TabsList;
|
|
99
104
|
exports.TabsTrigger = require_TabsTrigger.TabsTrigger;
|
|
100
105
|
exports.TagsInput = require_tags_input.TagsInput;
|
|
106
|
+
exports.ThemeModeDropdown = require_ThemeModeDropdown.ThemeModeDropdown;
|
|
107
|
+
exports.ThemeModeSwitchInside = require_ThemeModeSwitchInside.ThemeModeSwitchInside;
|
|
108
|
+
exports.ThemeModeSwitchOutside = require_ThemeModeSwitchOutside.ThemeModeSwitchOutside;
|
|
109
|
+
exports.ThemeModeToggleButton = require_ThemeModeToggleButton.ThemeModeToggleButton;
|
|
101
110
|
exports.ThemeProvider = require_ThemeProvider.ThemeProvider;
|
|
102
111
|
exports.ThemeToggle = require_ThemeToggle.ThemeToggle;
|
|
103
112
|
exports.cn = __pixpilot_shadcn.cn;
|
package/dist/index.d.cts
CHANGED
|
@@ -58,8 +58,13 @@ import "./tabs/index.cjs";
|
|
|
58
58
|
import { TagsInput, TagsInputProps } from "./tags-input.cjs";
|
|
59
59
|
import { ThemeProvider, ThemeProviderProps } from "./theme-provider/ThemeProvider.cjs";
|
|
60
60
|
import { useTheme } from "./theme-provider/index.cjs";
|
|
61
|
-
import {
|
|
61
|
+
import { ThemeModeDropdown, ThemeModeDropdownProps } from "./theme-toggle/ThemeModeDropdown.cjs";
|
|
62
|
+
import { ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize } from "./theme-toggle/ThemeModeSwitchInside.cjs";
|
|
63
|
+
import { ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps } from "./theme-toggle/ThemeModeSwitchOutside.cjs";
|
|
64
|
+
import { ThemeModeToggleButton, ThemeModeToggleButtonProps } from "./theme-toggle/ThemeModeToggleButton.cjs";
|
|
65
|
+
import { ThemeToggle, ThemeToggleProps } from "./theme-toggle/ThemeToggle.cjs";
|
|
66
|
+
import "./theme-toggle/index.cjs";
|
|
62
67
|
import { DEFAULT_ALERT_DURATION, ToastMessage, toast, toastError, toastInfo, toastSuccess, toastWarning } from "./toast/toast.cjs";
|
|
63
68
|
import "./toast/index.cjs";
|
|
64
69
|
import { cn } from "@pixpilot/shadcn";
|
|
65
|
-
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, DialogProvider, DialogProviderProps, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoaderProps, LoadingOverlay, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, PopoverCloseButtonProps, PresetColor, RichTextEditor, RichTextEditorProps, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ToastMessage, ToolbarOption, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
|
70
|
+
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, DialogProvider, DialogProviderProps, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoaderProps, LoadingOverlay, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, PopoverCloseButtonProps, PresetColor, RichTextEditor, RichTextEditorProps, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ThemeToggleProps, ToastMessage, ToolbarOption, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
package/dist/index.d.ts
CHANGED
|
@@ -60,8 +60,13 @@ import "./tabs/index.js";
|
|
|
60
60
|
import { TagsInput, TagsInputProps } from "./tags-input.js";
|
|
61
61
|
import { ThemeProvider, ThemeProviderProps } from "./theme-provider/ThemeProvider.js";
|
|
62
62
|
import { useTheme } from "./theme-provider/index.js";
|
|
63
|
-
import {
|
|
63
|
+
import { ThemeModeDropdown, ThemeModeDropdownProps } from "./theme-toggle/ThemeModeDropdown.js";
|
|
64
|
+
import { ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize } from "./theme-toggle/ThemeModeSwitchInside.js";
|
|
65
|
+
import { ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps } from "./theme-toggle/ThemeModeSwitchOutside.js";
|
|
66
|
+
import { ThemeModeToggleButton, ThemeModeToggleButtonProps } from "./theme-toggle/ThemeModeToggleButton.js";
|
|
67
|
+
import { ThemeToggle, ThemeToggleProps } from "./theme-toggle/ThemeToggle.js";
|
|
68
|
+
import "./theme-toggle/index.js";
|
|
64
69
|
import { DEFAULT_ALERT_DURATION, ToastMessage, toast, toastError, toastInfo, toastSuccess, toastWarning } from "./toast/toast.js";
|
|
65
70
|
import "./toast/index.js";
|
|
66
71
|
import { cn } from "@pixpilot/shadcn";
|
|
67
|
-
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, DialogProvider, DialogProviderProps, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoaderProps, LoadingOverlay, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, PopoverCloseButtonProps, PresetColor, RichTextEditor, RichTextEditorProps, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ToastMessage, ToolbarOption, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
|
72
|
+
export { AbsoluteFill, Alert, AlertBaseProps, AlertProps, AlertVariant, AvatarUpload, AvatarUploadProps, BaseTabsTriggerProps, Button, ButtonLoaderProps, ButtonProps, CircleLoader, CircleLoaderProps, CloseButtonAbsolute, CloseButtonRounded, CloseButtonRoundedProps, ColorPicker, ColorPickerBase, ColorPickerBaseProps, ColorPickerBaseSection, ColorPickerProps, ColorSelect, ColorSelectOption, BaseColorSelectProps as ColorSelectProps, Combobox, ConfirmationDialogProps, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DatePickerProps, DialogProvider, DialogProviderProps, type FileMetadata, FileUpload, FileUploadBaseProps, FileUploadInline, FileUploadInlineBaseProps, FileUploadInlineProps, type FileUploadProgressCallBacks, type FileUploadProps, IconPicker, IconPickerProps, IconPickerVariant, IconProvider, IconProviderLoader, IconProviderProps, Input, InputProps, Layout, LayoutFooter, LayoutFooterProps, LayoutHeader, LayoutHeaderProps, LayoutMain, LayoutMainProps, LayoutProps, LoaderProps, LoadingOverlay, MultiFileUploadProps, OnChangeMultipleFiles, OnChangeSingleFile, Pagination, PaginationProps, PopoverCloseButtonProps, PresetColor, RichTextEditor, RichTextEditorProps, ScaledPreview, ScaledPreviewProps, ScaledPreviewSize, Select, SelectOption, SingleFileUploadProps, Slider, SliderInput, SliderInputProps, SliderProps, SliderSelect, SliderSelectOption, SliderSelectProps, SliderSelectValue, Tabs, TabsContent, TabsContext, TabsContextValue, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TabsVariant, TagsInput, TagsInputProps, ThemeModeDropdown, ThemeModeDropdownProps, ThemeModeSwitchInside, ThemeModeSwitchInsideProps, ThemeModeSwitchInsideSize, ThemeModeSwitchOutside, ThemeModeSwitchOutsideProps, ThemeModeToggleButton, ThemeModeToggleButtonProps, ThemeProvider, ThemeProviderProps, ThemeToggle, ThemeToggleProps, ToastMessage, ToolbarOption, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -54,9 +54,14 @@ import "./tabs/index.js";
|
|
|
54
54
|
import { TagsInput } from "./tags-input.js";
|
|
55
55
|
import { ThemeProvider } from "./theme-provider/ThemeProvider.js";
|
|
56
56
|
import { useTheme } from "./theme-provider/index.js";
|
|
57
|
-
import {
|
|
57
|
+
import { ThemeModeDropdown } from "./theme-toggle/ThemeModeDropdown.js";
|
|
58
|
+
import { ThemeModeSwitchInside } from "./theme-toggle/ThemeModeSwitchInside.js";
|
|
59
|
+
import { ThemeModeSwitchOutside } from "./theme-toggle/ThemeModeSwitchOutside.js";
|
|
60
|
+
import { ThemeModeToggleButton } from "./theme-toggle/ThemeModeToggleButton.js";
|
|
61
|
+
import { ThemeToggle } from "./theme-toggle/ThemeToggle.js";
|
|
62
|
+
import "./theme-toggle/index.js";
|
|
58
63
|
import { DEFAULT_ALERT_DURATION, toast, toastError, toastInfo, toastSuccess, toastWarning } from "./toast/toast.js";
|
|
59
64
|
import "./toast/index.js";
|
|
60
65
|
import { cn } from "@pixpilot/shadcn";
|
|
61
66
|
|
|
62
|
-
export { AbsoluteFill, Alert, AvatarUpload, Button, CircleLoader, CloseButtonAbsolute, CloseButtonRounded, ColorPicker, ColorPickerBase, ColorSelect, Combobox, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, FileUpload, FileUploadInline, IconPicker, Input, Layout, LayoutFooter, LayoutHeader, LayoutMain, LoadingOverlay, Pagination, RichTextEditor, ScaledPreview, Select, Slider, SliderInput, SliderSelect, Tabs, TabsContent, TabsContext, TabsList, TabsTrigger, TagsInput, ThemeProvider, ThemeToggle, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
|
67
|
+
export { AbsoluteFill, Alert, AvatarUpload, Button, CircleLoader, CloseButtonAbsolute, CloseButtonRounded, ColorPicker, ColorPickerBase, ColorSelect, Combobox, ContentCard, DEFAULT_ALERT_DURATION, DatePicker, DialogProvider, FileUpload, FileUploadInline, IconPicker, Input, Layout, LayoutFooter, LayoutHeader, LayoutMain, LoadingOverlay, Pagination, RichTextEditor, ScaledPreview, Select, Slider, SliderInput, SliderSelect, Tabs, TabsContent, TabsContext, TabsList, TabsTrigger, TagsInput, ThemeModeDropdown, ThemeModeSwitchInside, ThemeModeSwitchOutside, ThemeModeToggleButton, ThemeProvider, ThemeToggle, cn, showConfirmDialog, toast, toastError, toastInfo, toastSuccess, toastWarning, useMediaQuery, useSelectKeyboard, useTabsContext, useTheme };
|
package/dist/input/Input.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InputProps } from "@pixpilot/shadcn";
|
|
2
2
|
import * as React$1 from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime8 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/input/Input.d.ts
|
|
6
6
|
type InputProps$1 = InputProps & {
|
|
@@ -10,6 +10,6 @@ type InputProps$1 = InputProps & {
|
|
|
10
10
|
prefixClassName?: string;
|
|
11
11
|
suffixClassName?: string;
|
|
12
12
|
};
|
|
13
|
-
declare function Input$1(props: InputProps$1):
|
|
13
|
+
declare function Input$1(props: InputProps$1): react_jsx_runtime8.JSX.Element;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { Input$1 as Input, InputProps$1 as InputProps };
|
package/dist/layout/Layout.cjs
CHANGED
|
@@ -9,6 +9,7 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
9
9
|
//#region src/layout/Layout.tsx
|
|
10
10
|
const Layout = react.default.forwardRef(({ className, as: Component = "div",...props }, ref) => {
|
|
11
11
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
12
|
+
"data-slot": "layout",
|
|
12
13
|
ref,
|
|
13
14
|
className: (0, __pixpilot_shadcn.cn)("flex w-full flex-col overflow-hidden", "h-dvh", "max-h-full", className),
|
|
14
15
|
...props
|
package/dist/layout/Layout.js
CHANGED
|
@@ -5,6 +5,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
5
5
|
//#region src/layout/Layout.tsx
|
|
6
6
|
const Layout = React.forwardRef(({ className, as: Component = "div",...props }, ref) => {
|
|
7
7
|
return /* @__PURE__ */ jsx(Component, {
|
|
8
|
+
"data-slot": "layout",
|
|
8
9
|
ref,
|
|
9
10
|
className: cn("flex w-full flex-col overflow-hidden", "h-dvh", "max-h-full", className),
|
|
10
11
|
...props
|
|
@@ -8,6 +8,7 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
8
8
|
|
|
9
9
|
//#region src/layout/LayoutFooter.tsx
|
|
10
10
|
const LayoutFooter = react.default.forwardRef(({ className, as: Component = "div",...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
11
|
+
"data-slot": "layout-footer",
|
|
11
12
|
...props,
|
|
12
13
|
className: (0, __pixpilot_shadcn.cn)(className),
|
|
13
14
|
ref
|
|
@@ -4,6 +4,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
4
4
|
|
|
5
5
|
//#region src/layout/LayoutFooter.tsx
|
|
6
6
|
const LayoutFooter = React.forwardRef(({ className, as: Component = "div",...props }, ref) => /* @__PURE__ */ jsx(Component, {
|
|
7
|
+
"data-slot": "layout-footer",
|
|
7
8
|
...props,
|
|
8
9
|
className: cn(className),
|
|
9
10
|
ref
|
|
@@ -8,6 +8,7 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
8
8
|
|
|
9
9
|
//#region src/layout/LayoutHeader.tsx
|
|
10
10
|
const LayoutHeader = react.default.forwardRef(({ className, as: Component = "div",...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
11
|
+
"data-slot": "layout-header",
|
|
11
12
|
...props,
|
|
12
13
|
className: (0, __pixpilot_shadcn.cn)(className),
|
|
13
14
|
ref
|
|
@@ -4,6 +4,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
4
4
|
|
|
5
5
|
//#region src/layout/LayoutHeader.tsx
|
|
6
6
|
const LayoutHeader = React.forwardRef(({ className, as: Component = "div",...props }, ref) => /* @__PURE__ */ jsx(Component, {
|
|
7
|
+
"data-slot": "layout-header",
|
|
7
8
|
...props,
|
|
8
9
|
className: cn(className),
|
|
9
10
|
ref
|
|
@@ -9,6 +9,7 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
9
9
|
//#region src/layout/LayoutMain.tsx
|
|
10
10
|
const LayoutMain = react.default.forwardRef(({ autoScroll = true, className, as: Component = "div",...props }, ref) => {
|
|
11
11
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
12
|
+
"data-slot": "layout-main",
|
|
12
13
|
ref,
|
|
13
14
|
className: (0, __pixpilot_shadcn.cn)("flex-1", { "overflow-auto": autoScroll }, className),
|
|
14
15
|
...props
|
|
@@ -5,6 +5,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
5
5
|
//#region src/layout/LayoutMain.tsx
|
|
6
6
|
const LayoutMain = React.forwardRef(({ autoScroll = true, className, as: Component = "div",...props }, ref) => {
|
|
7
7
|
return /* @__PURE__ */ jsx(Component, {
|
|
8
|
+
"data-slot": "layout-main",
|
|
8
9
|
ref,
|
|
9
10
|
className: cn("flex-1", { "overflow-auto": autoScroll }, className),
|
|
10
11
|
...props
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ThemeProvider as ThemeProvider$1, ThemeProviderProps } from "./ThemeProvider.js";
|
|
2
|
-
import { useTheme
|
|
3
|
-
export { useTheme
|
|
2
|
+
import { useTheme } from "next-themes";
|
|
3
|
+
export { useTheme };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
5
|
+
let __pixpilot_shadcn = require("@pixpilot/shadcn");
|
|
6
|
+
__pixpilot_shadcn = require_rolldown_runtime.__toESM(__pixpilot_shadcn);
|
|
7
|
+
let lucide_react = require("lucide-react");
|
|
8
|
+
lucide_react = require_rolldown_runtime.__toESM(lucide_react);
|
|
9
|
+
let react = require("react");
|
|
10
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
11
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
12
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
13
|
+
|
|
14
|
+
//#region src/theme-toggle/ThemeModeDropdown.tsx
|
|
15
|
+
/**
|
|
16
|
+
* Theme mode selector dropdown.
|
|
17
|
+
* Provides Light / Dark / System options.
|
|
18
|
+
* Pure component - requires theme and setTheme props.
|
|
19
|
+
*/
|
|
20
|
+
function ThemeModeDropdown(props) {
|
|
21
|
+
const { align = "end", className, theme, setTheme, resolvedTheme, disabled } = props;
|
|
22
|
+
const isDark = resolvedTheme === "dark";
|
|
23
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.DropdownMenu, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(__pixpilot_shadcn.DropdownMenuTrigger, {
|
|
24
|
+
asChild: true,
|
|
25
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.Button, {
|
|
26
|
+
variant: "outline",
|
|
27
|
+
size: "icon",
|
|
28
|
+
className: (0, __pixpilot_shadcn.cn)(className),
|
|
29
|
+
disabled,
|
|
30
|
+
children: [
|
|
31
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Sun, { className: (0, __pixpilot_shadcn.cn)("h-[1.2rem] w-[1.2rem] transition-all", isDark ? "scale-0 -rotate-90" : "scale-100 rotate-0") }),
|
|
32
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Moon, { className: (0, __pixpilot_shadcn.cn)("absolute h-[1.2rem] w-[1.2rem] transition-all", isDark ? "scale-100 rotate-0" : "scale-0 rotate-90") }),
|
|
33
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
34
|
+
className: "sr-only",
|
|
35
|
+
children: "Toggle theme"
|
|
36
|
+
})
|
|
37
|
+
]
|
|
38
|
+
})
|
|
39
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.DropdownMenuContent, {
|
|
40
|
+
align,
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.DropdownMenuItem, {
|
|
43
|
+
onClick: () => setTheme?.("light"),
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Sun, { className: "h-4 w-4 mr-2" }),
|
|
46
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47
|
+
className: "flex-1",
|
|
48
|
+
children: "Light"
|
|
49
|
+
}),
|
|
50
|
+
theme === "light" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, { className: "h-4 w-4 ml-2" })
|
|
51
|
+
]
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.DropdownMenuItem, {
|
|
54
|
+
onClick: () => setTheme?.("dark"),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Moon, { className: "h-4 w-4 mr-2" }),
|
|
57
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
58
|
+
className: "flex-1",
|
|
59
|
+
children: "Dark"
|
|
60
|
+
}),
|
|
61
|
+
theme === "dark" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, { className: "h-4 w-4 ml-2" })
|
|
62
|
+
]
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__pixpilot_shadcn.DropdownMenuItem, {
|
|
65
|
+
onClick: () => setTheme?.("system"),
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Monitor, { className: "h-4 w-4 mr-2" }),
|
|
68
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
69
|
+
className: "flex-1",
|
|
70
|
+
children: "System"
|
|
71
|
+
}),
|
|
72
|
+
theme === "system" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, { className: "h-4 w-4 ml-2" })
|
|
73
|
+
]
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
})] });
|
|
77
|
+
}
|
|
78
|
+
ThemeModeDropdown.displayName = "ThemeModeDropdown";
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
81
|
+
exports.ThemeModeDropdown = ThemeModeDropdown;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as react_jsx_runtime10 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/theme-toggle/ThemeModeDropdown.d.ts
|
|
4
|
+
interface ThemeModeDropdownProps {
|
|
5
|
+
align?: 'start' | 'center' | 'end';
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Current theme value ("light" | "dark" | "system") */
|
|
8
|
+
theme?: string;
|
|
9
|
+
/** Function to change the theme */
|
|
10
|
+
setTheme?: (theme: string) => void;
|
|
11
|
+
/** The resolved theme ("light" | "dark") */
|
|
12
|
+
resolvedTheme?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Theme mode selector dropdown.
|
|
17
|
+
* Provides Light / Dark / System options.
|
|
18
|
+
* Pure component - requires theme and setTheme props.
|
|
19
|
+
*/
|
|
20
|
+
declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime10.JSX.Element;
|
|
21
|
+
declare namespace ThemeModeDropdown {
|
|
22
|
+
var displayName: string;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ThemeModeDropdown, ThemeModeDropdownProps };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as react_jsx_runtime9 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/theme-toggle/ThemeModeDropdown.d.ts
|
|
4
|
+
interface ThemeModeDropdownProps {
|
|
5
|
+
align?: 'start' | 'center' | 'end';
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Current theme value ("light" | "dark" | "system") */
|
|
8
|
+
theme?: string;
|
|
9
|
+
/** Function to change the theme */
|
|
10
|
+
setTheme?: (theme: string) => void;
|
|
11
|
+
/** The resolved theme ("light" | "dark") */
|
|
12
|
+
resolvedTheme?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Theme mode selector dropdown.
|
|
17
|
+
* Provides Light / Dark / System options.
|
|
18
|
+
* Pure component - requires theme and setTheme props.
|
|
19
|
+
*/
|
|
20
|
+
declare function ThemeModeDropdown(props: ThemeModeDropdownProps): react_jsx_runtime9.JSX.Element;
|
|
21
|
+
declare namespace ThemeModeDropdown {
|
|
22
|
+
var displayName: string;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ThemeModeDropdown, ThemeModeDropdownProps };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, cn } from "@pixpilot/shadcn";
|
|
5
|
+
import { Check, Monitor, Moon, Sun } from "lucide-react";
|
|
6
|
+
import React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
|
|
9
|
+
//#region src/theme-toggle/ThemeModeDropdown.tsx
|
|
10
|
+
/**
|
|
11
|
+
* Theme mode selector dropdown.
|
|
12
|
+
* Provides Light / Dark / System options.
|
|
13
|
+
* Pure component - requires theme and setTheme props.
|
|
14
|
+
*/
|
|
15
|
+
function ThemeModeDropdown(props) {
|
|
16
|
+
const { align = "end", className, theme, setTheme, resolvedTheme, disabled } = props;
|
|
17
|
+
const isDark = resolvedTheme === "dark";
|
|
18
|
+
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
19
|
+
asChild: true,
|
|
20
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
21
|
+
variant: "outline",
|
|
22
|
+
size: "icon",
|
|
23
|
+
className: cn(className),
|
|
24
|
+
disabled,
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ jsx(Sun, { className: cn("h-[1.2rem] w-[1.2rem] transition-all", isDark ? "scale-0 -rotate-90" : "scale-100 rotate-0") }),
|
|
27
|
+
/* @__PURE__ */ jsx(Moon, { className: cn("absolute h-[1.2rem] w-[1.2rem] transition-all", isDark ? "scale-100 rotate-0" : "scale-0 rotate-90") }),
|
|
28
|
+
/* @__PURE__ */ jsx("span", {
|
|
29
|
+
className: "sr-only",
|
|
30
|
+
children: "Toggle theme"
|
|
31
|
+
})
|
|
32
|
+
]
|
|
33
|
+
})
|
|
34
|
+
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
35
|
+
align,
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
38
|
+
onClick: () => setTheme?.("light"),
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ jsx(Sun, { className: "h-4 w-4 mr-2" }),
|
|
41
|
+
/* @__PURE__ */ jsx("span", {
|
|
42
|
+
className: "flex-1",
|
|
43
|
+
children: "Light"
|
|
44
|
+
}),
|
|
45
|
+
theme === "light" && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 ml-2" })
|
|
46
|
+
]
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
49
|
+
onClick: () => setTheme?.("dark"),
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsx(Moon, { className: "h-4 w-4 mr-2" }),
|
|
52
|
+
/* @__PURE__ */ jsx("span", {
|
|
53
|
+
className: "flex-1",
|
|
54
|
+
children: "Dark"
|
|
55
|
+
}),
|
|
56
|
+
theme === "dark" && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 ml-2" })
|
|
57
|
+
]
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
60
|
+
onClick: () => setTheme?.("system"),
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Monitor, { className: "h-4 w-4 mr-2" }),
|
|
63
|
+
/* @__PURE__ */ jsx("span", {
|
|
64
|
+
className: "flex-1",
|
|
65
|
+
children: "System"
|
|
66
|
+
}),
|
|
67
|
+
theme === "system" && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 ml-2" })
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
]
|
|
71
|
+
})] });
|
|
72
|
+
}
|
|
73
|
+
ThemeModeDropdown.displayName = "ThemeModeDropdown";
|
|
74
|
+
|
|
75
|
+
//#endregion
|
|
76
|
+
export { ThemeModeDropdown };
|