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 CHANGED
@@ -1,4 +1,41 @@
1
- # 🚀 Formix UI
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
  [![npm version](https://img.shields.io/npm/v/formix-ui.svg)](https://www.npmjs.com/package/formix-ui)
4
41
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -249,7 +286,7 @@ type ValidationRule =
249
286
 
250
287
  ## 🎨 Theming
251
288
 
252
- Formix UI uses Tailwind CSS 4.1 with CSS variables for theming:
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 Formix UI team**
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/r-form-engine/dist";
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 'r-form-engine';
218
- import type { FormSchema } from 'r-form-engine';
219
- ${isNext ? "import './globals.css';" : "import 'r-form-engine/styles';"}
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 r-form-engine • The modern form stack
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 = "r-form.json";
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 r-form-engine init' first."));
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/r-form";
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/r-form";
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 r-form-engine in your project")
589
+ .description("Initialize formix-ui in your project")
593
590
  .action(async () => {
594
- console.log(chalk.blue.bold("\n🚀 Initializing r-form-engine...\n"));
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 r-form-engine?",
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 r-form-engine project")
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 r-form-engine..."));
702
+ console.log(chalk.green("\nProject scaffolded. Initializing formix-ui..."));
706
703
  process.chdir(projectPath);
707
- const spinner = ora("Installing r-form-engine dependencies...").start();
708
- const deps = ["r-form-engine"];
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: "r-form-engine",
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 (r-form-engine)", value: "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: "r-form-engine",
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/r-form" : "src/components/r-form",
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 r-form-engine add theme-core"));
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: "r-form-engine" };
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/r-form-engine/dist";`, "");
1047
+ template = template.replace(`@source "../node_modules/formix-ui/dist";`, "");
1051
1048
  }
1052
1049
  else {
1053
- template = template.replace(`@source "../node_modules/r-form-engine/dist";`, `@source "../node_modules/${config.packageName}/dist";`);
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,5 @@
1
+ export { CliGuidePage } from "./CliGuidePage";
2
+ export { UsageGuidePage } from "./UsageGuidePage";
3
+ export { TasksPage } from "./TasksPage";
4
+ export { EcosystemPage } from "./EcosystemPage";
5
+ export { ContributingPage } from "./ContributingPage";
@@ -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;
@@ -20,6 +20,9 @@ export interface ComponentTheme {
20
20
  list?: StyleOrFn;
21
21
  item?: StyleOrFn;
22
22
  tag?: StyleOrFn;
23
+ calendarIcon?: StyleOrFn;
24
+ clearButton?: StyleOrFn;
25
+ popover?: StyleOrFn;
23
26
  }
24
27
  export interface FormTheme {
25
28
  global?: ComponentTheme;
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), H = new Ne(Ne.formatError(w.message || i, ee), r, ee.path, w.type || f, ee.disableStackTrace);
3321
- return H.params = ee, H;
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 = "flex 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";
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-background", q(
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 = "flex 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";
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-background", q(
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 = "flex 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";
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-background", q(r, n, t ? "border-destructive focus:ring-destructive" : "");
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-input"
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
- datePicker: {
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
- dateRangePicker: {
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
- dateTimePicker: {
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), H = As(), te = `${H}-listbox`, we = (D) => `${H}-option-${D}`, [U, K] = z([]), [L, Y] = z(!1), oe = eo(x, 500), he = S || L, W = C ? U : f, X = Xe(() => C || !x ? W : W.filter(
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 H = Re(
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
- }, U = /* @__PURE__ */ c(
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: `${H.root} ${s || ""} ${p ? "w-full" : ""}`,
6013
+ className: `${U.root} ${s || ""} ${p ? "w-full" : ""}`,
6008
6014
  children: [
6009
- !te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: H.label, children: [
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: H.wrapper, onClick: () => !a && g(!0), children: [
6015
- te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: H.label, children: [
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: H.input,
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 || U
6058
+ d || H
6053
6059
  ] })
6054
6060
  ] }),
6055
- r && /* @__PURE__ */ c("span", { className: H.errorText, children: r }),
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, H] = z(N), [te, we] = z(C);
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), H(N), we(C);
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 [U, K] = z("start");
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 (U === "start" && f?.start) {
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 (U === "end" && f?.end) {
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 ${U === "start" ? "bg-gray-50 dark:bg-zinc-900/50 text-primary" : "text-gray-500 hover:bg-gray-50 dark:hover:bg-zinc-900"}`,
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 ${U === "end" ? "bg-gray-50 dark:bg-zinc-900/50 text-primary" : "text-gray-500 hover:bg-gray-50 dark:hover:bg-zinc-900"}`,
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
- U === "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" })),
6290
- U === "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" }))
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 H = Re(
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
- }, U = (Y) => {
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: `focus:outline-none transition-colors ${a ? "text-muted-foreground cursor-not-allowed opacity-50" : "hover:text-primary cursor-pointer text-muted-foreground"}`,
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: `${H.root} ${s || ""} ${p ? "w-full" : ""}`,
6394
+ className: `${U.root} ${s || ""} ${p ? "w-full" : ""}`,
6389
6395
  children: [
6390
- !te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: H.label, children: [
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: H.wrapper, onClick: () => !a && g(!0), children: [
6396
- te && e && /* @__PURE__ */ y("label", { htmlFor: t, className: H.label, children: [
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: H.input,
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: "text-muted-foreground hover:text-foreground",
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: H.errorText, children: r }),
6437
- u && !a && /* @__PURE__ */ y("div", { className: "absolute top-full left-0 z-50 mt-1 shadow-xl rounded-lg animate-in fade-in zoom-in-95 duration-200 flex overflow-hidden ring-1 ring-black/5 bg-white dark:bg-zinc-950", children: [
6438
- /* @__PURE__ */ c(rn, { value: f, onChange: U, minDate: i, maxDate: b }),
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 U = (K) => {
6472
+ const H = (K) => {
6467
6473
  x.current && !x.current.contains(K.target) && l(!1);
6468
6474
  };
6469
- return document.addEventListener("mousedown", U), () => document.removeEventListener("mousedown", U);
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", H = (U) => {
6483
- h(U.target.value), U.target.value || m?.(null);
6484
- }, te = (U) => {
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(U.getHours()), K.setMinutes(U.getMinutes()), K.setSeconds(0), K.setMilliseconds(0), m?.(K);
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: (U) => {
6492
- a || (U.preventDefault(), l(!C));
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: H,
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: (U) => {
6560
- U.stopPropagation(), k(), h(""), m?.(null);
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, H = pi(w, S, V.current), te = De(S, w.name);
6696
- if (H && te !== "" && te !== null && te !== void 0) {
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), U = {
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
- ...U,
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
- ...U,
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
- ...U,
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
- ...U,
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
- ...U,
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
- ...U,
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, { ...U, format: w.format });
6823
+ return /* @__PURE__ */ c(io, { ...H, format: w.format });
6818
6824
  case "time":
6819
- return /* @__PURE__ */ c(co, { ...U, format: w.format });
6825
+ return /* @__PURE__ */ c(co, { ...H, format: w.format });
6820
6826
  case "datetime":
6821
- return /* @__PURE__ */ c(lo, { ...U, format: w.format });
6827
+ return /* @__PURE__ */ c(lo, { ...H, format: w.format });
6822
6828
  case "daterange":
6823
6829
  return /* @__PURE__ */ c(
6824
6830
  oo,
6825
6831
  {
6826
- ...U,
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
- ...U,
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
- ...U,
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, H = b, te = r, we = s, U = a, K = k, L = !1;
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 = H, ie.Portal = te, ie.Profiler = we, ie.StrictMode = U, 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;
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]), H = $e(function(_) {
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) && H(b.current);
8105
- }, [o, H]);
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 && H(b.current));
8131
- }, [f, i.initialValues, te, o, H]), be(function() {
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
- }), U = ue(function(_, O) {
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 ? H(x.values) : Promise.resolve();
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 ? H(M) : Promise.resolve();
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 ? H(ct(x.values, _, P)) : Promise.resolve();
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 ? H(x.values) : Promise.resolve();
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
- }), H().then(function(_) {
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: H,
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: H,
8417
+ validateForm: U,
8412
8418
  validateField: we,
8413
8419
  isValid: Ts,
8414
8420
  dirty: Mt,
8415
8421
  unregisterField: K,
8416
- registerField: U,
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",
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)