formix-ui 0.0.3 → 0.0.5
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/README.md +40 -3
- package/dist/bin/index.js +25 -28
- package/dist/components/pages/docs/CliGuidePage.d.ts +1 -0
- package/dist/components/pages/docs/ContributingPage.d.ts +1 -0
- package/dist/components/pages/docs/DocPages.d.ts +5 -0
- package/dist/components/pages/docs/EcosystemPage.d.ts +1 -0
- package/dist/components/pages/docs/TasksPage.d.ts +1 -0
- package/dist/components/pages/docs/UsageGuidePage.d.ts +1 -0
- package/dist/components/theme/types.d.ts +3 -0
- package/dist/index.js +91 -85
- package/package.json +7 -5
- package/CHANGELOG.md +0 -206
package/README.md
CHANGED
|
@@ -1,4 +1,41 @@
|
|
|
1
|
-
# 🚀
|
|
1
|
+
# 🚀 FormixUI
|
|
2
|
+
|
|
3
|
+
<!-- PROJECT_STATUS_START -->
|
|
4
|
+
<div align="center">
|
|
5
|
+
|
|
6
|
+
<h3>🚀 Project Status: 27% Complete</h3>
|
|
7
|
+
|
|
8
|
+
<img src="https://progress-bar.dev/27/?scale=100&title=progress&width=600&color=00ff00&suffix=%25" alt="Progress Bar">
|
|
9
|
+
|
|
10
|
+
<br/>
|
|
11
|
+
|
|
12
|
+
| 📦 Version | ✅ Completed | 🚧 In Progress | 🔄 Recurring | 📅 Upcoming |
|
|
13
|
+
| :--------: | :----------: | :------------: | :----------: | :---------: |
|
|
14
|
+
| **v0.0.2** | **27** | **9** | **3** | **63** |
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<details open>
|
|
19
|
+
<summary><h3>📅 Recent Activity & Roadmap</h3></summary>
|
|
20
|
+
|
|
21
|
+
| **✨ Recently Completed** | **🚧 In Progress / Planned** |
|
|
22
|
+
| :------------------------ | :--------------------------- |
|
|
23
|
+
|
|
24
|
+
| <ul><li>✅ **Button**: Standard interactive button.</li>
|
|
25
|
+
|
|
26
|
+
<li>✅ **Checkbox**: Binary selection control.</li>
|
|
27
|
+
<li>✅ **Combobox (Autocomplete)**: Input with filtered suggestions.</li>
|
|
28
|
+
<li>✅ **Date Picker**: Date selection interactive calendar.</li>
|
|
29
|
+
<li>✅ **Date Range Picker**: Date range selection.</li></ul> | <ul><li>🚧 Locale switcher UI</li>
|
|
30
|
+
<li>🚧 Week start UI</li>
|
|
31
|
+
<li>🚧 Week number toggle UI</li>
|
|
32
|
+
<li>🚧 Time step UI</li>
|
|
33
|
+
<li>🚧 Focus trapping (modals)</li></ul> |
|
|
34
|
+
|
|
35
|
+
</details>
|
|
36
|
+
|
|
37
|
+
<br/>
|
|
38
|
+
<!-- PROJECT_STATUS_END -->
|
|
2
39
|
|
|
3
40
|
[](https://www.npmjs.com/package/formix-ui)
|
|
4
41
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -249,7 +286,7 @@ type ValidationRule =
|
|
|
249
286
|
|
|
250
287
|
## 🎨 Theming
|
|
251
288
|
|
|
252
|
-
|
|
289
|
+
FormixUI uses Tailwind CSS 4.1 with CSS variables for theming:
|
|
253
290
|
|
|
254
291
|
```css
|
|
255
292
|
@theme {
|
|
@@ -338,4 +375,4 @@ MIT © Adarsh A
|
|
|
338
375
|
|
|
339
376
|
---
|
|
340
377
|
|
|
341
|
-
**Made with ❤️ by the
|
|
378
|
+
**Made with ❤️ by the FormixUI team**
|
package/dist/bin/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import { fileURLToPath } from "url";
|
|
|
10
10
|
import { registry, getComponent } from "./registry.js";
|
|
11
11
|
// Tailwind v4 CSS Template
|
|
12
12
|
const TAILWIND_V4_CSS = `@import "tailwindcss";
|
|
13
|
-
@source "../node_modules/
|
|
13
|
+
@source "../node_modules/formix-ui/dist";
|
|
14
14
|
|
|
15
15
|
@variant dark (&:where(.dark, .dark *));
|
|
16
16
|
|
|
@@ -214,9 +214,9 @@ const generateLandingPageContent = (config, version) => {
|
|
|
214
214
|
const componentToUse = formState === "formik" ? "FormikSchemaForm" : "SchemaForm";
|
|
215
215
|
// Note: We use Tailwind v4 classes assuming it's configured.
|
|
216
216
|
// We use standard React imports since the library handles the rest.
|
|
217
|
-
return `${isNext ? '"use client";\n' : ""}import { ${componentToUse}, ThemeProvider } from '
|
|
218
|
-
import type { FormSchema } from '
|
|
219
|
-
${isNext ? "import './globals.css';" : "import '
|
|
217
|
+
return `${isNext ? '"use client";\n' : ""}import { ${componentToUse}, ThemeProvider } from 'formix-ui';
|
|
218
|
+
import type { FormSchema } from 'formix-ui';
|
|
219
|
+
${isNext ? "import './globals.css';" : "import 'formix-ui/styles';"}
|
|
220
220
|
|
|
221
221
|
const schema: FormSchema = {
|
|
222
222
|
title: "Welcome to FormEngine",
|
|
@@ -319,7 +319,7 @@ export default function ${isNext ? "Page" : "App"}() {
|
|
|
319
319
|
</main>
|
|
320
320
|
|
|
321
321
|
<footer className="mt-20 text-muted-foreground font-medium text-sm">
|
|
322
|
-
Built with
|
|
322
|
+
Built with formix-ui • The modern form stack
|
|
323
323
|
</footer>
|
|
324
324
|
</div>
|
|
325
325
|
</ThemeProvider>
|
|
@@ -342,14 +342,11 @@ const readPackageFile = (relativePath) => {
|
|
|
342
342
|
throw new Error(`File not found in package: ${relativePath}`);
|
|
343
343
|
};
|
|
344
344
|
// Utility: Check if config exists
|
|
345
|
-
const CONFIG_FILE = "
|
|
345
|
+
const CONFIG_FILE = "formix.config.json";
|
|
346
346
|
const hasConfig = () => fs.existsSync(path.resolve(process.cwd(), CONFIG_FILE));
|
|
347
347
|
const getConfig = () => fs.readJSONSync(path.resolve(process.cwd(), CONFIG_FILE));
|
|
348
348
|
const program = new Command();
|
|
349
|
-
program
|
|
350
|
-
.name("r-form-engine")
|
|
351
|
-
.description("CLI for r-form-engine")
|
|
352
|
-
.version(getPackageParam("version"));
|
|
349
|
+
program.name("formix-ui").description("CLI for formix-ui").version(getPackageParam("version"));
|
|
353
350
|
program
|
|
354
351
|
.command("add")
|
|
355
352
|
.description("Add a component to your project")
|
|
@@ -364,14 +361,14 @@ program
|
|
|
364
361
|
initial: true,
|
|
365
362
|
});
|
|
366
363
|
if (confirm.init) {
|
|
367
|
-
console.log(chalk.blue("Please run 'npx
|
|
364
|
+
console.log(chalk.blue("Please run 'npx formix-ui init' first."));
|
|
368
365
|
return;
|
|
369
366
|
}
|
|
370
367
|
return;
|
|
371
368
|
}
|
|
372
369
|
const config = getConfig();
|
|
373
370
|
const componentsDir = config.paths?.components || "src/components/ui";
|
|
374
|
-
const coreDir = config.paths?.core || "src/components/
|
|
371
|
+
const coreDir = config.paths?.core || "src/components/formix";
|
|
375
372
|
let componentsToAdd = componentName ? [componentName] : [];
|
|
376
373
|
if (!componentName) {
|
|
377
374
|
const res = await prompts({
|
|
@@ -529,7 +526,7 @@ program
|
|
|
529
526
|
// For simplicity, we'll just re-run 'add' for everything in a single go
|
|
530
527
|
const spinner = ora("Updating components...").start();
|
|
531
528
|
const componentsDir = config.paths?.components || "src/components/ui";
|
|
532
|
-
const coreDir = config.paths?.core || "src/components/
|
|
529
|
+
const coreDir = config.paths?.core || "src/components/formix";
|
|
533
530
|
const resolvedList = new Set();
|
|
534
531
|
const resolveDeps = (name) => {
|
|
535
532
|
if (resolvedList.has(name))
|
|
@@ -589,13 +586,13 @@ program
|
|
|
589
586
|
});
|
|
590
587
|
program
|
|
591
588
|
.command("init")
|
|
592
|
-
.description("Initialize
|
|
589
|
+
.description("Initialize formix-ui in your project")
|
|
593
590
|
.action(async () => {
|
|
594
|
-
console.log(chalk.blue.bold("\n🚀 Initializing
|
|
591
|
+
console.log(chalk.blue.bold("\n🚀 Initializing formix-ui...\n"));
|
|
595
592
|
const mode = await prompts({
|
|
596
593
|
type: "select",
|
|
597
594
|
name: "mode",
|
|
598
|
-
message: "How would you like to use
|
|
595
|
+
message: "How would you like to use formix-ui?",
|
|
599
596
|
choices: [
|
|
600
597
|
{
|
|
601
598
|
title: "Library (npm install)",
|
|
@@ -619,7 +616,7 @@ program
|
|
|
619
616
|
});
|
|
620
617
|
program
|
|
621
618
|
.command("create")
|
|
622
|
-
.description("Create a new
|
|
619
|
+
.description("Create a new formix-ui project")
|
|
623
620
|
.argument("[name]", "Project name")
|
|
624
621
|
.action(async (projectName) => {
|
|
625
622
|
let targetDir = projectName;
|
|
@@ -702,10 +699,10 @@ program
|
|
|
702
699
|
args.push("--no-src-dir", "--app", "--import-alias", "@/*");
|
|
703
700
|
await execa("npx", args, { stdio: "inherit" });
|
|
704
701
|
}
|
|
705
|
-
console.log(chalk.green("\nProject scaffolded. Initializing
|
|
702
|
+
console.log(chalk.green("\nProject scaffolded. Initializing formix-ui..."));
|
|
706
703
|
process.chdir(projectPath);
|
|
707
|
-
const spinner = ora("Installing
|
|
708
|
-
const deps = ["
|
|
704
|
+
const spinner = ora("Installing formix-ui dependencies...").start();
|
|
705
|
+
const deps = ["formix-ui"];
|
|
709
706
|
if (frameworkConfig.validationLib === "zod")
|
|
710
707
|
deps.push("zod");
|
|
711
708
|
if (frameworkConfig.validationLib === "yup")
|
|
@@ -816,7 +813,7 @@ async function runLibraryInit() {
|
|
|
816
813
|
type: "text",
|
|
817
814
|
name: "packageName",
|
|
818
815
|
message: "What is the package name you are using?",
|
|
819
|
-
initial: "
|
|
816
|
+
initial: "formix-ui",
|
|
820
817
|
},
|
|
821
818
|
{
|
|
822
819
|
type: "confirm",
|
|
@@ -856,7 +853,7 @@ async function runLibraryInit() {
|
|
|
856
853
|
name: "formState",
|
|
857
854
|
message: "Which form state manager would you like to use?",
|
|
858
855
|
choices: [
|
|
859
|
-
{ title: "Standard (
|
|
856
|
+
{ title: "Standard (formix-ui)", value: "standard" },
|
|
860
857
|
{ title: "Formik", value: "formik" },
|
|
861
858
|
{ title: "React Hook Form", value: "rhf" },
|
|
862
859
|
],
|
|
@@ -943,7 +940,7 @@ async function runCopyInit() {
|
|
|
943
940
|
type: "text",
|
|
944
941
|
name: "packageName",
|
|
945
942
|
message: "What is the package name you are using?",
|
|
946
|
-
initial: "
|
|
943
|
+
initial: "formix-ui",
|
|
947
944
|
},
|
|
948
945
|
{
|
|
949
946
|
type: "text",
|
|
@@ -955,7 +952,7 @@ async function runCopyInit() {
|
|
|
955
952
|
type: "text",
|
|
956
953
|
name: "coreDir",
|
|
957
954
|
message: "Where should we place core files (theme, utils)?",
|
|
958
|
-
initial: (_, values) => values.framework === "next" ? "app/components/
|
|
955
|
+
initial: (_, values) => values.framework === "next" ? "app/components/formix" : "src/components/formix",
|
|
959
956
|
},
|
|
960
957
|
{
|
|
961
958
|
type: "confirm",
|
|
@@ -1016,7 +1013,7 @@ async function runCopyInit() {
|
|
|
1016
1013
|
}
|
|
1017
1014
|
spinner.succeed("Configuration saved.");
|
|
1018
1015
|
console.log(chalk.green("You are set up! Run this to install the core system:"));
|
|
1019
|
-
console.log(chalk.cyan("npx
|
|
1016
|
+
console.log(chalk.cyan("npx formix-ui add theme-core"));
|
|
1020
1017
|
}
|
|
1021
1018
|
catch (e) {
|
|
1022
1019
|
spinner.fail("Initialization failed");
|
|
@@ -1024,7 +1021,7 @@ async function runCopyInit() {
|
|
|
1024
1021
|
}
|
|
1025
1022
|
}
|
|
1026
1023
|
async function configureTailwindInternal(version, localMode = false) {
|
|
1027
|
-
const config = hasConfig() ? getConfig() : { packageName: "
|
|
1024
|
+
const config = hasConfig() ? getConfig() : { packageName: "formix-ui" };
|
|
1028
1025
|
// Locate CSS file
|
|
1029
1026
|
const cssFiles = ["src/index.css", "src/globals.css", "src/App.css", "styles/globals.css"];
|
|
1030
1027
|
const foundCss = cssFiles.find((f) => fs.existsSync(path.resolve(process.cwd(), f)));
|
|
@@ -1047,10 +1044,10 @@ async function configureTailwindInternal(version, localMode = false) {
|
|
|
1047
1044
|
if (!foundCss) {
|
|
1048
1045
|
let template = TAILWIND_V4_CSS;
|
|
1049
1046
|
if (localMode) {
|
|
1050
|
-
template = template.replace(`@source "../node_modules/
|
|
1047
|
+
template = template.replace(`@source "../node_modules/formix-ui/dist";`, "");
|
|
1051
1048
|
}
|
|
1052
1049
|
else {
|
|
1053
|
-
template = template.replace(`@source "../node_modules/
|
|
1050
|
+
template = template.replace(`@source "../node_modules/formix-ui/dist";`, `@source "../node_modules/${config.packageName}/dist";`);
|
|
1054
1051
|
}
|
|
1055
1052
|
fs.writeFileSync(cssPath, template);
|
|
1056
1053
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CliGuidePage: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ContributingPage: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EcosystemPage: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TasksPage: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const UsageGuidePage: () => import("react/jsx-runtime").JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -3317,8 +3317,8 @@ function kt(t) {
|
|
|
3317
3317
|
path: w.path || n,
|
|
3318
3318
|
spec: o.spec,
|
|
3319
3319
|
disableStackTrace: w.disableStackTrace || l
|
|
3320
|
-
}, k, w.params), u),
|
|
3321
|
-
return
|
|
3320
|
+
}, k, w.params), u), U = new Ne(Ne.formatError(w.message || i, ee), r, ee.path, w.type || f, ee.disableStackTrace);
|
|
3321
|
+
return U.params = ee, U;
|
|
3322
3322
|
}
|
|
3323
3323
|
const v = C ? d : p;
|
|
3324
3324
|
let h = {
|
|
@@ -4864,9 +4864,9 @@ const Ba = (t) => {
|
|
|
4864
4864
|
},
|
|
4865
4865
|
wrapper: "relative",
|
|
4866
4866
|
input: ({ error: t, variant: e }) => {
|
|
4867
|
-
const r = "
|
|
4867
|
+
const r = "block h-10 w-full rounded-md px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all bg-transparent";
|
|
4868
4868
|
let n = "";
|
|
4869
|
-
return e === "filled" ? n = "bg-muted border-transparent focus-visible:bg-background border-b-2 border-b-input focus-visible:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary" : n = "border border-input bg-
|
|
4869
|
+
return e === "filled" ? n = "bg-muted border-transparent focus-visible:bg-background border-b-2 border-b-input focus-visible:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary" : n = "border border-input bg-transparent", q(
|
|
4870
4870
|
r,
|
|
4871
4871
|
n,
|
|
4872
4872
|
t ? "border-destructive focus-visible:ring-destructive" : ""
|
|
@@ -4888,9 +4888,9 @@ const Ba = (t) => {
|
|
|
4888
4888
|
);
|
|
4889
4889
|
},
|
|
4890
4890
|
input: ({ error: t, variant: e }) => {
|
|
4891
|
-
const r = "
|
|
4891
|
+
const r = "block min-h-[80px] w-full rounded-md px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all bg-transparent";
|
|
4892
4892
|
let n = "";
|
|
4893
|
-
return e === "filled" ? n = "bg-muted border-transparent focus-visible:bg-background border-b-2 border-b-input focus-visible:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary" : n = "border border-input bg-
|
|
4893
|
+
return e === "filled" ? n = "bg-muted border-transparent focus-visible:bg-background border-b-2 border-b-input focus-visible:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary" : n = "border border-input bg-transparent", q(
|
|
4894
4894
|
r,
|
|
4895
4895
|
n,
|
|
4896
4896
|
t ? "border-destructive focus-visible:ring-destructive" : ""
|
|
@@ -4912,9 +4912,9 @@ const Ba = (t) => {
|
|
|
4912
4912
|
);
|
|
4913
4913
|
},
|
|
4914
4914
|
input: ({ error: t, variant: e }) => {
|
|
4915
|
-
const r = "
|
|
4915
|
+
const r = "block h-10 w-full appearance-none rounded-md px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all bg-transparent";
|
|
4916
4916
|
let n = "";
|
|
4917
|
-
return e === "filled" ? n = "bg-muted border-transparent focus:bg-background border-b-2 border-b-input focus:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus:ring-0 focus:border-primary px-0" : n = "border border-input bg-
|
|
4917
|
+
return e === "filled" ? n = "bg-muted border-transparent focus:bg-background border-b-2 border-b-input focus:border-b-primary" : e === "standard" ? n = "bg-transparent border-0 border-b-2 border-input rounded-none px-0 focus:ring-0 focus:border-primary px-0" : n = "border border-input bg-transparent", q(r, n, t ? "border-destructive focus:ring-destructive" : "");
|
|
4918
4918
|
},
|
|
4919
4919
|
errorText: "text-[0.8rem] font-medium text-destructive mt-1"
|
|
4920
4920
|
},
|
|
@@ -4949,7 +4949,7 @@ const Ba = (t) => {
|
|
|
4949
4949
|
label: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
4950
4950
|
track: ({ checked: t }) => q(
|
|
4951
4951
|
"peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",
|
|
4952
|
-
t ? "bg-primary" : "bg-
|
|
4952
|
+
t ? "bg-primary" : "bg-control-default"
|
|
4953
4953
|
),
|
|
4954
4954
|
thumb: ({ checked: t }) => q(
|
|
4955
4955
|
"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform absolute top-0.5 left-0.5",
|
|
@@ -5009,7 +5009,7 @@ const Ba = (t) => {
|
|
|
5009
5009
|
),
|
|
5010
5010
|
errorText: "text-[0.8rem] font-medium text-destructive mt-1"
|
|
5011
5011
|
},
|
|
5012
|
-
|
|
5012
|
+
dateTimePicker: {
|
|
5013
5013
|
root: ({ variant: t }) => q("flex flex-col mb-4 relative", t === "floating" ? "relative pt-2" : "gap-1.5"),
|
|
5014
5014
|
label: ({ focused: t, error: e, variant: r, value: n }) => {
|
|
5015
5015
|
const a = r === "floating", s = n != null && n !== "";
|
|
@@ -5034,9 +5034,15 @@ const Ba = (t) => {
|
|
|
5034
5034
|
);
|
|
5035
5035
|
},
|
|
5036
5036
|
input: "w-full h-full bg-transparent outline-none placeholder:text-muted-foreground",
|
|
5037
|
+
calendarIcon: ({ disabled: t }) => q(
|
|
5038
|
+
"focus:outline-none transition-colors",
|
|
5039
|
+
t ? "text-muted-foreground cursor-not-allowed opacity-50" : "hover:text-primary cursor-pointer text-muted-foreground"
|
|
5040
|
+
),
|
|
5041
|
+
clearButton: "text-muted-foreground hover:text-foreground transition-colors",
|
|
5042
|
+
popover: "absolute top-full left-0 z-50 mt-1 min-w-full w-auto whitespace-nowrap shadow-xl rounded-lg animate-in fade-in zoom-in-95 duration-200 flex overflow-hidden ring-1 ring-black/5 bg-popover text-popover-foreground",
|
|
5037
5043
|
errorText: "text-[0.8rem] font-medium text-destructive mt-1"
|
|
5038
5044
|
},
|
|
5039
|
-
|
|
5045
|
+
datePicker: {
|
|
5040
5046
|
root: ({ variant: t }) => q("flex flex-col mb-4 relative", t === "floating" ? "relative pt-2" : "gap-1.5"),
|
|
5041
5047
|
label: ({ focused: t, error: e, variant: r, value: n }) => {
|
|
5042
5048
|
const a = r === "floating", s = n != null && n !== "";
|
|
@@ -5063,7 +5069,7 @@ const Ba = (t) => {
|
|
|
5063
5069
|
input: "w-full h-full bg-transparent outline-none placeholder:text-muted-foreground",
|
|
5064
5070
|
errorText: "text-[0.8rem] font-medium text-destructive mt-1"
|
|
5065
5071
|
},
|
|
5066
|
-
|
|
5072
|
+
dateRangePicker: {
|
|
5067
5073
|
root: ({ variant: t }) => q("flex flex-col mb-4 relative", t === "floating" ? "relative pt-2" : "gap-1.5"),
|
|
5068
5074
|
label: ({ focused: t, error: e, variant: r, value: n }) => {
|
|
5069
5075
|
const a = r === "floating", s = n != null && n !== "";
|
|
@@ -5574,7 +5580,7 @@ const me = ({
|
|
|
5574
5580
|
globalOverRide: u = !0,
|
|
5575
5581
|
variant: g
|
|
5576
5582
|
}) => {
|
|
5577
|
-
const [v, h] = z(!1), [x, T] = z(""), [j, V] = z(-1), ne = ve(null), w = ve(null), ee = ve(null),
|
|
5583
|
+
const [v, h] = z(!1), [x, T] = z(""), [j, V] = z(-1), ne = ve(null), w = ve(null), ee = ve(null), U = As(), te = `${U}-listbox`, we = (D) => `${U}-option-${D}`, [H, K] = z([]), [L, Y] = z(!1), oe = eo(x, 500), he = S || L, W = C ? H : f, X = Xe(() => C || !x ? W : W.filter(
|
|
5578
5584
|
(D) => D.label.toLowerCase().includes(x.toLowerCase())
|
|
5579
5585
|
), [W, x, C]);
|
|
5580
5586
|
be(() => {
|
|
@@ -5946,7 +5952,7 @@ const me = ({
|
|
|
5946
5952
|
};
|
|
5947
5953
|
return document.addEventListener("mousedown", K), () => document.removeEventListener("mousedown", K);
|
|
5948
5954
|
}, []);
|
|
5949
|
-
const
|
|
5955
|
+
const U = Re(
|
|
5950
5956
|
"datePicker",
|
|
5951
5957
|
{
|
|
5952
5958
|
error: !!r,
|
|
@@ -5968,7 +5974,7 @@ const me = ({
|
|
|
5968
5974
|
if (i && Y < new Date(i.setHours(0, 0, 0, 0)) || b && Y > new Date(b.setHours(0, 0, 0, 0))) return;
|
|
5969
5975
|
m?.(Y);
|
|
5970
5976
|
}
|
|
5971
|
-
},
|
|
5977
|
+
}, H = /* @__PURE__ */ c(
|
|
5972
5978
|
"button",
|
|
5973
5979
|
{
|
|
5974
5980
|
type: "button",
|
|
@@ -6004,15 +6010,15 @@ const me = ({
|
|
|
6004
6010
|
"div",
|
|
6005
6011
|
{
|
|
6006
6012
|
ref: j,
|
|
6007
|
-
className: `${
|
|
6013
|
+
className: `${U.root} ${s || ""} ${p ? "w-full" : ""}`,
|
|
6008
6014
|
children: [
|
|
6009
|
-
!te && e && /* @__PURE__ */ y("label", { htmlFor: t, className:
|
|
6015
|
+
!te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: U.label, children: [
|
|
6010
6016
|
e,
|
|
6011
6017
|
" ",
|
|
6012
6018
|
n && /* @__PURE__ */ c("span", { className: "text-destructive", children: "*" })
|
|
6013
6019
|
] }),
|
|
6014
|
-
/* @__PURE__ */ y("div", { className:
|
|
6015
|
-
te && e && /* @__PURE__ */ y("label", { htmlFor: t, className:
|
|
6020
|
+
/* @__PURE__ */ y("div", { className: U.wrapper, onClick: () => !a && g(!0), children: [
|
|
6021
|
+
te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: U.label, children: [
|
|
6016
6022
|
e,
|
|
6017
6023
|
" ",
|
|
6018
6024
|
n && /* @__PURE__ */ c("span", { className: "text-destructive", children: "*" })
|
|
@@ -6033,7 +6039,7 @@ const me = ({
|
|
|
6033
6039
|
},
|
|
6034
6040
|
disabled: a,
|
|
6035
6041
|
placeholder: te && !v && !x ? "" : S,
|
|
6036
|
-
className:
|
|
6042
|
+
className: U.input,
|
|
6037
6043
|
autoComplete: "off"
|
|
6038
6044
|
}
|
|
6039
6045
|
),
|
|
@@ -6049,10 +6055,10 @@ const me = ({
|
|
|
6049
6055
|
children: "✕"
|
|
6050
6056
|
}
|
|
6051
6057
|
),
|
|
6052
|
-
d ||
|
|
6058
|
+
d || H
|
|
6053
6059
|
] })
|
|
6054
6060
|
] }),
|
|
6055
|
-
r && /* @__PURE__ */ c("span", { className:
|
|
6061
|
+
r && /* @__PURE__ */ c("span", { className: U.errorText, children: r }),
|
|
6056
6062
|
u && !a && /* @__PURE__ */ c("div", { className: "absolute top-full left-0 z-50 mt-1 shadow-xl rounded-lg animate-in fade-in zoom-in-95 duration-200", children: /* @__PURE__ */ c(
|
|
6057
6063
|
rn,
|
|
6058
6064
|
{
|
|
@@ -6119,14 +6125,14 @@ const me = ({
|
|
|
6119
6125
|
globalOverRide: l = !0,
|
|
6120
6126
|
variant: u
|
|
6121
6127
|
}) => {
|
|
6122
|
-
const [g, v] = z(!1), [h, x] = z(!1), [T, j] = z(""), V = ve(null), [ne, w] = z(f), [ee,
|
|
6128
|
+
const [g, v] = z(!1), [h, x] = z(!1), [T, j] = z(""), V = ve(null), [ne, w] = z(f), [ee, U] = z(N), [te, we] = z(C);
|
|
6123
6129
|
if (f !== ne || N !== ee || C !== te) {
|
|
6124
|
-
w(f),
|
|
6130
|
+
w(f), U(N), we(C);
|
|
6125
6131
|
const W = C ? N.includes("HH:mm") ? N : `${N} HH:mm` : N, X = f?.start ? At(f.start, W) : "", fe = f?.end ? At(f.end, W) : "";
|
|
6126
6132
|
let ke = "";
|
|
6127
6133
|
X && fe ? ke = `${X} - ${fe}` : X && (ke = `${X} - `), j(ke);
|
|
6128
6134
|
}
|
|
6129
|
-
const [
|
|
6135
|
+
const [H, K] = z("start");
|
|
6130
6136
|
be(() => {
|
|
6131
6137
|
const W = (X) => {
|
|
6132
6138
|
V.current && !V.current.contains(X.target) && v(!1);
|
|
@@ -6145,10 +6151,10 @@ const me = ({
|
|
|
6145
6151
|
void 0,
|
|
6146
6152
|
l
|
|
6147
6153
|
), Y = u === "floating", oe = (W) => {
|
|
6148
|
-
if (
|
|
6154
|
+
if (H === "start" && f?.start) {
|
|
6149
6155
|
const X = new Date(f.start);
|
|
6150
6156
|
X.setHours(W.getHours()), X.setMinutes(W.getMinutes()), m && m({ ...f, start: X });
|
|
6151
|
-
} else if (
|
|
6157
|
+
} else if (H === "end" && f?.end) {
|
|
6152
6158
|
const X = new Date(f.end);
|
|
6153
6159
|
X.setHours(W.getHours()), X.setMinutes(W.getMinutes()), m && m({ ...f, end: X });
|
|
6154
6160
|
}
|
|
@@ -6271,7 +6277,7 @@ const me = ({
|
|
|
6271
6277
|
/* @__PURE__ */ c(
|
|
6272
6278
|
"button",
|
|
6273
6279
|
{
|
|
6274
|
-
className: `flex-1 py-2 text-xs font-semibold uppercase ${
|
|
6280
|
+
className: `flex-1 py-2 text-xs font-semibold uppercase ${H === "start" ? "bg-gray-50 dark:bg-zinc-900/50 text-primary" : "text-gray-500 hover:bg-gray-50 dark:hover:bg-zinc-900"}`,
|
|
6275
6281
|
onClick: () => K("start"),
|
|
6276
6282
|
children: "Start Time"
|
|
6277
6283
|
}
|
|
@@ -6279,15 +6285,15 @@ const me = ({
|
|
|
6279
6285
|
/* @__PURE__ */ c(
|
|
6280
6286
|
"button",
|
|
6281
6287
|
{
|
|
6282
|
-
className: `flex-1 py-2 text-xs font-semibold uppercase ${
|
|
6288
|
+
className: `flex-1 py-2 text-xs font-semibold uppercase ${H === "end" ? "bg-gray-50 dark:bg-zinc-900/50 text-primary" : "text-gray-500 hover:bg-gray-50 dark:hover:bg-zinc-900"}`,
|
|
6283
6289
|
onClick: () => K("end"),
|
|
6284
6290
|
children: "End Time"
|
|
6285
6291
|
}
|
|
6286
6292
|
)
|
|
6287
6293
|
] }),
|
|
6288
6294
|
/* @__PURE__ */ y("div", { className: "flex-1 relative", children: [
|
|
6289
|
-
|
|
6290
|
-
|
|
6295
|
+
H === "start" && (f?.start ? /* @__PURE__ */ c(lr, { value: f.start, onChange: oe }) : /* @__PURE__ */ c("div", { className: "flex items-center justify-center h-full text-xs text-gray-400 px-4 text-center", children: "Select Start Date first" })),
|
|
6296
|
+
H === "end" && (f?.end ? /* @__PURE__ */ c(lr, { value: f.end, onChange: oe }) : /* @__PURE__ */ c("div", { className: "flex items-center justify-center h-full text-xs text-gray-400 px-4 text-center", children: "Select End Date first" }))
|
|
6291
6297
|
] })
|
|
6292
6298
|
] })
|
|
6293
6299
|
]
|
|
@@ -6323,7 +6329,7 @@ const me = ({
|
|
|
6323
6329
|
};
|
|
6324
6330
|
return document.addEventListener("mousedown", Y), () => document.removeEventListener("mousedown", Y);
|
|
6325
6331
|
}, []);
|
|
6326
|
-
const
|
|
6332
|
+
const U = Re(
|
|
6327
6333
|
"dateTimePicker",
|
|
6328
6334
|
{
|
|
6329
6335
|
error: !!r,
|
|
@@ -6343,7 +6349,7 @@ const me = ({
|
|
|
6343
6349
|
m?.(he);
|
|
6344
6350
|
} else
|
|
6345
6351
|
oe || m?.(null);
|
|
6346
|
-
},
|
|
6352
|
+
}, H = (Y) => {
|
|
6347
6353
|
const oe = new Date(Y);
|
|
6348
6354
|
f ? (oe.setHours(f.getHours()), oe.setMinutes(f.getMinutes()), oe.setSeconds(f.getSeconds())) : oe.setHours(0, 0, 0, 0), m?.(oe);
|
|
6349
6355
|
}, K = (Y) => {
|
|
@@ -6356,7 +6362,7 @@ const me = ({
|
|
|
6356
6362
|
a || (Y.preventDefault(), g(!u));
|
|
6357
6363
|
},
|
|
6358
6364
|
disabled: a,
|
|
6359
|
-
className:
|
|
6365
|
+
className: U.calendarIcon,
|
|
6360
6366
|
tabIndex: -1,
|
|
6361
6367
|
children: /* @__PURE__ */ y(
|
|
6362
6368
|
"svg",
|
|
@@ -6385,15 +6391,15 @@ const me = ({
|
|
|
6385
6391
|
"div",
|
|
6386
6392
|
{
|
|
6387
6393
|
ref: j,
|
|
6388
|
-
className: `${
|
|
6394
|
+
className: `${U.root} ${s || ""} ${p ? "w-full" : ""}`,
|
|
6389
6395
|
children: [
|
|
6390
|
-
!te && e && /* @__PURE__ */ y("label", { htmlFor: t, className:
|
|
6396
|
+
!te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: U.label, children: [
|
|
6391
6397
|
e,
|
|
6392
6398
|
" ",
|
|
6393
6399
|
n && /* @__PURE__ */ c("span", { className: "text-destructive", children: "*" })
|
|
6394
6400
|
] }),
|
|
6395
|
-
/* @__PURE__ */ y("div", { className:
|
|
6396
|
-
te && e && /* @__PURE__ */ y("label", { htmlFor: t, className:
|
|
6401
|
+
/* @__PURE__ */ y("div", { className: U.wrapper, onClick: () => !a && g(!0), children: [
|
|
6402
|
+
te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: U.label, children: [
|
|
6397
6403
|
e,
|
|
6398
6404
|
" ",
|
|
6399
6405
|
n && /* @__PURE__ */ c("span", { className: "text-destructive", children: "*" })
|
|
@@ -6414,7 +6420,7 @@ const me = ({
|
|
|
6414
6420
|
},
|
|
6415
6421
|
disabled: a,
|
|
6416
6422
|
placeholder: te && !v && !x ? "" : S,
|
|
6417
|
-
className:
|
|
6423
|
+
className: U.input,
|
|
6418
6424
|
autoComplete: "off"
|
|
6419
6425
|
}
|
|
6420
6426
|
),
|
|
@@ -6426,16 +6432,16 @@ const me = ({
|
|
|
6426
6432
|
onClick: (Y) => {
|
|
6427
6433
|
Y.stopPropagation(), k(), T(""), m?.(null);
|
|
6428
6434
|
},
|
|
6429
|
-
className:
|
|
6435
|
+
className: U.clearButton,
|
|
6430
6436
|
children: "✕"
|
|
6431
6437
|
}
|
|
6432
6438
|
),
|
|
6433
6439
|
d || L
|
|
6434
6440
|
] })
|
|
6435
6441
|
] }),
|
|
6436
|
-
r && /* @__PURE__ */ c("span", { className:
|
|
6437
|
-
u && !a && /* @__PURE__ */ y("div", { className:
|
|
6438
|
-
/* @__PURE__ */ c(rn, { value: f, onChange:
|
|
6442
|
+
r && /* @__PURE__ */ c("span", { className: U.errorText, children: r }),
|
|
6443
|
+
u && !a && /* @__PURE__ */ y("div", { className: U.popover, children: [
|
|
6444
|
+
/* @__PURE__ */ c(rn, { value: f, onChange: H, minDate: i, maxDate: b }),
|
|
6439
6445
|
/* @__PURE__ */ c(lr, { value: f, onChange: K })
|
|
6440
6446
|
] })
|
|
6441
6447
|
]
|
|
@@ -6463,10 +6469,10 @@ const me = ({
|
|
|
6463
6469
|
}) => {
|
|
6464
6470
|
const [C, l] = z(!1), [u, g] = z(!1), [v, h] = z(""), x = ve(null), [T, j] = z(f), [V, ne] = z(i);
|
|
6465
6471
|
(f !== T || i !== V) && (j(f), ne(i), h(f ? At(f, i) : "")), be(() => {
|
|
6466
|
-
const
|
|
6472
|
+
const H = (K) => {
|
|
6467
6473
|
x.current && !x.current.contains(K.target) && l(!1);
|
|
6468
6474
|
};
|
|
6469
|
-
return document.addEventListener("mousedown",
|
|
6475
|
+
return document.addEventListener("mousedown", H), () => document.removeEventListener("mousedown", H);
|
|
6470
6476
|
}, []);
|
|
6471
6477
|
const w = Re(
|
|
6472
6478
|
"timePicker",
|
|
@@ -6479,17 +6485,17 @@ const me = ({
|
|
|
6479
6485
|
},
|
|
6480
6486
|
void 0,
|
|
6481
6487
|
N
|
|
6482
|
-
), ee = S === "floating",
|
|
6483
|
-
h(
|
|
6484
|
-
}, te = (
|
|
6488
|
+
), ee = S === "floating", U = (H) => {
|
|
6489
|
+
h(H.target.value), H.target.value || m?.(null);
|
|
6490
|
+
}, te = (H) => {
|
|
6485
6491
|
const K = new Date(f || /* @__PURE__ */ new Date());
|
|
6486
|
-
K.setHours(
|
|
6492
|
+
K.setHours(H.getHours()), K.setMinutes(H.getMinutes()), K.setSeconds(0), K.setMilliseconds(0), m?.(K);
|
|
6487
6493
|
}, we = /* @__PURE__ */ c(
|
|
6488
6494
|
"button",
|
|
6489
6495
|
{
|
|
6490
6496
|
type: "button",
|
|
6491
|
-
onClick: (
|
|
6492
|
-
a || (
|
|
6497
|
+
onClick: (H) => {
|
|
6498
|
+
a || (H.preventDefault(), l(!C));
|
|
6493
6499
|
},
|
|
6494
6500
|
disabled: a,
|
|
6495
6501
|
className: `focus:outline-none transition-colors ${a ? "text-muted-foreground cursor-not-allowed opacity-50" : "hover:text-primary cursor-pointer text-muted-foreground"}`,
|
|
@@ -6538,7 +6544,7 @@ const me = ({
|
|
|
6538
6544
|
id: t,
|
|
6539
6545
|
type: "text",
|
|
6540
6546
|
value: v,
|
|
6541
|
-
onChange:
|
|
6547
|
+
onChange: U,
|
|
6542
6548
|
onFocus: () => {
|
|
6543
6549
|
g(!0);
|
|
6544
6550
|
},
|
|
@@ -6556,8 +6562,8 @@ const me = ({
|
|
|
6556
6562
|
"button",
|
|
6557
6563
|
{
|
|
6558
6564
|
type: "button",
|
|
6559
|
-
onClick: (
|
|
6560
|
-
|
|
6565
|
+
onClick: (H) => {
|
|
6566
|
+
H.stopPropagation(), k(), h(""), m?.(null);
|
|
6561
6567
|
},
|
|
6562
6568
|
className: "text-muted-foreground hover:text-foreground",
|
|
6563
6569
|
children: "✕"
|
|
@@ -6692,13 +6698,13 @@ const qr = rt(
|
|
|
6692
6698
|
}
|
|
6693
6699
|
}));
|
|
6694
6700
|
const ne = (w) => {
|
|
6695
|
-
const ee = Vr(w, S) && !w.hidden,
|
|
6696
|
-
if (
|
|
6701
|
+
const ee = Vr(w, S) && !w.hidden, U = pi(w, S, V.current), te = De(S, w.name);
|
|
6702
|
+
if (U && te !== "" && te !== null && te !== void 0) {
|
|
6697
6703
|
let L = "";
|
|
6698
6704
|
w.type === "daterange" ? L = { start: null, end: null } : (w.type === "autocomplete" || w.type === "select") && w.multiple ? L = [] : w.type === "checkbox" || w.type === "switch" ? L = !1 : (w.type === "date" || w.type === "time" || w.type === "datetime" || w.type === "file") && (L = null), u(w.name, L);
|
|
6699
6705
|
}
|
|
6700
6706
|
if (!ee) return null;
|
|
6701
|
-
const we = fi(w, S),
|
|
6707
|
+
const we = fi(w, S), H = {
|
|
6702
6708
|
id: w.name,
|
|
6703
6709
|
label: w.label,
|
|
6704
6710
|
placeholder: w.placeholder,
|
|
@@ -6741,7 +6747,7 @@ const qr = rt(
|
|
|
6741
6747
|
A,
|
|
6742
6748
|
{
|
|
6743
6749
|
type: w.type,
|
|
6744
|
-
...
|
|
6750
|
+
...H,
|
|
6745
6751
|
onChange: K,
|
|
6746
6752
|
onBlur: () => g(w.name),
|
|
6747
6753
|
startAdornment: w.startAdornment,
|
|
@@ -6752,7 +6758,7 @@ const qr = rt(
|
|
|
6752
6758
|
return /* @__PURE__ */ c(
|
|
6753
6759
|
Bt,
|
|
6754
6760
|
{
|
|
6755
|
-
...
|
|
6761
|
+
...H,
|
|
6756
6762
|
onChange: K,
|
|
6757
6763
|
onBlur: () => g(w.name),
|
|
6758
6764
|
rows: w.rows,
|
|
@@ -6765,7 +6771,7 @@ const qr = rt(
|
|
|
6765
6771
|
return /* @__PURE__ */ c(
|
|
6766
6772
|
Wa,
|
|
6767
6773
|
{
|
|
6768
|
-
...
|
|
6774
|
+
...H,
|
|
6769
6775
|
checked: !!De(S, w.name),
|
|
6770
6776
|
onChange: (L) => u(w.name, L.target.checked, w.validateOnChange)
|
|
6771
6777
|
}
|
|
@@ -6774,7 +6780,7 @@ const qr = rt(
|
|
|
6774
6780
|
return /* @__PURE__ */ c(
|
|
6775
6781
|
pe,
|
|
6776
6782
|
{
|
|
6777
|
-
...
|
|
6783
|
+
...H,
|
|
6778
6784
|
checked: !!De(S, w.name),
|
|
6779
6785
|
onChange: (L) => u(w.name, L.target.checked, w.validateOnChange)
|
|
6780
6786
|
}
|
|
@@ -6783,7 +6789,7 @@ const qr = rt(
|
|
|
6783
6789
|
return /* @__PURE__ */ c(
|
|
6784
6790
|
Ga,
|
|
6785
6791
|
{
|
|
6786
|
-
...
|
|
6792
|
+
...H,
|
|
6787
6793
|
name: w.name,
|
|
6788
6794
|
options: w.options || [],
|
|
6789
6795
|
direction: w.direction,
|
|
@@ -6796,7 +6802,7 @@ const qr = rt(
|
|
|
6796
6802
|
return /* @__PURE__ */ c(
|
|
6797
6803
|
me,
|
|
6798
6804
|
{
|
|
6799
|
-
...
|
|
6805
|
+
...H,
|
|
6800
6806
|
options: w.options || [],
|
|
6801
6807
|
multiple: w.multiple,
|
|
6802
6808
|
loadOptions: w.asyncUrl ? async (L) => {
|
|
@@ -6814,16 +6820,16 @@ const qr = rt(
|
|
|
6814
6820
|
}
|
|
6815
6821
|
);
|
|
6816
6822
|
case "date":
|
|
6817
|
-
return /* @__PURE__ */ c(io, { ...
|
|
6823
|
+
return /* @__PURE__ */ c(io, { ...H, format: w.format });
|
|
6818
6824
|
case "time":
|
|
6819
|
-
return /* @__PURE__ */ c(co, { ...
|
|
6825
|
+
return /* @__PURE__ */ c(co, { ...H, format: w.format });
|
|
6820
6826
|
case "datetime":
|
|
6821
|
-
return /* @__PURE__ */ c(lo, { ...
|
|
6827
|
+
return /* @__PURE__ */ c(lo, { ...H, format: w.format });
|
|
6822
6828
|
case "daterange":
|
|
6823
6829
|
return /* @__PURE__ */ c(
|
|
6824
6830
|
oo,
|
|
6825
6831
|
{
|
|
6826
|
-
...
|
|
6832
|
+
...H,
|
|
6827
6833
|
format: w.format,
|
|
6828
6834
|
showTime: w.format?.includes("HH") || w.format?.includes("mm")
|
|
6829
6835
|
}
|
|
@@ -6833,7 +6839,7 @@ const qr = rt(
|
|
|
6833
6839
|
return /* @__PURE__ */ c(
|
|
6834
6840
|
Ja,
|
|
6835
6841
|
{
|
|
6836
|
-
...
|
|
6842
|
+
...H,
|
|
6837
6843
|
value: S[w.name],
|
|
6838
6844
|
onChange: (L) => u(w.name, L, w.validateOnChange),
|
|
6839
6845
|
multiple: w.multiple,
|
|
@@ -6846,7 +6852,7 @@ const qr = rt(
|
|
|
6846
6852
|
A,
|
|
6847
6853
|
{
|
|
6848
6854
|
type: "text",
|
|
6849
|
-
...
|
|
6855
|
+
...H,
|
|
6850
6856
|
onChange: (L) => u(w.name, L.target.value, w.validateOnChange),
|
|
6851
6857
|
onBlur: () => g(w.name)
|
|
6852
6858
|
}
|
|
@@ -7773,7 +7779,7 @@ function pd() {
|
|
|
7773
7779
|
}
|
|
7774
7780
|
}
|
|
7775
7781
|
}
|
|
7776
|
-
var h = p, x = f, T = d, j = o, V = e, ne = m, w = n, ee = N,
|
|
7782
|
+
var h = p, x = f, T = d, j = o, V = e, ne = m, w = n, ee = N, U = b, te = r, we = s, H = a, K = k, L = !1;
|
|
7777
7783
|
function Y(I) {
|
|
7778
7784
|
return L || (L = !0, console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")), oe(I) || v(I) === p;
|
|
7779
7785
|
}
|
|
@@ -7813,7 +7819,7 @@ function pd() {
|
|
|
7813
7819
|
function _t(I) {
|
|
7814
7820
|
return v(I) === k;
|
|
7815
7821
|
}
|
|
7816
|
-
ie.AsyncMode = h, ie.ConcurrentMode = x, ie.ContextConsumer = T, ie.ContextProvider = j, ie.Element = V, ie.ForwardRef = ne, ie.Fragment = w, ie.Lazy = ee, ie.Memo =
|
|
7822
|
+
ie.AsyncMode = h, ie.ConcurrentMode = x, ie.ContextConsumer = T, ie.ContextProvider = j, ie.Element = V, ie.ForwardRef = ne, ie.Fragment = w, ie.Lazy = ee, ie.Memo = U, ie.Portal = te, ie.Profiler = we, ie.StrictMode = H, ie.Suspense = K, ie.isAsyncMode = Y, ie.isConcurrentMode = oe, ie.isContextConsumer = he, ie.isContextProvider = W, ie.isElement = X, ie.isForwardRef = fe, ie.isFragment = ke, ie.isLazy = at, ie.isMemo = He, ie.isPortal = xt, ie.isProfiler = wt, ie.isStrictMode = st, ie.isSuspense = _t, ie.isValidElementType = g, ie.typeOf = v;
|
|
7817
7823
|
})()), ie;
|
|
7818
7824
|
}
|
|
7819
7825
|
var ma;
|
|
@@ -8086,7 +8092,7 @@ function xd(t) {
|
|
|
8086
8092
|
});
|
|
8087
8093
|
return ae;
|
|
8088
8094
|
});
|
|
8089
|
-
}, [i.validate, i.validationSchema, w, j, V]),
|
|
8095
|
+
}, [i.validate, i.validationSchema, w, j, V]), U = $e(function(_) {
|
|
8090
8096
|
return _ === void 0 && (_ = x.values), T({
|
|
8091
8097
|
type: "SET_ISVALIDATING",
|
|
8092
8098
|
payload: !0
|
|
@@ -8101,8 +8107,8 @@ function xd(t) {
|
|
|
8101
8107
|
});
|
|
8102
8108
|
});
|
|
8103
8109
|
be(function() {
|
|
8104
|
-
o && l.current === !0 && ot(b.current, i.initialValues) &&
|
|
8105
|
-
}, [o,
|
|
8110
|
+
o && l.current === !0 && ot(b.current, i.initialValues) && U(b.current);
|
|
8111
|
+
}, [o, U]);
|
|
8106
8112
|
var te = ue(function(_) {
|
|
8107
8113
|
var O = _ && _.values ? _.values : b.current, M = _ && _.errors ? _.errors : N.current ? N.current : i.initialErrors || {}, P = _ && _.touched ? _.touched : S.current ? S.current : i.initialTouched || {}, G = _ && _.status ? _.status : C.current ? C.current : i.initialStatus;
|
|
8108
8114
|
b.current = O, N.current = M, S.current = P, C.current = G;
|
|
@@ -8127,8 +8133,8 @@ function xd(t) {
|
|
|
8127
8133
|
ae();
|
|
8128
8134
|
}, [i.initialErrors, i.initialStatus, i.initialTouched, i.onReset]);
|
|
8129
8135
|
be(function() {
|
|
8130
|
-
l.current === !0 && !ot(b.current, i.initialValues) && f && (b.current = i.initialValues, te(), o &&
|
|
8131
|
-
}, [f, i.initialValues, te, o,
|
|
8136
|
+
l.current === !0 && !ot(b.current, i.initialValues) && f && (b.current = i.initialValues, te(), o && U(b.current));
|
|
8137
|
+
}, [f, i.initialValues, te, o, U]), be(function() {
|
|
8132
8138
|
f && l.current === !0 && !ot(N.current, i.initialErrors) && (N.current = i.initialErrors || it, T({
|
|
8133
8139
|
type: "SET_ERRORS",
|
|
8134
8140
|
payload: i.initialErrors || it
|
|
@@ -8189,7 +8195,7 @@ function xd(t) {
|
|
|
8189
8195
|
});
|
|
8190
8196
|
});
|
|
8191
8197
|
return Promise.resolve();
|
|
8192
|
-
}),
|
|
8198
|
+
}), H = ue(function(_, O) {
|
|
8193
8199
|
var M = O.validate;
|
|
8194
8200
|
u.current[_] = {
|
|
8195
8201
|
validate: M
|
|
@@ -8202,7 +8208,7 @@ function xd(t) {
|
|
|
8202
8208
|
payload: _
|
|
8203
8209
|
});
|
|
8204
8210
|
var M = O === void 0 ? a : O;
|
|
8205
|
-
return M ?
|
|
8211
|
+
return M ? U(x.values) : Promise.resolve();
|
|
8206
8212
|
}), Y = ue(function(_) {
|
|
8207
8213
|
T({
|
|
8208
8214
|
type: "SET_ERRORS",
|
|
@@ -8215,7 +8221,7 @@ function xd(t) {
|
|
|
8215
8221
|
payload: M
|
|
8216
8222
|
});
|
|
8217
8223
|
var P = O === void 0 ? r : O;
|
|
8218
|
-
return P ?
|
|
8224
|
+
return P ? U(M) : Promise.resolve();
|
|
8219
8225
|
}), he = ue(function(_, O) {
|
|
8220
8226
|
T({
|
|
8221
8227
|
type: "SET_FIELD_ERROR",
|
|
@@ -8234,7 +8240,7 @@ function xd(t) {
|
|
|
8234
8240
|
}
|
|
8235
8241
|
});
|
|
8236
8242
|
var G = M === void 0 ? r : M;
|
|
8237
|
-
return G ?
|
|
8243
|
+
return G ? U(ct(x.values, _, P)) : Promise.resolve();
|
|
8238
8244
|
}), X = ue(function(_, O) {
|
|
8239
8245
|
var M = O, P = _, G;
|
|
8240
8246
|
if (!Or(_)) {
|
|
@@ -8262,7 +8268,7 @@ function xd(t) {
|
|
|
8262
8268
|
}
|
|
8263
8269
|
});
|
|
8264
8270
|
var P = M === void 0 ? a : M;
|
|
8265
|
-
return P ?
|
|
8271
|
+
return P ? U(x.values) : Promise.resolve();
|
|
8266
8272
|
}), at = ue(function(_, O) {
|
|
8267
8273
|
_.persist && _.persist();
|
|
8268
8274
|
var M = _.target, P = M.name, G = M.id, ae = M.outerHTML, ye = O || P || G;
|
|
@@ -8300,7 +8306,7 @@ function xd(t) {
|
|
|
8300
8306
|
}, []), _t = $e(function() {
|
|
8301
8307
|
return T({
|
|
8302
8308
|
type: "SUBMIT_ATTEMPT"
|
|
8303
|
-
}),
|
|
8309
|
+
}), U().then(function(_) {
|
|
8304
8310
|
var O = _ instanceof Error, M = !O && Object.keys(_).length === 0;
|
|
8305
8311
|
if (M) {
|
|
8306
8312
|
var P;
|
|
@@ -8335,7 +8341,7 @@ function xd(t) {
|
|
|
8335
8341
|
});
|
|
8336
8342
|
}), _e = {
|
|
8337
8343
|
resetForm: te,
|
|
8338
|
-
validateForm:
|
|
8344
|
+
validateForm: U,
|
|
8339
8345
|
validateField: we,
|
|
8340
8346
|
setErrors: Y,
|
|
8341
8347
|
setFieldError: he,
|
|
@@ -8408,12 +8414,12 @@ function xd(t) {
|
|
|
8408
8414
|
setTouched: L,
|
|
8409
8415
|
setValues: oe,
|
|
8410
8416
|
submitForm: _t,
|
|
8411
|
-
validateForm:
|
|
8417
|
+
validateForm: U,
|
|
8412
8418
|
validateField: we,
|
|
8413
8419
|
isValid: Ts,
|
|
8414
8420
|
dirty: Mt,
|
|
8415
8421
|
unregisterField: K,
|
|
8416
|
-
registerField:
|
|
8422
|
+
registerField: H,
|
|
8417
8423
|
getFieldProps: It,
|
|
8418
8424
|
getFieldMeta: le,
|
|
8419
8425
|
getFieldHelpers: Oe,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "formix-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"build:site": "vite build",
|
|
34
34
|
"build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.lib.json && npm run build:cli",
|
|
35
35
|
"build:cli": "tsc -p tsconfig.cli.json",
|
|
36
|
-
"deploy": "gh-pages -d dist-site"
|
|
36
|
+
"deploy": "gh-pages -d dist-site",
|
|
37
|
+
"update-status": "node .agent/scripts/generate-status.js"
|
|
37
38
|
},
|
|
38
39
|
"bin": {
|
|
39
40
|
"formix-ui": "dist/bin/index.js",
|
|
@@ -82,13 +83,12 @@
|
|
|
82
83
|
"zod": ">=3.0.0"
|
|
83
84
|
},
|
|
84
85
|
"dependencies": {
|
|
85
|
-
"chalk": "^5.6.2",
|
|
86
86
|
"commander": "^14.0.2",
|
|
87
87
|
"date-fns": "^4.1.0",
|
|
88
88
|
"execa": "^9.6.1",
|
|
89
|
-
"fs-extra": "^11.3.3",
|
|
90
89
|
"ora": "^9.0.0",
|
|
91
|
-
"prompts": "^2.4.2"
|
|
90
|
+
"prompts": "^2.4.2",
|
|
91
|
+
"react-markdown": "^10.1.0"
|
|
92
92
|
},
|
|
93
93
|
"devDependencies": {
|
|
94
94
|
"@eslint/js": "^9.39.1",
|
|
@@ -99,10 +99,12 @@
|
|
|
99
99
|
"@types/react": "^19.2.5",
|
|
100
100
|
"@types/react-dom": "^19.2.3",
|
|
101
101
|
"@vitejs/plugin-react": "^5.1.1",
|
|
102
|
+
"chalk": "^5.6.2",
|
|
102
103
|
"eslint": "^9.39.1",
|
|
103
104
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
104
105
|
"eslint-plugin-react-refresh": "^0.4.24",
|
|
105
106
|
"formik": "^2.4.9",
|
|
107
|
+
"fs-extra": "^11.3.3",
|
|
106
108
|
"gh-pages": "^6.3.0",
|
|
107
109
|
"globals": "^16.5.0",
|
|
108
110
|
"husky": "^9.1.7",
|
package/CHANGELOG.md
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to FormEngine will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [3.1.0] - 2026-01-17
|
|
9
|
-
|
|
10
|
-
### 🎉 New Features & Breakthroughs
|
|
11
|
-
|
|
12
|
-
#### **Themed Variant System**
|
|
13
|
-
|
|
14
|
-
- **Unified Variants**: Full support for `outline`, `filled`, `standard`, and `floating` variants across all input components.
|
|
15
|
-
- **Animated Notches**: Precision-engineered floating labels with a solid background notch effect.
|
|
16
|
-
- **Enhanced Date/Time Pickers**: `DatePicker`, `DateRangePicker`, `DateTimePicker`, and `TimePicker` now support the full variant system natively.
|
|
17
|
-
|
|
18
|
-
#### **CLI 3.0 Power Tools**
|
|
19
|
-
|
|
20
|
-
- **Dynamic Package Names**: Users can now specify a custom `packageName` during `init` for highly tailored local installations.
|
|
21
|
-
- **Component Tracking**: The new `r-form.json` config tracks every component installed in `copy` mode.
|
|
22
|
-
- **`update` Command**: Introduced a powerful `update` command to automatically synchronize your local component source files with the latest upstream library versions.
|
|
23
|
-
- **Intelligent Dependency Resolution**: The `add` and `update` commands now recursively manage internal dependencies (like `theme-core` and `date-utils`).
|
|
24
|
-
|
|
25
|
-
#### **Core Enhancements**
|
|
26
|
-
|
|
27
|
-
- **Native Implementation**: Fully transitioned from external UI libraries to high-performance, tailored native components for all Date/Time operations.
|
|
28
|
-
- **Floating Labels for Selects**: Integrated floating label animations into `Select` and `Autocomplete` components.
|
|
29
|
-
- **Library Exports**: Expanded the public API to export the complete suite of themed components.
|
|
30
|
-
|
|
31
|
-
### 🔧 Technical Details
|
|
32
|
-
|
|
33
|
-
- **Dependencies**: React 19.2, Tailwind CSS 4.1, Zod 4.3, date-fns 4.1.
|
|
34
|
-
- **CLI Utilities**: Chalk, Commander, Execa, Fs-extra, Ora, Prompts.
|
|
35
|
-
|
|
36
|
-
## [3.0.2] - 2026-01-13
|
|
37
|
-
|
|
38
|
-
### 🎉 Initial Release
|
|
39
|
-
|
|
40
|
-
#### Added
|
|
41
|
-
|
|
42
|
-
**Core Features**
|
|
43
|
-
|
|
44
|
-
- Schema-driven form rendering with 17 field types
|
|
45
|
-
- Visual form builder with drag-and-drop
|
|
46
|
-
- Comprehensive validation system (20+ validation types)
|
|
47
|
-
- Conditional field visibility with AND/OR rules
|
|
48
|
-
- Responsive 12-column grid layout
|
|
49
|
-
- Dark mode support
|
|
50
|
-
- TypeScript support
|
|
51
|
-
|
|
52
|
-
**Field Types**
|
|
53
|
-
|
|
54
|
-
- Text inputs: text, email, url, tel, password
|
|
55
|
-
- Number input with min/max/step
|
|
56
|
-
- Textarea with auto-grow and character count
|
|
57
|
-
- Autocomplete with async support and multi-select
|
|
58
|
-
- Native select with multi-select
|
|
59
|
-
- Checkbox, Switch, Radio groups
|
|
60
|
-
- File upload with preview modes
|
|
61
|
-
- Date/Time pickers (Kendo UI integration)
|
|
62
|
-
|
|
63
|
-
**Form Builder**
|
|
64
|
-
|
|
65
|
-
- 60+ configurable properties per field
|
|
66
|
-
- Smart field defaults by type
|
|
67
|
-
- Schema import/export (JSON)
|
|
68
|
-
- Copy to clipboard functionality
|
|
69
|
-
- Real-time preview
|
|
70
|
-
- Organized property panels
|
|
71
|
-
- Icon-only button design
|
|
72
|
-
|
|
73
|
-
**Validation**
|
|
74
|
-
|
|
75
|
-
- Required, email, URL validation
|
|
76
|
-
- Min/max length for text
|
|
77
|
-
- Min/max value for numbers
|
|
78
|
-
- Pattern/regex validation
|
|
79
|
-
- File size and type validation
|
|
80
|
-
- Date range validation
|
|
81
|
-
- Custom validation functions
|
|
82
|
-
- Debounced validation
|
|
83
|
-
- Validate on blur/change
|
|
84
|
-
|
|
85
|
-
**UI/UX**
|
|
86
|
-
|
|
87
|
-
- Floating labels with notch effect
|
|
88
|
-
- Error tooltips
|
|
89
|
-
- Icon adornments (start/end)
|
|
90
|
-
- Responsive design (mobile/tablet/desktop)
|
|
91
|
-
- Accessibility (ARIA, keyboard navigation)
|
|
92
|
-
- Premium animations and transitions
|
|
93
|
-
|
|
94
|
-
**States Gallery**
|
|
95
|
-
|
|
96
|
-
- Component state showcase
|
|
97
|
-
- Smart state filtering by component type
|
|
98
|
-
- Responsive grid layout (4-2-1 columns)
|
|
99
|
-
- All field types with 7 states each
|
|
100
|
-
|
|
101
|
-
**Developer Experience**
|
|
102
|
-
|
|
103
|
-
- TypeScript definitions
|
|
104
|
-
- Comprehensive documentation
|
|
105
|
-
- Example schemas
|
|
106
|
-
- Theme customization
|
|
107
|
-
- Zod integration
|
|
108
|
-
|
|
109
|
-
### 🔧 Technical Details
|
|
110
|
-
|
|
111
|
-
**Dependencies**
|
|
112
|
-
|
|
113
|
-
- React 19.2+
|
|
114
|
-
- Tailwind CSS 4.1
|
|
115
|
-
- Zod 4.3+
|
|
116
|
-
- Kendo React UI 13.2 (optional)
|
|
117
|
-
|
|
118
|
-
**Browser Support**
|
|
119
|
-
|
|
120
|
-
- Chrome 90+
|
|
121
|
-
- Firefox 88+
|
|
122
|
-
- Safari 14+
|
|
123
|
-
- Edge 90+
|
|
124
|
-
|
|
125
|
-
### 📚 Documentation
|
|
126
|
-
|
|
127
|
-
- README with quick start guide
|
|
128
|
-
- API documentation
|
|
129
|
-
- Contributing guidelines
|
|
130
|
-
- MIT License
|
|
131
|
-
- Changelog
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## [Unreleased]
|
|
136
|
-
|
|
137
|
-
### Planned Features
|
|
138
|
-
|
|
139
|
-
- [ ] Multi-step forms/wizard
|
|
140
|
-
- [ ] Form templates library
|
|
141
|
-
- [ ] Advanced file upload (drag-and-drop, crop)
|
|
142
|
-
- [ ] Rich text editor field
|
|
143
|
-
- [ ] Signature pad field
|
|
144
|
-
- [ ] Geolocation field
|
|
145
|
-
- [ ] Rating/star field
|
|
146
|
-
- [ ] Color picker field
|
|
147
|
-
- [ ] Slider/range field
|
|
148
|
-
- [ ] Form analytics
|
|
149
|
-
- [ ] A/B testing support
|
|
150
|
-
- [ ] Internationalization (i18n)
|
|
151
|
-
- [ ] Form versioning
|
|
152
|
-
- [ ] Collaboration features
|
|
153
|
-
- [ ] API integration templates
|
|
154
|
-
- [ ] Webhook support
|
|
155
|
-
- [ ] PDF export
|
|
156
|
-
- [ ] Email notifications
|
|
157
|
-
- [ ] Conditional sections
|
|
158
|
-
- [ ] Repeatable field groups
|
|
159
|
-
- [ ] Calculation fields
|
|
160
|
-
- [ ] Lookup fields
|
|
161
|
-
- [ ] Matrix/grid questions
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Version History
|
|
166
|
-
|
|
167
|
-
- **3.0.2** - Initial public release (2026-01-13)
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Migration Guides
|
|
172
|
-
|
|
173
|
-
### From 2.x to 3.0
|
|
174
|
-
|
|
175
|
-
No migration needed - this is the initial public release!
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Breaking Changes
|
|
180
|
-
|
|
181
|
-
None yet - this is version 1.0.0!
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Deprecations
|
|
186
|
-
|
|
187
|
-
None yet.
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## Security
|
|
192
|
-
|
|
193
|
-
### Reporting Security Issues
|
|
194
|
-
|
|
195
|
-
Please report security vulnerabilities to adarshatl03@gmail.com
|
|
196
|
-
|
|
197
|
-
### Security Updates
|
|
198
|
-
|
|
199
|
-
- All dependencies are kept up-to-date
|
|
200
|
-
- Regular security audits
|
|
201
|
-
- Zod validation prevents injection attacks
|
|
202
|
-
- XSS protection built-in
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
**Note**: For detailed commit history, see [GitHub Releases](https://github.com/yourusername/form-engine/releases)
|