date-picker.tsx 1005 B

12345678910111213141516171819202122232425262728293031323334
  1. "use client";
  2. import { type ComponentRenderProps } from "@json-render/react";
  3. import { useData } from "@json-render/react";
  4. import { getByPath } from "@json-render/core";
  5. export function DatePicker({ element }: ComponentRenderProps) {
  6. const { label, valuePath } = element.props as {
  7. label: string;
  8. valuePath: string;
  9. };
  10. const { data, set } = useData();
  11. const value = getByPath(data, valuePath) as string | undefined;
  12. return (
  13. <div style={{ display: "flex", flexDirection: "column", gap: 4 }}>
  14. <label style={{ fontSize: 14, fontWeight: 500 }}>{label}</label>
  15. <input
  16. type="date"
  17. value={value ?? ""}
  18. onChange={(e) => set(valuePath, e.target.value)}
  19. style={{
  20. padding: "8px 12px",
  21. borderRadius: "var(--radius)",
  22. border: "1px solid var(--border)",
  23. background: "var(--card)",
  24. color: "var(--foreground)",
  25. fontSize: 16,
  26. outline: "none",
  27. }}
  28. />
  29. </div>
  30. );
  31. }