date-picker.tsx 994 B

12345678910111213141516171819202122232425262728293031
  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 { label: string; valuePath: string };
  7. const { data, set } = useData();
  8. const value = getByPath(data, valuePath) as string | undefined;
  9. return (
  10. <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>
  11. <label style={{ fontSize: 14, fontWeight: 500 }}>{label}</label>
  12. <input
  13. type="date"
  14. value={value ?? ''}
  15. onChange={(e) => set(valuePath, e.target.value)}
  16. style={{
  17. padding: '8px 12px',
  18. borderRadius: 'var(--radius)',
  19. border: '1px solid var(--border)',
  20. background: 'var(--card)',
  21. color: 'var(--foreground)',
  22. fontSize: 16,
  23. outline: 'none',
  24. }}
  25. />
  26. </div>
  27. );
  28. }