@vritti/quantum-ui 0.2.7 → 0.2.8
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/Avatar.js +219 -0
- package/dist/Avatar.js.map +1 -0
- package/dist/Badge.js +32 -0
- package/dist/Badge.js.map +1 -0
- package/dist/Button2.js +2 -2
- package/dist/Chart.js +19003 -0
- package/dist/Chart.js.map +1 -0
- package/dist/Checkbox.js +6 -26
- package/dist/Checkbox.js.map +1 -1
- package/dist/Combination.js +3868 -0
- package/dist/Combination.js.map +1 -0
- package/dist/DatePicker.js +15 -3877
- package/dist/DatePicker.js.map +1 -1
- package/dist/DropdownMenu.js +1591 -0
- package/dist/DropdownMenu.js.map +1 -0
- package/dist/Form.js +7 -4
- package/dist/Form.js.map +1 -1
- package/dist/Label.js +1 -1
- package/dist/OTPField.js +16 -5
- package/dist/OTPField.js.map +1 -1
- package/dist/PhoneField.js +14 -6
- package/dist/PhoneField.js.map +1 -1
- package/dist/Progress.js +116 -0
- package/dist/Progress.js.map +1 -0
- package/dist/Separator.js +6 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Spinner.js +1 -9
- package/dist/Spinner.js.map +1 -1
- package/dist/Switch.js +210 -0
- package/dist/Switch.js.map +1 -0
- package/dist/ThemeContext.js +57 -0
- package/dist/ThemeContext.js.map +1 -0
- package/dist/ThemeToggle.js +4 -15
- package/dist/ThemeToggle.js.map +1 -1
- package/dist/Toggle.js +69 -0
- package/dist/Toggle.js.map +1 -0
- package/dist/_commonjsHelpers.js +6 -0
- package/dist/_commonjsHelpers.js.map +1 -0
- package/dist/assets/quantum-ui.css +18 -0
- package/dist/axios.js.map +1 -1
- package/dist/check.js +15 -0
- package/dist/check.js.map +1 -0
- package/dist/components/Avatar.js +2 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.js +2 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Chart.js +2 -0
- package/dist/components/Chart.js.map +1 -0
- package/dist/components/DropdownMenu.js +2 -0
- package/dist/components/DropdownMenu.js.map +1 -0
- package/dist/components/Progress.js +1 -174
- package/dist/components/Progress.js.map +1 -1
- package/dist/components/Separator.js +2 -0
- package/dist/components/Separator.js.map +1 -0
- package/dist/components/Switch.js +2 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/Toggle.js +2 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/field.js +2 -49
- package/dist/field.js.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/index10.js +105 -0
- package/dist/index10.js.map +1 -0
- package/dist/index11.js +101 -0
- package/dist/index11.js.map +1 -0
- package/dist/index12.js +205 -0
- package/dist/index12.js.map +1 -0
- package/dist/index13.js +199 -0
- package/dist/index13.js.map +1 -0
- package/dist/index2.js +55 -130
- package/dist/index2.js.map +1 -1
- package/dist/index3.js +10 -42
- package/dist/index3.js.map +1 -1
- package/dist/index4.js +125 -35
- package/dist/index4.js.map +1 -1
- package/dist/index5.js +26 -414
- package/dist/index5.js.map +1 -1
- package/dist/index6.js +8 -0
- package/dist/index6.js.map +1 -0
- package/dist/index7.js +16 -0
- package/dist/index7.js.map +1 -0
- package/dist/index8.js +45 -0
- package/dist/index8.js.map +1 -0
- package/dist/index9.js +41 -0
- package/dist/index9.js.map +1 -0
- package/dist/lib/components/Avatar/Avatar.d.ts +8 -0
- package/dist/lib/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/lib/components/Avatar/index.d.ts +2 -0
- package/dist/lib/components/Avatar/index.d.ts.map +1 -0
- package/dist/lib/components/Badge/Badge.d.ts +5 -0
- package/dist/lib/components/Badge/Badge.d.ts.map +1 -0
- package/dist/lib/components/Badge/index.d.ts +3 -0
- package/dist/lib/components/Badge/index.d.ts.map +1 -0
- package/dist/lib/components/Button/index.d.ts +1 -1
- package/dist/lib/components/Button/index.d.ts.map +1 -1
- package/dist/lib/components/Chart/Chart.d.ts +13 -0
- package/dist/lib/components/Chart/Chart.d.ts.map +1 -0
- package/dist/lib/components/Chart/index.d.ts +3 -0
- package/dist/lib/components/Chart/index.d.ts.map +1 -0
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts +28 -0
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/dist/lib/components/DropdownMenu/index.d.ts +3 -0
- package/dist/lib/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/lib/components/DropdownMenu/types.d.ts +72 -0
- package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -0
- package/dist/lib/components/Form/Form.d.ts.map +1 -1
- package/dist/lib/components/OTPField/OTPField.d.ts.map +1 -1
- package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
- package/dist/lib/components/Separator/Separator.d.ts +3 -0
- package/dist/lib/components/Separator/Separator.d.ts.map +1 -0
- package/dist/lib/components/Separator/index.d.ts +2 -0
- package/dist/lib/components/Separator/index.d.ts.map +1 -0
- package/dist/lib/components/Switch/Switch.d.ts +9 -0
- package/dist/lib/components/Switch/Switch.d.ts.map +1 -0
- package/dist/lib/components/Switch/index.d.ts +3 -0
- package/dist/lib/components/Switch/index.d.ts.map +1 -0
- package/dist/lib/components/ThemeToggle/ThemeToggle.d.ts.map +1 -1
- package/dist/lib/components/Toggle/Toggle.d.ts +7 -0
- package/dist/lib/components/Toggle/Toggle.d.ts.map +1 -0
- package/dist/lib/components/Toggle/index.d.ts +2 -0
- package/dist/lib/components/Toggle/index.d.ts.map +1 -0
- package/dist/lib/components/index.d.ts +8 -0
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/context/ThemeContext.d.ts +18 -0
- package/dist/lib/context/ThemeContext.d.ts.map +1 -0
- package/dist/lib/context/index.d.ts +2 -0
- package/dist/lib/context/index.d.ts.map +1 -0
- package/dist/lib/hooks/index.d.ts +2 -0
- package/dist/lib/hooks/index.d.ts.map +1 -0
- package/dist/lib/hooks/useTheme.d.ts +8 -0
- package/dist/lib/hooks/useTheme.d.ts.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/theme/index.d.ts +13 -0
- package/dist/lib/theme/index.d.ts.map +1 -0
- package/dist/lib/utils/axios.d.ts +1 -0
- package/dist/lib/utils/axios.d.ts.map +1 -1
- package/dist/lib/utils/formHelpers.d.ts.map +1 -1
- package/dist/separator2.js +53 -0
- package/dist/separator2.js.map +1 -0
- package/dist/shadcn/index.d.ts +1 -1
- package/dist/shadcn/index.d.ts.map +1 -1
- package/dist/shadcn/shadcnAvatar/Avatar.d.ts +12 -0
- package/dist/shadcn/shadcnAvatar/Avatar.d.ts.map +1 -0
- package/dist/shadcn/shadcnAvatar/index.d.ts +2 -0
- package/dist/shadcn/shadcnAvatar/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnBadge/Badge.d.ts +11 -0
- package/dist/shadcn/shadcnBadge/Badge.d.ts.map +1 -0
- package/dist/shadcn/shadcnBadge/index.d.ts +3 -0
- package/dist/shadcn/shadcnBadge/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnButton/Button.d.ts +1 -1
- package/dist/shadcn/shadcnChart/Chart.d.ts +58 -0
- package/dist/shadcn/shadcnChart/Chart.d.ts.map +1 -0
- package/dist/shadcn/shadcnChart/index.d.ts +3 -0
- package/dist/shadcn/shadcnChart/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSpinner/Spinner.d.ts.map +1 -1
- package/dist/shadcn/shadcnSwitch/Switch.d.ts +7 -0
- package/dist/shadcn/shadcnSwitch/Switch.d.ts.map +1 -0
- package/dist/shadcn/shadcnSwitch/index.d.ts +2 -0
- package/dist/shadcn/shadcnSwitch/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnToggle/Toggle.d.ts +10 -0
- package/dist/shadcn/shadcnToggle/Toggle.d.ts.map +1 -0
- package/dist/shadcn/shadcnToggle/index.d.ts +2 -0
- package/dist/shadcn/shadcnToggle/index.d.ts.map +1 -0
- package/dist/theme/index.js +11 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/useTheme.js +15 -0
- package/dist/useTheme.js.map +1 -0
- package/package.json +45 -1
package/dist/Progress.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { c as createContextScope } from './index2.js';
|
|
4
|
+
import { P as Primitive } from './index9.js';
|
|
5
|
+
import { c as cn } from './utils.js';
|
|
6
|
+
|
|
7
|
+
var PROGRESS_NAME = "Progress";
|
|
8
|
+
var DEFAULT_MAX = 100;
|
|
9
|
+
var [createProgressContext] = createContextScope(PROGRESS_NAME);
|
|
10
|
+
var [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);
|
|
11
|
+
var Progress$2 = React.forwardRef(
|
|
12
|
+
(props, forwardedRef) => {
|
|
13
|
+
const {
|
|
14
|
+
__scopeProgress,
|
|
15
|
+
value: valueProp = null,
|
|
16
|
+
max: maxProp,
|
|
17
|
+
getValueLabel = defaultGetValueLabel,
|
|
18
|
+
...progressProps
|
|
19
|
+
} = props;
|
|
20
|
+
if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {
|
|
21
|
+
console.error(getInvalidMaxError(`${maxProp}`, "Progress"));
|
|
22
|
+
}
|
|
23
|
+
const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;
|
|
24
|
+
if (valueProp !== null && !isValidValueNumber(valueProp, max)) {
|
|
25
|
+
console.error(getInvalidValueError(`${valueProp}`, "Progress"));
|
|
26
|
+
}
|
|
27
|
+
const value = isValidValueNumber(valueProp, max) ? valueProp : null;
|
|
28
|
+
const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;
|
|
29
|
+
return /* @__PURE__ */ jsx(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ jsx(
|
|
30
|
+
Primitive.div,
|
|
31
|
+
{
|
|
32
|
+
"aria-valuemax": max,
|
|
33
|
+
"aria-valuemin": 0,
|
|
34
|
+
"aria-valuenow": isNumber(value) ? value : void 0,
|
|
35
|
+
"aria-valuetext": valueLabel,
|
|
36
|
+
role: "progressbar",
|
|
37
|
+
"data-state": getProgressState(value, max),
|
|
38
|
+
"data-value": value ?? void 0,
|
|
39
|
+
"data-max": max,
|
|
40
|
+
...progressProps,
|
|
41
|
+
ref: forwardedRef
|
|
42
|
+
}
|
|
43
|
+
) });
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
Progress$2.displayName = PROGRESS_NAME;
|
|
47
|
+
var INDICATOR_NAME = "ProgressIndicator";
|
|
48
|
+
var ProgressIndicator = React.forwardRef(
|
|
49
|
+
(props, forwardedRef) => {
|
|
50
|
+
const { __scopeProgress, ...indicatorProps } = props;
|
|
51
|
+
const context = useProgressContext(INDICATOR_NAME, __scopeProgress);
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
Primitive.div,
|
|
54
|
+
{
|
|
55
|
+
"data-state": getProgressState(context.value, context.max),
|
|
56
|
+
"data-value": context.value ?? void 0,
|
|
57
|
+
"data-max": context.max,
|
|
58
|
+
...indicatorProps,
|
|
59
|
+
ref: forwardedRef
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
ProgressIndicator.displayName = INDICATOR_NAME;
|
|
65
|
+
function defaultGetValueLabel(value, max) {
|
|
66
|
+
return `${Math.round(value / max * 100)}%`;
|
|
67
|
+
}
|
|
68
|
+
function getProgressState(value, maxValue) {
|
|
69
|
+
return value == null ? "indeterminate" : value === maxValue ? "complete" : "loading";
|
|
70
|
+
}
|
|
71
|
+
function isNumber(value) {
|
|
72
|
+
return typeof value === "number";
|
|
73
|
+
}
|
|
74
|
+
function isValidMaxNumber(max) {
|
|
75
|
+
return isNumber(max) && !isNaN(max) && max > 0;
|
|
76
|
+
}
|
|
77
|
+
function isValidValueNumber(value, max) {
|
|
78
|
+
return isNumber(value) && !isNaN(value) && value <= max && value >= 0;
|
|
79
|
+
}
|
|
80
|
+
function getInvalidMaxError(propValue, componentName) {
|
|
81
|
+
return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${DEFAULT_MAX}\`.`;
|
|
82
|
+
}
|
|
83
|
+
function getInvalidValueError(propValue, componentName) {
|
|
84
|
+
return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be:
|
|
85
|
+
- a positive number
|
|
86
|
+
- less than the value passed to \`max\` (or ${DEFAULT_MAX} if no \`max\` prop is set)
|
|
87
|
+
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
88
|
+
|
|
89
|
+
Defaulting to \`null\`.`;
|
|
90
|
+
}
|
|
91
|
+
var Root = Progress$2;
|
|
92
|
+
var Indicator = ProgressIndicator;
|
|
93
|
+
|
|
94
|
+
const Progress$1 = React.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
95
|
+
Root,
|
|
96
|
+
{
|
|
97
|
+
ref,
|
|
98
|
+
"data-slot": "progress",
|
|
99
|
+
className: cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className),
|
|
100
|
+
...props,
|
|
101
|
+
children: /* @__PURE__ */ jsx(
|
|
102
|
+
Indicator,
|
|
103
|
+
{
|
|
104
|
+
"data-slot": "progress-indicator",
|
|
105
|
+
className: "bg-primary h-full w-full flex-1 transition-all",
|
|
106
|
+
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
107
|
+
}
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
));
|
|
111
|
+
Progress$1.displayName = Root.displayName;
|
|
112
|
+
|
|
113
|
+
const Progress = Progress$1;
|
|
114
|
+
|
|
115
|
+
export { Progress as P };
|
|
116
|
+
//# sourceMappingURL=Progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Progress.js","sources":["../node_modules/.pnpm/@radix-ui+react-progress@1.1.8_@types+react-dom@19.2.3_@types+react@19.2.9__@types+reac_f510cdfcbddd733ee422ca097120c019/node_modules/@radix-ui/react-progress/dist/index.mjs","../shadcn/shadcnProgress/Progress.tsx","../lib/components/Progress/Progress.tsx"],"sourcesContent":["\"use client\";\n\n// src/progress.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PROGRESS_NAME = \"Progress\";\nvar DEFAULT_MAX = 100;\nvar [createProgressContext, createProgressScope] = createContextScope(PROGRESS_NAME);\nvar [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);\nvar Progress = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeProgress,\n value: valueProp = null,\n max: maxProp,\n getValueLabel = defaultGetValueLabel,\n ...progressProps\n } = props;\n if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {\n console.error(getInvalidMaxError(`${maxProp}`, \"Progress\"));\n }\n const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;\n if (valueProp !== null && !isValidValueNumber(valueProp, max)) {\n console.error(getInvalidValueError(`${valueProp}`, \"Progress\"));\n }\n const value = isValidValueNumber(valueProp, max) ? valueProp : null;\n const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;\n return /* @__PURE__ */ jsx(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-valuemax\": max,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": isNumber(value) ? value : void 0,\n \"aria-valuetext\": valueLabel,\n role: \"progressbar\",\n \"data-state\": getProgressState(value, max),\n \"data-value\": value ?? void 0,\n \"data-max\": max,\n ...progressProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nProgress.displayName = PROGRESS_NAME;\nvar INDICATOR_NAME = \"ProgressIndicator\";\nvar ProgressIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeProgress, ...indicatorProps } = props;\n const context = useProgressContext(INDICATOR_NAME, __scopeProgress);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getProgressState(context.value, context.max),\n \"data-value\": context.value ?? void 0,\n \"data-max\": context.max,\n ...indicatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nProgressIndicator.displayName = INDICATOR_NAME;\nfunction defaultGetValueLabel(value, max) {\n return `${Math.round(value / max * 100)}%`;\n}\nfunction getProgressState(value, maxValue) {\n return value == null ? \"indeterminate\" : value === maxValue ? \"complete\" : \"loading\";\n}\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isValidMaxNumber(max) {\n return isNumber(max) && !isNaN(max) && max > 0;\n}\nfunction isValidValueNumber(value, max) {\n return isNumber(value) && !isNaN(value) && value <= max && value >= 0;\n}\nfunction getInvalidMaxError(propValue, componentName) {\n return `Invalid prop \\`max\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. Only numbers greater than 0 are valid max values. Defaulting to \\`${DEFAULT_MAX}\\`.`;\n}\nfunction getInvalidValueError(propValue, componentName) {\n return `Invalid prop \\`value\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. The \\`value\\` prop must be:\n - a positive number\n - less than the value passed to \\`max\\` (or ${DEFAULT_MAX} if no \\`max\\` prop is set)\n - \\`null\\` or \\`undefined\\` if the progress is indeterminate.\n\nDefaulting to \\`null\\`.`;\n}\nvar Root = Progress;\nvar Indicator = ProgressIndicator;\nexport {\n Indicator,\n Progress,\n ProgressIndicator,\n Root,\n createProgressScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\nimport * as React from 'react';\n\nimport { cn } from '../utils';\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n data-slot=\"progress\"\n className={cn('bg-primary/20 relative h-2 w-full overflow-hidden rounded-full', className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\n\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","import { Progress as ShadcnProgress } from '../../../shadcn/shadcnProgress/Progress';\n\nexport const Progress = ShadcnProgress;\n"],"names":["Progress","ProgressPrimitive.Root","ProgressPrimitive.Indicator","ShadcnProgress"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Separator.js","sources":["../lib/components/Separator/Separator.tsx"],"sourcesContent":["import { Separator as ShadcnSeparator } from '../../../shadcn/shadcnSeparator';\n\n/**\n * Separator component for visually or semantically separating content.\n *\n * @example\n * ```tsx\n * <Separator />\n * <Separator orientation=\"vertical\" />\n * ```\n */\nexport const Separator = ShadcnSeparator;\n"],"names":["ShadcnSeparator"],"mappings":";;AAWO,MAAM,SAAA,GAAYA;;;;"}
|
package/dist/Spinner.js
CHANGED
|
@@ -3,15 +3,7 @@ import { c as cn } from './utils.js';
|
|
|
3
3
|
import { L as LoaderCircle } from './loader-circle.js';
|
|
4
4
|
|
|
5
5
|
function Spinner$1({ className, ...props }) {
|
|
6
|
-
return /* @__PURE__ */ jsx(
|
|
7
|
-
LoaderCircle,
|
|
8
|
-
{
|
|
9
|
-
role: "status",
|
|
10
|
-
"aria-label": "Loading",
|
|
11
|
-
className: cn("size-4 animate-spin", className),
|
|
12
|
-
...props
|
|
13
|
-
}
|
|
14
|
-
);
|
|
6
|
+
return /* @__PURE__ */ jsx(LoaderCircle, { role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props });
|
|
15
7
|
}
|
|
16
8
|
|
|
17
9
|
const Spinner = Spinner$1;
|
package/dist/Spinner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../shadcn/shadcnSpinner/Spinner.tsx","../lib/components/Spinner/Spinner.tsx"],"sourcesContent":["import { Loader2Icon } from 'lucide-react';\n\nimport { cn } from '../utils';\n\nfunction Spinner({ className, ...props }: React.ComponentProps<'svg'>) {\n return
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../shadcn/shadcnSpinner/Spinner.tsx","../lib/components/Spinner/Spinner.tsx"],"sourcesContent":["import { Loader2Icon } from 'lucide-react';\n\nimport { cn } from '../utils';\n\nfunction Spinner({ className, ...props }: React.ComponentProps<'svg'>) {\n return <Loader2Icon role=\"status\" aria-label=\"Loading\" className={cn('size-4 animate-spin', className)} {...props} />;\n}\n\nexport { Spinner };\n","// Spinner molecule - wrapper around shadcn Spinner\nimport { Spinner as ShadcnSpinner } from '../../../shadcn/shadcnSpinner';\n\nexport const Spinner = ShadcnSpinner;\n"],"names":["Spinner","Loader2Icon","ShadcnSpinner"],"mappings":";;;;AAIA,SAASA,SAAA,CAAQ,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACrE,EAAA,uBAAO,GAAA,CAACC,YAAA,EAAA,EAAY,IAAA,EAAK,QAAA,EAAS,YAAA,EAAW,SAAA,EAAU,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACrH;;ACHO,MAAM,OAAA,GAAUC;;;;"}
|
package/dist/Switch.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import React__default from 'react';
|
|
4
|
+
import { F as Field, a as FieldContent, e as FieldLabel, b as FieldDescription, c as FieldError } from './field.js';
|
|
5
|
+
import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index12.js';
|
|
6
|
+
import { u as useComposedRefs } from './index5.js';
|
|
7
|
+
import { c as createContextScope, u as useSize } from './index11.js';
|
|
8
|
+
import { u as usePrevious } from './index7.js';
|
|
9
|
+
import { c as cn } from './utils.js';
|
|
10
|
+
|
|
11
|
+
var SWITCH_NAME = "Switch";
|
|
12
|
+
var [createSwitchContext] = createContextScope(SWITCH_NAME);
|
|
13
|
+
var [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);
|
|
14
|
+
var Switch$2 = React.forwardRef(
|
|
15
|
+
(props, forwardedRef) => {
|
|
16
|
+
const {
|
|
17
|
+
__scopeSwitch,
|
|
18
|
+
name,
|
|
19
|
+
checked: checkedProp,
|
|
20
|
+
defaultChecked,
|
|
21
|
+
required,
|
|
22
|
+
disabled,
|
|
23
|
+
value = "on",
|
|
24
|
+
onCheckedChange,
|
|
25
|
+
form,
|
|
26
|
+
...switchProps
|
|
27
|
+
} = props;
|
|
28
|
+
const [button, setButton] = React.useState(null);
|
|
29
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));
|
|
30
|
+
const hasConsumerStoppedPropagationRef = React.useRef(false);
|
|
31
|
+
const isFormControl = button ? form || !!button.closest("form") : true;
|
|
32
|
+
const [checked, setChecked] = useControllableState({
|
|
33
|
+
prop: checkedProp,
|
|
34
|
+
defaultProp: defaultChecked ?? false,
|
|
35
|
+
onChange: onCheckedChange,
|
|
36
|
+
caller: SWITCH_NAME
|
|
37
|
+
});
|
|
38
|
+
return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [
|
|
39
|
+
/* @__PURE__ */ jsx(
|
|
40
|
+
Primitive.button,
|
|
41
|
+
{
|
|
42
|
+
type: "button",
|
|
43
|
+
role: "switch",
|
|
44
|
+
"aria-checked": checked,
|
|
45
|
+
"aria-required": required,
|
|
46
|
+
"data-state": getState(checked),
|
|
47
|
+
"data-disabled": disabled ? "" : void 0,
|
|
48
|
+
disabled,
|
|
49
|
+
value,
|
|
50
|
+
...switchProps,
|
|
51
|
+
ref: composedRefs,
|
|
52
|
+
onClick: composeEventHandlers(props.onClick, (event) => {
|
|
53
|
+
setChecked((prevChecked) => !prevChecked);
|
|
54
|
+
if (isFormControl) {
|
|
55
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();
|
|
56
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
isFormControl && /* @__PURE__ */ jsx(
|
|
62
|
+
SwitchBubbleInput,
|
|
63
|
+
{
|
|
64
|
+
control: button,
|
|
65
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
66
|
+
name,
|
|
67
|
+
value,
|
|
68
|
+
checked,
|
|
69
|
+
required,
|
|
70
|
+
disabled,
|
|
71
|
+
form,
|
|
72
|
+
style: { transform: "translateX(-100%)" }
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] });
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
Switch$2.displayName = SWITCH_NAME;
|
|
79
|
+
var THUMB_NAME = "SwitchThumb";
|
|
80
|
+
var SwitchThumb = React.forwardRef(
|
|
81
|
+
(props, forwardedRef) => {
|
|
82
|
+
const { __scopeSwitch, ...thumbProps } = props;
|
|
83
|
+
const context = useSwitchContext(THUMB_NAME, __scopeSwitch);
|
|
84
|
+
return /* @__PURE__ */ jsx(
|
|
85
|
+
Primitive.span,
|
|
86
|
+
{
|
|
87
|
+
"data-state": getState(context.checked),
|
|
88
|
+
"data-disabled": context.disabled ? "" : void 0,
|
|
89
|
+
...thumbProps,
|
|
90
|
+
ref: forwardedRef
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
SwitchThumb.displayName = THUMB_NAME;
|
|
96
|
+
var BUBBLE_INPUT_NAME = "SwitchBubbleInput";
|
|
97
|
+
var SwitchBubbleInput = React.forwardRef(
|
|
98
|
+
({
|
|
99
|
+
__scopeSwitch,
|
|
100
|
+
control,
|
|
101
|
+
checked,
|
|
102
|
+
bubbles = true,
|
|
103
|
+
...props
|
|
104
|
+
}, forwardedRef) => {
|
|
105
|
+
const ref = React.useRef(null);
|
|
106
|
+
const composedRefs = useComposedRefs(ref, forwardedRef);
|
|
107
|
+
const prevChecked = usePrevious(checked);
|
|
108
|
+
const controlSize = useSize(control);
|
|
109
|
+
React.useEffect(() => {
|
|
110
|
+
const input = ref.current;
|
|
111
|
+
if (!input) return;
|
|
112
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
113
|
+
const descriptor = Object.getOwnPropertyDescriptor(
|
|
114
|
+
inputProto,
|
|
115
|
+
"checked"
|
|
116
|
+
);
|
|
117
|
+
const setChecked = descriptor.set;
|
|
118
|
+
if (prevChecked !== checked && setChecked) {
|
|
119
|
+
const event = new Event("click", { bubbles });
|
|
120
|
+
setChecked.call(input, checked);
|
|
121
|
+
input.dispatchEvent(event);
|
|
122
|
+
}
|
|
123
|
+
}, [prevChecked, checked, bubbles]);
|
|
124
|
+
return /* @__PURE__ */ jsx(
|
|
125
|
+
"input",
|
|
126
|
+
{
|
|
127
|
+
type: "checkbox",
|
|
128
|
+
"aria-hidden": true,
|
|
129
|
+
defaultChecked: checked,
|
|
130
|
+
...props,
|
|
131
|
+
tabIndex: -1,
|
|
132
|
+
ref: composedRefs,
|
|
133
|
+
style: {
|
|
134
|
+
...props.style,
|
|
135
|
+
...controlSize,
|
|
136
|
+
position: "absolute",
|
|
137
|
+
pointerEvents: "none",
|
|
138
|
+
opacity: 0,
|
|
139
|
+
margin: 0
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
SwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;
|
|
146
|
+
function getState(checked) {
|
|
147
|
+
return checked ? "checked" : "unchecked";
|
|
148
|
+
}
|
|
149
|
+
var Root = Switch$2;
|
|
150
|
+
var Thumb = SwitchThumb;
|
|
151
|
+
|
|
152
|
+
function Switch$1({
|
|
153
|
+
className,
|
|
154
|
+
size = "default",
|
|
155
|
+
...props
|
|
156
|
+
}) {
|
|
157
|
+
return /* @__PURE__ */ jsx(
|
|
158
|
+
Root,
|
|
159
|
+
{
|
|
160
|
+
"data-slot": "switch",
|
|
161
|
+
"data-size": size,
|
|
162
|
+
className: cn(
|
|
163
|
+
"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6",
|
|
164
|
+
className
|
|
165
|
+
),
|
|
166
|
+
...props,
|
|
167
|
+
children: /* @__PURE__ */ jsx(
|
|
168
|
+
Thumb,
|
|
169
|
+
{
|
|
170
|
+
"data-slot": "switch-thumb",
|
|
171
|
+
className: cn(
|
|
172
|
+
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const Switch = React__default.forwardRef(
|
|
181
|
+
({ label, description, error, id, ...props }, ref) => {
|
|
182
|
+
const generatedId = React__default.useId();
|
|
183
|
+
const fieldId = id || generatedId;
|
|
184
|
+
const hasError = !!error;
|
|
185
|
+
if (!label && !description && !error) {
|
|
186
|
+
return /* @__PURE__ */ jsx(Switch$1, { ...props, ref, id: fieldId });
|
|
187
|
+
}
|
|
188
|
+
return /* @__PURE__ */ jsxs(Field, { orientation: "horizontal", "data-disabled": props.disabled, "data-invalid": hasError, children: [
|
|
189
|
+
/* @__PURE__ */ jsx(
|
|
190
|
+
Switch$1,
|
|
191
|
+
{
|
|
192
|
+
...props,
|
|
193
|
+
ref,
|
|
194
|
+
id: fieldId,
|
|
195
|
+
"aria-describedby": description || error ? `${fieldId}-description ${fieldId}-error` : void 0,
|
|
196
|
+
"aria-invalid": hasError
|
|
197
|
+
}
|
|
198
|
+
),
|
|
199
|
+
/* @__PURE__ */ jsxs(FieldContent, { children: [
|
|
200
|
+
label && /* @__PURE__ */ jsx(FieldLabel, { htmlFor: fieldId, className: "font-normal cursor-pointer", children: label }),
|
|
201
|
+
description && /* @__PURE__ */ jsx(FieldDescription, { id: `${fieldId}-description`, children: description }),
|
|
202
|
+
error && /* @__PURE__ */ jsx(FieldError, { id: `${fieldId}-error`, children: error })
|
|
203
|
+
] })
|
|
204
|
+
] });
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
Switch.displayName = "Switch";
|
|
208
|
+
|
|
209
|
+
export { Switch as S };
|
|
210
|
+
//# sourceMappingURL=Switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.js","sources":["../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.9__@types+react@_1bb10c0b052fb9beb92b3363daed7bfd/node_modules/@radix-ui/react-switch/dist/index.mjs","../shadcn/shadcnSwitch/Switch.tsx","../lib/components/Switch/Switch.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\nfunction Switch({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import React from 'react';\nimport { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { Switch as ShadcnSwitch } from '../../../shadcn/shadcnSwitch';\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof ShadcnSwitch> {\n /**\n * Label for the switch\n */\n label?: React.ReactNode;\n\n /**\n * Helper text or description to display below the switch\n */\n description?: React.ReactNode;\n\n /**\n * Error message to display below the switch\n */\n error?: string;\n}\n\n/**\n * Switch component for toggling between two states (on/off).\n *\n * Can be used as a bare component or with label, description, and error support\n * for form integration.\n *\n * @example\n * ```tsx\n * // Bare usage\n * <Switch />\n * <Switch size=\"sm\" />\n * <Switch defaultChecked />\n * <Switch disabled />\n *\n * // With Field system (form usage)\n * <Switch\n * label=\"Enable notifications\"\n * description=\"Receive email updates\"\n * />\n *\n * // In a Form component\n * <Form form={form} onSubmit={handleSubmit}>\n * <Switch\n * name=\"marketing\"\n * label=\"Marketing emails\"\n * description=\"Receive promotional content\"\n * />\n * </Form>\n * ```\n */\nexport const Switch = React.forwardRef<React.ElementRef<typeof ShadcnSwitch>, SwitchProps>(\n ({ label, description, error, id, ...props }, ref) => {\n const generatedId = React.useId();\n const fieldId = id || generatedId;\n const hasError = !!error;\n\n // If no label or description, just return the base switch\n if (!label && !description && !error) {\n return <ShadcnSwitch {...props} ref={ref} id={fieldId} />;\n }\n\n return (\n <Field orientation=\"horizontal\" data-disabled={props.disabled} data-invalid={hasError}>\n <ShadcnSwitch\n {...props}\n ref={ref}\n id={fieldId}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n />\n <FieldContent>\n {label && (\n <FieldLabel htmlFor={fieldId} className=\"font-normal cursor-pointer\">\n {label}\n </FieldLabel>\n )}\n\n {description && <FieldDescription id={`${fieldId}-description`}>{description}</FieldDescription>}\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </FieldContent>\n </Field>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["Switch","SwitchPrimitive.Root","SwitchPrimitive.Thumb","React","ShadcnSwitch"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useState, useLayoutEffect, useCallback, useMemo } from 'react';
|
|
3
|
+
|
|
4
|
+
const THEME_STORAGE_KEY = "theme";
|
|
5
|
+
const ThemeContext = createContext(null);
|
|
6
|
+
ThemeContext.displayName = "ThemeContext";
|
|
7
|
+
function getInitialTheme(storageKey, defaultTheme) {
|
|
8
|
+
if (typeof window !== "undefined") {
|
|
9
|
+
const savedTheme = localStorage.getItem(storageKey);
|
|
10
|
+
if (savedTheme === "dark" || savedTheme === "light") {
|
|
11
|
+
return savedTheme;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (defaultTheme) {
|
|
15
|
+
return defaultTheme;
|
|
16
|
+
}
|
|
17
|
+
if (typeof window !== "undefined") {
|
|
18
|
+
const systemPrefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
19
|
+
return systemPrefersDark ? "dark" : "light";
|
|
20
|
+
}
|
|
21
|
+
return "light";
|
|
22
|
+
}
|
|
23
|
+
function ThemeProvider({
|
|
24
|
+
children,
|
|
25
|
+
defaultTheme,
|
|
26
|
+
storageKey = THEME_STORAGE_KEY
|
|
27
|
+
}) {
|
|
28
|
+
const [theme, setThemeState] = useState(
|
|
29
|
+
() => getInitialTheme(storageKey, defaultTheme)
|
|
30
|
+
);
|
|
31
|
+
useLayoutEffect(() => {
|
|
32
|
+
const isDark = theme === "dark";
|
|
33
|
+
document.documentElement.classList.toggle("dark", isDark);
|
|
34
|
+
}, [theme]);
|
|
35
|
+
useLayoutEffect(() => {
|
|
36
|
+
localStorage.setItem(storageKey, theme);
|
|
37
|
+
}, [theme, storageKey]);
|
|
38
|
+
const setTheme = useCallback((newTheme) => {
|
|
39
|
+
setThemeState(newTheme);
|
|
40
|
+
}, []);
|
|
41
|
+
const toggleTheme = useCallback(() => {
|
|
42
|
+
setThemeState((currentTheme) => currentTheme === "dark" ? "light" : "dark");
|
|
43
|
+
}, []);
|
|
44
|
+
const value = useMemo(
|
|
45
|
+
() => ({
|
|
46
|
+
theme,
|
|
47
|
+
toggleTheme,
|
|
48
|
+
setTheme
|
|
49
|
+
}),
|
|
50
|
+
[theme, toggleTheme, setTheme]
|
|
51
|
+
);
|
|
52
|
+
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
|
|
53
|
+
}
|
|
54
|
+
ThemeProvider.displayName = "ThemeProvider";
|
|
55
|
+
|
|
56
|
+
export { ThemeContext as T, ThemeProvider as a };
|
|
57
|
+
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.js","sources":["../lib/context/ThemeContext.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\n\n/**\n * Theme mode type - either 'light' or 'dark'\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Shape of the theme context value\n */\nexport interface ThemeContextValue {\n /** Current theme mode ('light' or 'dark') */\n theme: ThemeMode;\n /** Function to toggle between light and dark themes */\n toggleTheme: () => void;\n /** Function to set a specific theme */\n setTheme: (theme: ThemeMode) => void;\n}\n\n/**\n * Props for the ThemeProvider component\n */\nexport interface ThemeProviderProps {\n /** Child components that will have access to the theme context */\n children: ReactNode;\n /** Optional initial theme (defaults to system preference or localStorage) */\n defaultTheme?: ThemeMode;\n /** localStorage key for persisting theme preference */\n storageKey?: string;\n}\n\nconst THEME_STORAGE_KEY = 'theme';\n\n/**\n * Theme context for sharing theme state across components.\n * Use the useTheme hook to access this context.\n */\nexport const ThemeContext = createContext<ThemeContextValue | null>(null);\n\nThemeContext.displayName = 'ThemeContext';\n\n/**\n * Determines the initial theme based on localStorage and system preferences.\n * @param storageKey - The localStorage key to check for saved theme\n * @param defaultTheme - Optional default theme to use if no preference is found\n * @returns The determined initial theme\n */\nfunction getInitialTheme(storageKey: string, defaultTheme?: ThemeMode): ThemeMode {\n // Check for saved theme in localStorage\n if (typeof window !== 'undefined') {\n const savedTheme = localStorage.getItem(storageKey);\n if (savedTheme === 'dark' || savedTheme === 'light') {\n return savedTheme;\n }\n }\n\n // Use default theme if provided\n if (defaultTheme) {\n return defaultTheme;\n }\n\n // Fall back to system preference\n if (typeof window !== 'undefined') {\n const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n return systemPrefersDark ? 'dark' : 'light';\n }\n\n // Ultimate fallback\n return 'light';\n}\n\n/**\n * ThemeProvider component that manages theme state and provides it to the component tree.\n *\n * Features:\n * - Single source of truth for theme state\n * - Persists theme preference to localStorage\n * - Detects system color scheme preference on initial load\n * - Toggles the 'dark' class on document.documentElement\n * - Avoids flash of incorrect theme using useLayoutEffect\n *\n * @example\n * ```tsx\n * // Wrap your app with ThemeProvider\n * function App() {\n * return (\n * <ThemeProvider>\n * <YourApp />\n * </ThemeProvider>\n * );\n * }\n *\n * // With default theme\n * <ThemeProvider defaultTheme=\"dark\">\n * <YourApp />\n * </ThemeProvider>\n *\n * // With custom storage key\n * <ThemeProvider storageKey=\"my-app-theme\">\n * <YourApp />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme,\n storageKey = THEME_STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(() =>\n getInitialTheme(storageKey, defaultTheme)\n );\n\n // Apply theme to document on initial mount and when theme changes\n useLayoutEffect(() => {\n const isDark = theme === 'dark';\n document.documentElement.classList.toggle('dark', isDark);\n }, [theme]);\n\n // Persist to localStorage whenever theme changes\n useLayoutEffect(() => {\n localStorage.setItem(storageKey, theme);\n }, [theme, storageKey]);\n\n const setTheme = useCallback((newTheme: ThemeMode) => {\n setThemeState(newTheme);\n }, []);\n\n const toggleTheme = useCallback(() => {\n setThemeState((currentTheme) => (currentTheme === 'dark' ? 'light' : 'dark'));\n }, []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n toggleTheme,\n setTheme,\n }),\n [theme, toggleTheme, setTheme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nThemeProvider.displayName = 'ThemeProvider';\n"],"names":[],"mappings":";;;AAsCA,MAAM,iBAAA,GAAoB,OAAA;AAMnB,MAAM,YAAA,GAAe,cAAwC,IAAI;AAExE,YAAA,CAAa,WAAA,GAAc,cAAA;AAQ3B,SAAS,eAAA,CAAgB,YAAoB,YAAA,EAAqC;AAEhF,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,MAAM,UAAA,GAAa,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA;AAClD,IAAA,IAAI,UAAA,KAAe,MAAA,IAAU,UAAA,KAAe,OAAA,EAAS;AACnD,MAAA,OAAO,UAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,OAAO,YAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAAE,OAAA;AAC5E,IAAA,OAAO,oBAAoB,MAAA,GAAS,OAAA;AAAA,EACtC;AAGA,EAAA,OAAO,OAAA;AACT;AAkCO,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,QAAA;AAAA,IAAoB,MACjD,eAAA,CAAgB,UAAA,EAAY,YAAY;AAAA,GAC1C;AAGA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,SAAS,KAAA,KAAU,MAAA;AACzB,IAAA,QAAA,CAAS,eAAA,CAAgB,SAAA,CAAU,MAAA,CAAO,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,YAAA,CAAa,OAAA,CAAQ,YAAY,KAAK,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AAEtB,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,QAAA,KAAwB;AACpD,IAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,aAAA,CAAc,CAAC,YAAA,KAAkB,YAAA,KAAiB,MAAA,GAAS,UAAU,MAAO,CAAA;AAAA,EAC9E,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,KAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,WAAA,EAAa,QAAQ;AAAA,GAC/B;AAEA,EAAA,uBAAO,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAe,QAAA,EAAS,CAAA;AACxD;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
|
package/dist/ThemeToggle.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { u as useTheme } from './useTheme.js';
|
|
3
3
|
import { B as Button } from './Button.js';
|
|
4
4
|
import { c as createLucideIcon } from './createLucideIcon.js';
|
|
5
5
|
|
|
@@ -44,20 +44,8 @@ const __iconNode = [
|
|
|
44
44
|
const Sun = createLucideIcon("sun", __iconNode);
|
|
45
45
|
|
|
46
46
|
const ThemeToggle = ({ className, size = "md" }) => {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
const savedTheme = localStorage.getItem("theme");
|
|
50
|
-
const systemPrefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
51
|
-
const shouldUseDark = savedTheme === "dark" || !savedTheme && systemPrefersDark;
|
|
52
|
-
setIsDarkMode(shouldUseDark);
|
|
53
|
-
document.documentElement.classList.toggle("dark", shouldUseDark);
|
|
54
|
-
}, []);
|
|
55
|
-
const toggleTheme = () => {
|
|
56
|
-
const newDarkMode = !isDarkMode;
|
|
57
|
-
setIsDarkMode(newDarkMode);
|
|
58
|
-
document.documentElement.classList.toggle("dark", newDarkMode);
|
|
59
|
-
localStorage.setItem("theme", newDarkMode ? "dark" : "light");
|
|
60
|
-
};
|
|
47
|
+
const { theme, toggleTheme } = useTheme();
|
|
48
|
+
const isDarkMode = theme === "dark";
|
|
61
49
|
return /* @__PURE__ */ jsxs(
|
|
62
50
|
Button,
|
|
63
51
|
{
|
|
@@ -85,6 +73,7 @@ const ThemeToggle = ({ className, size = "md" }) => {
|
|
|
85
73
|
}
|
|
86
74
|
);
|
|
87
75
|
};
|
|
76
|
+
ThemeToggle.displayName = "ThemeToggle";
|
|
88
77
|
|
|
89
78
|
export { ThemeToggle as T };
|
|
90
79
|
//# sourceMappingURL=ThemeToggle.js.map
|
package/dist/ThemeToggle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/moon.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/sun.js","../lib/components/ThemeToggle/ThemeToggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.js.map\n","import { Moon, Sun } from 'lucide-react';\nimport type React from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"ThemeToggle.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/moon.js","../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/sun.js","../lib/components/ThemeToggle/ThemeToggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.js.map\n","import { Moon, Sun } from 'lucide-react';\nimport type React from 'react';\nimport { useTheme } from '../../hooks/useTheme';\nimport { Button } from '../Button/Button';\n\nexport interface ThemeToggleProps {\n /**\n * Custom className for the toggle button\n */\n className?: string;\n\n /**\n * Size of the toggle button\n */\n size?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * ThemeToggle component for switching between light and dark themes.\n *\n * Uses the useTheme hook internally for theme state management.\n *\n * @example\n * ```tsx\n * <ThemeToggle />\n * <ThemeToggle size=\"lg\" className=\"custom-class\" />\n * ```\n */\nexport const ThemeToggle: React.FC<ThemeToggleProps> = ({ className, size = 'md' }) => {\n const { theme, toggleTheme } = useTheme();\n const isDarkMode = theme === 'dark';\n\n return (\n <Button\n variant=\"ghost\"\n size={size === 'md' ? 'default' : size}\n onClick={toggleTheme}\n className={`text-foreground ${className}`}\n aria-label={`Switch to ${isDarkMode ? 'light' : 'dark'} theme`}\n >\n <Sun\n className={`h-4 w-4 transition-all ${isDarkMode ? 'scale-0 -rotate-90' : 'scale-100 rotate-0'}`}\n aria-hidden\n />\n <Moon\n className={`absolute h-4 w-4 transition-all ${isDarkMode ? 'scale-100 rotate-0' : 'scale-0 rotate-90'}`}\n aria-hidden\n />\n </Button>\n );\n};\n\nThemeToggle.displayName = 'ThemeToggle';\n"],"names":["__iconNode"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,gHAAgH;AACzH,MAAM,GAAG,EAAE;AACX;AACA;AACA,CAAC;AACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAEA,YAAU,CAAC;;AClBjD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,sBAAsB,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACxD,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,wBAAwB,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC1D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACzD,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,QAAQ,EAAE;AACxD,CAAC;AACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;;ACQxC,MAAM,cAA0C,CAAC,EAAE,SAAA,EAAW,IAAA,GAAO,MAAK,KAAM;AACrF,EAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAY,GAAI,QAAA,EAAS;AACxC,EAAA,MAAM,aAAa,KAAA,KAAU,MAAA;AAE7B,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAM,IAAA,KAAS,IAAA,GAAO,SAAA,GAAY,IAAA;AAAA,MAClC,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,mBAAmB,SAAS,CAAA,CAAA;AAAA,MACvC,YAAA,EAAY,CAAA,UAAA,EAAa,UAAA,GAAa,OAAA,GAAU,MAAM,CAAA,MAAA,CAAA;AAAA,MAEtD,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,uBAAA,EAA0B,UAAA,GAAa,oBAAA,GAAuB,oBAAoB,CAAA,CAAA;AAAA,YAC7F,aAAA,EAAW;AAAA;AAAA,SACb;AAAA,wBACA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAA,gCAAA,EAAmC,UAAA,GAAa,oBAAA,GAAuB,mBAAmB,CAAA,CAAA;AAAA,YACrG,aAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;;","x_google_ignoreList":[0,1]}
|
package/dist/Toggle.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index12.js';
|
|
4
|
+
import { c as cva } from './index8.js';
|
|
5
|
+
import { c as cn } from './utils.js';
|
|
6
|
+
|
|
7
|
+
var NAME = "Toggle";
|
|
8
|
+
var Toggle$2 = React.forwardRef((props, forwardedRef) => {
|
|
9
|
+
const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;
|
|
10
|
+
const [pressed, setPressed] = useControllableState({
|
|
11
|
+
prop: pressedProp,
|
|
12
|
+
onChange: onPressedChange,
|
|
13
|
+
defaultProp: defaultPressed ?? false,
|
|
14
|
+
caller: NAME
|
|
15
|
+
});
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Primitive.button,
|
|
18
|
+
{
|
|
19
|
+
type: "button",
|
|
20
|
+
"aria-pressed": pressed,
|
|
21
|
+
"data-state": pressed ? "on" : "off",
|
|
22
|
+
"data-disabled": props.disabled ? "" : void 0,
|
|
23
|
+
...buttonProps,
|
|
24
|
+
ref: forwardedRef,
|
|
25
|
+
onClick: composeEventHandlers(props.onClick, () => {
|
|
26
|
+
if (!props.disabled) {
|
|
27
|
+
setPressed(!pressed);
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
Toggle$2.displayName = NAME;
|
|
34
|
+
var Root = Toggle$2;
|
|
35
|
+
|
|
36
|
+
const toggleVariants$1 = cva(
|
|
37
|
+
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
|
|
38
|
+
{
|
|
39
|
+
variants: {
|
|
40
|
+
variant: {
|
|
41
|
+
default: "bg-transparent",
|
|
42
|
+
outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
|
|
43
|
+
},
|
|
44
|
+
size: {
|
|
45
|
+
default: "h-9 px-2 min-w-9",
|
|
46
|
+
sm: "h-8 px-1.5 min-w-8",
|
|
47
|
+
lg: "h-10 px-2.5 min-w-10"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
defaultVariants: {
|
|
51
|
+
variant: "default",
|
|
52
|
+
size: "default"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
function Toggle$1({
|
|
57
|
+
className,
|
|
58
|
+
variant,
|
|
59
|
+
size,
|
|
60
|
+
...props
|
|
61
|
+
}) {
|
|
62
|
+
return /* @__PURE__ */ jsx(Root, { "data-slot": "toggle", className: cn(toggleVariants$1({ variant, size, className })), ...props });
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const Toggle = Toggle$1;
|
|
66
|
+
const toggleVariants = toggleVariants$1;
|
|
67
|
+
|
|
68
|
+
export { Toggle as T, toggleVariants as t };
|
|
69
|
+
//# sourceMappingURL=Toggle.js.map
|