@nomos-ui/form 0.2.0 → 0.3.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/components/form-switch.d.ts +45 -0
- package/dist/components/form-switch.d.ts.map +1 -0
- package/dist/components/form-switch.js +44 -0
- package/dist/components/form-switch.js.map +1 -0
- package/dist/components/select.d.ts.map +1 -1
- package/dist/components/select.js +3 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/shadcn-ui/switch.d.ts +7 -0
- package/dist/components/shadcn-ui/switch.d.ts.map +1 -0
- package/dist/components/shadcn-ui/switch.js +43 -0
- package/dist/components/shadcn-ui/switch.js.map +1 -0
- package/dist/components/switch.d.ts +24 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +19 -0
- package/dist/components/switch.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Control, FieldValues, Path, PathValue } from "react-hook-form";
|
|
2
|
+
import { SwitchProps } from "./switch";
|
|
3
|
+
/**
|
|
4
|
+
* Props for the `FormSwitch` component with type-safe form integration.
|
|
5
|
+
*/
|
|
6
|
+
export type FormSwitchProps<TFieldValues extends FieldValues> = {
|
|
7
|
+
/** React Hook Form control instance */
|
|
8
|
+
control: Control<TFieldValues>;
|
|
9
|
+
/** The name of the field (type-safe, must match form schema) */
|
|
10
|
+
name: Path<TFieldValues>;
|
|
11
|
+
/** Default value of the switch */
|
|
12
|
+
defaultValue?: PathValue<TFieldValues, Path<TFieldValues>>;
|
|
13
|
+
} & Omit<SwitchProps, "checked" | "onCheckedChange">;
|
|
14
|
+
/**
|
|
15
|
+
* A form switch component that adds type-safe form functionality to Switch.
|
|
16
|
+
* Designed to integrate with React Hook Form with full TypeScript support.
|
|
17
|
+
*
|
|
18
|
+
* @component
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* type FormData = {
|
|
22
|
+
* notifications: boolean;
|
|
23
|
+
* darkMode: boolean;
|
|
24
|
+
* };
|
|
25
|
+
*
|
|
26
|
+
* const { control } = useForm<FormData>();
|
|
27
|
+
*
|
|
28
|
+
* <FormSwitch
|
|
29
|
+
* control={control}
|
|
30
|
+
* name="notifications"
|
|
31
|
+
* label="Enable notifications"
|
|
32
|
+
* required
|
|
33
|
+
* />
|
|
34
|
+
*
|
|
35
|
+
* <FormSwitch
|
|
36
|
+
* control={control}
|
|
37
|
+
* name="darkMode"
|
|
38
|
+
* label="Dark mode"
|
|
39
|
+
* labelPosition="start"
|
|
40
|
+
* size="sm"
|
|
41
|
+
* />
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export default function FormSwitch<TFieldValues extends FieldValues>({ control, name, defaultValue, required, ...props }: FormSwitchProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
//# sourceMappingURL=form-switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-switch.d.ts","sourceRoot":"","sources":["../../src/components/form-switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,WAAW,EACX,IAAI,EACJ,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG/C;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,YAAY,SAAS,WAAW,IAAI;IAC9D,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,gEAAgE;IAChE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;CAC5D,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,YAAY,SAAS,WAAW,EAAE,EACnE,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,YAAY,CAAC,2CAqB/B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = FormSwitch;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_hook_form_1 = require("react-hook-form");
|
|
9
|
+
const switch_1 = __importDefault(require("./switch"));
|
|
10
|
+
const form_helpers_1 = require("../utils/helpers/form.helpers");
|
|
11
|
+
/**
|
|
12
|
+
* A form switch component that adds type-safe form functionality to Switch.
|
|
13
|
+
* Designed to integrate with React Hook Form with full TypeScript support.
|
|
14
|
+
*
|
|
15
|
+
* @component
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* type FormData = {
|
|
19
|
+
* notifications: boolean;
|
|
20
|
+
* darkMode: boolean;
|
|
21
|
+
* };
|
|
22
|
+
*
|
|
23
|
+
* const { control } = useForm<FormData>();
|
|
24
|
+
*
|
|
25
|
+
* <FormSwitch
|
|
26
|
+
* control={control}
|
|
27
|
+
* name="notifications"
|
|
28
|
+
* label="Enable notifications"
|
|
29
|
+
* required
|
|
30
|
+
* />
|
|
31
|
+
*
|
|
32
|
+
* <FormSwitch
|
|
33
|
+
* control={control}
|
|
34
|
+
* name="darkMode"
|
|
35
|
+
* label="Dark mode"
|
|
36
|
+
* labelPosition="start"
|
|
37
|
+
* size="sm"
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
function FormSwitch({ control, name, defaultValue, required = false, ...props }) {
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "w-full", children: (0, jsx_runtime_1.jsx)(react_hook_form_1.Controller, { control: control, name: name, defaultValue: defaultValue, rules: { required: required ? "Required" : false }, render: ({ field: { onChange, value }, formState: { errors } }) => ((0, jsx_runtime_1.jsx)(switch_1.default, { switchProps: { id: `form-switch-${name}` }, checked: !!value, onCheckedChange: onChange, required: required, error: (0, form_helpers_1.getNestedErrorMessage)(errors || {}, name), ...props })) }) }));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=form-switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-switch.js","sourceRoot":"","sources":["../../src/components/form-switch.tsx"],"names":[],"mappings":";;;;;AAoDA,6BA2BC;;AA/ED,qDAMyB;AACzB,sDAA+C;AAC/C,gEAAsE;AActE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAwB,UAAU,CAAmC,EACnE,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,gCAAK,SAAS,EAAC,QAAQ,YACrB,uBAAC,4BAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAClD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CACjE,uBAAC,gBAAM,IACL,WAAW,EAAE,EAAE,EAAE,EAAE,eAAe,IAAI,EAAE,EAAE,EAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,EAChB,eAAe,EAAE,QAAQ,EACzB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAA,oCAAqB,EAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAW,KACtD,KAAK,GACT,CACH,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,IAAI;IACrC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACxD,SAAS,EACT,KAAK,EACL,QAAgB,EAChB,gBAAwB,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,IAAI;IACrC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACxD,SAAS,EACT,KAAK,EACL,QAAgB,EAChB,gBAAwB,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,WAAW,CAAC,CAAC,CAAC,2CA0LhB"}
|
|
@@ -55,6 +55,8 @@ function Select({ className, label, required = false, showRequiredSign = false,
|
|
|
55
55
|
return ((0, react_1.createElement)(select_1.SelectItem, { ...itemProps, key: itemProps?.key || String(option.value), value: option.value, className: (0, tailwind_merge_1.twMerge)(isSelected && "bg-blue-50", itemProps?.className) }, option.label));
|
|
56
56
|
}) }) })] }), tip && !error && ((0, jsx_runtime_1.jsx)("p", { className: "text-xs text-muted-foreground tip-message", children: tip })), error && ((0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-destructive error-message", children: ["*", error] }))] }));
|
|
57
57
|
}
|
|
58
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, tailwind_merge_1.twMerge)("gap-1 grid w-full", className), children: [label && ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [(0, jsx_runtime_1.jsx)("label", { ...labelProps,
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, tailwind_merge_1.twMerge)("gap-1 grid w-full", className), children: [label && ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [(0, jsx_runtime_1.jsx)("label", { ...labelProps, ...((labelProps?.htmlFor || triggerProps?.id) && {
|
|
59
|
+
htmlFor: labelProps?.htmlFor || triggerProps?.id,
|
|
60
|
+
}), className: (0, tailwind_merge_1.twMerge)("font-bold", labelProps?.className), children: label }), required && showRequiredSign && ((0, jsx_runtime_1.jsx)(lucide_react_1.AsteriskIcon, { size: 12, color: "red" }))] })), (0, jsx_runtime_1.jsxs)(select_1.Select, { value: value, onValueChange: onChange, children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { ...triggerProps, className: (0, tailwind_merge_1.twMerge)("w-full", triggerProps?.className), children: (0, jsx_runtime_1.jsx)(select_1.SelectValue, { ...valueProps, placeholder: placeholder !== undefined ? placeholder : `${label}...`, className: valueProps?.className }) }), (0, jsx_runtime_1.jsx)(select_1.SelectContent, { ...contentProps, className: contentProps?.className, children: (0, jsx_runtime_1.jsx)(select_1.SelectGroup, { ...groupProps, className: groupProps?.className, children: options.map((option) => ((0, react_1.createElement)(select_1.SelectItem, { ...itemProps, key: itemProps?.key || String(option.value), value: option.value, className: itemProps?.className }, option.label))) }) })] }), tip && !error && ((0, jsx_runtime_1.jsx)("p", { className: "text-xs text-muted-foreground tip-message", children: tip })), error && ((0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-destructive error-message", children: ["*", error] }))] }));
|
|
59
61
|
}
|
|
60
62
|
//# sourceMappingURL=select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":";;AAgDA,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
3
|
+
declare function Switch({ className, size, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
|
|
4
|
+
size?: "sm" | "default";
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { Switch };
|
|
7
|
+
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/components/shadcn-ui/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAG1D,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACrD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,2CAiBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Switch = Switch;
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const SwitchPrimitive = __importStar(require("@radix-ui/react-switch"));
|
|
39
|
+
const utils_1 = require("../../utils/shadcn-ui/utils");
|
|
40
|
+
function Switch({ className, size = "default", ...props }) {
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: (0, utils_1.cn)("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (0, jsx_runtime_1.jsx)(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" }) }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/components/shadcn-ui/switch.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BS,wBAAM;;AA5Bf,wEAA0D;AAC1D,uDAAiD;AAEjD,SAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EAGT;IACC,OAAO,CACL,uBAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,eACP,IAAI,EACf,SAAS,EAAE,IAAA,UAAE,EACX,qpBAAqpB,EACrpB,SAAS,CACV,KACG,KAAK,YAET,uBAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAC,+eAA+e,GACzf,GACmB,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
3
|
+
export type SwitchProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
showRequiredSign?: boolean;
|
|
8
|
+
checked?: boolean;
|
|
9
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
10
|
+
size?: "sm" | "default";
|
|
11
|
+
labelProps?: React.ComponentProps<"label">;
|
|
12
|
+
switchProps?: Omit<React.ComponentProps<typeof SwitchPrimitive.Root>, "checked" | "onCheckedChange">;
|
|
13
|
+
/** Place the label before ("start") or after ("end") the switch. Defaults to "end". */
|
|
14
|
+
labelPosition?: "start" | "end";
|
|
15
|
+
error?: string;
|
|
16
|
+
tip?: string;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Switch with an optional label, tip, and error message.
|
|
21
|
+
* Mirrors the Select component's label + error + tip pattern.
|
|
22
|
+
*/
|
|
23
|
+
export default function Switch({ className, label, required, showRequiredSign, checked, onCheckedChange, size, labelProps, switchProps, labelPosition, error, tip, disabled, }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,IAAI,CAChB,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,EACjD,SAAS,GAAG,iBAAiB,CAC9B,CAAC;IACF,uFAAuF;IACvF,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,QAAgB,EAChB,gBAAwB,EACxB,OAAO,EACP,eAAe,EACf,IAAgB,EAChB,UAAU,EACV,WAAW,EACX,aAAqB,EACrB,KAAK,EACL,GAAG,EACH,QAAQ,GACT,EAAE,WAAW,2CAkDb"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = Switch;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const tailwind_merge_1 = require("tailwind-merge");
|
|
6
|
+
const lucide_react_1 = require("lucide-react");
|
|
7
|
+
const switch_1 = require("./shadcn-ui/switch");
|
|
8
|
+
/**
|
|
9
|
+
* Switch with an optional label, tip, and error message.
|
|
10
|
+
* Mirrors the Select component's label + error + tip pattern.
|
|
11
|
+
*/
|
|
12
|
+
function Switch({ className, label, required = false, showRequiredSign = false, checked, onCheckedChange, size = "default", labelProps, switchProps, labelPosition = "end", error, tip, disabled, }) {
|
|
13
|
+
const switchId = switchProps?.id ??
|
|
14
|
+
(label ? `switch-${label.toLowerCase().replace(/\s+/g, "-")}` : undefined);
|
|
15
|
+
const switchEl = ((0, jsx_runtime_1.jsx)(switch_1.Switch, { ...switchProps, id: switchId, size: size, checked: checked, onCheckedChange: onCheckedChange, disabled: disabled, "aria-invalid": !!error }));
|
|
16
|
+
const labelEl = label ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [(0, jsx_runtime_1.jsx)("label", { ...labelProps, htmlFor: labelProps?.htmlFor ?? switchId, className: (0, tailwind_merge_1.twMerge)("font-bold cursor-pointer", disabled && "opacity-50 cursor-not-allowed", labelProps?.className), children: label }), required && showRequiredSign && (0, jsx_runtime_1.jsx)(lucide_react_1.AsteriskIcon, { size: 12, color: "red" })] })) : null;
|
|
17
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, tailwind_merge_1.twMerge)("gap-1 grid w-full", className), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-row items-center gap-2", children: [labelPosition === "start" && labelEl, switchEl, labelPosition === "end" && labelEl] }), tip && !error && ((0, jsx_runtime_1.jsx)("p", { className: "text-xs text-muted-foreground tip-message", children: tip })), error && ((0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-destructive error-message", children: ["*", error] }))] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":";;AA8BA,yBAgEC;;AA5FD,mDAAyC;AACzC,+CAA4C;AAC5C,+CAA4D;AAsB5D;;;GAGG;AACH,SAAwB,MAAM,CAAC,EAC7B,SAAS,EACT,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,gBAAgB,GAAG,KAAK,EACxB,OAAO,EACP,eAAe,EACf,IAAI,GAAG,SAAS,EAChB,UAAU,EACV,WAAW,EACX,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,GAAG,EACH,QAAQ,GACI;IACZ,MAAM,QAAQ,GACZ,WAAW,EAAE,EAAE;QACf,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,CACf,uBAAC,eAAY,OACP,WAAW,EACf,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,kBACJ,CAAC,CAAC,KAAK,GACrB,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CACtB,iCAAK,SAAS,EAAC,kCAAkC,aAC/C,qCACM,UAAU,EACd,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,QAAQ,EACxC,SAAS,EAAE,IAAA,wBAAO,EAChB,0BAA0B,EAC1B,QAAQ,IAAI,+BAA+B,EAC3C,UAAU,EAAE,SAAS,CACtB,YAEA,KAAK,GACA,EACP,QAAQ,IAAI,gBAAgB,IAAI,uBAAC,2BAAY,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,KAAK,GAAG,IACnE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,iCAAK,SAAS,EAAE,IAAA,wBAAO,EAAC,mBAAmB,EAAE,SAAS,CAAC,aACrD,iCAAK,SAAS,EAAC,kCAAkC,aAC9C,aAAa,KAAK,OAAO,IAAI,OAAO,EACpC,QAAQ,EACR,aAAa,KAAK,KAAK,IAAI,OAAO,IAC/B,EAEL,GAAG,IAAI,CAAC,KAAK,IAAI,CAChB,8BAAG,SAAS,EAAC,2CAA2C,YAAE,GAAG,GAAK,CACnE,EACA,KAAK,IAAI,CACR,+BAAG,SAAS,EAAC,wCAAwC,kBAAG,KAAK,IAAK,CACnE,IACG,CACP,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nomos-ui/form",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "The Shadcn library for building robust React forms",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/exports/index.js",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"@nomos-ui/uanela-redux-next": "^0.3.1",
|
|
73
73
|
"@radix-ui/react-select": "^2.2.6",
|
|
74
74
|
"@radix-ui/react-slot": "^1.2.3",
|
|
75
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
75
76
|
"@tailwindcss/postcss": "^4.1.16",
|
|
76
77
|
"@tailwindcss/vite": "^4.1.16",
|
|
77
78
|
"class-variance-authority": "^0.7.1",
|